shoc-backend/docs/work-orders/phase-0/volume-discovery-report.md

2.7 KiB
Raw Blame History

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.