# 03 — Seed do briefing (seções, perguntas e ajudas) ## 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 Etapa 02 concluída. ## Arquivo de dados `prisma/briefing-seed.json` (fornecido junto com este guia; copie para `prisma/`). Estrutura: ```json { "meta": { "comoPreencher": [..], "avisoSenhas": "..", "confirmacaoCliente": ".." }, "secoes": [ { "ordem": 1, "titulo": "..", "descricao": "..", "perguntas": [ { "ordem": 1, "rotulo": "..", "dica": "..", "tipo": "TEXTAREA|RADIO|CHECKBOX|ANEXO", "opcoes": ["..."], "permiteComplemento": true, "ajuda": { "oQueResponder": "..", "porQuePerguntamos": "..", "miniExemplo": ".." } } ] } ] } ``` O arquivo tem 19 seções e 149 perguntas; todas têm `ajuda`. ## Tarefa 1. Criar `prisma/seed.ts` **idempotente** (upsert por `secao.ordem` e por `secaoId+ordem`): cria `Secao`, `Pergunta` e `Ajuda`. Reexecutar o seed atualiza textos sem duplicar e **sem apagar respostas** existentes. 2. Guardar `meta` (como preencher, aviso de senhas, confirmação do cliente) em uma tabela `Configuracao (chave, valor Json)` — adicionar via migration `0002_configuracao`. 3. No mesmo seed, criar o usuário ADMIN a partir de `ADMIN_EMAIL`/`ADMIN_INITIAL_PASSWORD` (hash argon2), apenas se não existir. 4. Configurar `prisma.seed` no `package.json`. 5. Criar `lib/briefing-queries.ts` com `getEstruturaBriefing()` que retorna seções → perguntas → ajuda, ordenadas, em uma única consulta. ## Critérios de aceite - [ ] Após `npm run db:seed`: 19 seções, 149 perguntas, 149 ajudas. - [ ] Rodar o seed duas vezes não duplica nada. - [ ] Contagem por tipo: TEXTAREA 117, RADIO 11, CHECKBOX 6, ANEXO 15. - [ ] Admin criado; senha só em hash. Atualize `99-progresso.md` (03).