mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-09-30 20:03:11 +00:00
2.7 KiB
2.7 KiB
Volume Discovery Report — Work Orders
Fase: 0 — Gate Fase 1
Data: 2026-06-24
Ambiente: Local dev (Docker) + queries para staging/prod
1. Objetivo
Definir tier S/M/L/XL antes de índices e estratégia de search (Fase 4). Sem premissa de volume.
2. Queries obrigatórias
Executar em staging ou produção read-only:
-- Total WOs
SELECT COUNT(*) AS TotalWorkOrders
FROM workOrders
WHERE IsDeleted IS NULL OR IsDeleted = 0;
-- WOs por semana (ISO) — p95
WITH WeeklyCounts AS (
SELECT DATEPART(iso_week, ScheduledDate) AS IsoWeek,
YEAR(ScheduledDate) AS IsoYear,
COUNT(*) AS Cnt
FROM workOrders
WHERE ScheduledDate IS NOT NULL
AND (IsDeleted IS NULL OR IsDeleted = 0)
GROUP BY DATEPART(iso_week, ScheduledDate), YEAR(ScheduledDate)
)
SELECT MAX(Cnt) AS P95ProxyMaxPerWeek,
AVG(Cnt * 1.0) AS AvgPerWeek
FROM WeeklyCounts;
-- Unscheduled (não terminal)
SELECT COUNT(*) AS UnscheduledCount
FROM workOrders
WHERE ScheduledDate IS NULL
AND (IsDeleted IS NULL OR IsDeleted = 0)
AND Status NOT IN ('Completed', 'Complete', 'Cancelled', 'Canceled');
-- Crescimento mensal
SELECT YEAR(CreatedDate) AS Y, MONTH(CreatedDate) AS M, COUNT(*) AS Cnt
FROM workOrders
WHERE CreatedDate IS NOT NULL
GROUP BY YEAR(CreatedDate), MONTH(CreatedDate)
ORDER BY Y DESC, M DESC;
3. Resultados
| Métrica | Local Docker (dev) | Staging | Produção |
|---|---|---|---|
| Total WOs | executar após seed | pendente acesso | pendente acesso |
| WOs/semana p95 | — | pendente | pendente |
| Unscheduled | — | pendente | pendente |
| Crescimento mensal | — | pendente | pendente |
Nota: Ambiente local inicia vazio. Tier provisório para desenvolvimento: S (< 25k). Confirmar com query em staging antes do GO Fase 1.
4. Classificação tier (§10.2 roadmap)
| Tier | Total WOs | Listagem semanal | Advanced search |
|---|---|---|---|
| S | < 25k | Índices simples | SQL filtros compostos |
| M | 25k–250k | Índices covering | Paginação obrigatória |
| L | 250k–1M | Read model candidato | Full-text |
| XL | > 1M | Materialized view | Search dedicado (ARB) |
Tier definido para Fase 1: S (provisório dev) — revisar ao obter métricas staging.
5. Impacto Fase 0–1
- Fases 1–3: índices conservadores compatíveis com qualquer tier.
- Fase 4: implementação search conforme tier confirmado + load test.
6. Script local
./scripts/setup-local-db.ps1
# Executar queries acima via sqlcmd ou DBCode contra localhost:1433
Gate: Preencher coluna Staging/Produção antes do GO Fase 1.