Initial SeConectai briefing system
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
# 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).
|
||||
Reference in New Issue
Block a user