shoc-backend/docs/work-orders/phase-0/dar-persisted-vs-derived-matrix.md

1.9 KiB

DAR — Matriz Persistido vs Derivado

Fase: 0
Status: Draft para validação PO + CTO


Matriz de campos (board + domínio)

Campo FE / conceito Persistido Derivado Fonte / Regra
lifecycleStatus Sim Não Core — LifecycleStatus enum
isPastDue Não Sim ScheduledDate < UTC hoje AND NOT status terminal
type (Overdue) Parcial Sim Regra type + schedule + status
workOrderType Sim Não Core — enum WorkOrderType
carriedOver Sim Não Analytics — incremento via WeekRolled only
rescheduleCount Sim Parcial Analytics — incremento em mudança ScheduledDate
docStatus Sim Não Completion slice
dayGroup Não Sim Calculado na leitura a partir de ScheduledDate
apptTime Não Sim Projeção Dispatch primário ScheduledDate/Start
vendorName / tech Não Sim (projeção) Join Dispatch primário
targetWeek Sim Não Scheduling slice
scheduledEnd Sim Não Scheduling slice
originalWeek / originalDate Sim Não Tracking — set-once na primeira agenda
operationalFlags.pastDue Não* Sim *Cache opcional Fase 5; on-read authoritative
legacyStatus Sim (read-only) Não Valor string original pré-migration

Regras de derivação (on-read)

isPastDue

isPastDue = ScheduledDate.HasValue
         AND ScheduledDate.Value.Date < DateTime.UtcNow.Date
         AND LifecycleStatus NOT IN (Complete, Canceled)

type Overdue (derivado)

WO com type != Overdue pode exibir badge Overdue quando isPastDue && regras de negócio PO confirmadas.


Validação PO

Pergunta Resposta PO
Past Due separado do lifecycle status? Sim
carriedOver persiste mesmo após reschedule? Sim
Vendor nunca duplicado na WO? Sim

Assinatura PO: _________________ Data: _______