From daa80e084d4c9f370b41f4ab2f417ba85fa0b209 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Fri, 7 Aug 2026 15:47:41 +0800 Subject: [PATCH] =?UTF-8?q?docs(changelog):=20#5643=20=E6=B4=BE=E8=BD=A6?= =?UTF-8?q?=E4=BB=B7=E6=97=A5=E5=8E=86=E5=9B=9E=E6=98=BE+=E8=B0=83?= =?UTF-8?q?=E4=BB=B7/=E8=A1=8C=E7=A8=8B=E9=93=BE=E6=8E=A5=E6=96=87?= =?UTF-8?q?=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...历回显与调价行程链接文案-修改接口-管理后台.md | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 changelogs-v2/2026-08/07_5643_派车价日历回显与调价行程链接文案-修改接口-管理后台.md diff --git a/changelogs-v2/2026-08/07_5643_派车价日历回显与调价行程链接文案-修改接口-管理后台.md b/changelogs-v2/2026-08/07_5643_派车价日历回显与调价行程链接文案-修改接口-管理后台.md new file mode 100644 index 0000000..b59ed46 --- /dev/null +++ b/changelogs-v2/2026-08/07_5643_派车价日历回显与调价行程链接文案-修改接口-管理后台.md @@ -0,0 +1,57 @@ +--- +schema: "hl-changelog/v2" +ticket: "5643" +title: "派车价按车型+日期回显价格日历价(修复空收费日期误免)+ 调价/行程链接文案优化" +consumer: "admin" +change_type: "修改接口" +author: "wx(GIT)" +backend_status: "deployed" +gateway_status: "verified" +frontend_status: "not_required" +frontend_owner: "" +frontend_ref: "" +target_release: "v2.1" +verified_at: "2026-08-07" +status_note: "后端完成:PR #5647 已合并 dev-v3 并部署 TEST(15:46 滚动 DONE)。网关验证 6 项全 PASS:候选传空收费日期数组回显日历价 800×4=3200(修复前 4 天 FREE ¥0.00);按日历价派车成功且快照 source=AUTO;调价与行程链接文案按新口径展示。前端无需配合。" +updated_at: "2026-08-07" +base: "dev-v3" +generated: "2026-08-07T15:50:00+08:00" +--- + +# 派车价按车型+日期回显价格日历价(修复空收费日期误免)+ 调价/行程链接文案优化 + +> **服务**: hl-fleet-service +> **PR**: [#5647](https://git.1814.love:8443/wx/HL/pulls/5647) +> **Issue**: [#5643](https://git.1814.love:8443/wx/HL/issues/5643) +> **日期**: 2026-08-07 +> **影响**: 🟢 **缺陷修复 + 文案优化**,无契约结构变更(字段不变,仅返回值/报错文案修正)。前端无需改代码。 + +## 背景 + +#5643(P1)wx 实测:价格日历有数据(SUV普拉多¥1000/天、GL8¥900、帕萨特¥600、考斯特¥1500,2026-08 各日期),但派车订单 26-6457(蒙A-H7777 汉兰达 SUV 8/9-8/12)派车价 4 天都 ¥0.00。 + +**根因**:`POST /admin/fleet/assignments/candidates` 把请求里的 `chargeableServiceDates=[]`(空数组)按字面空集处理 → 全程误判"免费" → 逐日 `assignmentPrice=¥0.00 source=FREE`、自动总价 ¥0。需求未配置收费日期时前端回传空数组(而非 null),触发该路径。 + +**网关复现**:同一需求传 `[]` → 4 天 FREE ¥0.00;不传 → 正常 800×4=3200(汉兰达日历价 ¥800/天)。 + +## 修复内容(内部,无接口/字段结构变化) + +1. **候选取价空数组归一化**:`AssignmentCandidateService` 对 `chargeableServiceDates` 做空集合→未指定(=全部服务日收费)归一化,候选车辆逐日回显日历价(`source=CALENDAR`)、自动总价正确求和。创建/改派边界的"全免需二次确认+原因"守卫语义不变(`resolveChargeableServiceDates` 未动);已落库全免组(收费日为空的合法态)的改派/保留行取价不受影响。 +2. **调价报错文案可行动化**(创建与逐日方案两处):价=日历价的日期填了调价原因时,报错由「日历价日期不能填写车辆调价原因」改为「派车价与日历价一致的日期无需填写调价原因,请清空未调价日期的调价原因后重试」。校验语义与审计不变量不变(调价日必须有原因、未调价日不留原因)。 +3. **行程链接文案分级**:派单通知模板渲染 `{{itinerary.url}} 预览阶段(无可定位派车组)显示「行程链接在派单成功后自动生成」;派车组可定位但无效/定位歧义仍显示「行程链接暂不可用,请联系车务确认」(失败关闭保留);HOLD 未 finalize 组签链仍按 #5461 设计失败关闭。模板渲染的收费/免费日期摘要同步空数组归一化。 + +## 接口行为 + +- `POST /admin/fleet/assignments/candidates`:`chargeableServiceDates` 传 `[]` 与不传行为一致(全部服务日按价格日历取价);候选车辆 `dailyVehicleFees[].calendarPrice/assignmentPrice`、`autoVehicleFeeTotal` 正常回显(非 ¥0)。 +- `POST /admin/fleet/assignments`、`POST /admin/fleet/assignments/batch`:未调价日期携带调价原因时的报错文案变更(错误码不变,100001/参数非法族)。 +- `POST /admin/fleet/message-templates/{templateId}/render`:`itinerary.url` 在预览阶段的占位文案变更(见上)。 + +## 验证 + +- 全量 `mvn -pl hl-fleet-service -am verify`:3252 Tests,Failures=0,Errors=0(dev-v3 @ 76bc874d);新增候选空收费日期回归用例;spotless 通过。 +- 部署 TEST:15:46 滚动 DONE。 +- 网关(订单 26-6457,蒙A-H7777 汉兰达 8/9-8/12,日历价 ¥800/天)6 项全 PASS:①候选传 `[]` 回显 800×4=3200 ②默认入参同样 3200 ③预览文案=行程链接在派单成功后自动生成 ④价=日历价+原因报新文案 ⑤HOLD 派车成功且 DB 快照 calendar=800 全收费、total=3200.00、source=AUTO ⑥HOLD 未 finalize 组渲染按设计失败关闭。 + +## 前端配合 + +无需配合。派车弹窗/候选列表原本读取的字段不变,现在能拿到正确的日历价。