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])emResposta;@@unique([ordem])emSecaoe@@unique([secaoId, ordem])emPergunta; índices emBriefing.clienteId,Briefing.status,Anexo.briefingId.onDelete: Cascadeapenas deBriefing → Resposta/Anexo; não colocar cascade deCliente → Briefing(preservar histórico).- campos
criadoEm/atualizadoEm(@default(now()),@updatedAt). opcoeseselecionadascomoJson.
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 devaplica sem erro no Postgres do Docker.npx prisma validateok;prisma studiomostra todas as tabelas.- Nenhuma coluna de CPF em texto puro (apenas
cpfCifradoecpfHash).
Atualize 99-progresso.md (02).