diff --git a/changelogs/2026-04/2026-04-13_product-v2_total_mileage_auto_calc.md b/changelogs/2026-04/2026-04-13_product-v2_total_mileage_auto_calc.md new file mode 100644 index 0000000..282f02e --- /dev/null +++ b/changelogs/2026-04/2026-04-13_product-v2_total_mileage_auto_calc.md @@ -0,0 +1,55 @@ +# 产品v2 - 总里程自动累加逻辑 + +**日期**: 2026-04-13 +**服务**: product-service-v2 +**类型**: 前端功能提醒 + +--- + +## 需求 + +Step3"路线与备品"页面的**总里程**应自动累加各天里程,同时允许手动修改覆盖。 + +## 逻辑 + +``` +总里程 = SUM(每天的 dailyMileage) +``` + +- 默认自动累加 Step2 各天的 `dailyMileage` 值(可能为 null,按 0 处理) +- 用户可手动修改总里程,修改后不再自动覆盖(或提供重置按钮恢复自动计算) + +## 相关字段 + +| 位置 | 字段 | 说明 | +|------|------|------| +| Step2 行程天 | `itinerary[].dailyMileage` | 每日里程(km),可能为null | +| Step3 路线总览 | `totalMileage` | 总里程(km),保存时传给后端 | + +## 数据来源 + +`GET /admin/product/item/{productId}` 返回: + +```json +{ + "itinerary": [ + {"dayNumber": 1, "dailyMileage": null}, + {"dayNumber": 2, "dailyMileage": 120}, + {"dayNumber": 3, "dailyMileage": 160}, + {"dayNumber": 4, "dailyMileage": 200}, + {"dayNumber": 5, "dailyMileage": 220}, + {"dayNumber": 6, "dailyMileage": 200} + ], + "routeInfo": { + "totalMileage": 900, + "routeDescription": "...", + "routeMapUrl": "..." + } +} +``` + +自动计算:120 + 160 + 200 + 220 + 200 = **900 km** + +## 保存 + +`PUT /admin/product/item/{productId}/route` 请求体中 `totalMileage` 传最终值(不管是自动算的还是手动改的),后端只存不算。