3.7 KiB
Deployed monthly-report download diagnosis
Metadata
- Date: 2026-08-04
- Status: Superseded for implementation by
2026-08-04-report-artifact-deployability; authenticated remote capture remains optional operational evidence - Scope:
http://8.138.234.141:8765, monthly desktop list/download, comparison with Daily and company-channel downloads - Confidence: Mixed — remote reachability/version facts are Fact; exact download failure classification is Inference until an authenticated click is captured
- Source: read-only
curlprobes, local source inspection at727643f, focused tests, deployment documentation - Last verified: 2026-08-04
- Stale trigger: deployed image or migration 016 not yet applied; the source-level worker/download diagnosis below is now superseded by the OSS/openpyxl repair
Facts
- The remote root redirects unauthenticated users to
/login; protected desktop APIs and downloads return JSON401 AUTH_REQUIRED. - Remote
/healthzreturnsready. Public H5 HTML/CSS/JS/i18n assets match the local727643fcheckout byte-for-byte. - Public
/api/public/h5/monthsshows current Finance projections for 2026-08 and 2026-07, with the latest August projection updated through 2026-08-03. This proves the Web/database analytics read path is alive, but it does not prove that a local monthly XLSX archive is readable. - The desktop monthly download route resolves a registered
monthly_xlsxartifact fromreporting.monthly_runs, then reads and re-hashes the file under Web's controlled project root. Daily artifacts are read from OSS; company artifacts are generated/read by Web from its local output root. - The
727643fchange removed@oai/artifact-toolonly from the company-report builder. Monthly XLSX generation still imports the private module throughmonthly_reports/xlsx/build_workbook.mjsand requires Node plus a separately supplied artifact-tool module. - The checked-in Compose service mounts
/app/outputsfor Web but does not start a monthly worker. Deployment instructions require a separately managed worker with the same database and shared/app/outputsvolume. - Focused Web/repository/monthly worker/service/publisher tests pass 40/40 locally.
The source-level diagnosis above described the pre-repair Node/local-output architecture. The implementation now uses Python/openpyxl and OSS-backed report identities with legacy local fallback; use the new deployability evidence topic for the acceptance contract.
Inference
The symptom pattern — Daily and company downloads work while a monthly workbook download fails — points first to deployment/runtime publication rather than a generic Web download-route defect. The monthly path uniquely depends on a locally registered archive being produced by the independent Node/artifact-tool worker and being visible at the same /app/outputs path inside Web. A missing worker, wrong worker output root, missing shared volume, or worker/Web running on different hosts can leave monthly metadata/analytics visible while the workbook download returns an artifact-read or integrity error.
The exact branch is not yet confirmed because the deployed desktop page requires a user login session. No credentials were read or submitted, and no server restart, report rerun, database write, or artifact repair was performed.
Next verification
After an operator signs in through the in-app browser, capture one monthly row's report_id, the browser download response/status, and the corresponding error code. Then inspect only the deployed worker/Web runtime state: worker process/log, reporting.monthly_runs artifact identity, Web-visible /app/outputs path, and registered SHA-256/size. Do not rerun the report until the mismatch is identified.