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