# Search Tier Decision — Fase 4 **Data:** 2026-06-24 **Status:** Provisório (dev) — aguardando Volume Discovery staging/prod --- ## Tier confirmado | Ambiente | Tier | Total WOs | Decisão | |----------|------|-----------|---------| | Dev local | **S (provisório)** | < 25k sintético | Implementar SQL filtros + paginação opcional | | Staging | _pendente_ | _pendente acesso_ | Executar [volume-discovery-report.md](../phase-0/volume-discovery-report.md) | | Produção | _pendente_ | _pendente acesso_ | Executar queries read-only | --- ## Estratégia por tier | Tier | Volume | Estratégia advanced search | |------|--------|----------------------------| | **S** | < 25k | SQL filtros compostos + paginação default 50, max 100 | | **M** | 25k–250k | Paginação **obrigatória** + índices covering | | **L** | 250k–1M | Spike full-text SQL Server — **não implementar sem spike** | | **XL** | > 1M | Documentar ARB; search externo — **não implementar** | --- ## Implementação atual (Tier S) - `WorkOrderBoardSearchFilter` — filtro textual compartilhado (board + advanced) - `WorkOrderAdvancedSearchDataService` — query composta com `CountAsync` + `Skip/Take` - Índices Phase 4: `SiteCode`, `InternalWONumber`, `LifecycleStatus+ScheduledDate` - Min 2 caracteres em `search` para evitar full-table scan --- ## Próximos passos (gate staging) 1. Executar `scripts/volume-discovery.ps1` contra staging read-only 2. Preencher tabela §3 do volume report 3. Atualizar este documento com tier real 4. Repetir load test k6 em staging; ajustar `pageSize` max se tier = M --- ## Referências - [volume-discovery-report.md](../phase-0/volume-discovery-report.md) - [phase-4/README.md](./README.md) - Roadmap §10, §12 Fase 4