Files
SeConectai_Web/Schema/02-banco-prisma-schema.md
T

2.0 KiB

02 — Banco de dados e schema Prisma

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 01 concluída em 99-progresso.md.

Tarefa

Implementar em prisma/schema.prisma o modelo descrito no doc 00 (seção "Modelo de dados"), com:

  • enums Papel {CLIENTE ADMIN}, TipoPessoa {PF PJ}, TipoPergunta {TEXTAREA RADIO CHECKBOX ANEXO}, StatusBriefing {RASCUNHO ENVIADO EM_ANALISE CONCLUIDO}.
  • @@unique([briefingId, perguntaId]) em Resposta; @@unique([ordem]) em Secao e @@unique([secaoId, ordem]) em Pergunta; índices em Briefing.clienteId, Briefing.status, Anexo.briefingId.
  • onDelete: Cascade apenas de Briefing → Resposta/Anexo; não colocar cascade de Cliente → Briefing (preservar histórico).
  • campos criadoEm/atualizadoEm (@default(now()), @updatedAt).
  • opcoes e selecionadas como Json.

Gerar a migration inicial 0001_init e o client Prisma; criar lib/db.ts com singleton do PrismaClient.

Critérios de aceite

  • npx prisma migrate dev aplica sem erro no Postgres do Docker.
  • npx prisma validate ok; prisma studio mostra todas as tabelas.
  • Nenhuma coluna de CPF em texto puro (apenas cpfCifrado e cpfHash).

Atualize 99-progresso.md (02).