docs: verify original XML rule parity and isolate PM scope difference

This commit is contained in:
Wyndham ARR committed 2026-10-08 22:06:08 +08:00
1 parent 2c7be75a04
commit 7ccd21b18c
1 file changed
+9
@@ -240,3 +240,12 @@ Read: memory-index, project-positioning, current-state latest September sections
- Independent audit normalized XML company identities and checked the frozen fixed-price loader. LIAN TAI+WHO2+1000 has no exact reference entry (available source amounts1100,1400,1600,1800,2400); all4 API0 keys also have no exact fixed entry. Existing shared rule matches company+rate+Opera amount and requests a nightly processed price for unmatched keys. It is not a generic “0 price is invalid” rule, and source0 does not imply final processed price0. XML's WHO2/1000 values agree with the API, while the fixed-price mapping is missing for that combination.
- Authenticated read-only review at start: open revision1,1/5 completed, user had already saved0 for LIAN TAI/GRP1. Kept this and every other actual decision untouched. No source/rule/reference file, service state, Finance/monthly data or actual report was modified; no Oracle read, test run or full report processing occurred. Private per-reservation diagnostic JSON: `production-validation-20261007/sept16-price-xml-comparison-20261008.json`. Guest names and raw responses remain outside Git.
- Follow-up/promotion: explain grouped price issues separately from individual reservations, and distinguish a missing fixed processing-price mapping from0 source values and absent XML membership. Broad source-population alignment remains deferred; do not automatically zero, exclude or import the10 absent reservations based on this comparison. Any change to the permanent reference price requires an explicit business value; staff may still save a per-report0 override where they have confirmed it.
## Same-task Follow-up: Why the Interface Appears to Change Processing Rules
- User reiterates the original requirement: replacing manual XML acquisition must preserve business processing. Same-task feature ownership/codex/base2417b1a/owned checkout/no peers verified; retained required Project Context Loaded and current task record apply. Planning gate Passed for read-only historical and source-path diagnosis. The unrelated interrupted booking screenshot is not an instruction to change this ARR repository or perform hotel writes.
- Verified actual web upload and price-review chain uses arr-opera-daily-ingest via LocalDailyProcessor/load_processor_policy, not the other opera-daily-channel-report directory. Both XML and OHIP data select read_source and then the same classification, price mapping, review grouping and output path. Source-field preparation is an added upstream stage; prior normal optional-source confirmations were over-strict and have been corrected. The cancellation exclusion remains the explicitly user-approved change applied to both paths.
- Independent historical audit: manual-price review existed at ca3e8e1 (2026-08-06), before interface addition ad2c592 (2026-09-18); it already used exact company+rate+original amount and allowed manual0. Reference workbook is byte-identical from earliest a701de9 through ca3e8e1, pre-interface5ecd571, interfacead2c592 and current (13898 bytes, SHA123d1d1ea0e28ce481a63dfdbe4bd22b5e6069c585a8cbde4194376ed18fb0d6). The4 current functions price_company_key/load_price_map/apply_prices_classified/review_issues are AST-identical to pre-interface5ecd571.
- Replayed only in-memory parsing/classification/pricing, with no artifact generation, database/Finance access or Oracle reads: original9/16 XML under both pre-interface5ecd571 and current code yields184 source rows,150 valid candidates,34 rate exclusions,0 duplicates,0 classification errors,35 PRICE_UNMATCHED and exactly1 price group LIAN TAI/WHO2/1000. Current saved OHIP source yields209 rows,160 valid candidates,43 rate exclusions,6 cancellation exclusions,45 PRICE_UNMATCHED and5 groups. The common184 reservations have identical rate/Opera amount/nights/rooms/outcomes/processed amounts/totals; all150 actionable rows have identical normalized company keys too.5 company-key differences occur only on records already rate-excluded by both inputs; this is not a claim of full text equivalence. Original XML/source bytes remain unchanged.
- Concrete additional source evidence: the25 API-only reservations comprise6 excluded cancellations,9 excluded rates and10 price-unmatched candidates. All10 unmatched extras have ROOM_CATEGORY_LABEL=PM, adults0/children0, Opera amount0, CheckedOut status and rooms9002/9004/9005/9006/9007/9035/9044/9045/9048/9052. None is in the XML. Official Oracle Cloud [room-type configuration](https://docs.oracle.com/en/industries/hospitality/opera-cloud/25.1/ocsuh/t_rooms_managing_room_types.htm) identifies provisioned PM as a non-inventory pseudo type; [OHIP prerequisites](https://docs.oracle.com/en/industries/hospitality/integration-platform/pcpig/c_prerequisites.htm) explains posting-account codes are customer-definable and recommends verifying the customer's configuration. This supports a specific pseudo-room scope hypothesis rather than blaming generic0 validation. It does not prove this hotel's saved RES_DETAIL pseudo-room predicate or authorize filtering by room-number prefix or blanket code-only classification.
- Outcome: original pricing rules/reference are preserved and the same XML produces the same original review item. The extra4 price groups originate from10 additional PM source records. Do not ask staff to solve source-population mismatch solely by entering prices. No code change, test suite, live service/config changes, actual price decisions or report generation occurred. Follow-up/promotion: establish the original report's pseudo-room inclusion criterion and align acquisition/adapter eligibility with it while keeping shared pricing intact; preserve immutable original capture and audit any scope interpretation. Do not infer universal CheckedOut-only or PM-only filtering from this sample.