4.1 KiB
4.1 KiB
Mapa de implementação — Gerador de Propostas
Estado: prompt 01 concluído no papel. ADR-000 aceito: standalone neste repositório. P-006, P-009, P-010 e P-011 seguem Proposed.
Layout
app/ # prompt 04; ainda não existe
src/domain/{models,proposals,generation,delivery,audit,branding,cro,shared}
src/application/generation # coordinator da geração
src/application/access # interface; implementação no prompt 03
src/ports/
src/infrastructure/memory # somente duplos de teste
src/integrations/elopro # CRO e futuros contratos, sem código compartilhado
src/ui # prompt 04
src/observability
supabase/migrations/ # prompt 02; ainda não existe
docs/gerador-propostas/adr/
PostgreSQL será a fonte de verdade dos estados formais. Redis ficará com lock, claim de geração e job efêmero. Nenhum dos dois clientes está instalado.
Mapa por prompt
| Prompt | Feature | Onde deve morar | Padrão existente |
|---|---|---|---|
| 01 | Arquitetura, ADRs P-006/P-009/P-010/P-011, ports | docs/gerador-propostas/ARCHITECTURE.md, docs/gerador-propostas/adr/, src/ports/ |
Feito. ADRs 001–004 em Proposed. Sem sequence, sem motor, sem provider. |
| 02 | Schema, constraints, RLS | supabase/migrations/ |
Nenhum. Toda tabela de domínio tenant-safe por workspace_id ou FK + RLS. |
| 03 | Auth, workspace, papéis | src/application/access/ + guards nas actions |
Interface WorkspaceAuthorizer sem adapter permissivo. workspace_id resolvido no servidor. |
| 04 | DS V2.1 e app shell | app/, estilos Tailwind v4, componentes locais do domínio |
Nenhum token no repo. Lacunas de DS (Search, Table, Stepper, Empty, Pagination, Skeleton, Upload, Avatar) ficam locais, não globais. |
| 05 | Listagem de modelos e limite 10 | src/domain/models/ + rota de Modelos |
Contar draft/active/archived; versões não ocupam vaga. |
| 06 | Upload e análise [campo] |
porta TemplateIngestionService; UI de upload local |
P-010 aberto. Sem inferir campo por IA/heurística. |
| 07 | Revisão de campos, ativação, V1/V2+ | domínio de modelos | Versão ativada imutável no fluxo normal. Só modelo Ativo inicia proposta. |
| 08 | Lock, autosave, arquivar, excluir modelo | Redis lock + PostgreSQL estado | TTL 10 min, sem force takeover. |
| 09 | Home 4.1 e seleção | app/ propostas |
Abrir fluxo não cria rascunho vazio. |
| 10 | Editor 4.2, campos, preview | uma página, estados Preencher → Validar → Gerar | Tipos Texto e Número/moeda; default Texto; obrigatório = Não. |
| 11 | Autosave, lock, salvar, sair, trocar modelo | drafts + lock | Rascunho nasce no primeiro persist. Lock só libera após sucesso de salvar e sair. |
| 12 | Validar e gerar, idempotência | GenerationCoordinator + job |
Falha não cria número, versão formal nem PDF parcial. |
| 13 | Versões, histórico, download | proposal_versions + storage privado |
PDF servido é o da versão exibida. Histórico não é editável. |
| 14 | E-mail, auditoria, Sentry | porta de e-mail + proposal_audit_events + Sentry |
P-011 e P-001 abertos. Sem documento integral nem PII desnecessária em log/Sentry. |
| 15 | Pré-preenchimento CRO | src/domain/cro/ |
Opcional. Standalone funciona sem CRO. P-002 aberto (fonte de Cliente). |
| 16 | Testes, segurança, a11y | Vitest + testes de RLS/cross-tenant | Ainda sem runner. |
| 17 | Performance e resiliência | sem módulo novo obrigatório | P-012 aberto; não inventar SLO. |
| 18 | CI/CD e runbook | pipeline no remoto Gitea (não há .github/) |
Sem pipeline hoje. |
| 19 | Auditoria de lacunas | docs/gerador-propostas/ |
Confrontar com SOURCE_OF_TRUTH.md §7 e §8. |
Fora do MVP (não mapear como entrega)
USD/i18n, editor rico, modelo do zero, duplicar modelo, assinatura, WhatsApp/CRM, status Enviada/Aceita/Rejeitada, rollback de checkpoint, app nativo, Contrato habilitado (P-005), Apresentação (P-004).
Gates
Ordem e gates humanos: EXECUTION_ORDER.md e HUMAN_REVIEW_CHECKLIST.md. O próximo passo permitido é o prompt 01, depois de revisão desta discovery.