changelog(6905): 003 totalPrice 应收字段 + birthdayInTrip 跨年修正已实现(#6929)
changelog-filename-gate / validate (push) Successful in 2s

这个提交包含在:
API Changelog Bot
2026-09-04 10:31:34 +08:00
父节点 a0daab2b90
当前提交 cf78c344a1
@@ -12,8 +12,8 @@ frontend_owner: ""
frontend_ref: "regionText 待上游 product-v2 补齐后由前端组另行验收(本单不验收前端展示)"
target_release: ""
verified_at: "2026-09-01"
status_note: "regionText 由上游 product-v2 提供后透传,当前测试环境返回 null 属预期;001 排序保持 create_time DESC 未变(depart_date ASC 变更待 wx 确认)"
updated_at: "2026-09-01"
status_note: "regionText 由上游 product-v2 提供后透传,当前测试环境返回 null 属预期;001 排序保持 create_time DESC 未变(depart_date ASC 变更待 wx 确认);#6929 已实现:003 totalPrice 应收字段 + birthdayInTrip 跨年修正(详见 §十一)"
updated_at: "2026-09-04"
base: "dev-v3"
---
@@ -279,6 +279,7 @@ GET /v3/admin/order/group-batch/<groupBatchId>
| 字段 | 类型 | 说明 |
|------|------|------|
| estimatedCost | BigDecimal | 估算成本(无成本数据可 null) |
| totalPrice | BigDecimal(字符串) | 本户应收 = orderAmount + surchargeAmount − discountAmount(下限 0,`OrderAmountUtil.payableForDisplay` 口径;**取消单返 "0"**);预计毛利 = totalPrice − estimatedCost(#6929) |
| tierCode/tierName | String | tier 组合(成人A/儿童C/幼童Y/婴儿B,如 2A1C→"2成人1儿童";全零→null,映射表待 wx 确认) |
| participantCount | Integer | 人数聚合(adult+child+youngChild+baby) |
| youngChildCount/babyCount | Integer | 幼童/婴儿数 |
@@ -388,7 +389,8 @@ GET /v3/admin/order/group-batch/<groupBatchId>/orders?includeTravelers=true&incl
| 002 | primaryReporter | 无 | reporter_rank=PRIMARY 批量取值 |
| 003 | estimatedCost/tier/人数 | 无 | 批量派生 |
| 003 | contactPhone | 原文 | 全量掩码 |
| 003 | travelers | 无 | name/type/age/birthdayInTrip(无证件号) |
| 003 | totalPrice | 无 | 本户应收(payableForDisplay 口径,取消单返 "0",#6929) |
| 003 | travelers | 无 | name/type/age/birthdayInTrip(无证件号,跨年修正 #6929) |
## 六.7、影响评估
@@ -441,16 +443,16 @@ GET /v3/admin/order/group-batch/<groupBatchId>/orders?includeTravelers=true&incl
1. **【001】无活跃子订单的团期 `chips` 整体为 `null`**(不是六键全「待办」)。有单团期六键全在(聚合态四值:待办/处理中/已完成/异常;个别键可为 null)。渲染芯片前判 `chips != null`,null 时按「未开始」占位。
2. **【000】`productType` 实际只能看团期产品**:上游产品域只返回 GROUP 产品,传非 GROUP 值得空列表;「不限类型查普通产品」是面向隐式团的规划能力,当前不可达。§三.1 入参表原「不传=不限」描述有误,已就地勘误,以本条为准。
3. **【003】`demandStatus`(本户需求态 SUBMITTED/CONFIRMED/REJECTED)不下发**:契约卡 GB-ADM-003 有该字段但本期未实现,响应中不存在;原型名单表「打回 / 已重提」列暂无数据源,请先隐藏或恒占位,勿依赖。
4. **【003】`totalPrice`(本户应收)暂缺**:「预计毛利 = totalPrice − estimatedCost」在返工 #6929 上线前算不了(`estimatedCost` 已可用)。**请勿用 `paidAmount + balanceAmount` 自算应收**(含退款场景口径不对)。#6929 上线后 `totalPrice` 为 JSON 字符串,取消单返 `"0"`。
4. **【003】`totalPrice`(本户应收)已实现(#6929)**:「预计毛利 = totalPrice − estimatedCost」现可直接算(`estimatedCost` 已可用)。`totalPrice` 为 JSON 字符串(ToStringSerializer),活跃单 = orderAmount + surchargeAmount − discountAmount(下限 0),**取消单返 `"0"`**。**请勿用 `paidAmount + balanceAmount` 自算应收**(含退款场景口径不对)。
5. **【003】`include*=false` 时扩展字段「键在、值为 null」**:`travelers / roomCount / roomType / specialNeeds` 键仍存在、值为 `null`,判 `null` 即可,勿用 `key in obj` 判断。
6. **【003】`birthdayInTrip` 跨年行程可能漏报**:跨年团(12 月~1 月)里 1 月生日的出行人可能误判 `false`,返工 #6929 修复;上线前领队生日提醒在跨年团上可能漏报,知悉即可。
6. **【003】`birthdayInTrip` 跨年已修复(#6929)**:行程跨年(12 月~1 月)时,出团年与返团年分别年化比较,任一落在行程闭区间即 `true`(如 12-28~01-03 行程内 01-02 生日 → true);2-29 生日在非闰年落 2-28 不抛异常。
### 在途返工(上线后另行同步)
| 工单 | 内容 | 前端影响 |
|------|------|----------|
| #6926 | 008 导出补 `opsStage`;009 自校验修正;month 非法值容错 | 见 `01_6904_*` 第十一节 |
| #6929 | 003 补 `totalPrice`;`birthdayInTrip` 跨年修正;内部双包装收敛 | 上线后可用 `totalPrice − estimatedCost` 算预计毛利;其余无感 |
| ~~#6929~~ | ~~003 补 `totalPrice`;`birthdayInTrip` 跨年修正;内部双包装收敛~~ | ✅ 已实现(PR #7057,部署验收后生效):`totalPrice − estimatedCost` 可直接算预计毛利;跨年生日不再漏报;其余无感 |
## 关联 / 联系人