docs(iva): prepare G3 delivery with fresh backup restore and compatible rollback
tests / ci (push) Canceled after 0s
tests / ci (push) Canceled after 0s
This commit is contained in:
@@ -7791,5 +7791,129 @@
|
||||
"P001": "05/06only",
|
||||
"L1_complete": false,
|
||||
"accepted_tests_repeated": false
|
||||
},
|
||||
"iva_l1_g3_delivery_preparation_20261024": {
|
||||
"status": "ready_backup_restore_verified_not_installed",
|
||||
"candidate": "0dc2d64b20ae3d6879e0154f5507b3fdc6031733",
|
||||
"base_remote_main": "ccdecbd8d74596e729f03381d3b37ca22ce5800e",
|
||||
"coverage": {
|
||||
"group": "G3",
|
||||
"branches": [
|
||||
"P038",
|
||||
"P039",
|
||||
"P040",
|
||||
"P041",
|
||||
"P042",
|
||||
"P043",
|
||||
"P045"
|
||||
],
|
||||
"scope": "cessation2026/MZN;explicit continuity;no historical exemption/imports"
|
||||
},
|
||||
"counts_before": {
|
||||
"delivered": 36,
|
||||
"QA": 7,
|
||||
"functional_pending": 89,
|
||||
"documentary": 1,
|
||||
"total": 133
|
||||
},
|
||||
"counts_after_delivery": {
|
||||
"delivered": 43,
|
||||
"QA": 0,
|
||||
"functional_pending": 89,
|
||||
"documentary": 1,
|
||||
"total": 133
|
||||
},
|
||||
"QA": "ac948bd8/bda6d1e3;manual Tempo visual confirmation0dc2d64b;3frontend+API1/36+types/build;13frozenbooks unchanged;accepted proofs reused",
|
||||
"visual_provenance": "Manual Tempo;no Codex browser observation claimed. G2L clarification908c8afc is separate from G3 confirmation0dc2d64b.",
|
||||
"runtime_delta": [
|
||||
{
|
||||
"path": "resources/js/components/simulation-operations.tsx",
|
||||
"sha256_LF": "68e0a98d9b1a3190a96d16210e1bb331c23dbbf9aaa218f973ba05dc9c90df55"
|
||||
},
|
||||
{
|
||||
"path": "resources/js/lib/iva-operations.ts",
|
||||
"sha256_LF": "5155a96101393e0dca5f183577587b9b3a9c4e3b981e8491adc0d640301bdcb3"
|
||||
},
|
||||
{
|
||||
"path": "resources/js/lib/iva-temporary-benefits.ts",
|
||||
"sha256_LF": "99bf065703db32709806475f7e8bfdf0d086cce9b15ab30434f44d8df6ed9230"
|
||||
}
|
||||
],
|
||||
"authenticated_preflight": {
|
||||
"installed": {
|
||||
"status": "installed",
|
||||
"commit": "ccdecbd8d74596e729f03381d3b37ca22ce5800e",
|
||||
"release": "/var/www/investmoz-homologacao/releases/ccdecbd8d74596e729f03381d3b37ca22ce5800e-0967d766",
|
||||
"previous_release": "/var/www/investmoz-homologacao/releases/e45a1394fa2ca8631593549b3af62093f25d9c13-f5f7e07d",
|
||||
"database_migrations": 0,
|
||||
"content_imports": 0
|
||||
},
|
||||
"current_link": "/var/www/investmoz-homologacao/releases/ccdecbd8d74596e729f03381d3b37ca22ce5800e-0967d766",
|
||||
"release_revision": {
|
||||
"commit": "ccdecbd8d74596e729f03381d3b37ca22ce5800e",
|
||||
"branch": "main",
|
||||
"built_at": "2026-10-24T14:40:55.681401+00:00",
|
||||
"manifest_sha256": "8ee52a7b3f7c4363f10d73382d85325bbfa331c2e6e44ccd08d92e578cdf2776"
|
||||
},
|
||||
"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-g3-delivery-20261024/backup",
|
||||
"target": {
|
||||
"database": "teste_investidor",
|
||||
"port": 5432
|
||||
},
|
||||
"tables": 174,
|
||||
"files_verified": 369,
|
||||
"dump_sha256": "0a9ebaa6f883abbea456f5971a35cb2081031735d56138f0d9354a9325591d7a",
|
||||
"files_sha256": "ec19f952637953c1b286a5dfd5e8cef7861a0564c7d7c5a3187103fc0305a746",
|
||||
"restore_verified": false
|
||||
},
|
||||
"restore": {
|
||||
"restore_verified": true,
|
||||
"tables_verified": 174,
|
||||
"container_network": "none",
|
||||
"database": "l1_g3_restore_20261024",
|
||||
"port": 55441,
|
||||
"source_dump_sha256": "0a9ebaa6f883abbea456f5971a35cb2081031735d56138f0d9354a9325591d7a",
|
||||
"active_database_writes": 0
|
||||
}
|
||||
},
|
||||
"activation": "Existing Git FF/webhook/installer;no migrations/imports/permissions/newserver fiscal rule",
|
||||
"rollback": {
|
||||
"patch": "docs/investmoz/simulations/l1-g3-readonly-rollback-20261024.patch",
|
||||
"checked": true,
|
||||
"applied": false,
|
||||
"preserves": "catalogue/readers/history/reports;prior release and fresh backup retained",
|
||||
"old_patch": "Earlier patch no longer applies after new helper;new compatible patch generated,old artifact preserved"
|
||||
},
|
||||
"L1_complete": false,
|
||||
"P001": "05/06only",
|
||||
"statistics_AI": "deferred"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,124 @@
|
||||
{
|
||||
"status": "ready_backup_restore_verified_not_installed",
|
||||
"candidate": "0dc2d64b20ae3d6879e0154f5507b3fdc6031733",
|
||||
"base_remote_main": "ccdecbd8d74596e729f03381d3b37ca22ce5800e",
|
||||
"coverage": {
|
||||
"group": "G3",
|
||||
"branches": [
|
||||
"P038",
|
||||
"P039",
|
||||
"P040",
|
||||
"P041",
|
||||
"P042",
|
||||
"P043",
|
||||
"P045"
|
||||
],
|
||||
"scope": "cessation2026/MZN;explicit continuity;no historical exemption/imports"
|
||||
},
|
||||
"counts_before": {
|
||||
"delivered": 36,
|
||||
"QA": 7,
|
||||
"functional_pending": 89,
|
||||
"documentary": 1,
|
||||
"total": 133
|
||||
},
|
||||
"counts_after_delivery": {
|
||||
"delivered": 43,
|
||||
"QA": 0,
|
||||
"functional_pending": 89,
|
||||
"documentary": 1,
|
||||
"total": 133
|
||||
},
|
||||
"QA": "ac948bd8/bda6d1e3;manual Tempo visual confirmation0dc2d64b;3frontend+API1/36+types/build;13frozenbooks unchanged;accepted proofs reused",
|
||||
"visual_provenance": "Manual Tempo;no Codex browser observation claimed. G2L clarification908c8afc is separate from G3 confirmation0dc2d64b.",
|
||||
"runtime_delta": [
|
||||
{
|
||||
"path": "resources/js/components/simulation-operations.tsx",
|
||||
"sha256_LF": "68e0a98d9b1a3190a96d16210e1bb331c23dbbf9aaa218f973ba05dc9c90df55"
|
||||
},
|
||||
{
|
||||
"path": "resources/js/lib/iva-operations.ts",
|
||||
"sha256_LF": "5155a96101393e0dca5f183577587b9b3a9c4e3b981e8491adc0d640301bdcb3"
|
||||
},
|
||||
{
|
||||
"path": "resources/js/lib/iva-temporary-benefits.ts",
|
||||
"sha256_LF": "99bf065703db32709806475f7e8bfdf0d086cce9b15ab30434f44d8df6ed9230"
|
||||
}
|
||||
],
|
||||
"authenticated_preflight": {
|
||||
"installed": {
|
||||
"status": "installed",
|
||||
"commit": "ccdecbd8d74596e729f03381d3b37ca22ce5800e",
|
||||
"release": "/var/www/investmoz-homologacao/releases/ccdecbd8d74596e729f03381d3b37ca22ce5800e-0967d766",
|
||||
"previous_release": "/var/www/investmoz-homologacao/releases/e45a1394fa2ca8631593549b3af62093f25d9c13-f5f7e07d",
|
||||
"database_migrations": 0,
|
||||
"content_imports": 0
|
||||
},
|
||||
"current_link": "/var/www/investmoz-homologacao/releases/ccdecbd8d74596e729f03381d3b37ca22ce5800e-0967d766",
|
||||
"release_revision": {
|
||||
"commit": "ccdecbd8d74596e729f03381d3b37ca22ce5800e",
|
||||
"branch": "main",
|
||||
"built_at": "2026-10-24T14:40:55.681401+00:00",
|
||||
"manifest_sha256": "8ee52a7b3f7c4363f10d73382d85325bbfa331c2e6e44ccd08d92e578cdf2776"
|
||||
},
|
||||
"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-g3-delivery-20261024/backup",
|
||||
"target": {
|
||||
"database": "teste_investidor",
|
||||
"port": 5432
|
||||
},
|
||||
"tables": 174,
|
||||
"files_verified": 369,
|
||||
"dump_sha256": "0a9ebaa6f883abbea456f5971a35cb2081031735d56138f0d9354a9325591d7a",
|
||||
"files_sha256": "ec19f952637953c1b286a5dfd5e8cef7861a0564c7d7c5a3187103fc0305a746",
|
||||
"restore_verified": false
|
||||
},
|
||||
"restore": {
|
||||
"restore_verified": true,
|
||||
"tables_verified": 174,
|
||||
"container_network": "none",
|
||||
"database": "l1_g3_restore_20261024",
|
||||
"port": 55441,
|
||||
"source_dump_sha256": "0a9ebaa6f883abbea456f5971a35cb2081031735d56138f0d9354a9325591d7a",
|
||||
"active_database_writes": 0
|
||||
}
|
||||
},
|
||||
"activation": "Existing Git FF/webhook/installer;no migrations/imports/permissions/newserver fiscal rule",
|
||||
"rollback": {
|
||||
"patch": "docs/investmoz/simulations/l1-g3-readonly-rollback-20261024.patch",
|
||||
"checked": true,
|
||||
"applied": false,
|
||||
"preserves": "catalogue/readers/history/reports;prior release and fresh backup retained",
|
||||
"old_patch": "Earlier patch no longer applies after new helper;new compatible patch generated,old artifact preserved"
|
||||
},
|
||||
"L1_complete": false,
|
||||
"P001": "05/06only",
|
||||
"statistics_AI": "deferred"
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
--- a/resources/js/components/simulation-operations.tsx
|
||||
+++ b/resources/js/components/simulation-operations.tsx
|
||||
@@ -17,6 +17,8 @@
|
||||
const change=(id:string,patch:Partial<SalesOperation>)=>run(()=>save({...book,rows:book.rows.map(r=>r.id===id?{...r,...patch}:r)}));
|
||||
const continueTemporary=(id:string,target:string)=>run(()=>save({...book,rows:book.rows.map(row=>row.id===id?continueTemporaryOperation(row,target):row)}));
|
||||
return <section aria-label="Operações IVA por oportunidade" className="space-y-3 rounded border p-3">
|
||||
+ <p role="status">Novos cálculos temporariamente suspensos; resultados guardados e relatórios disponíveis.</p>
|
||||
+ <fieldset disabled>
|
||||
<h4 className="font-semibold">Operações de IVA — enquadramento das vendas</h4>
|
||||
<p>Oportunidade {String(draft.context_opportunity||'entrada geral')}; moeda original {book.currency||'por indicar'}. Cobertura2026/MZN. Reutilize as vendas e complete apenas o enquadramento. Este bloco classifica as operações; não substitui nem soma novamente a execução mensal geral acima.</p>
|
||||
<p>Uma empresa pode ter operações com tratamentos diferentes. Os valores são projecções sob pressupostos declarados, sem certificar facturas, reconhecer créditos ou submeter uma declaração à AT.</p>
|
||||
@@ -82,6 +84,7 @@
|
||||
{book.periods.map(p=><label className="block" key={p.period}><input type="checkbox" checked={p.complete} onChange={e=>run(()=>save({...book,periods:book.periods.map(v=>v.period===p.period?{...v,complete:e.target.checked}:v)}))}/> {p.period}: incluí todas as operações deste período; lista vazia significa ausência expressamente confirmada.</label>)}
|
||||
<p>Limites: outras isenções/bases especiais e correspondência do campo06 permanecem por delimitar. IVA incluído a5% conserva a fracção exacta e apresenta um decimal a6casas; a aproximação de apresentação não constitui regra declarativa. O desconhecido nunca é assumido como zero.</p>
|
||||
<button type="button" disabled={!book.periods.length} className="rounded bg-emerald-800 p-2 text-white disabled:opacity-50" onClick={()=>run(()=>save(recordSales(draft,book)))}>Calcular e guardar operações IVA</button>
|
||||
+ </fieldset>
|
||||
{book.result&&<><p role="status">{salesCurrent(draft,book)?'Resultado correspondente às entradas.':'Resultado histórico conservado; reveja as alterações antes de recalcular.'}</p><dl>{salesReportRows(draft).map(([,label,value,origin],index)=><div className="break-inside-avoid border-t py-2" key={index}><dt className="font-semibold">{label}</dt><dd>{value}<small className="block">{origin}</small></dd></div>)}</dl></>}
|
||||
</section>;
|
||||
}
|
||||
Reference in New Issue
Block a user