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.