docs(iva): prepare one G9A-G9J delivery after backup and isolated restore
tests / ci (push) Canceled after 0s

This commit is contained in:
2026-10-24 23:49:58 +02:00
parent 4601bf64a0
commit 2a7254406d
2 changed files with 216 additions and 0 deletions
@@ -0,0 +1,206 @@
{
"status": "ready_after_fresh_authenticated_preflight_and_verified_backup_restore",
"candidate": "4601bf64a03a02254cbf2e247374996cb36b6a49",
"base_installed": "03c26d66139f36573cf58362a5076b4d5f98eca2",
"coverage_complete_branches": {
"AUD-SIM-L1-P111": [
"rights_service"
],
"AUD-SIM-L1-P112": [
"advertising_service"
],
"AUD-SIM-L1-P113": [
"telecom_service"
],
"AUD-SIM-L1-P114": [
"consulting_service"
],
"AUD-SIM-L1-P115": [
"data_service"
],
"AUD-SIM-L1-P116": [
"finance_service"
],
"AUD-SIM-L1-P117": [
"staff_service"
],
"AUD-SIM-L1-P118": [
"intermediation_service"
],
"AUD-SIM-L1-P119": [
"abstention_service"
],
"AUD-SIM-L1-P120": [
"movable_lease_service"
]
},
"branch_count_complete": 10,
"treatment_count": 10,
"runtime_delta": [
{
"path": "resources/js/lib/iva-listed-services.ts",
"sha256_LF": "fdc05407576a6c68f8158bc797331380c09e84282609a06ae2a7aa2966c54db6"
},
{
"path": "resources/js/components/simulation-listed-services.tsx",
"sha256_LF": "77badfa54c3bb6e25fe5153bb852cebc48262b64b4aabc9348a2b1838094917a"
},
{
"path": "resources/js/components/simulation-monthly-iva.tsx",
"sha256_LF": "43446ed6a23b0e101d72ea50f73cdbae0242ace92af12d836a0955cc85800d82"
},
{
"path": "resources/js/lib/project-dossier.ts",
"sha256_LF": "fea39f530bf7786778dbdadbb6b08678f2a4071bcccc264e3d026155477517c8"
}
],
"counts_before": {
"delivered": 93,
"QA": 10,
"functional_pending": 29,
"documentary": 1,
"total": 133
},
"counts_current": {
"delivered": 93,
"QA": 10,
"functional_pending": 29,
"documentary": 1,
"total": 133
},
"counts_after_delivery": {
"delivered": 103,
"QA": 0,
"functional_pending": 29,
"documentary": 1,
"total": 133
},
"QA_proofs_reused": [
"iva-l1-g9-nondigital-qa-20261024.json"
],
"authorization": "Tempo explicitly requests one joint delivery of4601bf64,P111–P120,main compatibility/concurrent changes preserved,installeddelta only",
"scope": "2026,serviços enumerados não digitais;localização e identificação do responsável pelas obrigações. Sem isenção confirmada,base,taxa,IVA,montante a pagar,dedução/campo11 ou totaisModeloA. P121/P130digitais eP002transversal não fechados;outros6(4)/(5)encaminhados para percursos próprios. Não automatiza declaração,pagamento,retenção ou prazo digital32(1)c.",
"source": "CIVA2(1)a/b,2(2),6(3),6(7)a–j e6(8),Lei13/2016PDF6–8/p1426(264–266);23(1)/(2),25(4),26(1–3),PDF16–17. Lei22/2022não altera estes artigos. Lei10/2025PDF12mantém alíneasa–j ealtera6(7–9);PDF13art23(2)excluik e remete declaração33(2);PDF14mantém26(1–3),adita26(4)digital ealtera33(2).",
"meaning": {
"P111": {
"clause": "6(7)a",
"treatment": "rights_service",
"nature": "Cessão/autorização de direitos de autor,licenças,marcas e análogos"
},
"P112": {
"clause": "6(7)b",
"treatment": "advertising_service",
"nature": "Publicidade"
},
"P113": {
"clause": "6(7)c",
"treatment": "telecom_service",
"nature": "Telecomunicações"
},
"P114": {
"clause": "6(7)d",
"treatment": "consulting_service",
"nature": "Consultores,engenheiros,advogados,economistas,contabilistas/gabinetes de estudos,organização,investigação/desenvolvimento e similares"
},
"P115": {
"clause": "6(7)e",
"treatment": "data_service",
"nature": "Tratamento de dados/fornecimento de informações"
},
"P116": {
"clause": "6(7)f",
"treatment": "finance_service",
"nature": "Operações bancárias,financeiras,seguro/resseguro;eventual isenção independente"
},
"P117": {
"clause": "6(7)g",
"treatment": "staff_service",
"nature": "Colocação de pessoal"
},
"P118": {
"clause": "6(7)h",
"treatment": "intermediation_service",
"nature": "Intermediação em nome epor conta de outrem no fornecimento de serviço enumerado,subjacente identificado"
},
"P119": {
"clause": "6(7)i",
"treatment": "abstention_service",
"nature": "Obrigação de não exercer,mesmo parcialmente,actividade/direito enumerado,subjacente identificado"
},
"P120": {
"clause": "6(7)j",
"treatment": "movable_lease_service",
"nature": "Locação de bens móveis corpóreos,incluindo financeira,bens/contrato identificados"
}
},
"formula": "Territorial classification and responsible party only,no monetarycalculation. No righttodeduction prerequisite for6(7);nondigital23(2)excludedigital26(4)/32(1)c routing.",
"preservation": "93prior closures and partialP084/P085 preserved;accepted perbranchQA reused;one integration/backup/real isolatedrestore/check for whole set",
"partial_P084_P085": "Preparation/conditional simulation only,benefits pending;no closure",
"limits": "P084/P085partial,pending;L1open;P00105/06;beveragesL2/L3;Statistics/AIdeferred",
"containment": "l1-g9-nondigital-readonly-rollback-20261024.patch,checked only,not applied;blocks newP111–120classifications,preserves readers/history/otherbranches",
"authenticated_preflight": {
"installed": {
"status": "installed",
"commit": "03c26d66139f36573cf58362a5076b4d5f98eca2",
"release": "/var/www/investmoz-homologacao/releases/03c26d66139f36573cf58362a5076b4d5f98eca2-ac76aca8",
"previous_release": "/var/www/investmoz-homologacao/releases/8f14f5dde24819fce062dc316ed21dfbe033ebf8-6abb42c2",
"database_migrations": 0,
"content_imports": 0
},
"current_link": "/var/www/investmoz-homologacao/releases/03c26d66139f36573cf58362a5076b4d5f98eca2-ac76aca8",
"release_revision": {
"commit": "03c26d66139f36573cf58362a5076b4d5f98eca2",
"branch": "main",
"built_at": "2026-10-24T21:42:26.795541+00:00",
"manifest_sha256": "7deb424f38c7361d0a8df4d0be22464ab066a01e5aa38ece15fa62115c15f8c4"
},
"service": "ExecMainStatus=0\nActiveState=inactive\nSubState=dead\n",
"configuration_keys": [
"repository",
"branch",
"target_url",
"legacy_root",
"state_root",
"release_root",
"current_link",
"shared_assets",
"php",
"schema_contract",
"ci_environment",
"postgis_image",
"test_database",
"qa_port",
"retention",
"webhook_secret_file"
],
"safe_paths": {
"repository": "nala/Investidor-V2",
"release_root": "/var/www/investmoz-homologacao/releases",
"postgis_image": "postgis/postgis@sha256:01a6a70e41e6c4467c8f55f6063555ed72db2d6662cd0d571040d42eadaeb6f6"
},
"pipeline_sha256": "adec1c17654f3a8658b83b134f1e75f95391b235738552721906c3236e388604"
},
"backup_restore": {
"backup": {
"stage": "/var/backups/investmoz-l1-g9-nondigital-delivery-20261024/backup",
"target": {
"database": "teste_investidor",
"port": 5432
},
"tables": 174,
"files_verified": 369,
"dump_sha256": "8d783acaa134d37d4d5d7da2842f3a4a2ca159cab444b10b127fc1baf7113ac2",
"files_sha256": "195de1b12e33ce73510143f009a10cae42f622093e6049d36389e2849e3a117b",
"restore_verified": false
},
"restore": {
"restore_verified": true,
"tables_verified": 174,
"container_network": "none",
"database": "l1_g9_nondigital_restore_20261024",
"port": 55441,
"source_dump_sha256": "8d783acaa134d37d4d5d7da2842f3a4a2ca159cab444b10b127fc1baf7113ac2",
"active_database_writes": 0
}
}
}
@@ -0,0 +1,10 @@
--- a/resources/js/lib/iva-listed-services.ts
+++ b/resources/js/lib/iva-listed-services.ts
@@ -71,6 +71,7 @@
function key(draft:Record<string,unknown>,book:ListedServiceBook):string{return JSON.stringify({version:listedServiceVersion,scope:acquisitionScope(draft),location:draft.selection_labels??{},rows:book.rows});}
export function listedServiceCurrent(draft:Record<string,unknown>,book:ListedServiceBook):boolean{return!!book.result&&book.result.sourceKey===key(draft,book);}
export function recordListedServices(draft:Record<string,unknown>,book:ListedServiceBook):ListedServiceBook{
+ throw new Error('Novas classificações P111–P120 temporariamente suspensas; dados, histórico, relatórios e restantes ramos preservados.');
if(!book.rows.length||new Set(book.rows.map(row=>row.id)).size!==book.rows.length)throw new Error('Indique operações com identificadores distintos;originais conservados.');
const result:ListedServiceCalculation={version:listedServiceVersion,revision:(book.result?.revision??0)+1,calculatedAt:new Date().toISOString(),opportunity:acquisitionScope(draft),location:JSON.stringify(draft.selection_labels??{}),sourceKey:key(draft,book),source:listedServiceSource,inputs:structuredClone(book.rows),rows:book.rows.map(row=>evaluateListedService(row))};
const next={...book,result,history:[...(book.history??[]),...(book.result?[book.result]:[])]};saveListedServiceBook(draft,next);return next;