Pesquisa — coezzion-service-jobs (jobs de vitrine/showcase)
Repo: /Users/alt-zz/projetos/arezzo/coezzion-service-jobs
Data: 2026-07-09
Escopo: jobs que tocam showcase / expiração
1. Conclusão executiva
Jobs de showcase são orquestração fina (HTTP para API showcase ou SQS).
Não existe job que marque vitrines Store/Recommend como “vão expirar” ou “expiradas”.
Expiração de vendedor é read-time na API/ES.
Campo no domínio showcase: DateExpiration (não EndDate).
2. Jobs relacionados a showcase
| Hangfire id | Classe | O que faz | CA Spike? |
|---|---|---|---|
UpdateStatusShowCasesBrand | UpdateStatusShowCasesBrandJob | PUT /api/show-case-new/brand/update-status — ativa/desativa marca por janela Start/Expiration | Fora CA (só marca) |
RemoveShowCasesBrandTemp | RemoveShowCasesBrandTempJob | PUT .../brand/remove-showcases-temp — limpa temps órfãos | Fora CA |
ShowCaseProductJob | ShowCaseProductJob | Enfileira sync de produtos por marca (SQS) | Manter (CA-5 estoque/preço) |
ShowCaseProductNoStoreJob | ShowCaseProductNoStoreJob | Sync sem store (2 crons) | Manter (CA-5) |
Scheduler: Jobs.Infrastructure/Services/Implementations/JobScheduler.cs
HTTP client: Jobs.Infrastructure/Integration/ShowCaseService.cs
Schema recorrente: "arezzo".
3. UpdateStatusShowCasesBrand (detalhe)
- Critério ativo:
StartDate.Date <= today && DateExpiration?.Date >= today DateExpiration == nullno job de status → tratado como fora da janela (inativa)- Por isso a API Brand grava MaxValue quando “sem data” (null do portal)
- Push só em novas ativações, não em expiração
4. Product jobs
- Publicam
ShowcaseJobEventnas filas SQS de products / products-no-store - Consumidos pelos listeners da API showcase
- Atualizam catálogo/estoque exibido nas vitrines — independente de DateExpiration da vitrine
- CA-5: alteração de expiração não deve quebrar estes jobs
5. O que a SP “pensava” vs código
Expectativa informal: “jobs marcam vitrines que vão expirar”.
Realidade: só há job de status de marca; Store/Recommend expiram por filtro de leitura. Não há notificação “vai expirar” de vitrine de vendedor.
6. Impacto da Spike
| Alterar jobs? | Não para atender CAs Store/Recommend |
| Risco se alguém gravar null em Brand | Job de status desativaria — não é o path da US |
| Store/Recommend MaxValue | Jobs de produto indiferentes |
Arquivos-chave
src/Jobs.API/Application/Jobs/UpdateStatusShowCasesBrandJob.cs
src/Jobs.API/Application/Jobs/RemoveShowCasesBrandTempJob.cs
src/Jobs.API/Application/Jobs/ShowCaseProductJob.cs
src/Jobs.API/Application/Jobs/ShowCaseProductNoStoreJob.cs
src/Jobs.Infrastructure/Integration/ShowCaseService.cs
src/Jobs.Infrastructure/Integration/ShowCaseProductJobService.cs
src/Jobs.Infrastructure/EventHandlers/ShowcaseJobEventHandler.cs
src/Jobs.Infrastructure/Services/Implementations/JobScheduler.cs