shoc-backend/docs/work-orders/phase-0/consumer-inventory.md

86 lines
2.8 KiB
Markdown
Raw Normal View History

# Consumer Inventory — Work Orders
**Fase:** 0
**Referência:** roadmap §11
---
## 1. Inventário de consumidores
| Consumidor | Conexão | Código principal | Campos mutados | Audit hoje? |
|------------|---------|------------------|----------------|-------------|
| **SHOC React** | REST JWT | `Api.SeaHavenIndustries/Controllers/WorkOrderController.cs` | Status, AssignTo, CRUD parcial via Service | Parcial (ChangeStatus/Assignment) |
| **Blazor** | EF direto | `SeaHavenIndustries/Data/Services/WorkorderService.cs` | CRUD completo, comments, status | **Não** |
| **Vendor Portal** | REST token | `Api.SeaHavenIndustries/Controllers/VendorPortalController.cs` | Dispatch checklist, signoff, status | Sim (ad hoc) |
| **Sync/Lambda** | DynamoDB → SQL | `Api.SeaHavenIndustries/Controllers/SyncController.cs` | Upsert WO por ExternalWorkOrderId | **Não** |
| **Dispatch API** | REST | `DispatchController.cs` | Dispatch create/update/verify | Sim |
| **E-mail SendGrid** | Deep links | `Helper/SendMessage` | Nenhum (read-only links) | N/A |
---
## 2. Diagrama
```mermaid
flowchart TB
SHOC[SHOC_React] -->|REST_JWT| API[Api_REST]
VPortal[Vendor_Portal] -->|X_Vendor_Token| API
Lambda[Lambda_ingest] --> DynamoDB[(DynamoDB)]
DynamoDB --> Sync[SyncController]
Sync --> DB[(SQL_Server)]
API --> DB
Blazor[Blazor_EF] -->|legado| DB
```
---
## 3. Trilhas de entrega (coexistência)
| Trilha | Escopo Fase 0+ |
|--------|----------------|
| **A — SHOC** | Fases 0–7; feature flags; piloto dispatchers |
| **B — Blazor** | Smoke EF pós-migration; bugfix crítico only |
| **C — Vendor Portal** | Regression checklist cada release WO/Dispatch |
| **D — Lambda/Sync** | Manter até SHOC produção; merge policy Fase 0 |
---
## 4. Endpoints legado vs board
| Tipo | Exemplos | Política |
|------|----------|----------|
| Legado | GetWorkOrderList, ChangeStatus | Congelar contrato |
| Board (Fase 1+) | GetWorkOrdersBoard | Novos contratos separados |
---
## 5. Gaps Fase 0 endereçados
| Gap | Mitigação |
|-----|-----------|
| Blazor sem audit | Congelar; não expandir |
| Sync overwrite | ISyncFieldMergePolicy + ManualEditFlag |
| Auth WO desabilitada | Reativar `[Authorize]` WorkOrderController |
| WO# inconsistente | Documentar normalização 11 dígitos (Fase 2 execução) |
---
## 6. Checklist pré-go-live PO
- [ ] App mobile externo confirmado?
- [ ] Data sunset Blazor WO definida?
- [ ] FrontendBaseUrl produção → SHOC?
- [ ] Owner Lambda cutover nomeado?
---
## 7. Auth — consumidores e tokens
| Consumidor | Auth |
|------------|------|
| SHOC | JWT Bearer |
| Sync | JWT Bearer (`[Authorize]` no SyncController) |
| Vendor Portal | X-Vendor-Token (rotas públicas dispatch) |
| Blazor | Cookie Identity (app separado) |
Reativar auth em WorkOrderController exige SHOC enviar JWT em todas as chamadas WO.