Sfoglia il codice sorgente

📝 docs(prd): 修正数据模型,移除班次实体

- 更新版本信息至1.4,记录数据模型修正内容
- 合并班次信息到路线实体,移除班次管理相关内容
- 更新US005-01验收标准,删除班次管理相关项
- 调整实体定义,Route实体包含出发时间、车型等原班次信息

📝 docs(story): 创建Story 5.1管理基础数据实体

- 新增Story 5.1,专注于基础数据管理和实体结构
- 定义Route和Activity实体的创建任务和文件位置
- 规划数据库迁移、种子数据和管理后台API实现步骤
- 明确测试要求和技术栈规范

📝 docs(story): 更新Story 5.002任务和依赖

- 移除已迁移至Story 5.1的实体创建和数据库迁移任务
- 更新数据模型依赖,明确Route和Activity实体已在Story 5.1中创建
- 删除与实体相关的测试任务,避免重复工作
- 调整文档引用,确保与最新架构保持一致
yourname 4 mesi fa
parent
commit
b3ff559e8b

+ 5 - 10
docs/prd/epic-005-travel-service-core.md

@@ -3,6 +3,7 @@
 ## 版本信息
 | 版本 | 日期 | 描述 | 作者 |
 |------|------|------|------|
+| 1.4 | 2025-10-16 | 修正数据模型,移除班次实体,与架构文档保持一致 | Bob (Scrum Master) |
 | 1.3 | 2025-10-16 | 添加管理后台故事US005-01,确保故事闭环 | John (PM) |
 | 1.2 | 2025-10-15 | 添加我的页面到MVP迁移范围 | John (PM) |
 | 1.1 | 2025-10-15 | 重构页面迁移为用户故事任务 | John (PM) |
@@ -38,20 +39,18 @@ mini-demo包含14个页面,Epic 005将页面迁移作为用户故事的具体
 
 ### US005-01: 基础数据管理(管理后台)
 **作为** 系统管理员
-**我希望** 能够配置活动、路线、班次等基础数据
+**我希望** 能够配置活动、路线等基础数据
 **以便** 用户能够查询和使用出行服务
 
 **验收标准**:
 - [ ] 支持创建和管理活动类型(去程活动、返程活动)
-- [ ] 支持配置路线信息(出发地、目的地、上车点、下车点)
-- [ ] 支持管理班次(出发时间、车型、价格、座位数)
+- [ ] 支持配置路线信息(出发地、目的地、上车点、下车点、出发时间、车型、价格、座位数)
 - [ ] 支持设置活动关联的路线
-- [ ] 支持启用/禁用活动、路线和班次
+- [ ] 支持启用/禁用活动、路线
 
 **管理后台页面任务**:
 - [ ] 活动管理页面 - 活动类型配置和管理
 - [ ] 路线管理页面 - 路线信息配置和管理
-- [ ] 班次管理页面 - 班次时间、车型、价格管理
 
 ### US005-02: 路线查询和活动筛选
 **作为** 出行用户
@@ -145,7 +144,7 @@ mini-demo包含14个页面,Epic 005将页面迁移作为用户故事的具体
 基于架构文档设计,需要实现以下实体:
 - **Order实体**: 订单管理
 - **Passenger实体**: 乘客信息管理
-- **Route实体**: 路线管理
+- **Route实体**: 路线管理(包含出发时间、车型、价格、座位数等)
 - **Activity实体**: 活动管理
 
 ### API接口设计
@@ -160,10 +159,6 @@ mini-demo包含14个页面,Epic 005将页面迁移作为用户故事的具体
 - `POST /api/v1/admin/routes` - 创建路线
 - `PUT /api/v1/admin/routes/:id` - 更新路线
 - `DELETE /api/v1/admin/routes/:id` - 删除路线
-- `GET /api/v1/admin/schedules` - 班次管理列表
-- `POST /api/v1/admin/schedules` - 创建班次
-- `PUT /api/v1/admin/schedules/:id` - 更新班次
-- `DELETE /api/v1/admin/schedules/:id` - 删除班次
 
 **用户端API**:
 - `GET /api/v1/routes` - 路线查询

+ 146 - 0
docs/stories/005.001.story.md

@@ -0,0 +1,146 @@
+# Story 5.1: 基础数据管理和实体结构
+
+## Status
+Draft
+
+## Story
+**As a** 系统管理员
+**I want** 能够配置活动、路线等基础数据
+**so that** 用户能够查询和使用出行服务
+
+## Acceptance Criteria
+1. 支持创建和管理活动类型(去程活动、返程活动)
+2. 支持配置路线信息(出发地、目的地、上车点、下车点、出发时间、车型、价格、座位数)
+3. 支持设置活动关联的路线
+4. 支持启用/禁用活动、路线
+
+## Tasks / Subtasks
+- [ ] 创建基础数据实体 (AC: 1, 2, 3)
+  - [ ] 在 `src/server/modules/routes/` 创建 `route.entity.ts`
+  - [ ] 在 `src/server/modules/activities/` 创建 `activity.entity.ts`
+  - [ ] 在 `src/share/` 创建相关类型定义
+- [ ] 数据库迁移和种子数据 (AC: 1, 2, 3, 4)
+  - [ ] 创建数据库迁移文件,添加活动、路线相关表结构
+  - [ ] 创建种子数据,添加示例活动和路线数据
+  - [ ] 验证数据库迁移和种子数据正确性
+- [ ] 实现管理后台API (AC: 1, 2, 3, 4)
+  - [ ] 在 `src/server/api/admin/activities/index.ts` 使用 `createCrudRoutes` 创建活动管理API
+  - [ ] 在 `src/server/api/admin/routes/index.ts` 使用 `createCrudRoutes` 创建路线管理API
+  - [ ] 配置关联关系管理(活动关联路线)
+  - [ ] 实现启用/禁用功能
+- [ ] 实现管理后台页面 (AC: 1, 2, 3, 4)
+  - [ ] 创建活动管理页面 - 活动类型配置和管理
+  - [ ] 创建路线管理页面 - 路线信息配置和管理
+- [ ] 编写测试 (AC: 1, 2, 3, 4)
+  - [ ] 为实体编写单元测试 (`tests/unit/server/`)
+  - [ ] 为数据库迁移编写集成测试 (`tests/integration/server/`)
+  - [ ] 为管理后台API编写集成测试 (`tests/integration/server/`)
+
+## Dev Notes
+
+### 数据模型设计
+基于 [docs/prd/epic-005-travel-service-core.md#后端数据模型] 和 [docs/architecture/data-model-schema-changes.md],需要实现以下实体:
+
+**Route实体**:
+- 包含上车点、下车点、出发时间、车型、价格、座位数等字段
+- 关联活动实体
+- 支持状态管理(启用/禁用)
+
+**Activity实体**:
+- 包含活动名称、描述、类型(去程/返程)、开始日期、结束日期等字段
+- 关联路线实体
+- 支持状态管理(启用/禁用)
+
+### 数据库迁移要求
+- 创建 `routes` 表,包含必要的字段和索引
+- 创建 `activities` 表,包含必要的字段和索引
+- 创建关联关系表(如需要)
+- 添加适当的约束和索引优化查询性能
+
+### 管理后台API设计
+基于 [docs/prd/epic-005-travel-service-core.md#管理后台API],需要实现以下API端点:
+
+**活动管理API**:
+- `GET /api/v1/admin/activities` - 活动管理列表
+- `POST /api/v1/admin/activities` - 创建活动
+- `PUT /api/v1/admin/activities/:id` - 更新活动
+- `DELETE /api/v1/admin/activities/:id` - 删除活动
+
+**路线管理API**:
+- `GET /api/v1/admin/routes` - 路线管理列表
+- `POST /api/v1/admin/routes` - 创建路线
+- `PUT /api/v1/admin/routes/:id` - 更新路线
+- `DELETE /api/v1/admin/routes/:id` - 删除路线
+
+### 管理后台页面设计
+基于 [docs/prd/epic-005-travel-service-core.md#管理后台页面任务],需要实现以下页面:
+
+**活动管理页面**:
+- 活动类型配置和管理
+- 支持创建、编辑、删除活动
+- 支持启用/禁用活动
+- 支持设置活动关联的路线
+
+**路线管理页面**:
+- 路线信息配置和管理
+- 支持创建、编辑、删除路线
+- 支持启用/禁用路线
+- 配置出发地、目的地、上车点、下车点、出发时间、车型、价格、座位数
+
+### 种子数据要求
+- 创建示例活动数据:至少包含去程活动和返程活动各3个
+- 创建示例路线数据:关联到相应的活动
+- 确保数据符合业务逻辑约束
+
+### 文件位置
+- **后端实体**:
+  - `src/server/modules/routes/route.entity.ts`
+  - `src/server/modules/activities/activity.entity.ts`
+- **共享类型**:
+  - `src/share/route.types.ts`
+  - `src/share/activity.types.ts`
+- **管理后台API**:
+  - `src/server/api/admin/activities/index.ts`
+  - `src/server/api/admin/routes/index.ts`
+- **管理后台页面**:
+  - `mini/src/pages/admin/activities/ActivityManagementPage.tsx`
+  - `mini/src/pages/admin/routes/RouteManagementPage.tsx`
+- **数据库迁移**: `src/server/migrations/` 目录
+- **种子数据**: `src/server/seeds/` 目录
+
+### 技术栈要求
+- **后端框架**: Hono + TypeORM
+- **数据库**: PostgreSQL 17
+- **迁移工具**: TypeORM Migration
+
+### 开发规范要求
+- **实体定义**: 遵循TypeORM实体规范
+- **类型定义**: 使用TypeScript严格类型
+- **数据库约束**: 添加适当的数据库级约束
+- **索引优化**: 为常用查询字段添加索引
+
+### 测试要求
+- **实体测试**: 验证实体字段定义和关联关系
+- **数据库测试**: 验证迁移和种子数据正确性
+- **约束测试**: 验证数据库约束有效性
+
+## Change Log
+| Date | Version | Description | Author |
+|------|---------|-------------|--------|
+| 2025-10-16 | 1.2 | 修正故事,移除班次实体,与epic005和数据模型保持一致 | Bob (Scrum Master) |
+| 2025-10-16 | 1.1 | 修正故事,添加管理后台功能,完全满足epic005 US005-01需求 | Bob (Scrum Master) |
+| 2025-10-16 | 1.0 | 初始故事创建,从005.002迁移基础数据实体任务 | Bob (Scrum Master) |
+
+## Dev Agent Record
+*此部分由开发代理在实施过程中填写*
+
+### Agent Model Used
+
+### Debug Log References
+
+### Completion Notes List
+
+### File List
+
+## QA Results
+*此部分由QA代理在审查完成后填写*

+ 4 - 13
docs/stories/005.002.story.md

@@ -32,14 +32,6 @@ Draft
   - [ ] **注意:MVP阶段不实现司机当前位置显示**
 
 ## Tasks / Subtasks
-- [ ] 创建路线实体和活动实体 (AC: 1, 2, 3)
-  - [ ] 在 `src/server/modules/routes/` 创建 `route.entity.ts`
-  - [ ] 在 `src/server/modules/activities/` 创建 `activity.entity.ts`
-  - [ ] 在 `src/share/` 创建相关类型定义
-- [ ] 数据库迁移和种子数据 (AC: 1, 2, 3, 4)
-  - [ ] 创建数据库迁移文件,添加活动、路线相关表结构
-  - [ ] 创建种子数据,添加示例活动和路线数据
-  - [ ] 验证数据库迁移和种子数据正确性
 - [ ] 实现路线查询API使用通用CRUD (AC: 1, 3, 4)
   - [ ] 在 `src/server/api/routes/index.ts` 使用 `createCrudRoutes` 创建通用CRUD路由
   - [ ] 配置搜索字段:startPoint, endPoint, vehicleType
@@ -59,7 +51,6 @@ Draft
   - [ ] 在 `mini/src/components/` 创建 `ActivityFilter.tsx` 组件
   - [ ] 支持活动类型筛选
 - [ ] 编写单元测试、集成测试和E2E测试 (AC: 1, 2, 3, 4)
-  - [ ] 为所有新实体编写单元测试 (`tests/unit/server/`)
   - [ ] 为通用CRUD路由编写集成测试 (`tests/integration/server/`)
   - [ ] 为前端组件编写单元测试 (`tests/unit/client/`)
   - [ ] 为查询功能编写集成测试 (`tests/integration/client/`)
@@ -76,9 +67,9 @@ Draft
 - **没有会员等级** - 不实现会员体系
 - **首页焦点图使用固定静态图** - 轮播图组件保留,但数据使用固定的一张静态图片(不从API获取轮播图数组)
 
-### 数据模型
-- **Route实体**: 包含上车点、下车点、出发时间、车型、价格等字段 [Source: architecture/data-model-schema-changes.md#路线模型]
-- **Activity实体**: 包含活动名称、描述、类型(去程/返程)、开始日期、结束日期等字段 [Source: architecture/data-model-schema-changes.md#活动模型]
+### 数据模型依赖
+- **Route实体**: 已在Story 5.1中创建,包含上车点、下车点、出发时间、车型、价格等字段
+- **Activity实体**: 已在Story 5.1中创建,包含活动名称、描述、类型(去程/返程)、开始日期、结束日期等字段
 - **关系**: 一个活动关联多条路线 [Source: architecture/data-model-schema-changes.md#数据关系]
 
 ### API规范
@@ -89,7 +80,6 @@ Draft
 - **通用CRUD服务**: 使用 `ConcreteCrudService` 作为基础服务类 [Source: src/server/utils/concrete-crud.service.ts]
 
 ### 文件位置
-- **后端实体**: `src/server/modules/routes/route.entity.ts`, `src/server/modules/activities/activity.entity.ts` [Source: architecture/source-tree.md#实际项目结构]
 - **API路由**: `src/server/api/routes/index.ts`, `src/server/api/activities/index.ts` [Source: architecture/source-tree.md#实际项目结构]
 - **前端页面**:
   - `mini/src/pages/home/HomePage.tsx` (首页)
@@ -182,6 +172,7 @@ Draft
 ## Change Log
 | Date | Version | Description | Author |
 |------|---------|-------------|--------|
+| 2025-10-16 | 1.8 | 移除基础数据实体任务,迁移到Story 5.1 | Bob (Scrum Master) |
 | 2025-10-15 | 1.7 | 修正Taro测试位置,统一使用mini/tests/目录 | Winston (Architect) |
 | 2025-10-15 | 1.6 | 修正前端页面路径从src/client到mini/src目录 | Bob (Scrum Master) |
 | 2025-10-15 | 1.5 | 修复测试位置与测试策略文档不一致问题,添加安全要求和数据库迁移任务 | Bob (Scrum Master) |