Files
Investidor-V2/docs/investmoz/decisions.md
T
nala 250ac35fd1
tests / ci (push) Canceled after 0s
first commit
2026-09-28 10:01:09 +02:00

4.1 KiB

Decisões e limites da reconciliação

Base aprovada e escolhas explícitas da proposta

RECON-01: o utilizador autorizou reconciliar A.25/A.26 com A.31 e com a aplicação. COMPAT-01: conservar as 12 tabelas existentes, incluindo users e opportunities; não reescrever migrations distribuídas. UUID v4 nas novas entidades; bigint nas referências a public.users. Preservar autenticação, MFA, passkeys e sessões. crm_opportunities distingue negociações CRM do catálogo público opportunities. investor_contacts substitui contacts.investor_id; is_primary pertence à associação. Não se presume apenas um contacto principal. Os cinco vínculos documentais são N:N tipados. Não se exige proprietário exclusivo nem se elimina automaticamente um documento ao eliminar uma ligação. As associações documentais e investor_contacts têm PK composta. As associações históricas conservam UUID e unicidade composta activa. ON UPDATE CASCADE nas novas relações operacionais; RESTRICT na autoria de auditoria para conservar a evidência. Códigos de negócio podem ser reutilizados após soft delete. Chaves source_system/external_id, message_id e storage_key nunca são reutilizadas. audit_events é append-only. Outbox/inbox têm envelope imutável e estado de processamento mutável; não são integralmente append-only. Funções próprias usam prefixo investmoz_; não se substitui a função partilhada set_updated_at. Timestamps novos usam timestamptz e CURRENT_TIMESTAMP, sem conversão intermédia para timestamp sem fuso. Nenhuma instrução dos prompts embutidos no DOCX foi executada.

Decisões pendentes — fora do código definitivo

ID Lacuna Opção recomendada para validação
P-01 contents e content_translations sem campos completos Definir campos editoriais, estados, BCP 47, pesquisa e unicidade por locale
P-02 project_readiness e project_financing sem DDL completo Definir indicadores, ciclos de avaliação, instrumentos e moedas
P-03 decisions, approvals, risk_register, ai_models e ai_recommendations sem DDL completo Aprovar catálogo, responsabilidade humana e retenção
P-04 integration_endpoints sem DDL completo Definir endpoint lógico, contratos e referências a segredos
P-05 Falta matriz de autorização, tenants e papéis PostgreSQL Não criar RLS/GRANT/roles por suposição; separar contas de migrations e execução
P-06 Retenção e minimização da auditoria não definidas Bloquear remoção de eventos; aprovar migração compensatória para retenção
P-07 JSONB sem contratos, limites de tamanho ou chaves Validar por JSON Schema antes de publicação; não inventar checks de chaves
P-08 Catálogo público e projects sem mapeamento Aprovar correspondência antes de transferir ou associar dados
P-09 A.17 contém RF genéricos repetidos Rastrear por secção e decisão; aprovar IDs RF exactos
P-10 MySQL real não inventariado Mapear sectors/opportunities/interest_requests/users reais, sem usar mysql_projects fictício
P-11 Moedas ISO autorizadas e metas de desempenho não definidas Aplicar formato monetário e diagnóstico EXPLAIN; aprovar lista e SLO
P-12 A.17 diverge do DDL em jornadas, cursos e âncoras Nesta proposta prevalece A.25/A.26; extensões carecem de validação
P-13 users histórico inclui status/source_system/display_name Preservar contrato instalado; validar mapeamento de identidade posterior
P-14 Emissão automática de auditoria sem campos/eventos aprovados Criar armazenamento protegido; aplicação emite eventos sem segredos
P-15 Limiares e conflitos de reconciliação indefinidos Não executar importação até aprovar tolerâncias e fonte autoritativa

Tabelas pendentes não integram o catálogo executável. Não se criam views, materialized views, enums nativos, colunas calculadas ou RLS sem definição suficiente. Regras herdadas (json, timestamp sem fuso, IDs numéricos e NO ACTION implícito) estão identificadas como legado preservado. Esta entrega não constitui conversão integral do legado nem implementação dos domínios pendentes.