feat: move report artifacts to OSS storage
This commit is contained in:
@@ -13,10 +13,20 @@ blocked. A not-yet-ended period keeps its fixed C/O cutoff and must be rerun aft
|
||||
workbook needs those facts. Duplicate publication of the same semantic snapshot is idempotent: the first validated
|
||||
archive/result pair remains authoritative even if a retry rebuilds different XLSX bytes.
|
||||
|
||||
Company-channel XLSX generation is now Web-container deployable without the private `@oai/artifact-tool` npm package:
|
||||
`company_reports.publishing.ArtifactToolBuilder` builds and reopens workbooks with Python/openpyxl, validates sheet
|
||||
names/headers/row counts/no-formulas, and treats blank Excel cells as business-empty strings. Node/artifact-tool remains
|
||||
only a monthly-worker packaging concern.
|
||||
Monthly and company-channel XLSX generation is now Web/container deployable with Python/openpyxl only. The monthly
|
||||
builder preserves sheet/header/row/formula/semantic validation, including `=R[row]*C[row]*G[row]`; the company builder
|
||||
preserves its no-formula contract. Both publishers upload new workbook and `result.json` objects through the existing
|
||||
immutable OSS adapter, while download routing retains controlled-local compatibility for historical records and keeps
|
||||
`.web-jobs` queue state local.
|
||||
|
||||
## Completed On 2026-08-04
|
||||
|
||||
- Repaired deployment availability for monthly and company report artifacts. Removed the monthly Node/private-package
|
||||
runtime path and the stale Node builders/package manifests, added Python/openpyxl monthly validation, and added
|
||||
shared OSS publication/read routing with hash/size/MIME rechecks. Migration 016 allows OSS monthly artifact
|
||||
identities while preserving historical local rows. Local fake-object-store, builder, publisher, download-router and
|
||||
migration tests pass; the development machine has no Docker, so CentOS image/Compose acceptance is explicitly handed
|
||||
to the operator. No live report or business data was changed.
|
||||
|
||||
## Completed On 2026-08-03
|
||||
|
||||
@@ -450,14 +460,12 @@ only a monthly-worker packaging concern.
|
||||
detached and are not reboot-persistent.
|
||||
- The latest operator-selected Web credentials were rotated on 2026-07-31, but the password still matches the username.
|
||||
Rotate it again to a distinct high-entropy value in Keychain, followed by one controlled Web restart.
|
||||
- The workstation runs Web and worker as separate processes. The checked-in Compose image now supports company-channel
|
||||
XLSX generation through Python/openpyxl in Web, but intentionally does not claim to run the monthly worker because it
|
||||
does not package the workstation-only monthly artifact-tool module; a production image/process manager must supply
|
||||
Node/artifact-tool and the shared output volume before enabling that monthly service.
|
||||
- A formally controlled no-PII server acceptance run remains appropriate after that deployment packaging is complete.
|
||||
- The workstation runs Web and worker as separate processes. The checked-in Compose image supports both report paths
|
||||
through Python/openpyxl; the worker still needs the existing database/OSS secrets and may use `/app/outputs` only for
|
||||
staging and local `.web-jobs` state. A formally controlled no-PII CentOS Docker acceptance run remains appropriate.
|
||||
- ARR2.0 now has Git metadata; `main` tracks `origin/main`. Runtime credential values remain outside Git and project
|
||||
files.
|
||||
|
||||
## Last Updated
|
||||
|
||||
2026-08-03
|
||||
2026-08-04
|
||||
|
||||
Reference in New Issue
Block a user