From d9ecc04a93751f6491921929789340f0df862346 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Sun, 5 Jul 2026 15:59:14 +0800 Subject: [PATCH] docs(fleet): clarify vehicle model dropdown contracts --- ...ˆ†æ®µå±•ç¤ºä¸Žè½¦åž‹ä¸‹æ‹‰æŽ¥å£æ£€æŸ¥-å‰ç«¯å¾…处ç†-管ç†åŽå°.md | 215 ++++++++++++++++++ 1 file changed, 215 insertions(+) create mode 100644 changelogs-v2/2026-07/22_车务看æ¿è½¦åž‹åˆ†æ®µå±•ç¤ºä¸Žè½¦åž‹ä¸‹æ‹‰æŽ¥å£æ£€æŸ¥-å‰ç«¯å¾…处ç†-管ç†åŽå°.md diff --git a/changelogs-v2/2026-07/22_车务看æ¿è½¦åž‹åˆ†æ®µå±•ç¤ºä¸Žè½¦åž‹ä¸‹æ‹‰æŽ¥å£æ£€æŸ¥-å‰ç«¯å¾…处ç†-管ç†åŽå°.md b/changelogs-v2/2026-07/22_车务看æ¿è½¦åž‹åˆ†æ®µå±•ç¤ºä¸Žè½¦åž‹ä¸‹æ‹‰æŽ¥å£æ£€æŸ¥-å‰ç«¯å¾…处ç†-管ç†åŽå°.md new file mode 100644 index 0000000..1c0aceb --- /dev/null +++ b/changelogs-v2/2026-07/22_车务看æ¿è½¦åž‹åˆ†æ®µå±•ç¤ºä¸Žè½¦åž‹ä¸‹æ‹‰æŽ¥å£æ£€æŸ¥-å‰ç«¯å¾…处ç†-管ç†åŽå°.md @@ -0,0 +1,215 @@ +# 车务看æ¿è½¦åž‹åˆ†æ®µå±•ç¤ºä¸Žè½¦åž‹ä¸‹æ‹‰æŽ¥å£æ£€æŸ¥ï¼ˆå‰ç«¯å¾…处ç†ï¼‰ + +- 日期:2026-07-05 +- 端:管ç†åŽå° +- 页é¢ï¼š + - è½¦åŠ¡ç®¡ç† / æ´¾å•çœ‹æ¿ `/fleet/board` + - 订å•详情 / 用车需求弹窗 +- 结论: + - “实际车型â€ä¸‹æ‹‰çš„è¯»å–æŽ¥å£å·²æœ‰ï¼š`GET /admin/fleet/vehicle-types`,éžåˆ†é¡µï¼Œè¿”回车型大类 + åž‹å·æ ‘。 + - æ´¾å•看æ¿åˆ—è¡¨å½“å‰æ²¡æœ‰â€œå‰å‡ å¤©å“ªä¸ªè½¦åž‹ã€åŽå‡ å¤©å“ªä¸ªè½¦åž‹â€çš„分段字段,ä¸èƒ½é å‰ç«¯ä»ŽçŽ°æœ‰èšåˆå­—段硬推。 + - 订å•用车需求æäº¤æŽ¥å£å½“å‰ä¹Ÿæ²¡æœ‰ `vehicleModelId` / 分段日期字段;å‰ç«¯ä¸è¦æŠŠå®žé™…åž‹å·å直接塞进旧的 `vehicleType` 字段。 + +## 1. 测试环境接å£å¤éªŒ + +### 1.1 æ´¾å•看æ¿åˆ—表 + +```http +GET /admin/fleet/board/orders +``` + +测试环境返回 `200`ï¼Œåˆ—è¡¨è®°å½•å½“å‰æœ‰è¿™äº›å…³é”®å­—段: + +| 字段 | 当å‰å«ä¹‰ | +|------|----------| +| `startDate` | æœ¬æ¡æ´¾å•行的开始日期 | +| `endDate` | æœ¬æ¡æ´¾å•è¡Œçš„ç»“æŸæ—¥æœŸ | +| `fleetItemIndex` | åŒä¸€ç”¨è½¦éœ€æ±‚展开åŽçš„é¡¹æ¬¡åº | +| `requiredVehicles` | åŒè®¢å•èšåˆåŽçš„需求车型数组 | +| `currentVehicleModel` | 已派车辆型å·å¿«ç…§ï¼Œæœªæ´¾ä¸ºç©º | +| `currentVehicleSeats` | å·²æ´¾è½¦è¾†åº§ä½æ•°ï¼Œæœªæ´¾ä¸ºç©º | + +实测åŒä¸€ä¸ªè®¢å•å‡ºçŽ°å¤šæ¡æ´¾å•行时,返回形æ€ç±»ä¼¼ï¼š + +```json +[ + { + "fleetItemIndex": 0, + "startDate": "2026-07-02", + "endDate": "2026-07-04", + "requiredVehicles": [ + { "vehicleType": "mpv", "categoryLabel": "商务车", "seats": 7, "count": 1 }, + { "vehicleType": "suv", "categoryLabel": "SUV", "seats": 5, "count": 2 } + ] + }, + { + "fleetItemIndex": 1, + "startDate": "2026-07-02", + "endDate": "2026-07-04", + "requiredVehicles": [ + { "vehicleType": "mpv", "categoryLabel": "商务车", "seats": 7, "count": 1 }, + { "vehicleType": "suv", "categoryLabel": "SUV", "seats": 5, "count": 2 } + ] + } +] +``` + +这说明 `requiredVehicles` 是订å•级èšåˆï¼Œä¸æ˜¯â€œè¯¥æ—¥æœŸæ®µå¯¹åº”车型â€çš„æ˜Žç»†ã€‚å‰ç«¯ä¸èƒ½ç”¨è¿™ä¸ªå­—段推断“å‰å‡ å¤©å•†åŠ¡è½¦ï¼ŒåŽå‡ å¤© SUVâ€ã€‚ + +### 1.2 车型大类 + å®žé™…åž‹å·æ ‘ + +```http +GET /admin/fleet/vehicle-types +``` + +测试环境返回 `200`,éžåˆ†é¡µï¼Œç»“构为: + +```json +[ + { + "id": "车型大类ID", + "typeKey": "suv2", + "typeName": "SUV系列", + "modelCount": 5, + "models": [ + { + "id": "车型型å·ID", + "vehicleTypeId": "所属大类ID", + "modelName": "丰田普拉多", + "seats": 7, + "basePrice": "1000.00", + "alias": "", + "inUseCount": 2 + } + ] + } +] +``` + +这个接å£å¯ä»¥ä½œä¸ºâ€œå®žé™…车型â€ä¸‹æ‹‰çš„æ•°æ®æºã€‚ + +对比: + +```http +GET /admin/fleet/vehicle-types/list +``` + +这个接å£åªè¿”回车型大类,ä¸å« `models`,ä¸é€‚åˆåšâ€œå®žé™…车型型å·â€ä¸‹æ‹‰ã€‚ + +## 2. å‰ç«¯å¤„ç†è¦æ±‚ + +### 2.1 车型下拉改用实际车型树 + +用车需求弹窗里的“车型â€ä¸‹æ‹‰ä¸è¦ç»§ç»­ç”¨é™æ€å­—典或写死选项: + +- 轿车 +- 商务车 +- SUV +- 中巴 +- 大巴 +- 房车 +- 行æŽè½¦ + +应改读: + +```http +GET /admin/fleet/vehicle-types +``` + +建议å‰ç«¯æŠŠ `data[].models[]` 拉平æˆå¯é€‰é¡¹ï¼š + +| 下拉内容 | å–值 | +|----------|------| +| 展示文案 | `modelName`,å¯é™„带 `seats`,例如 `丰田普拉多 · 7座` | +| åž‹å· ID | `models[].id` | +| 所属大类 | 外层 `id / typeKey / typeName` | +| é»˜è®¤åº§ä½æ•° | `models[].seats` | + +ä¸è¦ç”¨ `/admin/fleet/vehicle-types/list` åšè¿™ä¸ªä¸‹æ‹‰ï¼›å®ƒåªé€‚åˆç­›é€‰å¤§ç±»ï¼Œä¸å«å®žé™…åž‹å·ã€‚ + +### 2.2 ä¸è¦æŠŠå®žé™…åž‹å·å直接æäº¤åˆ°æ—§å­—段 + +当å‰ç”¨è½¦éœ€æ±‚æäº¤æŽ¥å£ä»æ˜¯æ—§å¥‘约: + +```http +PUT /v3/admin/order/{id}/vehicle-requirement +``` + +当å‰å…¥å‚ä»åªæœ‰ï¼š + +| 字段 | 当å‰å«ä¹‰ | +|------|----------| +| `fleet[].vehicleType` | 车型分类 | +| `fleet[].seats` | åº§ä½æ•° | +| `fleet[].count` | 辆数 | + +当剿²¡æœ‰ï¼š + +- `fleet[].vehicleModelId` +- `fleet[].modelName` +- `fleet[].startDate` +- `fleet[].endDate` + +所以å‰ç«¯ä¸èƒ½æŠŠ `丰田普拉多` 这类 `modelName` 直接æäº¤åˆ° `vehicleType`。fleet 侧历å²å½’一åªè¯†åˆ« `suv / mpv / bus / sedan` åŠå°‘é‡ä¸­æ–‡åˆ†ç±»åˆ«å,直接æäº¤å®žé™…åž‹å·å会导致åŽç»­éœ€æ±‚展开无法稳定归一。 + +å¦‚æžœæœ¬æ¬¡åªæ˜¯â€œä¸‹æ‹‰æ•°æ®æ¥æºå…ˆæ¢æˆå®žé™…车型库â€ï¼Œå‰ç«¯å¯ä»¥å…ˆç”¨è½¦åž‹æ ‘åšå±•ç¤ºå’Œè¾…åŠ©å¡«åº§ä½æ•°ï¼Œä½†çœŸæ­£ä¿å­˜å®žé™…åž‹å· ID 需è¦åŽç«¯è¡¥æäº¤å¥‘约。 + +## 3. æ´¾å•看æ¿â€œå‰å‡ å¤©å“ªä¸ªè½¦åž‹ã€åŽå‡ å¤©å“ªä¸ªè½¦åž‹â€ + +å½“å‰ `GET /admin/fleet/board/orders` 䏿»¡è¶³è¿™ä¸ªå±•示。 + +原因: + +1. `requiredVehicles` 是订å•级èšåˆæ•°ç»„ï¼Œä¸æ˜¯åˆ†æ®µæ˜Žç»†ã€‚ +2. `startDate/endDate` æ˜¯å½“å‰æ´¾å•行日期段,ä¸è¡¨è¾¾â€œæŸä¸ªè½¦åž‹éœ€æ±‚对应哪个日期段â€ã€‚ +3. 订å•ç”¨è½¦éœ€æ±‚æºæ•°æ®å½“å‰ä¹Ÿæ²¡æœ‰æ¯ä¸ªè½¦åž‹é¡¹è‡ªå·±çš„开始/ç»“æŸæ—¥æœŸã€‚ + +å‰ç«¯ä¸è¦æŒ‰ä»¥ä¸‹æ–¹å¼ç¡¬æŽ¨ï¼š + +- ä¸è¦ç”¨ `requiredVehicles` æ•°ç»„é¡ºåº + `fleetItemIndex` 猜测日期段。 +- ä¸è¦ç”¨æ•´å• `startDate/endDate` 切分æˆå‰åŽå‡ å¤©ã€‚ +- ä¸è¦æ ¹æ®äººæ•°ã€è½¦åž‹æ•°é‡æˆ–å¡ç‰‡é¡ºåºæŽ¨æ–­è½¦åž‹åˆ†æ®µã€‚ + +如果页é¢è¦ç¨³å®šå±•示“å‰å‡ å¤© A 车型,åŽå‡ å¤© B 车型â€ï¼Œéœ€è¦åŽç«¯è¡¥æ˜Žç¡®å­—段。建议目标形æ€å¦‚下: + +```json +{ + "vehicleSegments": [ + { + "startDate": "2026-05-19", + "endDate": "2026-05-21", + "vehicleModelId": "2090000000000000001", + "modelName": "丰田普拉多", + "vehicleType": "suv", + "vehicleTypeLabel": "SUV", + "seats": 7, + "count": 1 + }, + { + "startDate": "2026-05-22", + "endDate": "2026-05-24", + "vehicleModelId": "2090000000000000002", + "modelName": "别克GL8", + "vehicleType": "mpv", + "vehicleTypeLabel": "商务车", + "seats": 7, + "count": 1 + } + ] +} +``` + +åŽç«¯è¡¥å¥‘约å‰ï¼Œæ´¾å•看æ¿å»ºè®®ä»æŒ‰çŽ°æœ‰å­—æ®µå±•ç¤ºï¼š + +- 整体行程日期:`startDate ~ endDate` +- 需求车型 chip:`requiredVehicles[].categoryLabel + seats + count` +- 已派车辆:`currentVehicleModel / currentVehicleSeats / currentVehiclePlate` + +## 4. 验收å£å¾„ + +- ç”¨è½¦éœ€æ±‚å¼¹çª—è½¦åž‹ä¸‹æ‹‰æ•°æ®æ¥è‡ª `GET /admin/fleet/vehicle-types` çš„ `models[]`,ä¸å†ç”¨å†™æ­»é€‰é¡¹ã€‚ +- 下拉能展示实际型å·åå’Œåº§ä½æ•°ï¼Œä¾‹å¦‚ `丰田普拉多 · 7座`。 +- å‰ç«¯ä¸æŠŠ `modelName` 直接æäº¤åˆ°æ—§çš„ `fleet[].vehicleType`。 +- æ´¾å•看æ¿ä¸åŸºäºŽ `requiredVehicles` èšåˆæ•°ç»„硬推“å‰å‡ å¤©/åŽå‡ å¤©â€çš„车型分段。 +- è‹¥è¦å±•示车型分段,等åŽç«¯è¡¥æ˜Žç¡®çš„分段字段åŽå†æŽ¥ã€‚ +