Skip to main content

Vitrines (ShowCase)

Contexto de domínio das vitrines virtuais compartilháveis (catálogo de produtos com link público), criadas por vendedores ou pela marca.

Language

Vitrine (ShowCase): Catálogo virtual de produtos com link público compartilhável. Avoid: Showcase genérico sem tipo, catálogo (quando se refere ao índice de produtos, não à vitrine)

Vitrine de loja (Store / “Minhas vitrines”): Vitrine montada pelo vendedor com mix livre de produtos da loja. Avoid: Fast catalog (termo interno de UI), vitrine genérica

Vitrine por histórico de compras (Recommendation): Vitrine do vendedor vinculada a um cliente (CPF), com produtos sugeridos a partir do histórico/recomendação. Avoid: Vitrine de recomendação genérica sem cliente, “histórico” sozinho

Vitrine da marca (Brand): Vitrine curada pela operação/marca (zzportal), com janela de ativação e público-alvo (canais/lojas). Avoid: Vitrine do vendedor, campanha (salvo quando for o caso de merchan)

Vitrine marca–vendedor (BrandSeller): Cópia/link de compartilhamento da vitrine da marca sob a identidade do vendedor. Avoid: Vitrine da marca (entidade pai), Minhas vitrines

Data de expiração (DateExpiration): Data a partir da qual a vitrine deixa de ser considerada ativa para listagem e acesso público. Avoid: EndDate, validade (ambíguo com estoque)

Sem data de expiração: Estado em que a vitrine não possui prazo de encerramento por data; permanece ativa até exclusão (soft-delete) ou outra regra de negócio. Avoid: “infinita”, “permanente” (pode confundir com indelével)

Vitrine ativa: Vitrine não excluída e não expirada (e, no caso de marca, dentro da janela de ativação e com status ativo). Avoid: Publicada, online (sem definição no domínio)

Exclusão de vitrine (soft-delete): Marca temporal de remoção lógica; o documento permanece no armazenamento. Avoid: Delete físico, expiração (são conceitos distintos)

Data de ativação (StartDate): Início da vigência da vitrine da marca (não se aplica a Store/Recommendation). Avoid: DateCreated (criação ≠ ativação)

Relationships

  • Uma Vitrine de loja pertence a uma loja e a um vendedor (usuário).
  • Uma Vitrine por histórico pertence a uma loja, a um vendedor e a um cliente (CPF); no máximo uma vitrine ativa por combinação vendedor + cliente + loja.
  • Uma Vitrine da marca pode gerar várias Vitrines marca–vendedor ao ser compartilhada.
  • Toda Vitrine pode ter ou não Data de expiração; sem data, aplica-se Sem data de expiração.
  • Exclusão de vitrine é ortogonal à Data de expiração: expirar não exclui; excluir não depende de expirar.

Example dialogue

Dev: “Se o vendedor remove a data de expiração da Vitrine de loja, ela vira uma Vitrine da marca?”
Domain expert: “Não. Continua sendo Vitrine de loja; só passa ao estado Sem data de expiração.”

Dev: “Uma vitrine expirada foi excluída?”
Domain expert: “Não. Expirada deixa de ser vitrine ativa; exclusão é soft-delete separado.”

Dev:Vitrine por histórico sem expiração bloqueia criar outra para o mesmo cliente?”
Domain expert: “Sim, enquanto for vitrine ativa — a unicidade vale para o par vendedor + cliente + loja.”

Flagged ambiguities

  • “+ 30 dias” (SP) vs +31 dias no app e em parte da API — tratar como mesmo “prazo padrão atual” até alinhamento de produto; não inventar terceiro valor.
  • “Vitrine” no app inclui três menus (marca, histórico, minhas); a SP desta Spike cobre histórico + minhas, não marca.
  • “Catálogo” no código às vezes nomeia UI (“fast catalog”) e às vezes o índice de produtos sincronizado por jobs — no domínio desta Spike usar Vitrine para o agregado compartilhável.