mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-10-01 15:43:14 +00:00
96 lines
2.7 KiB
Markdown
96 lines
2.7 KiB
Markdown
# 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.
|