实现M002 V3 P0.1 Parent Group路由修订

This commit is contained in:
andy
2026-07-12 11:42:01 +08:00
parent 0358b34159
commit 92489af18e
42 changed files with 3971 additions and 79 deletions

View File

@@ -0,0 +1,76 @@
# Rate Code 与结算价格
## 安全立场
Rate Code 必须由当前证据和本 reference 唯一支持。不要只凭 room code 猜。若 channel、market、room text、UP marker、price、breakfast、restaurant 或 supplier 上下文不足,输出人工复核。
## 已知规则
| 场景 | Typical Rate Code |
| --- | --- |
| QBD 普通 DBL/TWN 且无 `U` 或 Upgrade marker | `GRPA1-900` |
| QBD `U-DBL` / `U-TWN` / `U-TRP` 或 Upgrade marker | `GRPA2-850UP` 或对应 UP rate code |
| LianTai 普通 DBL/TWN 或 Sup DBL/Sup TWN | `GRP1-900` |
| LianTai `U-DBL` / `U-TWN` | `WHO1-850UP` |
| LianTai `ST+K` / `2卧1厅` / `FAMILY 1` 且价格 1200 | `WHO3-1200` |
价格示例:
- 850 -> `WHO1-850UP`
- 900 -> `GRP1-900`
- 1000 -> `WHO2-1000`
- 1200 -> `WHO3-1200`
渠道和上下文优先于单纯价格。
## `U-<number>`
例如 `U-1200`
- 数字部分视为 settlement price / price marker。
- 保留 `rate_code_raw = "U-1200"`
- 数字命中已知规则时输出命中。
- 数字不可读或未覆盖时人工复核。
- 绝不写入 confirmation/reservation/booking reference 字段。
## 控房/配额默认
示例:
- `U-DBL` -> room `RM2`settlement price 850。
- `U-TWN` -> room `RM3`settlement price 850。
- `U-TRP` / `FAM` -> room `RM4`settlement price 1275。
仅当事件明确是 new Allotment / Control Block、房型唯一映射且当前没有不同明确规则时使用。
## 手工价格
当需要人工维护 settlement price
```json
{
"rate_code": null,
"settlement_price": null,
"manual_settlement_price_required": true,
"manual_price_reason_code": "",
"price_evidence": []
}
```
手工价格仍要求目标、日期/room items、price text 和系统上下文安全。
## 复合价格
对于 `2000THB+500``1800+500``2000THB*2 +500*2`
- 只用可分离的 base room price 判断 Rate Code / settlement price。
- additional component 交给 `52-fix-charge.md`
- 不得把组件相加后当单一房价。
## 人工复核
- channel/market 未知或冲突。
- raw room type 无法唯一映射。
- UP marker 与普通 rate path 冲突。
- price marker 不可读。
- price 未命中任何规则。