Files
SeConectai_Web/Schema/03-seed-briefing-do-docx.md

2.5 KiB

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:

{ "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).