mirror of
https://github.com/Sea-Haven-Industries/shoc-backend.git
synced 2026-09-30 21:13:12 +00:00
2.7 KiB
2.7 KiB
Data Ownership Model — Work Orders
Fase: 0
Status: Draft para sign-off CTO
1. Princípios
- SHOC (React) é o único destino de novas features do board.
- SQL Server é fonte operacional para board, Blazor e Portal.
- DynamoDB/Sync é ponte temporária de ingestão externa.
- Conflito entre atores resolve-se pela Field Ownership Matrix, não por last-write-wins global.
2. Ownership por ator
| Ator | Conexão | Pode alterar | Não pode alterar |
|---|---|---|---|
| SHOC | REST JWT (api/WorkOrder) |
Lifecycle, Schedule, Assignment, Completion, vendor via Dispatch, POC, WO# | Checklist/signoff vendor |
| Vendor Portal | REST X-Vendor-Token |
Dispatch status, checklist, signoff, comments vendor | Schedule, lifecycle, assignment, DueDate |
| Sync/Lambda | POST api/Sync/WorkOrders |
Campos ingest (Description, ExternalId, SiteCode na criação, etc.) | Campos SHOC-owned após ManualEditFlag |
| Blazor | EF direto (WorkorderService) |
Campos legados existentes até sunset | Campos novos board; congelado |
| Jobs | Domain events (Fase 5+) | Incremento CarriedOver; audit System | Lifecycle, Schedule, Dispatch |
3. Política Blazor (sunset)
- Manutenção mínima: bugfix crítico only.
- Não recebe: board, inline edit, jobs, advanced search, completion doc WO-level.
- Schema: colunas novas Fase 0 são nullable — Blazor continua funcionando sem conhecer novos campos.
- Conflito Blazor vs SHOC: SHOC vence; Blazor não deve escrever campos board após go-live Fase 1.
- Smoke test EF obrigatório pós-migration (ver checklist smoke).
4. Política Vendor Portal
- Dispatch intacto; zero regressão checklist/signoff/verify.
- Vendor não muta WorkOrder core — apenas Dispatch e comments associados.
- Audit EventType =
Vendorpara mutações portal.
5. Política Sync/Lambda
- Upsert por
ExternalWorkOrderId(idempotente). - Field-level merge conforme Field Ownership Matrix.
- Campo com ManualEditFlag → skip + audit
SyncRejected. - Cutover Lambda → API direta: Fase 7.
6. Regras de conflito (resumo)
| Cenário | Vencedor |
|---|---|
| SHOC vs SHOC (mesmo campo) | 409 RowVersion; último commit válido |
| SHOC vs Sync (mesmo campo) | SHOC se ManualEditFlag |
| SHOC vs Sync (campos distintos) | Merge |
| Vendor vs Sync | Domínios separados |
| SHOC vs Vendor (mesmo conceito) | Impossível por design (vendor = Dispatch) |
| Blazor vs SHOC | SHOC vence; Blazor congelado |
7. Critérios de aceite
- Matriz por ator revisada por CTO
- PO confirma política Blazor sunset
- Sync merge referencia Field Ownership Matrix
Assinatura CTO: _________________ Data: _______