fix: make daily task log header-only

This commit is contained in:
Wyndham ARR
2026-08-11 17:23:33 +08:00
parent c947230471
commit f2c1265a1c
16 changed files with 251 additions and 34 deletions

View File

@@ -19,6 +19,17 @@ preserves its no-formula contract. Both publishers upload new workbook and `resu
immutable OSS adapter, while download routing retains controlled-local compatibility for historical records and keeps
`.web-jobs` queue state local.
## Daily Interaction Correction On 2026-08-11
- The local source now treats Daily Report rows as informational table rows rather than hidden log controls. It removes
row click and Enter/Space activation, `role=button`, `tabindex`, selected-row decoration and pointer styling. The
explicit needs-review button still focuses the manual-price panel, report downloads remain links, and only the
top-right `任务日志` link opens the trace dialog.
- JavaScript syntax, all 81 `test_arr_web*.py` regressions and an isolated browser interaction check pass. The browser
proved an ordinary `0805.XML` row leaves the dialog closed, the `待人工处理` control focuses a populated review panel,
and the header utility opens the dialog; there were no console errors. This source change has not been pushed or
deployed to `8.138.234.141:8765`, so the reported production behavior remains until a controlled release.
## Implemented Locally On 2026-08-11
- Implemented Booking parser 2.1.0 exact-header compatibility for the user-confirmed July legacy and August bilingual
@@ -31,6 +42,34 @@ immutable OSS adapter, while download routing retains controlled-local compatibi
draft, Booking batch, Finance fact or runtime process was changed. Deployment and a controlled post-restart
read-only replay remain pending; QBD pending items are existing room-type review work, not a header failure.
## Diagnosed On 2026-08-11
- The reported company-channel Booking Excel parse failure occurs before object storage and draft persistence; a
read-only database snapshot shows no new draft/artifact/batch and accepted batch 7 `july-test.xlsx` remains current.
Exact parser replay isolates two cases: generated Daily/channel report workbooks are correctly rejected as the wrong
input type, while current Lian Tai/QBD raw workbooks expose a parser compatibility defect because bilingual
`Tour Code / 主团号` and hotel-detail headers do not equal the narrow exact alias allowlist. Replacing only those two
headers in memory makes both raw workbooks parse, with original files and all business state unchanged. At diagnosis,
the controlled alias expansion plus regression fixtures remained unimplemented. The user has now explicitly confirmed that both
supplied formats must be supported. An exact three-alias process-memory probe recognizes only the intended sheet in
each file: Lian Tai yields 67 rows/100 items/16 pending, while QBD 2026-08-06 yields 104 rows/218 items/212 pending;
Daily/channel output workbooks remain rejected. This parser-only plan needs no migration or upload-page redesign, but
the existing one-file/full-replacement activation model still cannot append two separately uploaded files.
- The exact desktop `0806.XML` deterministically fails processor 4.0.0 before any row or price processing with
`XML_PARSE_ERROR` at line 1872, column 0. A `TRACE_TEXT` value contains one CESU-8 surrogate pair representing
`U+1F389` even though the document declares UTF-8; the file is structurally closed and not truncated. This error is
outside the pure-`PRICE_UNMATCHED` review boundary, so a formal failure with no manual-price panel is correct. The
public deployment health endpoint remains 200. The source must be re-exported as valid UTF-8 and uploaded as a new
task; no source, runtime, database, Finance, object-store or event state was changed during diagnosis.
## Artifact Conversion On 2026-08-11
- The user-supplied `8.6 修正.XML` was an XLSX package mislabeled with an XML extension. Its 181-row first sheet
contains the flattened Opera fields needed by the ARR parser. A separate UTF-8 `RES_DETAIL` XML was reconstructed
from those rows and passed strict XML/UTF-8 checks plus processor 4.0.0: 115 retained rows, 37 rate-code exclusions,
29 duplicates and zero price-unmatched/review rows. The original workbook and malformed XML remain unchanged; no
upload, Finance, database, object-store or event state was changed.
## Runtime Recovery On 2026-08-06
- Restored the local ARR login page after a reported opening failure. No Web process was listening and the retained
@@ -315,8 +354,9 @@ immutable OSS adapter, while download routing retains controlled-local compatibi
- Updated the daily XML upload surface so submitting ARR.XML stays on the daily page instead of opening the task-log
dialog automatically. The upload card now shows a compact stage-based estimate for upload, fixed processing,
validation and database commit, finalizing at 100% on success and retaining an inline error state on failure. The
header task-log button and daily-history row actions still open the existing trace dialog on demand. JavaScript
syntax and 15 focused Web/static/trace tests pass; no API or processing behavior changed.
header task-log button remains the sole on-demand trace entry; the later 2026-08-11 interaction correction removed
daily-history row log activation. JavaScript syntax and the original 15 focused Web/static/trace tests passed; no API
or processing behavior changed.
- Simplified the desktop monthly page into a single six-column download table. The redundant standard-monthly heading,
`VERSION HISTORY`/version-record copy, visible monthly `版本` column and C/O-period footer note are removed; the
navigation label is now `月报`; the list is identified by a compact `月报处理` heading. The visible `更新至` cell reads the explicit `max_arrival_date` API field, which is
@@ -401,10 +441,10 @@ immutable OSS adapter, while download routing retains controlled-local compatibi
- The desktop and H5 headers use the plain `ARR Report` identity with no decorative icon. The daily content heading is
`Daily Report`; the duplicated daily/monthly explanatory copy has been removed without changing automatic publishing.
- The desktop header utility formerly labeled `手机看板` is now `任务日志` and opens the existing black task console in
a native modal. The console no longer occupies the daily-processing layout; upload completion and daily-history row
activation open the selected job directly. `/h5` remains available by direct URL. Both history and trace SQL are
explicitly limited to `pipeline_type = 'opera_daily'`, so this is a one-daily-job processing trace rather than a
global server, monthly-run or company-report log.
a native modal. The console no longer occupies the daily-processing layout, and the 2026-08-11 interaction correction
makes this header utility its only opener; upload completion and Daily rows do not open it. `/h5` remains available
by direct URL. Both history and trace SQL are explicitly limited to `pipeline_type = 'opera_daily'`, so this is a
one-daily-job processing trace rather than a global server, monthly-run or company-report log.
- Refined the daily desktop surface after visual review. `ARR Report` remains the dominant workspace title while
`Daily Report` is smaller; `任务日志` is a compact outlined button at the adjacent status-label size; the upload
station is centered and responsive; decorative `01 / UPLOAD` and `本月留痕` labels are gone; and `开始处理` is a