From 8f08de40b6862b217e92a3c8e2074afe7a7e1b47 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Wed, 22 Jul 2026 18:30:22 +0800 Subject: [PATCH] =?UTF-8?q?docs(admin):=20=E9=80=9A=E7=9F=A5=E6=B4=BE?= =?UTF-8?q?=E8=BD=A6=E6=8C=89=E6=97=A5=E8=BD=A6=E8=B4=B9=E6=97=A5=E6=9C=9F?= =?UTF-8?q?=E5=A5=91=E7=BA=A6=20(#5158)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...‹æ—¥æ ‡è®°è½¦è´¹æ—¥æœŸ-修改接å£-å‰ç«¯å¾…处ç†-管ç†åŽå°.md | 174 ++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100644 changelogs-v2/2026-07/87_5158_派车按行程日标记车费日期-修改接å£-å‰ç«¯å¾…处ç†-管ç†åŽå°.md diff --git a/changelogs-v2/2026-07/87_5158_派车按行程日标记车费日期-修改接å£-å‰ç«¯å¾…处ç†-管ç†åŽå°.md b/changelogs-v2/2026-07/87_5158_派车按行程日标记车费日期-修改接å£-å‰ç«¯å¾…处ç†-管ç†åŽå°.md new file mode 100644 index 0000000..84b8afc --- /dev/null +++ b/changelogs-v2/2026-07/87_5158_派车按行程日标记车费日期-修改接å£-å‰ç«¯å¾…处ç†-管ç†åŽå°.md @@ -0,0 +1,174 @@ +--- +schema: "hl-changelog/v1" +ticket: "5158" +title: "派车按行程日标记车费日期" +consumer: "admin" +backend: "verified" +gateway: "verified" +frontend: "pending" +base: "dev-v3" +generated: "2026-07-22T18:00:00+08:00" +--- + +# ã€ä¿®æ”¹æŽ¥å£Â·å‰ç«¯å¾…处ç†Â·ç®¡ç†åŽå°ã€‘派车按行程日标记车费日期 + +## 目标å‰ç«¯ + +- 端类型:管ç†åŽå°ï¼ˆWeb) +- 目标仓库:`mmg/hl-ui` +- 目标分支:`v2.1` +- è”è°ƒ/验收环境: +- å°ç¨‹åºï¼šæ— éœ€å¤„ç† + +> **æœåŠ¡**: hl-fleet-service +> +> **åŽç«¯ PR**: [wx/HL#5166](https://git.1814.love:8443/wx/HL/pulls/5166)ã€[wx/HL#5167](https://git.1814.love:8443/wx/HL/pulls/5167) +> +> **å·¥å•**: [wx/HL#5158](https://git.1814.love:8443/wx/HL/issues/5158) +> +> **å½±å“范围**: 管ç†åŽå°æ´¾å•创建ã€ä¿®æ”¹æ´¾å•ã€æ´¾å•详情åŠå¾…叿œºç¡®è®¤é€šçŸ¥é¢„览 + +## 关键å˜åŒ– + +æ´¾å•的“æœåŠ¡æ—¥â€å’Œâ€œæ”¶å–车费日â€çŽ°åœ¨æ˜¯ä¸¤ä¸ªä¸åŒæ¦‚念。未勾选车费的日期ä»ç„¶æ˜¯æ­£å¸¸æ´¾è½¦æœåŠ¡æ—¥ï¼Œç»§ç»­å ç”¨å¸æœºå’Œè½¦è¾†å¹¶æŒ‰åŽŸè§„åˆ™å¤„ç†ä¿é™©ï¼ŒåªæŠŠå½“天车费记为 `0`ï¼›ä¸è¦æŠŠæœªå‹¾é€‰æ—¥æœŸå½“æˆå–消派车。 + +åŽ†å²æ´¾å•åŠæœªä¼ æ–°å­—æ®µçš„è°ƒç”¨å‡æŒ‰â€œå…¨éƒ¨æœåŠ¡æ—¥æ”¶å–车费â€å¤„ç†ï¼Œä¸æ”¹å˜æ—§æ•°æ®é‡‘é¢ã€‚ + +## å˜æ›´æŽ¥å£ + +| 方法 | 路径 | å˜æ›´ç±»åž‹ | 说明 | +| --- | --- | --- | --- | +| POST | `/admin/fleet/assignments` | 请求新增字段 | 创建排车/直接派车时冻结计费æœåŠ¡æ—¥ | +| POST | `/admin/fleet/assignments/{assignmentId}/change` | 请求能力扩展 | 支æŒä¸æ¢è½¦ã€ä¸æ¢å¸æœºï¼Œä»…修改已确认派å•的计费日 | +| GET | `/admin/fleet/board/orders/{orderId}` | å“应新增字段 | 当剿œ‰æ•ˆæ´¾è½¦ç»„返回计费日ã€å…è´¹æœåŠ¡æ—¥åŠè¯´æ˜Ž | +| POST | `/admin/fleet/message-templates/{templateId}/render` | 请求与模æ¿å˜é‡æ–°å¢ž | 预览计费安排;默认待确认模æ¿å·²å¢žåŠ è½¦è´¹å®‰æŽ’ | + +## åˆ›å»ºæ´¾å• + +`POST /admin/fleet/assignments` 的原字段ä¸å˜ï¼Œæ–°å¢žï¼š + +| 字段 | 类型 | å¿…å¡« | 说明 | +| --- | --- | --- | --- | +| `chargeableServiceDates` | `LocalDate[]/null` | å¦ | æ”¶å–车费的æœåŠ¡æ—¥æœŸï¼›ä¸ä¼ æˆ– `null` 表示全部æœåŠ¡æ—¥ï¼Œç©ºæ•°ç»„è¡¨ç¤ºå…¨éƒ¨å…è´¹ | +| `vehicleFeeWaiverReason` | `String/null` | æ¡ä»¶å¿…å¡« | å…è´¹æœåŠ¡æ—¥è¯´æ˜Žï¼Œæœ€é•¿ 256 字;全部å…费时必填 | +| `confirmAllServiceDatesFree` | `Boolean/null` | æ¡ä»¶å¿…å¡« | `chargeableServiceDates=[]` 时必须显å¼ä¼  `true` | + +部分日期计费示例: + +```json +{ + "orderId": "2046400000000000001", + "startDate": "2026-07-29", + "endDate": "2026-07-31", + "vehicleId": "2046400000000000101", + "driverId": "2046400000000000201", + "holdMode": 1, + "chargeableServiceDates": ["2026-07-30"], + "vehicleFeeWaiverReason": "首尾接é€å·²åŒ…å«åœ¨å›¢è´¹ä¸­", + "requestId": "dispatch-5158-example" +} +``` + +全部å…费示例: + +```json +{ + "chargeableServiceDates": [], + "vehicleFeeWaiverReason": "本团车费由åˆä½œæ–¹ç»Ÿä¸€ç»“ç®—", + "confirmAllServiceDatesFree": true +} +``` + +校验规则: + +- 所有日期必须属于本次派车组的æœåŠ¡æ—¥æœŸï¼Œå¦åˆ™è¿”å›žå‚æ•°é”™è¯¯ã€‚ +- 空数组但未二次确认,返回“全部æœåŠ¡æ—¥å…费时必须二次确认â€ã€‚ +- 空数组但未填写说明,返回“全部æœåŠ¡æ—¥å…费时必须填写原因â€ã€‚ +- `null` 与ä¸ä¼ ä¿æŒå…¼å®¹ï¼Œé»˜è®¤æ‰€æœ‰æœåŠ¡æ—¥è®¡è´¹ã€‚ + +## 修改已确认派å•的计费日 + +`POST /admin/fleet/assignments/{assignmentId}/change` å¤ç”¨åŒå三个字段。仅调整车费时å¯ä»¥ä¸ä¼  `newVehicleId/newDriverId`,但必须: + +- `holdMode=0`ï¼› +- `effectiveDate` 指定修改生效日; +- `reason` 填写本次修改原因; +- `chargeableServiceDates` 表示从 `effectiveDate` èµ·ç›®æ ‡åˆ‡ç‰‡ä¸­ä»æ”¶è½¦è´¹çš„æ—¥æœŸï¼Œä¸èƒ½åŒ…å«ç”Ÿæ•ˆæ—¥å‰æ—¥æœŸã€‚ + +```json +{ + "effectiveDate": "2026-07-29", + "holdMode": 0, + "chargeableServiceDates": ["2026-07-30"], + "vehicleFeeWaiverReason": "首尾接é€å·²åŒ…å«åœ¨å›¢è´¹ä¸­", + "reason": "按实际结算范围调整", + "requestId": "change-fee-5158-example" +} +``` + +已确认派å•会原地更新计费标记并写æ“作审计,ä¸å–消/é‡å»ºæ´¾å•ï¼Œä¸æ”¹å˜å¸æœºã€è½¦è¾†ã€å ç”¨å’Œä¿é™©ã€‚对应月份已ç»å…³è´¦æ—¶è¿”回 `605600`,å‰ç«¯åº”æç¤ºå…ˆç”±æœ‰æƒé™äººå‘˜é‡å¼€è´¦æœŸã€‚ + +## æ´¾å•详情新增字段 + +`GET /admin/fleet/board/orders/{orderId}` çš„ `data.currentAssignment` 与 `data.activeAssignments[]` 新增: + +```json +{ + "chargeableServiceDates": ["2026-07-30"], + "freeServiceDates": ["2026-07-29", "2026-07-31"], + "vehicleFeeWaiverReason": "首尾接é€å·²åŒ…å«åœ¨å›¢è´¹ä¸­" +} +``` + +| 字段 | 类型 | 说明 | +| --- | --- | --- | +| `chargeableServiceDates` | `LocalDate[]` | æ”¶å–车费的æœåŠ¡æ—¥ï¼ŒæŒ‰æ—¥æœŸå‡åº | +| `freeServiceDates` | `LocalDate[]` | ä»æä¾›è½¦è¾†æœåŠ¡ä½†è½¦è´¹ä¸º 0 的日期,按日期å‡åº | +| `vehicleFeeWaiverReason` | `String/null` | å…è´¹æœåŠ¡æ—¥è¯´æ˜Ž | + +## 待确认通知与模æ¿é¢„览 + +`POST /admin/fleet/message-templates/{templateId}/render` 请求新增: + +| 字段 | 类型 | 说明 | +| --- | --- | --- | +| `serviceDates` | `LocalDate[]/null` | 本次派车的实际æœåŠ¡æ—¥æœŸï¼›ä¸ä¼ æ—¶æŒ‰è®¢å•èµ·æ­¢æ—¥ç”Ÿæˆ | +| `chargeableServiceDates` | `LocalDate[]/null` | 预览中的计费日期;ä¸ä¼ è¡¨ç¤ºå…¨éƒ¨è®¡è´¹ | +| `vehicleFeeWaiverReason` | `String/null` | å…è´¹æœåŠ¡æ—¥è¯´æ˜Ž | + +新增模æ¿å˜é‡ï¼š + +| å˜é‡ | 示例 | +| --- | --- | +| `{{assignment.vehicleFeeSummary}}` | `æ”¶å–车费:7月30日;å…è´¹æœåŠ¡æ—¥ï¼š7月29æ—¥ã€7月31æ—¥` | +| `{{assignment.chargeableServiceDates}}` | `7月30æ—¥` | +| `{{assignment.freeServiceDates}}` | `7月29æ—¥ã€7月31æ—¥` | +| `{{assignment.vehicleFeeWaiverReason}}` | `首尾接é€å·²åŒ…å«åœ¨å›¢è´¹ä¸­` | + +全部å…费时摘è¦å›ºå®šä¸ºâ€œæœ¬å›¢æœåŠ¡æ—¥å‡ä¸è®¡è½¦è´¹â€ï¼Œå…¨éƒ¨è®¡è´¹æ—¶ä¸ºâ€œå…¨éƒ¨æœåŠ¡æ—¥æ”¶å–车费â€ã€‚æ´¾å•待确认通知会读å–è½åº“åŽçš„逿—¥åˆ‡ç‰‡å¹¶å†»ç»“正文;è¿è¥ä¿®æ”¹æ¨¡æ¿åŽä¸ä¼šè¿½æ”¹å·²ç”Ÿæˆçš„通知。 + +ç³»ç»Ÿé»˜è®¤â€œæŽ’è½¦å¾…ç¡®è®¤â€æ¨¡æ¿å·²å¢žåŠ â€œè½¦è´¹å®‰æŽ’â€å’Œâ€œå…车费说明â€ã€‚è¿è¥è‡ªè¡Œä¿®æ”¹è¿‡çš„默认模æ¿ä¸ä¼šè¢«æ•°æ®åº“è¿ç§»è¦†ç›–,如需显示新内容,应在车管模æ¿é¡µé¢è‡ªè¡ŒåŠ å…¥ä¸Šè¿°å˜é‡ã€‚ + +## å‰ç«¯å¤„ç†æ¸…å• + +- [ ] æ´¾å•页用订å•实际行程æœåŠ¡æ—¥æœŸç”Ÿæˆå¤šé€‰é¡¹ï¼Œé»˜è®¤å…¨é€‰ï¼Œå¹¶æ˜Žç¡®æ ‡é¢˜ä¸ºâ€œæ”¶å–车费日期â€ã€‚ +- [ ] 未选日期标为“å…è´¹æœåŠ¡æ—¥ï¼ˆä»æ´¾è½¦ã€ä»å ç”¨ã€ä»æŒ‰è§„则投ä¿ï¼‰â€ï¼Œä¸å¾—触å‘å–æ¶ˆæ´¾è½¦é€»è¾‘。 +- [ ] å…¨éƒ¨å–æ¶ˆå‹¾é€‰æ—¶æ˜¾ç¤ºäºŒæ¬¡ç¡®è®¤å¹¶è¦æ±‚填写å…费原因,æäº¤ `confirmAllServiceDatesFree=true`。 +- [ ] ä¿®æ”¹å·²ç¡®è®¤æ´¾å•æ—¶è°ƒç”¨æ—¢æœ‰ `/change` 接å£ï¼Œä¸ç›´æŽ¥å¤ç”¨åˆ›å»ºæŽ¥å£ï¼›æäº¤ `holdMode=0`ã€`reason` 和完整目标日期集åˆã€‚ +- [ ] æ´¾å•è¯¦æƒ…è¯»å– `chargeableServiceDates/freeServiceDates` å›žæ˜¾ï¼Œä¸æ ¹æ®è½¦è´¹é‡‘é¢å推。 +- [ ] 待确认短信预览把åŒä¸€ç»„ `serviceDates/chargeableServiceDates/vehicleFeeWaiverReason` ä¼ ç»™æ¨¡æ¿æ¸²æŸ“接å£ã€‚ +- [ ] 雪花 ID 继续按字符串处ç†ï¼Œæ—¥æœŸç»§ç»­ä½¿ç”¨ `yyyy-MM-dd`。 + +## 验è¯è¯æ® + +- 创建派å•默认全计费ã€éƒ¨åˆ†è®¡è´¹åŠå…¨éƒ¨å…è´¹äºŒæ¬¡ç¡®è®¤å‡æœ‰å•元测试。 +- å…è´¹æœåŠ¡æ—¥ä»…è½¦è´¹å½’é›¶ï¼Œä¿é™©æˆæœ¬å­—段与派车å ç”¨ä¿æŒä¸å˜ã€‚ +- 已确认派å•å˜æ›´å†™å¯é  Outbox,失败å¯é‡è¯•ï¼›å·²å…³è´¦æœŸåœ¨å˜æ›´è½åº“剿‹¦æˆªã€‚ +- 待叿œºç¡®è®¤é€šçŸ¥ä»Žå®žé™…逿—¥æ´¾è½¦åˆ‡ç‰‡ç”Ÿæˆå¹¶å†»ç»“计费摘è¦ã€‚ +- `FleetServiceApplicationTest` 以 H2 真 Flyway 执行 65 æ¡è¿ç§»é€šè¿‡ï¼›`spotless:check` 与 fleet `verify` 通过。 +- 测试环境部署任务 `784326bb` æˆåŠŸï¼Œ`hl-fleet-service` 8087/8187 åŒå®žä¾‹å¥åº·ã€‚ +- 以 `admin` è½¦åŠ¡èº«ä»½ç»æµ‹è¯•网关实测模æ¿åˆ—表ã€éƒ¨åˆ†è®¡è´¹é¢„览ã€å…¨éƒ¨å…费预览ã€çœ‹æ¿åˆ—表与详情,HTTP/业务ç å‡ä¸º 200。 +- 部分计费正文实际包å«â€œæ”¶å–车费:7月30日;å…è´¹æœåŠ¡æ—¥ï¼š7月29æ—¥ã€7月31æ—¥â€ï¼›å…¨éƒ¨å…费正文实际包å«â€œæœ¬å›¢æœåŠ¡æ—¥å‡ä¸è®¡è½¦è´¹â€å’Œå…费原因。 +- 看æ¿è¯¦æƒ… `currentAssignment` 已实际返回 `chargeableServiceDates/freeServiceDates/vehicleFeeWaiverReason` 契约字段。 + +> 本文是å‰ç«¯æŽ¥å…¥é€šçŸ¥ï¼Œä¸ä»£è¡¨å·²ä¿®æ”¹æˆ–å‘布 `mmg/hl-ui`ï¼›å‰ç«¯æŒ‰â€œå‰ç«¯å¤„ç†æ¸…å•â€æŽ¥å…¥å³å¯ã€‚