Mercado de Negócios Existentes — Fase 0
Estado mais recente: implementação e operação local do núcleo privado. A progressão entre fases foi posteriormente autorizada pelo utilizador; as paragens históricas abaixo não representam a autorização actual.
Actualização posterior: o utilizador solicitou continuação. Foi implementado e testado o núcleo privado da Fase 1. A presente página conserva o diagnóstico e a decisão histórica da Fase 0; não é o estado mais recente da implementação.
Data: 28/09/2026. Branch: feature/existing-business-phase-0.
Execução e decisão
Fase executada: descoberta e enquadramento. Todas as etapas estão autorizadas para implementação, mas o prompt exige executar uma fase de cada vez e proíbe avançar automaticamente. Esta entrega não inicia a Fase 1.
Recomendação: No-Go para o gate de prontidão da Fase 0. A autorização de desenvolvimento do dono do produto está registada. Não foram fornecidas política de publicação aprovada, base legal validada, equipa nominal, carteira piloto com titulares confirmados ou evidência suficiente para homologar o ambiente. O diagnóstico técnico está entregue; a fase não está homologada como concluída. Não se inventaram essas aprovações.
Diagnóstico confirmado
| Componente | Evidência no repositório | Aplicação ao mercado |
|---|---|---|
| Stack | composer.lock: Laravel 13.30.1, Fortify 1.39.0, Inertia Laravel 3.3.3; instalados React 19.2.8, TypeScript 5.9.3, Vite 8.2.2 | Compatível; sem nova dependência |
| Runtime e BD | Inventário apenas de leitura: PHP 8.5.11, PostgreSQL 17.11, PostGIS 3.6.2 | Reutilizar; desenvolvimento local não comprova prontidão de produção |
| Identidade | users, organizations, memberships; Fortify e manage-portal | Identidade da conta não comprova titularidade nem representação; falta mandato por anúncio |
| Catálogo | InvestmentCatalogue, investment_items e mapeamento de oportunidades | Preservar IDs; não converter oportunidade em negócio sem revisão |
| Workspace | InvestmentWorkspace, InvestmentSubmissionController | Cifragem, snapshots, consentimento, mensagens e notificações reutilizáveis; sem workflow MNE |
| Documentos | documents, anexos privados, download autenticado com checksum | Não equivale a data room: faltam grants temporais, NDA validado, watermark e scanner comprovado |
| CRM interno | ConvertInterestToLead, CrmTask, leads, interest_requests | Conversão transaccional, consentimento e próxima acção; falta deduplicação negócio/modalidade/período |
| CRM externo | SuiteCrmClient, config/suitecrm.php, testes com doubles | Timeout 10s, ligação 3s, retries de leitura 2 e circuito configurados; nenhuma sincronização MNE real comprovada |
| Territórios | Clusters/corredores/projectos, zonas, PostGIS | Reutilizar relações; GIS transversal ainda incompleto, conforme ../gis/README.md |
| Notificações | investment_notifications, outbox_events/inbox_events | Notificações internas e infraestrutura; não presumir envio externo ou SLA contratado |
| Pagamentos/facturação | Nenhum módulo operacional identificado nas áreas inspeccionadas | Fora do piloto; sem taxas, comissões, impostos ou cobrança inventados |
| Jurídico | Fontes de zonas e documentos; não foi encontrado motor de elegibilidade MNE | Não reutilizar validação de ZEE como análise jurídica de venda/cessão |
Inventário agregado local em 28/09/2026: 103 tabelas, 38 migrations, 6 oportunidades, 6 investment_items, 16 projectos, 29 dossiers, 8 clusters, 6 corredores. Zero documentos, organizações, geometrias, localizações, zonas, pedidos de interesse e leads. Há 1 investidor; não foi lido o seu conteúdo. As 6 oportunidades não têm opportunity_profiles com source_reference; este indicador não prova ausência de todas as fontes possíveis. Nenhum destes registos foi reclassificado como negócio existente.
Não se encontrou cadastro dedicado de anúncios MNE, mandatos, titularidades, licenças transferíveis, data rooms, propostas MNE ou comissões. Pesquisa por nomes não substitui inventário semântico com os responsáveis. Não foram consultados segredos nem activados serviços externos.
Conservar–Melhorar–Substituir–Descontinuar
| Decisão | Componente | Acção proposta |
|---|---|---|
| Conservar | Laravel/React/PostGIS, identidade, documentos canónicos, outbox e IDs mestres | Adaptadores versionados; manter contratos existentes |
| Melhorar | Autorização | Função e atributo por anúncio, mandatário, revisor e aprovador; MFA privilegiado; segregação em dois níveis |
| Melhorar | Documentos e CRM | Quarentena/scanner, grants revogáveis, escopo por anúncio; idempotência e reconciliação MNE |
| Melhorar | Catálogo, pesquisa e GIS | Projecção pública mínima separada; indexar só atributos autorizados; testar reidentificação |
| Substituir, apenas no novo fluxo | Autodeclaração como prova de legitimidade | Evidência documental e revisão humana; preservar declarações históricas |
| Descontinuar | Nenhum componente existente nesta fase | Nenhuma remoção; retirar práticas de divulgação não autorizada apenas após análise de impacto |
Jornada proposta
- Anunciante cria rascunho privado e escolhe modalidade; identifica natureza do negócio/activo/direito sem anunciar transmissibilidade como facto.
- Submete identidade, representação/mandato, documentos, fontes, consentimentos e autorização de publicação.
- Triagem verifica completude e sinais de fraude; revisor examina evidências; pendências regressam ao anunciante. Titularidade declarada e documentalmente verificada são estados distintos.
- Dois níveis de aprovação independentes avaliam a versão exacta; alterações relevantes invalidam aprovações. Publicação produz apenas resumo autorizado e localização indicativa.
- Interessado pesquisa e manifesta interesse; CRM deduplica pela chave acordada, conserva origens e atribui responsável/próxima acção.
- Pedido de acesso exige conflitos declarados, aprovação do proprietário e NDA apenas após validação jurídica; sala segregada e temporária.
- Diligência especializada, propostas não vinculativas e negociação assistida; encerramento regista resultado sem formalizar transmissão.
- Expiração/revogação/denúncia suspende divulgação e acessos afectados; revisão e arquivo preservam evidências segundo retenção aprovada.
Estados solicitados: rascunho, submetido, em triagem, em revisão, pendente de informação, validado, aprovado, publicado, suspenso, retirado, em negociação, concluído, arquivado. Grafo de transições, actores e invariantes serão definidos na Fase 1; ainda não existe máquina de estados MNE implementada.
RACI proposto — atribuições nominais pendentes
| Actividade | Responsável pela execução (R) | Responsável final (A) | Consultados (C) | Informados (I) |
|---|---|---|---|---|
| Escopo, piloto e política | Produto | Dono do Produto | Jurídico, Dados, Segurança | Operações |
| Modelo e contratos | Engenharia/Arquitectura | Arquitectura | Dados, CRM, Segurança | Produto |
| Legitimidade, direitos, NDA, KYC/AML aplicável | Jurídico/Conformidade | Responsável jurídico designado | Titular, entidade competente quando autorizada | Produto |
| Triagem e revisão documental | Operações/revisor | Gestor de validação | Jurídico, Dados | Anunciante |
| Aprovação/publicação | Aprovadores de níveis 1 e 2 | Responsável editorial designado | Jurídico, Segurança | CRM |
| Sala segura e incidentes | Segurança/Operações | Responsável de segurança | Jurídico, Dados | Produto |
| UAT e recuperação | QA/Operações | Dono do Produto | Arquitectura, Segurança | Suporte |
| Comissões/facturação futura | Finanças | Responsável financeiro | Jurídico, Auditoria | Produto |
Papéis propostos não concedem permissões. Ninguém foi nomeado por inferência. Autor da submissão não pode aprovar a própria publicação; os dois níveis exigem segregação a especificar e testar.
Matriz jurídica e modalidades
Esta matriz é de questões para validação, não parecer ou afirmação de admissibilidade legal. Não foram inventadas leis, termos de uso ou autoridades competentes. Regra, fonte oficial, versão, entidade, parecer e validade ficam pendentes.
| Grupo de modalidades solicitadas | Objecto a distinguir | Verificação e documento necessário | Responsável proposto / estado |
|---|---|---|---|
| Venda 100%, parcial, aumento de capital, investidor financeiro, sócio estratégico, comprador | Empresa, participação, mandato e avaliação | Titularidade/representação, encargos, consentimentos e requisitos da operação | Jurídico + titular / pendente |
| Cessão de posição, franchising, joint venture | Contrato, licença de uso, posição contratual | Restrições, consentimentos de terceiros, validade e análise da cessão | Jurídico / pendente |
| Venda/arrendamento de activos, transferência de unidade, sucessão | Activo físico, unidade, contratos e obrigações | Cadeia documental, legitimidade, passivos e autorizações | Jurídico + diligência especializada / pendente |
| Recuperação, expansão, internacionalização | Pedido de capital e finalidade | Informação financeira rotulada, riscos e verificação independente | Revisor + assessor / pendente |
| Imobiliário, propriedades, benfeitorias, investimentos agrícolas | Imóvel/unidade, investimento, direito de uso/ocupação e contrato separados | Área/limites, ocupação, encargos, litígios, finalidade, prazo, autorizações e transmissibilidade | Jurídico fundiário + entidade competente por confirmar / pendente |
| Licenças mineiras/florestais e outras | Licença, titular declarado, entidade emissora e actividade | Fonte competente autorizada, validade, restrições, obrigações e possibilidade de transmissão | Jurídico sectorial + entidade por confirmar / pendente |
Termos de uso, base de tratamento, consentimento granular, retenção, conflitos de interesse, prevenção de fraude, denúncias, critérios AML/KYC quando aplicáveis e NDA: todos pendentes de aprovação especializada. Não recolher prova de fundos como obrigação geral nem presumir validade de assinatura electrónica. Política proposta: ausência de evidência bloqueia publicação/acesso; nenhum rótulo indica certificação da Tempo.
Classificação e ameaças
| Dados | Classificação inicial proposta | Controlos e teste de aceitação |
|---|---|---|
| Teaser aprovado, modalidade, sector, região indicativa, valor rotulado | Público apenas após autorização | Allowlist na API/índice/exportação; teste de reidentificação |
| Triagem, tarefas, estados, origens CRM | Interno | Menor privilégio; auditoria sem conteúdo reservado |
| Empresa, financeiros, contratos, clientes/fornecedores, propostas | Confidencial | Cifragem, escopo por anúncio, grants temporais; teste de acesso cruzado |
| Identidade, títulos/licenças integrais, coordenadas exactas, segredos e denúncias | Restrito por defeito até classificação aprovada | Sem índice público; URLs não públicas, revogação/expiração, logs minimizados |
Finalidade, base, dono, retenção, eliminação e divulgação precisam de decisão por categoria; nenhum prazo foi inventado. Cifragem existente depende da chave Laravel e não substitui gestão de chaves, mandatos ou política de retenção.
| Ameaça | Controlo planeado | Prova exigida |
|---|---|---|
| Anunciante falso/mandato revogado | Verificação separada de conta, identidade, representação e mandato; revalidação | Publicação negada quando ausente/expirado/revogado |
| IDOR entre negócios ou data rooms | Autorização por utilizador, negócio, documento, versão e grant | Leitura/download/listagem cruzados negados |
| Auto-publicação e corrida de versões | Dupla aprovação, lock transaccional e versão esperada | Auto-aprovação negada; versão obsoleta 409 |
| Reidentificação no mapa/pesquisa | Projecção mínima e política GIS comum | Nenhuma coordenada restrita por filtros, cache ou exportação |
| Malware/ficheiro disfarçado | Quarentena, análise e validação de conteúdo | Nenhum download antes do resultado autorizado; falha do scanner bloqueia |
| Revogação com URL/cache persistente | Revalidar cada acesso, no-store, invalidação e TTL | URL partilhado/expirado não concede acesso |
| Duplicação/replay CRM e webhooks | Chave de idempotência, outbox/inbox, autenticação e reconciliação | Replay não duplica lead; falha externa recuperável |
| Fraude, discriminação ou matching opaco | Sinais explicáveis, fila humana, conflitos e denúncias | Sem contacto/recusa definitiva automática |
| Pipeline contabilizado como receita | Valores por natureza e eventos financeiros aprovados | Comissão/cobrança bloqueadas sem contrato/regra/evento |
Backlog e escopo piloto proposto
Fase 1: modelo canónico, modalidades, activos/direitos separados, mandato, classificação, revisões, retenção e invariantes. Fase 2: submissão privada, dois níveis, documentos em quarentena, API versionada e OpenAPI. Fase 3: projecção pública, filtros, acessibilidade e mapas autorizados. Fase 4: interesse/CRM e matching revisto. Fase 5: acesso/NDA/sala segura/diligência. Fase 6: negociação; facturação só quando enquadrada. Fase 7: migração, piloto e operação.
Piloto proposto: ambiente isolado e fixtures exclusivamente sintéticas; primeiro rascunho privado de participação empresarial, sem divulgação, pagamento, NDA emitido ou integração externa real. Carteira real, quantidade, modalidades elegíveis e titulares dependem de validação. Não excluir do backlog as modalidades imobiliárias/fundiárias/licenças; ficam sujeitas às verificações específicas acima.
Prontidão: dono e equipa nomeados; política/base/termos aprovados; amostra piloto legitimada; matriz de acesso/retencão; backup/restauro; zero defeitos críticos nas jornadas; revisão humana de segurança; suporte e resposta a incidentes; reconciliação e rollback ensaiados. A autorização genérica de implementação não prova estes itens.
Plano aplicado e ficheiros
Inspeccionados manifests/locks, migrations, configuração de CRM, serviços de catálogo/workspace/CRM, controllers de documentos, testes e inventário agregado em transacção READ ONLY. Criada branch própria, preservando alterações não commitadas anteriores de GIS e interface. Produzidos este diagnóstico, traceability.csv e validation.md. Nenhum ficheiro aplicacional removido ou alterado para o MNE.
Migrations/seeders: nenhum nesta fase de descoberta. Não alterados schema, dados de negócio, APIs, componentes ou integrações. Não se justifica gerar migrations sem modelo aprovado e depois chamar à descoberta uma implementação funcional. Rollback desta fase: reverter apenas o commit documental MNE; não usar reset/clean nem reverter alterações GIS/portal já existentes.
Proposta da fase seguinte: reconciliar entidades existentes e produzir modelo ER/dicionário/invariantes da Fase 1; caminhos, tabelas e endpoints novos serão propostas explícitas, não descritos como existentes. Não iniciada nesta entrega.