Pular para o conteúdo principal

IT1 — Diagramas de Sequência Formais

Para cada feature entregue na IT1 — Vitrine Pública: o diagrama de sequência formal (Mermaid, renderizado na página) e o feature card final — o estado pós-implementação, com os critérios de aceite atendidos. Os detalhes completos de cada feature (evidências, validação do cliente) ficam na página específica da feature.


CP5 — Painel de Gerenciamento do Administrador

F09 — Autenticar administradores
Diagrama de Sequência Formal
Feature Card (final)

Issues: #54 · RFs cobertos: RF08, RF09 · RNFs cobertos: RNF01, RNF03

Critério (BDD)RF / RNFStatus
Login com credenciais válidas → Supabase Auth gera sessão JWT → redirect /admin/dashboardRF08
MFA ativo → código TOTP solicitado antes de emitir sessãoRF08 · RNF08
Credenciais inválidas → 401 + mensagem genérica sem expor detalhes internosRF08
Logout → signOut() + invalida refresh_token + limpa cookie + redirect /admin/loginRF09
Acesso a /admin sem sessão → redirect /admin/login sem renderizar dados do painelRF09 · RNF01
Tempo de autenticação ≤ 2sRNF03
F10 — Acessar painel administrativo
Diagrama de Sequência Formal
Feature Card (final)

Issues: #57 · RFs cobertos: RF10 · RNFs cobertos: RNF01, RNF03, RNF09

Critério (BDD)RF / RNFStatus
JWT válido com role = owner → RLS filtra por auth.uid() + auth.role() → painel renderizado sem reloadRF10 · RNF09
JWT expirado → refreshSession() tentado; se falhar, redirect /admin/login sem renderizar dadosRF10
Token inválido ou sem role = owner → 401/403 + redirect /admin/login sem expor estruturaRF10 · RNF01
Operação no painel → resposta entregue em ≤ 2s em condições normaisRNF03
F11 — Gerenciar membros da Crianex
Diagrama de Sequência Formal
Feature Card (final)

Issues: #58 · RFs cobertos: RF11, RF12, RF13, RF14 · RNFs cobertos: RNF03, RNF09

Critério (BDD)RF / RNFStatus
Owner cadastra novo membro → createUser() + insert em profiles → lista atualizada sem reloadRF12
Email duplicado → erro informativo sem criar registro duplicadoRF12
Owner edita dados de membro → RLS valida role = owner → persiste sem reloadRF11 · RNF09
Edição sem role = owner → bloqueio 403 pelo RLS sem persistir nadaRF11 · RNF09
Owner inativa membro → active = false + lista atualizada sem reloadRF13
Owner tenta inativar a própria conta → operação bloqueada com mensagem de erroRF13
Owner remove membro → deleteUser() + remoção de profiles → lista atualizada sem reloadRF14
Owner tenta remover a própria conta → bloqueado (ao menos um owner ativo garantido)RF14

CP4 — Vitrine Pública de Produtos SaaS

F12 — Exibir catálogo de produtos SaaS
Diagrama de Sequência Formal
Feature Card (final)

Issues: #55 · RFs cobertos: RF21, RF22, RF23 · RNFs cobertos: RNF02, RNF21

Critério (BDD)RF / RNFStatus
Admin cadastra produto → persistido em transação ACID → apto para publicaçãoRF21
Admin edita produto → dados substituídos no banco sem intervenção de devRF22
Admin remove produto → excluído do catálogo e ausente na vitrine imediatamenteRF23
Requisição sem autorização → 401/403 sem executar operação no bancoRF21–23 · RNF01
Vitrine pública renderiza via SSR → apenas published = true em ≤ 2s sem JSRNF02 · RNF21
F13 — Publicar / despublicar produto SaaS
Diagrama de Sequência Formal
Feature Card (final)

Issues: #56 · RFs cobertos: RF25, RF26 · RNFs cobertos: RNF03

Critério (BDD)RF / RNFStatus
Admin aciona toggle para publicar → published = true + confirmação visual em ≤ 2sRF25 · RNF03
Admin aciona toggle para despublicar → produto ocultado da vitrine, dados preservados no bancoRF26 · RNF03
Credenciais inválidas no toggle → API rejeita → toggle revertido + mensagem de erroRF25 · RF26
F14 — Formulário de contato / Captação de Leads
Diagrama de Sequência Formal
Feature Card (final)

Issues: #61 · RFs cobertos: RF27 · RNFs cobertos: RNF10

Critério (BDD)RF / RNFStatus
Formulário válido → persistido em transação ACID → alerta de sucesso em ≤ 2sRF27 · RNF02
Rate limit excedido (5 req/IP/10min) → 429 + "Tente novamente mais tarde"RNF10
F15 — Página institucional (Sobre a Crianex)
Diagrama de Sequência Formal
Feature Card (final)

Issues: #63 · RFs cobertos: RF28 · RNFs cobertos: RNF02, RNF21

Critério (BDD)RF / RNFStatus
Visitante acessa /sobre → SSR carrega i18n estático em ≤ 2s sem chamada a API ou bancoRF54 · RNF02 · RNF04
Visitante clica "EN" → textos trocam para en/about.json em ≤ 1 clique sem reloadRNF13
Bot de indexação → HTML inicial com h1, textos e metadados Open Graph sem depender de JSRNF04 · RNF21
Visitante sem autenticação → nenhum guard intercepta → conteúdo exibido normalmenteRN27

CP6 — FAQ e Base de Conhecimentos por Produto

F16 — CRUD de artigos de FAQ
Diagrama de Sequência Formal
Feature Card (final)

Issues: #59 · RFs cobertos: RF30, RF29, RF30, RF31 · RNFs cobertos: RNF01, RNF04, RNF05

Critério (BDD)RF / RNFStatus
Admin cadastra artigo (título, conteúdo, produto, categoria) → persistido e apto para publicaçãoRF28 · RNF01
Admin edita artigo → dados substituídos, ID original preservadoRF29
Admin remove artigo → excluído do banco e ausente na vitrine imediatamenteRF30
Admin categoriza artigo → vínculos product_id + category_id com integridade referencialRF31
Agente externo forja requisição sem token → RLS bloqueia com 403 sem alterar dadosRNF01 · RNF09
Artigos publicados → conteúdo no SSR indexável; despublicados ausentes da resposta SSRRNF04 · RNF05
F17 — Publicar / despublicar artigo de FAQ
Diagrama de Sequência Formal
Feature Card (final)

Issues: #60 · RFs cobertos: RF34, RF33 · RNFs cobertos: RNF01, RNF04, RNF05

Critério (BDD)RF / RNFStatus
Admin publica artigo → published = true → visível na próxima requisição da vitrine sem reloadRF32 · RNF01
Admin despublica artigo → artigo ausente da vitrine imediatamente, conteúdo preservado no bancoRF33
Agente externo forja requisição sem token → RLS bloqueia com 403 sem alterar statusRNF01 · RNF09
Artigo publicado → conteúdo e metadados SEO no HTML inicial sem depender de JSRNF04 · RNF05
F18 — Avaliação de artigos de FAQ
Diagrama de Sequência Formal
Feature Card (final)

Issues: #62 · RFs cobertos: RF34 · RNFs cobertos: RNF02, RNF04, RNF05

Critério (BDD)RF / RNFStatus
Visitante clica "Útil" ou "Não Útil" → avaliação persistida anonimamente + feedback visual em ≤ 2sRF34 · RNF02
Visitante já avaliou o artigo na sessão → interface bloqueia sem chamar a APIRF34
session_hash já existe no banco para o artigo → backend retorna 409 sem registrar duplicataRF34
Componente de avaliação presente → SSR não bloqueado nem degradadoRNF04 · RNF05