From 07dbd2b5950ec56e44c024e4993184344338bb21 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Sun, 19 Jul 2026 02:20:37 +0800 Subject: [PATCH] =?UTF-8?q?docs(api):=20=E8=A1=A5=E5=85=85=20#4938=20?= =?UTF-8?q?=E8=BD=A6=E5=8A=A1=E5=9F=BA=E7=BA=BF=E5=B7=AE=E5=BC=82=E5=A5=91?= =?UTF-8?q?=E7=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...œ€ç»ˆç¡®è®¤è®¢å•调整基线差异-修改接å£-管ç†åŽå°.md | 510 ++++++++++++++++++ 1 file changed, 510 insertions(+) create mode 100644 changelogs-v2/2026-07/62_4938_车务最终确认订å•调整基线差异-修改接å£-管ç†åŽå°.md diff --git a/changelogs-v2/2026-07/62_4938_车务最终确认订å•调整基线差异-修改接å£-管ç†åŽå°.md b/changelogs-v2/2026-07/62_4938_车务最终确认订å•调整基线差异-修改接å£-管ç†åŽå°.md new file mode 100644 index 0000000..c85c68d --- /dev/null +++ b/changelogs-v2/2026-07/62_4938_车务最终确认订å•调整基线差异-修改接å£-管ç†åŽå°.md @@ -0,0 +1,510 @@ +# ã€#4938 å‰ç«¯å¯¹æŽ¥Â·ç®¡ç†åŽå°ã€‘车务创建ã€ä¿®æ”¹ä¸Žæœ€ç»ˆç¡®è®¤è¿”回订å•调整基线差异 + +> Issue: [wx/HL#4938](https://git.1814.love:8443/wx/HL/issues/4938) +> +> PR: [wx/HL#5065](https://git.1814.love:8443/wx/HL/pulls/5065) +> +> æœåŠ¡: `hl-fleet-service` +> +> 日期: 2026-07-18 +> +> å½±å“范围: 车务直接派车ã€ç›´æŽ¥æ”¹æ´¾ã€`holding → assigned` 最终确认,以åŠè®¢å•调整åŽçš„æ—¥æœŸã€äººæ•°ã€è½¦è¾†å®¹é‡å·®å¼‚å¤„ç† +> +> 状æ€: åŽç«¯å·²åˆå¹¶å¹¶éƒ¨ç½²æµ‹è¯•环境;待管ç†åŽå°æŒ‰æœ¬æ–‡å®Œæˆé¡µé¢è”è°ƒ + +## 一ã€å‰ç«¯å¯¹æŽ¥ç»“论 + +以下三个既有管ç†åŽå°æŽ¥å£çŽ°åœ¨å…±ç”¨ä¸šåŠ¡ç  `605041` è¿”å›žç»“æž„åŒ–é€æ—¥å·®å¼‚: + +| æ“作 | æŽ¥å£ | è§¦å‘ 605041 çš„æ¡ä»¶ | +|---|---|---| +| åˆ›å»ºæ´¾å• | `POST /admin/fleet/assignments` | `holdMode=0` 直接派车时最终基线ä¸ä¸€è‡´ | +| ä¿®æ”¹æ´¾å• | `POST /admin/fleet/assignments/{assignmentId}/change` | `holdMode=0` 直接改派时最终基线ä¸ä¸€è‡´ | +| 最终确认 | `POST /admin/fleet/assignments/{assignmentId}/confirm` | 订å•ã€éœ€æ±‚ã€è¡Œç¨‹ã€é€æ—¥æ´¾å•ã€äººæ•°æˆ–容é‡åŸºçº¿ä¸ä¸€è‡´ | + +å‰ç«¯å¿…é¡»éµå®ˆä»¥ä¸‹åˆ¤æ–­ï¼š + +1. 三个接å£çš„ `605041` 当å‰å‡è¿”回 HTTP 200,但统一å“应体为 `code=605041`ã€`success=false`,ä¸èƒ½åªåˆ¤æ–­ HTTP 状æ€ã€‚ +2. `605041` çš„ `data` ä¸ä¸ºç©ºï¼š + - create 返回 `AssignmentWriteRespVO`,ä¿è¯ `data.dailyDifferences` å¯è¯»ï¼› + - change 返回 `ChangeAssignmentRespVO`,ä¿è¯ `data.dailyDifferences` å¯è¯»ï¼› + - confirm 返回 `ConfirmRespVO`,ä¿è¯ `data.confirmed=false` å’Œ `data.dailyDifferences` å¯è¯»ã€‚ +3. `605041` ä¸ä¼šæäº¤æ´¾å•åŠå…¶å…³è”业务状æ€å†™å…¥ï¼š + - create ä¸ä¼šæ–°å¢žæˆ–激活派å•ï¼› + - change ä¸ä¼šå–消旧派å•,也ä¸ä¼šç”Ÿæˆå¯ç”¨çš„æ–°æ´¾è½¦ç‰ˆæœ¬ï¼› + - confirm ä¸ä¼šæŽ¨è¿›æ´¾å•çŠ¶æ€æˆ–确认时间; + - 三者都ä¸ä¼šè§¦å‘车辆/叿œºå ç”¨ã€ä¿é™©ã€å¯¹è´¦æˆ–è®¢å•æ´¾å®šç»“æžœå˜åŒ–。 + - change ä»ä¼šæŒ‰æ—¢æœ‰è®¾è®¡åœ¨ç‹¬ç«‹äº‹åŠ¡ä¿ç•™ä¸€æ¡ `CHANGE_FAILED` æ“ä½œå®¡è®¡ï¼›å®ƒä¸æ˜¯æœ‰æ•ˆæ´¾å•版本,也ä¸è¡¨ç¤ºä¸šåС写入æˆåŠŸã€‚ +4. 收到 `605041` åŽä¿æŒæ“作å‰é¡µé¢çжæ€ï¼Œå±•ç¤ºé€æ—¥å·®å¼‚ï¼Œå¹¶é‡æ–°æ‹‰å–最新订å•和车务详情。 +5. 所有派å•ã€è½¦è¾†æ§½ä½ã€æ´¾è½¦ç»„ã€è®¢å•ã€è½¦è¾†å’Œå¸æœºé›ªèб ID 凿Œ‰ JSON String å‘é€å’Œè¯»å–ï¼Œç¦æ­¢è½¬ä¸º JavaScript `Number`。金é¢å­—段也按 String 读å–。 + +## 二ã€605041 公共å“应契约 + +### 2.1 统一å“应外层 + +```json +{ + "code": 605041, + "message": "订å•行程或用车派å•å·²å˜åŒ–ï¼Œè¯·æŒ‰é€æ—¥å·®å¼‚处ç†åŽé‡è¯•", + "data": { + "dailyDifferences": [ + { + "serviceDate": "2026-07-22", + "differenceType": "CAPACITY_INSUFFICIENT", + "assignmentId": null, + "assignmentSlotId": null, + "passengerCount": 8, + "passengerCapacity": 5, + "capacityGap": 3, + "message": "车辆载客é‡ä¸è¶³ï¼Œå·²æŒ‰æ¯è½¦å¸æœºå ä¸€åº§è®¡ç®—" + } + ] + }, + "traceId": "7db459fd-0b8e-4f29-9c46-4938f09a001", + "success": false +} +``` + +注æ„: + +- `data` 的完整类型å–决于调用的是 createã€change 还是 confirm,ä¸èƒ½è·¨æŽ¥å£å¤ç”¨æˆåŠŸå“应模型。 +- 除本文件明确ä¿è¯çš„失败字段外,其余æˆåŠŸæ€å­—段在 `605041` 时为空,å‰ç«¯ä¸å¾—用它们推断写入结果。 +- `traceId` 用于å馈和日志定ä½ï¼Œä¸å‚与业务判断。 + +### 2.2 `dailyDifferences[]` + +| 字段 | 类型 | 说明 | +|---|---|---| +| `serviceDate` | String/null | å‘生差异的æœåŠ¡æ—¥ï¼Œæ ¼å¼ `yyyy-MM-dd`;无法定ä½åˆ°å•日时为空 | +| `differenceType` | String | 差异类型,å–值è§ä¸‹è¡¨ | +| `assignmentId` | String/null | å¯å®šä½åˆ°å…·ä½“æ´¾å•æ—¶è¿”回;仅用于定ä½å·®å¼‚,ä¸ä»£è¡¨æœ¬æ¬¡å†™å…¥æˆåŠŸ | +| `assignmentSlotId` | String/null | å¯å®šä½åˆ°ç¨³å®šè½¦è¾†æ§½ä½æ—¶è¿”回 | +| `passengerCount` | Integer/null | 当剿¯”对使用的乘客人数,ä¸å«å¸æœº | +| `passengerCapacity` | Integer/null | 当日车辆åˆè®¡å¯è½½å®¢äººæ•°ï¼Œæ¯è¾†è½¦å·²æ‰£é™¤å¸æœºä¸€åº§ | +| `capacityGap` | Integer/null | ç¼ºå°‘åº§ä½æ•°ï¼Œç­‰äºŽ `passengerCount - passengerCapacity` | +| `message` | String | åŽç«¯ç”Ÿæˆçš„差异说明,å¯ç›´æŽ¥è¾…助展示 | + +差异类型: + +| `differenceType` | å«ä¹‰ | +|---|---| +| `REQUIREMENT_VERSION_MISMATCH` | 当å‰ç”Ÿæ•ˆç”¨è½¦éœ€æ±‚å·²å˜åŒ–,或订å•/需求已ä¸å¯ç»§ç»­æ´¾å• | +| `ORDER_DATE_MISMATCH` | 订å•当剿—¥æœŸä¸Žç”¨è½¦éœ€æ±‚冻结日期ä¸ä¸€è‡´ | +| `ITINERARY_DATE_MISMATCH` | 逿—¥è¡Œç¨‹æ—¥æœŸä¸Žç”¨è½¦éœ€æ±‚冻结日期ä¸ä¸€è‡´ï¼Œæˆ–ç¼ºå°‘é€æ—¥è¡Œç¨‹ | +| `ASSIGNMENT_DATE_MISSING` | æŸæœåŠ¡æ—¥ç¼ºå°‘æœ‰æ•ˆæ´¾å•æˆ–è½¦è¾†æ§½ä½ | +| `ASSIGNMENT_DATE_EXTRA` | æ´¾å•ä»åŒ…å«å·²ä¸å±žäºŽå½“å‰éœ€æ±‚çš„æœåŠ¡æ—¥ | +| `HEADCOUNT_BASELINE_MISMATCH` | 订å•当å‰äººæ•°ã€éœ€æ±‚冻结人数或派å•人数快照ä¸ä¸€è‡´ | +| `CAPACITY_INSUFFICIENT` | 当日所有车辆åˆè®¡è½½å®¢é‡ä¸è¶³ | + +`dailyDifferences` å¯èƒ½åŒæ—¶åŒ…å«å¤šç§ç±»åž‹ã€å¤šæ¡æœåŠ¡æ—¥è®°å½•ã€‚å‰ç«¯åº”é历数组展示,ä¸å¾—åªå–第一æ¡ï¼Œä¹Ÿä¸å¾—自行é‡ç®—人数或车辆容é‡ã€‚ + +## 三ã€åˆ›å»ºæ´¾å• create + +### 3.1 请求 + +```http +POST /admin/fleet/assignments +Authorization: Bearer +Content-Type: application/json +``` + +```json +{ + "orderId": "2078001000000000101", + "orderNo": "26-0719", + "requirementId": "2078001000000000201", + "fleetItemIndex": 1, + "vehicleId": "2078001000000000301", + "driverId": "2078001000000000401", + "startDate": "2026-07-21", + "endDate": "2026-07-23", + "pickupAt": "海拉尔", + "dropoffAt": "满洲里", + "headcount": 8, + "protocolPrice": "1300.00", + "holdMode": 0, + "fromEntry": "from-board", + "skipCityJunctionException": false, + "strictSeats": true, + "confirmCrossResident": false, + "requestId": "fleet-create-4938-20260719-001" +} +``` + +`605041` åªé€‚用于 `holdMode=0`。原有 `holdMode=1` 排车é”定æµç¨‹ä¸æ‰§è¡Œæœ¬æ¬¡æœ€ç»ˆåŸºçº¿é—¨ç¦ã€‚ + +### 3.2 holdMode=0 æˆåŠŸå“应 + +```json +{ + "code": 200, + "message": "æˆåŠŸ", + "data": { + "id": "2078001000000000501", + "assignmentGroupId": "2078001000000000601", + "assignmentSlotId": "2078001000000000701", + "assignmentStatus": "assigned", + "stageCode": "assigned", + "stageLabel": "已派车", + "currentStep": 4, + "skippedStepCodes": [ + "DRIVER_CONFIRMATION", + "DRIVER_CONFIRMATION_EVIDENCE" + ], + "protocolPrice": "1300.00", + "holdSentAt": null, + "confirmedAt": "2026-07-19 14:20:00", + "sideEffects": { + "vehicleStatusUpdated": "busy", + "driverStatusUpdated": "busy", + "reconPrepRowsCreated": 0, + "reconPrepMarkedCanceled": null + }, + "dailyDifferences": null + }, + "traceId": "7db459fd-0b8e-4f29-9c46-4938c200001", + "success": true +} +``` + +仅在 `code=200` 时把新派å•加入页é¢ï¼›`id`ã€`assignmentGroupId`ã€`assignmentSlotId` 凿Œ‰ String ä¿å­˜ã€‚ + +### 3.3 605041 失败å“应 + +```json +{ + "code": 605041, + "message": "订å•行程或用车派å•å·²å˜åŒ–ï¼Œè¯·æŒ‰é€æ—¥å·®å¼‚处ç†åŽé‡è¯•", + "data": { + "id": null, + "assignmentGroupId": null, + "assignmentSlotId": null, + "assignmentStatus": null, + "stageCode": null, + "stageLabel": null, + "currentStep": null, + "skippedStepCodes": null, + "protocolPrice": null, + "holdSentAt": null, + "confirmedAt": null, + "sideEffects": null, + "dailyDifferences": [ + { + "serviceDate": "2026-07-22", + "differenceType": "CAPACITY_INSUFFICIENT", + "assignmentId": null, + "assignmentSlotId": null, + "passengerCount": 8, + "passengerCapacity": 5, + "capacityGap": 3, + "message": "车辆载客é‡ä¸è¶³ï¼Œå·²æŒ‰æ¯è½¦å¸æœºå ä¸€åº§è®¡ç®—" + } + ] + }, + "traceId": "7db459fd-0b8e-4f29-9c46-4938c605041", + "success": false +} +``` + +此时ä¸å¾—把临时å“应内容加入派å•列表,ä¸å¾—本地å ç”¨è½¦è¾†/叿œºï¼›åˆ·æ–°åŽä»ä»¥æœåŠ¡ç«¯æœ€æ–°è¯¦æƒ…ä¸ºå‡†ã€‚ + +## å››ã€ä¿®æ”¹æ´¾å• change + +### 4.1 请求 + +```http +POST /admin/fleet/assignments/2078001000000000501/change +Authorization: Bearer +Content-Type: application/json +``` + +```json +{ + "effectiveDate": "2026-07-22", + "newVehicleId": "2078001000000000302", + "newDriverId": "2078001000000000402", + "holdMode": 0, + "protocolPrice": "1688.00", + "confirmCrossResident": false, + "reason": "订å•è°ƒæ•´åŽæ›´æ¢è½¦è¾†å’Œå¸æœº", + "requestId": "fleet-change-4938-20260719-001" +} +``` + +`newVehicleId`ã€`newDriverId` 至少传一个。`605041` åªé€‚用于 `holdMode=0`ï¼›`holdMode=1` 仿Œ‰æŽ’è½¦å¾…å¸æœºç¡®è®¤æµç¨‹å¤„ç†ã€‚ + +### 4.2 holdMode=0 æˆåŠŸå“应 + +```json +{ + "code": 200, + "message": "æˆåŠŸ", + "data": { + "assignmentId": "2078001000000000502", + "assignmentSlotId": "2078001000000000701", + "previousAssignmentGroupId": "2078001000000000601", + "newAssignmentGroupId": "2078001000000000602", + "assignmentStatus": "assigned", + "effectiveDate": "2026-07-22", + "affectedDays": 2, + "protocolPrice": "1688.00", + "otherVehicleCount": 1, + "warningCode": "ORDER_HAS_OTHER_VEHICLES", + "warningMessage": "该订å•妿œ‰1个车辆槽ä½ï¼Œå½“å‰ä»…修改本车辆,请核对其它车辆安排", + "otherVehicles": [ + { + "assignmentSlotId": "2078001000000000702", + "vehiclePlate": "è’™B-66666", + "driverName": "æŽå¸ˆå‚…", + "startDate": "2026-07-21", + "endDate": "2026-07-23" + } + ], + "dailyDifferences": null + }, + "traceId": "7db459fd-0b8e-4f29-9c46-4938a200001", + "success": true +} +``` + +change æˆåŠŸå“应没有 `confirmed` å’Œ `sideEffects` å­—æ®µã€‚åªæœ‰ `code=200` æ—¶æ‰èƒ½ç”¨æ–°æ´¾è½¦ç»„替æ¢é¡µé¢ä¸­çš„æ—§ç‰ˆæœ¬ï¼›`warningCode=ORDER_HAS_OTHER_VEHICLES` æ—¶ç»§ç»­ä¿ç•™æ—¢æœ‰å¼ºæç¤ºã€‚ + +### 4.3 605041 失败å“应 + +```json +{ + "code": 605041, + "message": "订å•行程或用车派å•å·²å˜åŒ–ï¼Œè¯·æŒ‰é€æ—¥å·®å¼‚处ç†åŽé‡è¯•", + "data": { + "assignmentId": null, + "assignmentSlotId": null, + "previousAssignmentGroupId": null, + "newAssignmentGroupId": null, + "assignmentStatus": null, + "effectiveDate": null, + "affectedDays": null, + "protocolPrice": null, + "otherVehicleCount": null, + "warningCode": null, + "warningMessage": null, + "otherVehicles": null, + "dailyDifferences": [ + { + "serviceDate": null, + "differenceType": "HEADCOUNT_BASELINE_MISMATCH", + "assignmentId": null, + "assignmentSlotId": null, + "passengerCount": 8, + "passengerCapacity": null, + "capacityGap": null, + "message": "订å•当å‰äººæ•°ä¸Žç”¨è½¦éœ€æ±‚冻结人数ä¸ä¸€è‡´" + }, + { + "serviceDate": "2026-07-22", + "differenceType": "CAPACITY_INSUFFICIENT", + "assignmentId": null, + "assignmentSlotId": null, + "passengerCount": 8, + "passengerCapacity": 5, + "capacityGap": 3, + "message": "车辆载客é‡ä¸è¶³ï¼Œå·²æŒ‰æ¯è½¦å¸æœºå ä¸€åº§è®¡ç®—" + } + ] + }, + "traceId": "7db459fd-0b8e-4f29-9c46-4938a605041", + "success": false +} +``` + +此时旧派å•å’ŒåŽŸæ´¾è½¦ç»„ä»æ˜¯æœ‰æ•ˆä¸šåŠ¡çŠ¶æ€ã€‚åŽç«¯å¯èƒ½æ–°å¢žä¸€æ¡ `CHANGE_FAILED` æ“作审计,但ä¸ä¼šç”Ÿæˆå¯ç”¨çš„æ–°æ´¾è½¦ç‰ˆæœ¬ã€‚ä¸å¾—用 `dailyDifferences[].assignmentId` 替æ¢é¡µé¢ä¸»é”®ï¼Œä¹Ÿä¸å¾—本地切æ¢è½¦è¾†ã€å¸æœºæˆ–状æ€ã€‚ + +## äº”ã€æœ€ç»ˆç¡®è®¤ confirm + +### 5.1 请求 + +```http +POST /admin/fleet/assignments/2078001000000000501/confirm +Authorization: Bearer +Content-Type: application/json +``` + +```json +{ + "requestId": "fleet-final-confirm-4938-20260719-001" +} +``` + +| 字段 | ä½ç½® | 类型 | å¿…å¡« | çº¦æŸ | 说明 | +|---|---|---|---|---|---| +| `assignmentId` | Path | String | 是 | æœ‰æ•ˆæ´¾å• ID | 当剿´¾è½¦ç»„ä¸­çš„ä»»ä¸€æ´¾å• ID | +| `requestId` | Body | String | 是 | éžç©ºï¼Œæœ€é•¿ 64 | 最终确认幂等标识 | + +### 5.2 æˆåŠŸå“应 + +```json +{ + "code": 200, + "message": "æˆåŠŸ", + "data": { + "confirmed": true, + "assignmentStatus": "assigned", + "stageCode": "assigned", + "stageLabel": "已派车", + "currentStep": 4, + "assignmentGroupId": "2078001000000000601", + "confirmedAt": "2026-07-19 14:30:00", + "itineraryUrl": "https://h5.example.com/#/itinerary/", + "sideEffects": { + "vehicleStatusUpdated": "busy", + "driverStatusUpdated": "busy", + "reconPrepRowsCreated": 0, + "reconPrepMarkedCanceled": null + }, + "dailyDifferences": null + }, + "traceId": "7db459fd-0b8e-4f29-9c46-4938f200001", + "success": true +} +``` + +`itineraryUrl` ç­¾å‘é…ç½®ä¸å¯ç”¨æ—¶å…许为空,ä¸å½±å“确认æˆåŠŸã€‚å‰ç«¯åªæœ‰åœ¨ `code=200 && data.confirmed===true` 时展示最终确认æˆåŠŸï¼Œå¹¶åˆ·æ–°æ´¾å•详情ã€çœ‹æ¿åˆ—表和汇总。 + +### 5.3 日期ã€äººæ•°ä¸Žå®¹é‡åŒæ—¶å­˜åœ¨å·®å¼‚ + +```json +{ + "code": 605041, + "message": "订å•行程或用车派å•å·²å˜åŒ–ï¼Œè¯·æŒ‰é€æ—¥å·®å¼‚处ç†åŽé‡è¯•", + "data": { + "confirmed": false, + "assignmentStatus": null, + "stageCode": null, + "stageLabel": null, + "currentStep": null, + "assignmentGroupId": null, + "confirmedAt": null, + "itineraryUrl": null, + "sideEffects": null, + "dailyDifferences": [ + { + "serviceDate": "2026-07-21", + "differenceType": "ORDER_DATE_MISMATCH", + "assignmentId": null, + "assignmentSlotId": null, + "passengerCount": null, + "passengerCapacity": null, + "capacityGap": null, + "message": "订å•当剿—¥æœŸä¸Žç”¨è½¦éœ€æ±‚冻结日期ä¸ä¸€è‡´" + }, + { + "serviceDate": null, + "differenceType": "HEADCOUNT_BASELINE_MISMATCH", + "assignmentId": null, + "assignmentSlotId": null, + "passengerCount": 8, + "passengerCapacity": null, + "capacityGap": null, + "message": "订å•当å‰äººæ•°ä¸Žç”¨è½¦éœ€æ±‚冻结人数ä¸ä¸€è‡´" + }, + { + "serviceDate": "2026-07-22", + "differenceType": "CAPACITY_INSUFFICIENT", + "assignmentId": null, + "assignmentSlotId": null, + "passengerCount": 8, + "passengerCapacity": 5, + "capacityGap": 3, + "message": "车辆载客é‡ä¸è¶³ï¼Œå·²æŒ‰æ¯è½¦å¸æœºå ä¸€åº§è®¡ç®—" + } + ] + }, + "traceId": "7db459fd-0b8e-4f29-9c46-4938f605041", + "success": false +} +``` + +### 5.4 ç¼ºå°‘æŸæ—¥è½¦è¾†æ§½ä½ + +```json +{ + "code": 605041, + "message": "订å•行程或用车派å•å·²å˜åŒ–ï¼Œè¯·æŒ‰é€æ—¥å·®å¼‚处ç†åŽé‡è¯•", + "data": { + "confirmed": false, + "assignmentStatus": null, + "stageCode": null, + "stageLabel": null, + "currentStep": null, + "assignmentGroupId": null, + "confirmedAt": null, + "itineraryUrl": null, + "sideEffects": null, + "dailyDifferences": [ + { + "serviceDate": "2026-07-23", + "differenceType": "ASSIGNMENT_DATE_MISSING", + "assignmentId": null, + "assignmentSlotId": null, + "passengerCount": null, + "passengerCapacity": null, + "capacityGap": null, + "message": "该æœåŠ¡æ—¥ç¼ºå°‘ç¬¬2ä¸ªè½¦è¾†æ§½ä½æ´¾å•" + } + ] + }, + "traceId": "7db459fd-0b8e-4f29-9c46-4938f605042", + "success": false +} +``` + +## å…­ã€å‰ç«¯ç»Ÿä¸€å¤„ç†é¡ºåº + +1. 先判断业务 `code`,å†è¯»å–端点自己的 `data`: + - `code=200`:按对应æˆåŠŸæ¨¡åž‹å¤„ç†ï¼› + - `code=605041`ï¼šæŒ‰å¯¹åº”å¤±è´¥æ¨¡åž‹è¯»å– `dailyDifferences`ï¼› + - 其他业务ç ï¼šç»§ç»­èµ°æ—¢æœ‰é”™è¯¯å¤„ç†ã€‚ +2. `605041` æ—¶ä¸è¦ä¹è§‚更新: + - create 䏿–°å¢žæœ¬åœ°æ´¾å•ï¼› + - change 䏿›¿æ¢æ—§æ´¾å•ï¼› + - confirm 䏿”¹ä¸º `assigned` 或“已确认â€ã€‚ +3. 展示顶层 `message`,并按 `dailyDifferences` 列出æœåŠ¡æ—¥ã€å·®å¼‚类型ã€äººæ•°ã€å®¹é‡å’Œç¼ºå£ï¼›å­—段为空时éšè—对应展示项。 +4. 釿–°è¯·æ±‚最新订å•和车务详情,é¿å…继续使用æ“作å‰ç¼“存。 +5. ç”¨æˆ·ä¿®æ­£è®¢å•æ—¥æœŸã€è¡Œç¨‹ã€äººæ•°æˆ–æ´¾å•åŽï¼Œç”Ÿæˆæ–°çš„ `requestId` å†æäº¤æ–°åŠ¨ä½œï¼›ä»…åœ¨åŒä¸€æ¬¡åŠ¨ä½œç½‘ç»œç»“æžœä¸ç¡®å®šæ—¶å¤ç”¨åŽŸ `requestId`。 + +## 七ã€å…¶ä»–直接错误分支 + +| ä¸šåŠ¡ç  | 常è§åœºæ™¯ | å‰ç«¯å¤„ç† | +|---|---|---| +| `605009` | æ´¾å•ä¸å­˜åœ¨ | 刷新详情和看æ¿ï¼Œåœæ­¢æ“作旧记录 | +| `605020` | 当å‰çжæ€ä¸å…许æ“作 | 刷新最新生命周期与æ“作能力 | +| `605025` | 最终确认å‰ç¼ºå°‘叿œºç¡®è®¤æˆ–æœ‰æ•ˆå‡­è¯ | 引导先完æˆå¸æœºç¡®è®¤ä¸Žå‡­è¯ç™»è®° | +| `605001` / `605003` | è½¦è¾†æˆ–å¸æœºæ¡£æœŸå†²çª | 展示åŽç«¯é”™è¯¯å¹¶é‡æ–°é€‰è½¦/叿œº | +| `605036` | 跨常驻车未显å¼ç¡®è®¤ | 二次æç¤ºåŽæºå¸¦ `confirmCrossResident=true` é‡è¯• | +| `605041` | 订å•ã€éœ€æ±‚ã€è¡Œç¨‹ã€é€æ—¥æ´¾å•ã€äººæ•°æˆ–容é‡åŸºçº¿ä¸ä¸€è‡´ | 使用当å‰ç«¯ç‚¹çš„ `data.dailyDifferences` å±•ç¤ºå¹¶å¤„ç† | + +è¯·æ±‚å­—æ®µä¸ºç©ºã€æ ¼å¼ä¸æ­£ç¡®æˆ–超过长度é™åˆ¶æ—¶èµ°ç»Ÿä¸€å‚数校验错误,å‰ç«¯åº”在å‘请求å‰å®ŒæˆåŒæ ·çº¦æŸã€‚ + +## å…«ã€ä¸å½±å“范围 + +- 䏿–°å¢žç®¡ç†åŽå°æŽ¥å£ï¼Œä¸‰ä¸ªæŽ¥å£çš„è¯·æ±‚å­—æ®µç»“æž„ä¿æŒä¸å˜ã€‚ +- `holdMode=1` 的排车é”定ã€å¸æœºç¡®è®¤ä¸Žå‡­è¯ç™»è®°æµç¨‹ä¿æŒä¸å˜ã€‚ +- 䏿”¹å˜å–消ã€å¸æœºæ‹’接ã€é©³å›žéœ€æ±‚ã€æ’¤é”€å–消和æå‰å®Œç»“çš„å‰ç«¯è°ƒç”¨å¥‘约。 +- ä¸è¦æ±‚å‰ç«¯è®¡ç®—订å•人数ã€é€æ—¥æœåŠ¡æ—¥æœŸæˆ–è½¦è¾†è½½å®¢é‡ï¼Œè¿™äº›å‡ç”±åŽç«¯æƒå¨æ ¡éªŒå¹¶è¿”回差异。 +- æœ¬æ–‡ä»¶åªæè¿°ç®¡ç†åŽå°ç›´æŽ¥æ¶ˆè´¹çš„ HTTP 契约,ä¸åŒ…嫿œåŠ¡é—´è°ƒç”¨æˆ–å‘布实现细节。 + +## ä¹ã€éªŒæ”¶çжæ€ä¸Žå¾…è¡¥è¯æ® + +已完æˆï¼š + +- å½“å‰ worktree 中 createã€changeã€confirm Controller çš„ `605041` 强类型 `data` 陿€æ ¸å¯¹ã€‚ +- `AssignmentWriteRespVO`ã€`ChangeAssignmentRespVO`ã€`ConfirmRespVO` 与 `dailyDifferences` å­—æ®µé™æ€æ ¸å¯¹ã€‚ +- 三æ¡å¤±è´¥è·¯å¾„ä¸æäº¤æ´¾å•åŠå…¶å…³è”业务状æ€å˜åŒ–çš„æºç é¡ºåºæ ¸å¯¹ã€‚ +- åŽç«¯ PR #5065 å·²åˆå¹¶è‡³ `dev-v3`ï¼›Fleet åŒå®žä¾‹ `8087/8187` å·²å®Œæˆæ»šåŠ¨éƒ¨ç½²å¹¶é€šè¿‡å¥åº·/Nacos 验è¯ã€‚ +- 最终æºç æŒ‡çº¹ä¸‹ Fleet `verify` 1909/1909ã€Order-v3 å—å½±å“回归 438/438ã€User Quartz 桥接 5/5 å‡é€šè¿‡ã€‚ + +å‰ç«¯è”è°ƒä»éœ€è¡¥å……: + +- 三个接å£åœ¨æµ‹è¯•环境 OpenAPI 中的请求/å“应模型截图或导出差异。 +- ç»ç½‘关分别å–å¾— createã€changeã€confirm çš„æˆåŠŸå“应和 `605041` 真实å“应,记录 HTTP 状æ€ã€ä¸šåŠ¡ç ã€`traceId` 与完整 `data`。 +- 对 `605041` å‰åŽåšæµ‹è¯•ä¸šåŠ¡æ•°æ®å¯¹ç…§ï¼Œç¡®è®¤æ´¾å•版本/状æ€ã€è½¦è¾†å¸æœºå ç”¨ã€ä¿é™©ã€å¯¹è´¦å’Œè®¢å•派定结果未å‘生å˜åŒ–。 +- 管ç†åŽå°é¡µé¢è”è°ƒè¯æ®ï¼šå·®å¼‚列表展示ã€ç©ºå­—段处ç†ã€åˆ·æ–°è¡Œä¸ºã€ç¦æ­¢ä¹è§‚更新,以åŠä¿®æ­£åŽé‡æ–°æäº¤æˆåŠŸã€‚ -- 2.43.0