99 lines
7.6 KiB
Markdown
99 lines
7.6 KiB
Markdown
# Evidence Topic: Company-report path and July month-end readiness
|
|
|
|
## Metadata
|
|
|
|
- Date: 2026-07-30
|
|
- Status: Processor and Booking runtime ready; released 5/5 live job pending
|
|
- Scope: ARR2 local Web on port 8766, accepted `company_reports` processor, controlled `booking_test` snapshot
|
|
- Confidence: Fact
|
|
- Source: code/input inspection, live health/job metadata, repeatable-read aggregate queries, pure in-memory report build, real XLSX tests
|
|
- Last verified: 2026-07-31 11:34 +08:00
|
|
- Stale trigger: port-8766 restart, first Booking draft activation, Finance current-version repair, Booking source/parse changes, or a new July upload
|
|
|
|
## Question
|
|
|
|
What path and rules does the current “公司渠道明细” program use, and will the July month-end run publish all five
|
|
workbooks from the current database projection?
|
|
|
|
## Evidence
|
|
|
|
- The active Web process includes `--enable-company-reports`; loopback health reported `company_reports_ready=true`
|
|
at 2026-07-30 15:35 Asia/Bangkok.
|
|
- The Web coordinator accepts one month and one cumulative cutoff period, enforces the Bangkok release boundary, and
|
|
invokes the deterministic processor for the fixed five-company set. It does not read XML or call an Agent.
|
|
- The source query reads `finance.v_active_daily_facts` by `DEPARTURE` from month start through the cutoff in a
|
|
repeatable-read, read-only transaction. Booking enrichment comes only from current accepted room items, joined by
|
|
normalized complete Group Code.
|
|
- Two persisted Web jobs for 2026-07 cutoff 10 and cutoff 20 both completed 5/5 successfully with zero rows for every
|
|
company. The current supported-company facts all have C/O in the 21-to-month-end period, so those are valid empty
|
|
workbooks rather than dropped rows.
|
|
- A read-only July 31 aggregate found 417 supported-company facts: 121 `matched`, 11 `unmatched`, and 285
|
|
`missing_group_code`. Missing Group Code counts are LianTai 120, QBD 128, DY-AI-Easy-KB 1, FengRun 33 and HanaTour 3.
|
|
- Under the prior strict rule, a pure in-memory preview blocked all five companies because every missing Group Code was
|
|
an error. The user then explicitly chose the deterministic fallback: keep each such Finance fact as its own output
|
|
row with blank `RES_COMMENT` and blank `Booking Room`, without warning or duplicate highlighting. At that intermediate
|
|
step, present-but-unmatched Group Codes still remained strict source-completeness errors.
|
|
- The supplied Markdown `/Users/chillishark/ARR项目0727/outputs/res_comment_20260727/RES_COMMENT_TYPE_OF_ROOM.md` matches
|
|
the dedicated fixed Booking Markdown importer: SHA-256
|
|
`ec2302170c5657d3e465691997e17f7694eb5a7f76feba7e43261632209b8c23`, 867 rows, six source worksheets and 348 distinct
|
|
Group Codes. The controlled database already contains an accepted/current batch with the same hash and counts, so
|
|
re-importing this exact file is unnecessary and would be idempotent.
|
|
- After the fallback change, the same read-only July 31 preview produced:
|
|
- LianTai: invalid; 136 candidate rows, including 120 blank Booking Rooms; two present Group Codes
|
|
(`LLT260719MA`, `LT260718KC`) still lack accepted Booking matches; two multi-price review warnings remain.
|
|
- QBD: valid; 139 rows, including 128 blank Booking Rooms; four multi-price review warnings.
|
|
- DY-AI-Easy-KB: valid; one row with blank Booking Room.
|
|
- FengRun: valid; 33 rows with blank Booking Room.
|
|
- HanaTour: valid; three rows with blank Booking Room.
|
|
- At that intermediate step, a source/business error still blocked only the affected company while warning-only reports
|
|
could publish, making four companies publishable and leaving only LianTai blocked.
|
|
- The user then explicitly broadened the rule: both an absent Group Code and a present Group Code with no resolvable
|
|
Booking room leave `Booking Room` blank. Processor 1.2.0 keeps a present code's normal
|
|
`(Group Code, ARRIVAL, DEPARTURE)` aggregation and Finance pricing; lookup absence alone creates no error or warning.
|
|
- The post-change repeatable-read July 31 preview is valid 5/5 with zero errors:
|
|
- LianTai: 138 rows, 122 blank Booking Rooms and two existing non-blocking multi-price warnings.
|
|
- QBD: 139 rows, 128 blank Booking Rooms and four existing non-blocking multi-price warnings.
|
|
- DY-AI-Easy-KB: one row/one blank; FengRun: 33/33 blank; HanaTour: three/three blank.
|
|
- The current Finance projection also contains one `local_fixture`/`synthetic.xml` QBD fact with C/O 2026-07-30. The
|
|
company-report source does not filter by storage provider, so the month-end snapshot includes that fact.
|
|
- The final scoped company/Booking/report suite ran 32 tests successfully with three expected private-fixture skips;
|
|
real artifact-tool coverage included five-company XLSX generation, workbook reopen/value validation, rendering and a
|
|
dedicated end-to-end blank-Booking-Room case. Four Web company-task coordinator tests also passed. No database import,
|
|
report publication or Finance mutation was performed.
|
|
- The historical port-8766 Web process started at 17:13:54 +08, after the company-report core file's 17:10:03 +08
|
|
change; it loaded the earlier no-code-only fallback. Processor 1.2.0 was written at 17:34:13 +08 and was not loaded
|
|
in that superseded process.
|
|
- Processor 1.2.0 passed 37 company/Booking/real-XLSX/Web-coordinator tests with three expected private-fixture skips.
|
|
The real builder exported, reopened and value-checked both absent-code and present-but-unmatched blank cells.
|
|
- A non-publishing real-data vertical slice loaded the controlled July 31 snapshot in a repeatable-read/read-only
|
|
transaction and built all five workbooks in a temporary directory. All five exported, reopened, value-checked and
|
|
rendered three previews; row counts were 138, 139, 1, 33 and 3 respectively. The temporary artifacts were removed
|
|
automatically and no report/database state changed.
|
|
- The authenticated replacement runtime now loads current source and reports `company_reports_ready=true`; activation
|
|
preserved three existing job records and deliberately did not submit a new report job.
|
|
- A later 2026-07-31 read-only audit first found 014 absent, then observed a concurrent 014/015 deployment at 11:19.
|
|
Batch 1 is now the explicit current source and draft tables are empty. Port 8766 restarted at 11:30 with Booking
|
|
source-upload readiness and PATCH/DELETE transport active. Historical fixture reads and processor readiness remain
|
|
valid. See the later Booking extraction-program evidence.
|
|
|
|
## Finding
|
|
|
|
The supplied Markdown is a valid Booking source and its historical accepted rows remain queryable. Processor 1.2.0
|
|
makes both absent and unresolved Booking enrichment non-blocking and the current July projection previews valid 5/5.
|
|
`LLT260719MA` and `LT260718KC` remain visible business codes with blank Booking Room rather than report errors. The
|
|
processor runtime and Booking upload/source gate are active. A controlled real draft activation and one released
|
|
populated company-report job are still required before validating the new end-to-end flow. No additional Booking content
|
|
is required for the historical lookup baseline.
|
|
|
|
## Impact
|
|
|
|
- Do not interpret the two zero-row successful jobs as proof that the month-end data set is publishable.
|
|
- Current Web jobs use the activated processor 1.2.0 runtime, but readiness alone is not proof of a published 5/5 run.
|
|
- Retire the known fixture from the current projection without deleting immutable history before treating a July
|
|
month-end company report as clean business output.
|
|
|
|
## Open Items
|
|
|
|
- Accept one controlled Booking review activation, then run one month-end Web job after the 2026-08-01 00:00 Bangkok
|
|
release boundary; verify all five downloads and their registered hashes.
|