Matriz de impacto — Spike 198299
Data: 2026-07-09
Decisões: grill-decisions.md
Resumo
| Repo | Impacto implementação US | Prioridade |
|---|---|---|
coezzion-service-showcase | Alto — contrato e persistência Store/Recommend | P0 |
coezzion_vendas_app | Alto — UI e payloads Minhas + Histórico | P0 |
coezzion-portal | Nenhum (referência) | — |
coezzion-showcase-web | Nenhum | — |
coezzion-service-jobs | Nenhum para expiração de vendedor | — |
1. coezzion-service-showcase
| Módulo / arquivo | Tipo de mudança |
|---|---|
ShowCaseModel.SetDateExpiration | Null não pode mais significar +31 quando CA pede “sem prazo”; alinhar a MaxValue ou helper novo |
CreateShowCaseByAppCommand / Update | Já DateTime? — redefinir semântica de null |
ShowCaseCommandHandler | Usar normalização never-expire |
Create/UpdateShowCaseRecommendCommand | DateTime → DateTime? |
Create/UpdateShowCaseRecommendValidator | Remover NotEmpty; manter futura se presente; adicionar max (D8) |
ShowCaseRecommendCommandHandler | Remover SetDates() no create (D-API-11); DateCreated explícito + normalizer |
| Query/DTO mappers Store + Recommend | MaxValue → null (copiar padrão Brand) |
| Unit tests validators/handlers Recommend | Atualizar casos empty/null/never |
| Brand handlers | Não alterar (exceto se extrair helper compartilhado de MaxValue) |
| Product listeners / order | Não alterar |
2. coezzion_vendas_app
| Área | Mudança |
|---|---|
| Minhas — check products / search controller | Date field clearable; null no create body |
| Minhas — detail | Sempre exibir campo; permitir clear; update com null |
Minhas — list + ShowCaseResponseItem | Nullable + nullExpirationLabel |
UpdateShowCaseRequest | dateExpiration nullable |
| Recommend — check/detail controllers | Remover hard-required; clearable; max no edit |
| Recommend — list | Já tem label; validar com API null |
ZZDateFormField / uso | Suportar clear se ainda não |
| Testes models | Cobrir null serialization |
3. coezzion-portal
Sem mudança de CA. Referência de placeholder “Sem data de expiração” e clearable.
4. coezzion-showcase-web
Sem mudança. Acesso público depende apenas da API retornar vitrine ativa (MaxValue permanece ativo).
5. coezzion-service-jobs
| Job | Ação |
|---|---|
| UpdateStatusShowCasesBrand | Nenhuma (só marca) |
| RemoveShowCasesBrandTemp | Nenhuma |
| ShowCaseProductJob / NoStore | Nenhuma — regressão CA-5 se quebrados |
6. Ordem sugerida de PRs
PR1 showcase-api (Store + Recommend + tests)
│
▼
PR2 zzapp (UI Minhas + Recommend) — pode iniciar em paralelo com contrato acordado
│
▼
QA checklist manual (ver resultado-inicial-sp.md)
Contrato de integração a travar antes do merge do app:
dateExpiration: nullno create/update = sem expiração (não default +31).- Response
dateExpiration: null= exibir “Sem data de expiração”.