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

65 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.