Quellcode durchsuchen

📝 docs(architecture): 更新车型和出行方式数据模型文档

- 在Route接口添加travelMode字段,区分车型和出行方式概念
- 重构VehicleType枚举,添加完整车型选项:大巴、中巴、小车、商务车
- 创建TravelMode枚举,明确拼车和包车两种出行服务模式
- 更新接口示例和迁移指南,反映新的数据模型结构

📝 docs(prd): 添加车型和出行方式配置增强用户故事

- 新增US005-04: 车型和出行方式配置增强故事
- 定义三种组合查询逻辑:大巴拼车、商务车、包车
- 详细说明API查询参数映射关系和界面修改要求
- 顺延后续用户故事编号,更新文档版本信息至2.1
yourname vor 3 Monaten
Ursprung
Commit
a8e7291a69

+ 10 - 1
docs/architecture.md

@@ -346,6 +346,7 @@ export interface Route {
   endPoint: string;
   departureTime: Date;
   vehicleType: VehicleType;
+  travelMode: TravelMode; // 出行方式:拼车/包车
   maxPassengers: number;
   price: number;
   driverPlate: string;
@@ -438,9 +439,17 @@ export enum PaymentStatus {
   REFUNDED = '已退款'
 }
 
+// 车型枚举 - 车辆的实际类型
 export enum VehicleType {
+  BUS = '大巴',
+  MINIBUS = '中巴',
+  CAR = '小车',
+  BUSINESS = '商务车'
+}
+
+// 出行方式枚举 - 服务模式
+export enum TravelMode {
   CARPOOL = '拼车',
-  BUSINESS = '商务车',
   CHARTER = '包车'
 }
 

+ 11 - 1
docs/architecture/data-model-schema-changes.md

@@ -158,6 +158,7 @@ export interface Route {
   endPoint: string;
   departureTime: Date;
   vehicleType: VehicleType;
+  travelMode: TravelMode; // 出行方式:拼车/包车
   maxPassengers: number;
   price: number;
   availableSeats: number;
@@ -180,6 +181,7 @@ export interface RouteSnapshot {
   endPoint: string;
   departureTime: Date;
   vehicleType: VehicleType;
+  travelMode: TravelMode; // 出行方式:拼车/包车
   maxPassengers: number;
   price: number;
 }
@@ -225,9 +227,17 @@ export enum PaymentStatus {
   REFUNDED = '已退款'
 }
 
+// 车型枚举 - 车辆的实际类型
 export enum VehicleType {
+  BUS = '大巴',
+  MINIBUS = '中巴',
+  CAR = '小车',
+  BUSINESS = '商务车'
+}
+
+// 出行方式枚举 - 服务模式
+export enum TravelMode {
   CARPOOL = '拼车',
-  BUSINESS = '商务车',
   CHARTER = '包车'
 }
 

+ 3 - 1
docs/architecture/mini-demo-migration-guide.md

@@ -123,7 +123,8 @@ const routeData = {
   endPoint: "上海",
   departureTime: "2025-10-15 08:00:00",
   price: 200,
-  vehicleType: "商务车"
+  vehicleType: "商务车",
+  travelMode: "包车"
 }
 ```
 
@@ -137,6 +138,7 @@ interface Route {
   departureTime: Date;
   price: number;
   vehicleType: VehicleType;
+  travelMode: TravelMode; // 新增:出行方式(拼车/包车)
 }
 
 // API调用

+ 107 - 18
docs/prd/epic-005-travel-service-core.md

@@ -3,6 +3,7 @@
 ## 版本信息
 | 版本 | 日期 | 描述 | 作者 |
 |------|------|------|------|
+| 2.1 | 2025-10-20 | 添加车型和路线配置增强故事US005-04,顺延原有故事编号 | John (PM) |
 | 2.0 | 2025-10-19 | 添加样式迁移合规性修复故事US005-03,顺延原有故事编号 | John (PM) |
 | 1.9 | 2025-10-17 | 添加省市区实体设计方案,支持标准化行政区划数据管理 | John (PM) |
 | 1.8 | 2025-10-17 | 采用地点实体方案,统一管理地点信息,支持省市区查询 | John (PM) |
@@ -96,7 +97,81 @@ mini-demo包含14个页面,Epic 005将页面迁移作为用户故事的具体
 - [ ] 验证班次列表页面样式(包车卡片、预订按钮、排序工具栏)
 - [ ] 编写样式合规性测试
 
-### US005-04: 乘客信息查看(管理后台)
+### US005-04: 车型和出行方式配置增强
+**作为** 系统管理员
+**我希望** 能够配置完整的车型枚举和独立的出行方式字段
+**以便** 支持更灵活的出行服务组合查询
+
+**组合查询逻辑**:
+- **大巴拼车** → 大巴 + 拼车
+- **商务车** → 商务车 + 拼车/包车
+- **包车** → 大巴/商务车 + 包车
+
+**具体实现要求**:
+- **首页**:保持现有三种查询选项,但查询逻辑需要调整为组合查询
+- **活动选择页面**:根据组合查询条件筛选相关活动
+- **班次列表页面**:根据组合查询条件显示匹配的路线
+- **API查询**:支持根据车型和出行方式的组合条件进行筛选
+
+**组合查询API参数映射**:
+- **大巴拼车**:`vehicleType=bus&travelMode=carpool`
+- **商务车**:`vehicleType=business&travelMode=carpool,charter`(支持两种出行方式)
+- **包车**:`vehicleType=bus,business&travelMode=charter`(支持两种车型)
+
+**验收标准**:
+- [ ] 车型枚举包含完整选项:大巴、中巴、小车、商务车
+- [ ] 路线配置支持独立的出行方式选择(拼车/包车)
+- [ ] 支持组合查询逻辑:大巴拼车、商务车、包车三种查询方式
+- [ ] 不同组合支持不同的价格策略和座位配置
+- [ ] 前端页面正确显示组合查询选项
+- [ ] 小程序和管理后台界面支持组合查询方式
+- [ ] 查询API支持组合查询逻辑
+- [ ] 活动选择页面支持组合查询逻辑
+- [ ] 班次列表页面正确显示组合查询结果
+
+**技术实现任务**:
+- [ ] 更新VehicleType枚举,添加商务车选项
+- [ ] 创建TravelMode枚举,定义拼车和包车出行方式
+- [ ] 在路线实体中添加travelMode字段
+- [ ] 更新管理后台路线配置页面,支持车型和出行方式独立选择
+- [ ] 更新小程序首页出行方式选择器的查询逻辑,支持组合查询
+- [ ] 更新活动选择页面查询逻辑,支持组合查询
+- [ ] 更新班次列表页面查询逻辑,支持组合查询
+- [ ] 更新班次列表页面显示逻辑,正确显示车型和出行方式的组合信息
+- [ ] 更新路线查询API,支持组合查询逻辑
+- [ ] 更新订单详情页面,显示完整的车型和出行方式信息
+- [ ] 验证前端页面正确显示组合查询选项
+
+**查询逻辑实现细节**:
+- **首页查询逻辑**:将三种组合选项映射为对应的API查询参数
+- **活动选择页面查询逻辑**:根据组合条件查询关联的活动,支持多条件筛选
+- **班次列表页面查询逻辑**:根据组合条件查询匹配的路线,支持车型和出行方式的组合筛选
+- **API查询逻辑**:支持多值参数查询,如`vehicleType=bus,business`和`travelMode=carpool,charter`
+
+**界面修改任务**:
+- [ ] **管理后台路线配置页面**:添加出行方式选择器,与车型选择器并列
+- [ ] **小程序首页**:保持现有组合查询选项显示,更新查询逻辑
+- [ ] **班次列表页面**:更新路线卡片,同时显示车型和出行方式
+- [ ] **订单详情页面**:更新订单信息显示,包含车型和出行方式
+
+**API修改任务**:
+- [ ] 更新路线创建和更新API,支持travelMode字段
+- [ ] 更新路线查询API,支持组合查询逻辑
+- [ ] 更新路线列表API响应,包含travelMode字段
+- [ ] 更新活动查询API,支持组合查询逻辑
+- [ ] 更新订单相关API,确保travelMode信息正确传递
+- [ ] 更新管理后台路线管理API,支持车型和出行方式筛选
+
+**API查询参数设计**:
+- **路线查询API**:支持多值参数
+  - `vehicleType`: 支持逗号分隔的多个车型(如`bus,business`)
+  - `travelMode`: 支持逗号分隔的多个出行方式(如`carpool,charter`)
+  - 组合查询逻辑:`vehicleType`和`travelMode`参数同时存在时进行组合筛选
+- **活动查询API**:根据路线组合条件查询关联的活动
+  - 支持通过路线查询参数间接筛选活动
+  - 返回去重后的活动列表
+
+### US005-05: 乘客信息查看(管理后台)
 **作为** 系统管理员
 **我希望** 能够查看所有用户的乘客信息
 **以便** 了解用户乘车人情况和进行数据统计
@@ -110,7 +185,7 @@ mini-demo包含14个页面,Epic 005将页面迁移作为用户故事的具体
 **管理后台页面任务**:
 - [ ] 乘客信息管理页面 - 查看所有乘客信息
 
-### US005-05: 乘客信息管理
+### US005-06: 乘客信息管理
 **作为** 出行用户
 **我希望** 能够管理我的乘客信息
 **以便** 快速选择乘车人
@@ -124,7 +199,7 @@ mini-demo包含14个页面,Epic 005将页面迁移作为用户故事的具体
 **页面迁移任务**:
 - [ ] 迁移添加乘客页面 (add-passenger/add-passenger) - 乘客信息管理页面
 
-### US005-06: 订单信息查看(管理后台)
+### US005-07: 订单信息查看(管理后台)
 **作为** 系统管理员
 **我希望** 能够查看所有订单信息和状态
 **以便** 监控订单流程和处理异常订单
@@ -138,7 +213,7 @@ mini-demo包含14个页面,Epic 005将页面迁移作为用户故事的具体
 **管理后台页面任务**:
 - [ ] 订单管理页面 - 查看所有订单信息
 
-### US005-07: 订单创建和支付
+### US005-08: 订单创建和支付
 **作为** 出行用户
 **我希望** 能够创建订单并完成支付
 **以便** 确认出行安排
@@ -155,7 +230,7 @@ mini-demo包含14个页面,Epic 005将页面迁移作为用户故事的具体
 - [ ] 迁移支付成功页面 (pay-success/pay-success) - 支付结果页面
 
 
-### US005-08: 订单状态管理
+### US005-09: 订单状态管理
 **作为** 出行用户
 **我希望** 能够查看和管理我的订单状态
 **以便** 了解出行安排进度
@@ -171,7 +246,7 @@ mini-demo包含14个页面,Epic 005将页面迁移作为用户故事的具体
 - [ ] 迁移订单详情页面 (order-detail/order-detail) - 订单详情查看页面
 
 
-### US005-09: 个人中心管理
+### US005-10: 个人中心管理
 **作为** 出行用户
 **我希望** 能够查看和管理我的个人信息和出行记录
 **以便** 方便地管理我的出行服务
@@ -185,7 +260,7 @@ mini-demo包含14个页面,Epic 005将页面迁移作为用户故事的具体
 **页面迁移任务**:
 - [ ] 迁移我的页面 (mine/mine) - 个人中心入口页面
 
-### US005-10: 支付集成
+### US005-11: 支付集成
 **作为** 系统
 **我希望** 集成微信支付功能
 **以便** 支持用户完成订单支付
@@ -246,6 +321,8 @@ mini-demo包含14个页面,Epic 005将页面迁移作为用户故事的具体
 ├── 目的地 (endLocation) → 关联Location
 ├── 上车点 (pickupPoint)
 ├── 下车点 (dropoffPoint)
+├── 车型 (vehicleType) → VehicleType枚举(大巴/中巴/小车/商务车)
+├── 出行方式 (travelMode) → TravelMode枚举(拼车/包车)
 ├── 关联活动 (activity)
 └── 其他信息...
 ```
@@ -335,22 +412,27 @@ GET /api/v1/locations?provinceId=1&cityId=34&districtId=36
 - 通过地点关联查询路线
 - 路线类型动态判断:目的地=活动地点为去程,出发地=活动地点为返程
 - 支持按省市区范围查询路线
+- **组合查询支持**:支持车型和出行方式的组合筛选
+  - 大巴拼车:`vehicleType=bus&travelMode=carpool`
+  - 商务车:`vehicleType=business&travelMode=carpool,charter`
+  - 包车:`vehicleType=bus,business&travelMode=charter`
 
 **活动查询**:
 - 通过路线间接查询关联的活动
 - 用户选择出发地、目的地、日期时,系统:
   1. 查询匹配的地点
-  2. 通过地点找到关联的路线
+  2. 通过地点找到关联的路线(支持组合查询条件)
   3. 根据路线找到关联的活动
   4. 展示去重后的活动列表
+- **组合查询支持**:活动查询基于路线组合条件进行筛选
 
 **API设计示例**:
 ```typescript
 // 查询地点(支持省市区筛选)
 GET /api/v1/locations?province=北京市&city=北京市&name=工人体育场
 
-// 查询路线(通过地点ID查询)
-GET /api/v1/routes?startLocationId=123&endLocationId=456&date=2025-10-15&type=departure
+// 查询路线(支持组合查询)
+GET /api/v1/routes?startLocationId=123&endLocationId=456&date=2025-10-15&type=departure&vehicleType=bus,business&travelMode=carpool,charter
 
 // 响应:路线列表,包含完整的地点信息和活动信息
 {
@@ -371,6 +453,8 @@ GET /api/v1/routes?startLocationId=123&endLocationId=456&date=2025-10-15&type=de
         city: "北京市",
         district: "朝阳区"
       },
+      vehicleType: "bus",
+      travelMode: "carpool",
       activity: {
         id: 1,
         name: "中超联赛北京国安主场赛事",
@@ -407,6 +491,10 @@ GET /api/v1/routes?startLocationId=123&endLocationId=456&date=2025-10-15&type=de
 **用户端API**:
 - `GET /api/v1/locations` - 地点查询(支持省份、城市、区县、名称等参数)
 - `GET /api/v1/routes` - 路线查询(支持出发地、目的地、日期、类型等参数,返回包含活动信息的路线列表)
+  - **组合查询参数**:
+    - `vehicleType`:车型筛选,支持多值(如`bus,business`)
+    - `travelMode`:出行方式筛选,支持多值(如`carpool,charter`)
+    - 支持三种组合查询模式:大巴拼车、商务车、包车
 - `GET /api/v1/activities` - 活动列表查询(基础信息查询)
 - `POST /api/v1/orders` - 创建订单
 - `GET /api/v1/orders` - 订单列表
@@ -422,12 +510,13 @@ GET /api/v1/routes?startLocationId=123&endLocationId=456&date=2025-10-15&type=de
 - **US005-01**: 活动管理页面、路线管理页面、班次管理页面(管理后台)
 - **US005-02**: 首页、活动选择、班次列表页面
 - **US005-03**: 样式迁移合规性修复(所有迁移页面)
-- **US005-04**: 乘客信息管理页面(管理后台)
-- **US005-05**: 添加乘客页面
-- **US005-06**: 订单管理页面(管理后台)
-- **US005-07**: 下单页面、支付成功页面
-- **US005-08**: 订单列表、订单详情页面
-- **US005-09**: 我的页面
+- **US005-04**: 车型和出行方式配置增强(管理后台路线配置页面、小程序首页、班次列表页面、订单详情页面)
+- **US005-05**: 乘客信息管理页面(管理后台)
+- **US005-06**: 添加乘客页面
+- **US005-07**: 订单管理页面(管理后台)
+- **US005-08**: 下单页面、支付成功页面
+- **US005-09**: 订单列表、订单详情页面
+- **US005-10**: 我的页面
 
 ## 依赖关系
 
@@ -498,5 +587,5 @@ GET /api/v1/routes?startLocationId=123&endLocationId=456&date=2025-10-15&type=de
 ---
 
 **文档状态**: 已更新
-**最后更新**: 2025-10-19
-**下次评审**: 2025-10-26
+**最后更新**: 2025-10-20
+**下次评审**: 2025-10-27