F16 — Gerenciar artigos de FAQ
IT1 · Rastreabilidade: F16 · CP6 · OE2
Issue da Feature (GitHub): #59 — abrir no GitHub
Esta funcionalidade exige login de administrador.
E-mail: owner@crianex.com · Senha: Crianex@Owner1
Requisitos (evidências)
Selecione um requisito na navegação abaixo. Cada um traz seus critérios de aceite, regras de negócio e um espaço para o screenshot da funcionalidade em funcionamento (substitua a imagem de placeholder pela captura real).
- RF28
- RF29
- RF30
- RF31
- RNF01
- RNF04
- RNF05
- DoR
- DoD
RF28 — Cadastrar artigo de FAQ
Critérios de aceite (BDD)
- Dado admin autenticado com dados válidos (PT e EN), quando cadastrar artigo, então é persistido com
published = falsepor padrão. - Dado campos obrigatórios vazios, quando submeter, então a validação impede a criação.
- Dado agente externo sem token, quando INSERT/UPDATE direto no Supabase, então o RLS bloqueia com 403.
Regras de negócio: RN16 — Publicação explícita de conteúdo (artigo nasce published = false por padrão)
Evidência (screenshot):

Deploy: link a definir
RF29 — Editar artigo de FAQ
Critérios de aceite (BDD)
- Dado admin autenticado, quando editar artigo, então PATCH
/admin/faq/articles/:idatualiza o conteúdo. - Dado campos inválidos, quando submeter, então a validação impede e mantém a versão anterior.
- Dado artigo inexistente, quando editar, então retorna 404 sem efeito.
Regras de negócio: —
Evidência (screenshot):

Deploy: link a definir
RF30 — Remover artigo de FAQ
Critérios de aceite (BDD)
- Dado admin autenticado, quando remover artigo, então DELETE
/admin/faq/articles/:ido exclui. - Dado remoção, quando acionada, então exige confirmação antes de excluir.
- Dado artigo inexistente, quando remover, então retorna 404 sem efeito.
Regras de negócio: —
Evidência (screenshot):
Deploy: link a definir
RF31 — Categorizar artigo de FAQ
Critérios de aceite (BDD)
- Dado admin autenticado, quando categorizar artigo, então a categoria é associada via modal dedicado.
- Dado categoria vinculada a um produto, quando associada ao artigo, então a relação é persistida corretamente.
- Dado artigo sem categoria, quando salvo, então recebe tratamento padrão sem quebrar a listagem.
Regras de negócio: RN23 — Categorização vinculada a produto (categorias de FAQ organizam os artigos por produto)
Evidência (screenshot):

Deploy: link a definir
RNF01 — Isolamento de acesso administrativo
Classificação: Segurança
Descrição: Toda rota do painel administrativo é servida em endpoint/caminho distinto do site público e exige token de sessão (JWT) válido; requisições sem token válido recebem HTTP 401/403 e nunca renderizam dados administrativos, mesmo parcialmente.
Evidência (screenshot):

Verificação: Resultados V&V da IT1
RNF04 — Renderização server-side da vitrine
Classificação: Organizacional
Descrição: Todas as páginas públicas da vitrine são renderizadas no servidor (SSR) antes do envio ao cliente: o HTML inicial já contém o conteúdo textual completo, verificável via curl/"view-source" sem executar JavaScript.
Evidência (screenshot):

Verificação: Resultados V&V da IT1
RNF05 — Otimização para mecanismos de busca (SEO)
Classificação: Externo
Descrição: Cada página pública expõe meta tags (title, description, Open Graph), sitemap.xml atualizado a cada publicação e robots.txt permitindo indexação; validado sem erros no Google Rich Results Test e nota ≥ 90 no Lighthouse SEO.
Evidência (screenshot):
Verificação: Resultados V&V da IT1
Definition of Ready — Evidências
Checklist do DoR aplicado à F16 antes de entrar em execução. Todos os itens foram atendidos conforme o critério definido em DoR e DoD.
| Critério DoR | Status | Evidência |
|---|---|---|
Título no padrão FDD <ação> <resultado> <de/para/no/com> <objeto> | ✅ | Issue #59 — título conforme o padrão |
| Critérios de aceite escritos e verificáveis (Given/When/Then) | ✅ | Ver abas RF/RNF desta página — todos os cenários BDD documentados |
| Estimativa registrada: VB, CX e IP calculados | ✅ | Priorização do Backlog — coluna IP da tabela de features |
| Dependências identificadas; bloqueantes resolvidos | ✅ | Mapa de Dependências — IT1 — bloqueantes verificados antes do início |
| Class Owner designado e linkada à Feature parent e à CP de origem | ✅ | Issue #59 — assignees e labels de CP/Feature registrados |
| Protótipo revisado pelo cliente | ✅ | Protótipo de Alta Fidelidade — IT1 |
| Technical Design Review (TDR) concluída |

