Skip to main content

Pesquisa — coezzion-portal (zzportal / vitrine da marca)

Repo: /Users/alt-zz/projetos/arezzo/coezzion-portal
Data: 2026-07-09
Escopo: expiração da vitrine da marca (referência; fora do CA da SP 198299)


1. Papel no ecossistema

Portal cria/edita apenas vitrines da marca (Brand). Não cria Store nem Recommendation.

Rotas:

PathTela
/vitrinesLista
/vitrines/:idCriar conclusão / editar header
/vitrines/:id/adicionarProdutoProdutos

Perfis: admin, coezzion user, easy, CRM, merchan.


2. Fluxo create/edit

  1. Lista → CRIAR → modal CSV de SKUs → POST /api/show-case-new/brand
  2. Backend cria temp; portal abre edit header
  3. Form: nome, descrição, startDate (obrigatório), dateExpiration (opcional), canais/lojas, banner
  4. Save: PUT /api/show-case-new/brand/header

Arquivo principal: src/routes/Vitrine/ListShowcase/EditShowcase/index.tsx


3. Expiração na UI (precedente de produto)

RegraComportamento
Obrigatória?Não
Placeholder"Sem data de expiração"
ClearableSim (isClearable)
DefaultVazio (sem data)
DesabilitadaAté haver data de ativação
MinDia seguinte à ativação
MaxNenhum no portal
Validação se preenchida≠ ativação; ≥ ativação; ≥ hoje

Submit envia dateExpiration possivelmente undefined.


4. Contrato com API

Service: src/services/showcase/index.ts + model.ts

Backend (showcase) interpreta null → DateTime.MaxValue.

Lista: coluna “Data de expiração” formata data se presente (Header.tsx).


5. Impacto da Spike

Mudança de código no portal?Não (CA da SP)
Valor para a SpikeReferência de UX e contrato “sem data” + MaxValue
Risco de regressãoBaixo se API Brand não for alterada indevidamente

6. Arquivos-chave (referência)

src/routes/Vitrine/index.tsx
src/routes/Vitrine/ListShowcase/index.tsx
src/routes/Vitrine/ListShowcase/EditShowcase/index.tsx
src/routes/Vitrine/ListShowcase/EditShowcase/constants.ts
src/routes/Vitrine/ListShowcase/Header.tsx
src/services/showcase/index.ts
src/services/showcase/model.ts