2.9 KiB
05 — Motor do formulário do briefing
Contexto do projeto (leia sempre)
Sistema web "Briefing de Site" da SeConectai: o cliente se cadastra e depois preenche o briefing de criação do site, com um botão Ajuda em cada pergunta que abre um popup com o texto do guia auxiliar. O dono (Tiago) acompanha tudo por um painel admin.
Stack fixa: Next.js 14+ (App Router) + TypeScript, PostgreSQL 16, Prisma, Tailwind + shadcn/ui, React Hook Form + Zod, Auth.js v5 (Credentials, estratégia JWT), Docker Compose. Idioma da interface: pt-BR.
Regras gerais: leia 00-arquitetura-briefing-site.md e 99-progresso.md antes de começar; não avance se a etapa anterior estiver incompleta; ao terminar, devolva o 99-progresso.md atualizado. Não invente dependências fora da stack. Nada de senhas de clientes em lugar nenhum.
Pré-requisito
Etapas 01–04 concluídas.
Tarefa
- Criar briefing: botão "Iniciar meu briefing" cria
BriefingRASCUNHO. Os campos do cabeçalho do documento original (Empresa/Marca, Responsável, Data, Contato) são pré-preenchidos com os dados do cadastro e exibidos na primeira tela, editáveis. - Tela de abertura
/briefings/[id]: mostra o "Como preencher" e o aviso de senhas (vindos deConfiguracao), lista das 19 seções com progresso por seção (respondidas/total) e botão "Continuar de onde parei". - Tela de seção
/briefings/[id]/[secao]: título e descrição da seção; cada pergunta renderizada porcomponents/form/PerguntaField.tsx, escolhendo o componente pelotipo:TEXTAREA: textarea com contador discreto.RADIO: grupo de opções (uma escolha).CHECKBOX: múltipla escolha.ANEXO: tratado na etapa 08 (aqui, deixar placeholder). SepermiteComplemento, exibir abaixo um campo curto "Complemento / outro". O rótulo mostrarotulo, edicaaparece como texto de apoio. Cada pergunta tem espaço reservado para o botão Ajuda (etapa 06).
- Navegação: Anterior/Próxima seção, menu lateral (drawer no celular) com as 19 seções e indicadores de concluída/parcial; barra de progresso geral.
- Estado: React Hook Form por seção; valores iniciais carregados de
Resposta. Persistência vem na etapa 07. - "Respondida": considerar respondida se houver texto não vazio ou ao menos uma opção marcada. Perguntas não são obrigatórias por padrão (
obrigatoria=false); o documento aceita "Não se aplica" / "A definir" — exibir esses dois como atalhos (chips) em campos de texto que preenchem o valor ao toque.
Critérios de aceite
- As 19 seções renderizam a partir do banco, sem campo escrito à mão.
- Os 4 tipos funcionam com os valores corretos (inclusive complemento).
- Navegação entre seções e progresso corretos; usável em tela de 360 px.
- Cliente não consegue abrir briefing de outro cliente (404).
Atualize 99-progresso.md (05).