Files
Investidor-V2/docs/investmoz/document-library-completion-2026-10-06.md
T
nala 1106509116
tests / ci (push) Canceled after 0s
vrsao 2
2026-10-08 14:02:01 +02:00

11 KiB
Raw Blame History

Conclusão funcional da biblioteca documental

Data: 06/10/2026. Estado: implementação funcional; validação de conteúdo e publicação parcial. Este relatório actualiza e complementa legal-source-library-migration-2026-10-06.md, que documentava o estado anterior à importação do ficheiro do INE e à migração de vigência.

Resultado

A biblioteca /documentos tem agora pesquisa e filtros no servidor, ficha pública de cada registo publicável, consulta controlada de PDF/imagem e download protegido. A interface de gestão permite criar e editar rascunhos privados, ver proveniência e estado técnico, associar documentos a requisitos com uma referência concreta (artigo, secção, página ou excerto) e indicar período de aplicabilidade. Um ficheiro em análise pode ser guardado como rascunho; os controlos existentes continuam a impedir publicação até que a análise esteja limpa, o hash coincida e os restantes requisitos editoriais estejam cumpridos.

Foram importados quatro documentos para armazenamento privado. Todos permanecem internos, não publicados e com direitos não confirmados. A biblioteca pública vazia é, portanto, o resultado correcto nesta base: nenhuma autorização de direitos ou decisão editorial foi inferida a partir do antivírus ou da existência de uma fonte oficial.

Inventário e decisões pendentes por documento

Documento Proveniência e estado Relações Decisão pendente antes de publicar
Lei n.º 22/2022, republicação do Código do IVA PDF comparado byte a byte com o exemplar da AT; origem oficial confirmada. Estado jurídico registado como alterado, não como consolidação integral actual. Evidência documental do simulador fiscal. Gestor deve rever a possibilidade de divulgação da composição PDF e confirmar a versão/alcance editorial. Direitos: unconfirmed; classificação: internal.
BR n.º 248/2025, Suplemento n.º 1 PDF comparado byte a byte com endpoint oficial da AT. Reúne vários diplomas; estado jurídico agregado desconhecido. Evidência documental fiscal, sem afirmar que cada tema cria obrigação ou regra activa. Avaliar direitos da composição e identificar os diplomas e vigências individualmente antes de apresentar como referência consolidada.
BR n.º 89, I Série, de 08/06/2017 A ficha do INM identifica o aviso de rectificação da Lei n.º 13/2016 na p. 569; o binário local não foi comparado com um download oficial. Proveniência apenas identificada. Evidência fiscal; efeito temporal continua por confirmar. Obter o PDF/binário oficial, comparar hash e confirmar autenticidade, anexos e efeito da rectificação. Direitos continuam por confirmar.
Codificador da Divisão Político-Administrativa do INE, edição de 2012 Os bytes locais (67.067 bytes) coincidem com o PDF servido pelo URL oficial do INE. Confirma a origem do ficheiro, não a actualidade dos códigos nem os direitos de reutilização da composição. Sem associação automática às relações territoriais actuais. Rever reutilização/publicação e utilidade histórica. Não usar esta edição para atribuir localizações actuais sem reconciliação documentada.

Nos quatro registos, a análise antimalware foi concluída sem ameaça e os hashes analisados coincidem com os ficheiros guardados. Este resultado é uma verificação técnica, não prova de direitos de publicação, exactidão jurídica, vigência ou actualidade.

As seis referências de zonas em investment_legal_sources e as referências de DUAT continuam a ser URLs, não ficheiros anexados à biblioteca. Continuam pendentes de validação e não foram convertidas em documentos fictícios. O resumo de reforma fiscal de 2026 e folhas de revisão pessoal não foram importados como diplomas. Extractos e CSVs de revisão potencialmente pessoais também não foram importados.

Alterações desta entrega

  • app/Http/Controllers/PortalServicesController.php: consulta pública mantém os filtros de publicação, classificação, direitos, estado e hash; acrescenta ficha, consulta inline restrita a PDF/imagem com hash verificado, download público autorizado e download de gestão privado apenas para gestor e ficheiro activo/analisado.
  • routes/web.php: rotas da ficha/consulta e download de gestão com restrições de formato de ID e middleware de gestão existente.
  • resources/js/pages/portal/services.tsx e novo resources/js/pages/portal/document.tsx: catálogo, filtros combináveis, ordenação por tema, estado vazio, consulta/ficha/download e informação de proveniência sem expor chaves internas.
  • resources/js/pages/portal/manage.tsx: criação/edição de rascunhos, estado de análise, fontes detalhadas, downloads privados de gestão e datas de aplicabilidade. A criação de rascunho não altera o gate editorial.
  • database/migrations/2026_10_06_180000_add_document_applicability_dates.php: duas datas de aplicabilidade opcionais com validação de intervalo. Migração aditiva; não preenche registos antigos.
  • app/Console/Commands/ImportLegalSourceArchive.php: importador idempotente por hash para fontes explicitamente autorizadas, incluindo a cópia privada exacta do INE. Preserva rascunho, classificação interna, direitos não confirmados e não cria associações territoriais.
  • app/Console/Commands/CheckDocumentLibrarySchema.php: verificação de compatibilidade das colunas e invariantes da biblioteca.
  • tests/Feature/PortalServicesTest.php, tests/Feature/ImportLegalSourceArchiveTest.php, tests/Feature/DocumentLibrarySchemaCompatibilityTest.php: cobrem fluxos públicos/privados, scan, direitos, data, associações, importação e esquema.
  • tools/document-library-completion-browser.mjs e evidências associadas: verificação visual automatizada em desktop e telemóvel.

Dados activos, backup e migração

Base confirmada pelo Laravel: investemoz, PostgreSQL em 127.0.0.1:5432. Consulta somente de leitura após a migração: 4 documentos, 4 recursos, 0 recursos publicados, 4 documentos limpos e 0 trabalhos pendentes. Os registos importados mantêm classificação interna e direitos não confirmados.

Antes da migração foi criado o backup PostgreSQL customizado investemoz-before-document-library-applicability-20261006.dump e o arquivo de armazenamento investemoz-portal-documents-before-applicability-20261006.zip em %LOCALAPPDATA%\InvestMoz\Backups. pg_restore --list validou o dump e este foi restaurado com sucesso numa base isolada investmoz_restore_qa_afterimport_20261006; a contagem recuperada foi 4 documentos, 4 recursos e 11 associações, e os hashes dos ficheiros restaurados coincidiram. O ambiente isolado foi parado após o ensaio; as bases QA de restauração foram preservadas.

Aplicou-se apenas 2026_10_06_180000_add_document_applicability_dates.php à base activa, depois do backup/restauro. Não se reconstruíram tabelas, eliminaram documentos, preencheram campos editoriais em massa nem executaram migrações não relacionadas. portal:check-document-library-schema confirmou compatibilidade depois da migração.

O importador foi executado em modo de pré-visualização e aplicação; a repetição da aplicação reutilizou os quatro documentos pelo hash e não criou duplicações. A fila ficou sem trabalhos pendentes e os quatro documentos importados estavam em estado clean com hash verificado.

Verificações e evidências

  • PHP em QA isolado: php artisan test tests/Feature/PortalServicesTest.php tests/Feature/DocumentLibrarySchemaCompatibilityTest.php tests/Feature/ImportLegalSourceArchiveTest.php — 17 testes aprovados, 418 verificações.
  • Tipos: npm.cmd run types:check — aprovado.
  • Build: npm.cmd run build — aprovado. Avisos existentes: pacote opcional fontaine ausente e chunk services acima de 500 kB; não impediram a compilação.
  • Esquema activo: php artisan portal:check-document-library-schema — compatível.
  • Browser ligado à aplicação/base activa, /documentos: desktop 1440×1000 e telemóvel 390×844 — HTTP 200, zero erros JavaScript, sem overflow horizontal, primeiro foco de teclado no link “Saltar para o conteúdo”, pesquisa sem correspondência mantém estado vazio, 0 documentos publicados. Evidência estruturada em document-library-completion-browser-2026-10-06.json; capturas em document-library-completion-desktop-2026-10-06.png e document-library-completion-mobile-2026-10-06.png.
  • O browser confirma o estado vazio seguro, não um documento público positivo. Não se publicou documento real porque os direitos permanecem por confirmar. Ficha, download e consulta de documento público têm testes de autorização; não existe ainda demonstração visual de download público de um documento real autorizado.

Limites e acções seguintes

  1. Um gestor autorizado revê os quatro documentos individualmente e regista direitos/classificação; publica apenas os ficheiros cuja divulgação esteja sustentada. A origem oficial confirmada não equivale automaticamente a autorização da composição ou do PDF.
  2. Para o BR n.º 89, obter do INM o binário integral oficial e comparar antes de promover a origem a confirmada.
  3. Validar conteúdo e vigência de cada diploma do BR n.º 248 separadamente; não o tratar como um único diploma vigente.
  4. Rever manualmente as datas/versão e utilidade do codificador INE de 2012; não o usar como catálogo territorial actual.
  5. Identificar os binários oficiais e os requisitos exactos dos percursos de zonas e DUAT antes de criar anexos/associações adicionais.
  6. Após a decisão documental do gestor, voltar a verificar o percurso positivo no browser: localizar o recurso publicado, abrir a ficha, consultar ou descarregar o mesmo ficheiro e aceder à referência no módulo associado.

Rollback estrutural: a migração acrescentou apenas colunas opcionais. O rollback operacional recomendado é restaurar o backup de base e o arquivo de armazenamento juntos, se necessário, ou manter as colunas inactivas. O down da migração só deve ser usado se as datas ainda não tiverem sido preenchidas; não eliminar esses dados depois de começarem a ser usados. Os quatro imports podem ser preservados como rascunhos; não remover ficheiros/dados automaticamente.