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

96 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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:
```sql
-- 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
```powershell
./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.