Browse Source

📝 docs(story): add route query and activity filtering story

- 创建"路线查询和活动筛选"用户故事文档
- 定义用户需求: 按出发地、目的地、日期查询路线,筛选去程/返程活动
- 列出验收标准: 查询功能、筛选功能、信息展示、排序功能
- 规划开发任务: 实体创建、API实现、前端页面开发、测试编写等
- 提供技术规范: 数据模型、API设计、文件位置、技术栈要求等
yourname 4 tháng trước cách đây
mục cha
commit
54080ea24b
1 tập tin đã thay đổi với 108 bổ sung0 xóa
  1. 108 0
      docs/stories/005.001.story.md

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

@@ -0,0 +1,108 @@
+# 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/` 创建相关类型定义
+- [ ] 实现路线查询API使用通用CRUD (AC: 1, 3, 4)
+  - [ ] 在 `src/server/api/routes/index.ts` 使用 `createCrudRoutes` 创建通用CRUD路由
+  - [ ] 配置搜索字段:startPoint, endPoint, vehicleType
+  - [ ] 配置排序字段:price, departureTime
+  - [ ] 使用filters参数支持日期范围查询
+- [ ] 实现活动查询API使用通用CRUD (AC: 2)
+  - [ ] 在 `src/server/api/activities/index.ts` 使用 `createCrudRoutes` 创建通用CRUD路由
+  - [ ] 配置搜索字段:name, description
+  - [ ] 配置筛选字段:type (去程活动/返程活动)
+- [ ] 实现前端路线查询页面 (AC: 1, 3, 4)
+  - [ ] 在 `src/client/home/pages/` 创建 `RouteList.tsx` 页面
+  - [ ] 集成查询表单和结果展示
+  - [ ] 使用React Query调用通用CRUD API
+- [ ] 实现前端活动筛选组件 (AC: 2)
+  - [ ] 在 `src/client/home/components/` 创建 `ActivityFilter.tsx` 组件
+  - [ ] 支持活动类型筛选
+- [ ] 编写单元测试和集成测试 (AC: 1, 2, 3, 4)
+  - [ ] 为所有新实体编写单元测试
+  - [ ] 为通用CRUD路由编写集成测试
+  - [ ] 为前端组件编写单元测试
+
+## Dev Notes
+
+### 数据模型
+- **Route实体**: 包含上车点、下车点、出发时间、车型、价格等字段 [Source: architecture/data-model-schema-changes.md#路线模型]
+- **Activity实体**: 包含活动名称、描述、类型(去程/返程)、开始日期、结束日期等字段 [Source: architecture/data-model-schema-changes.md#活动模型]
+- **关系**: 一个活动关联多条路线 [Source: architecture/data-model-schema-changes.md#数据关系]
+
+### API规范
+- **通用CRUD路由**: 使用 `createCrudRoutes` 创建标准CRUD API [Source: src/server/utils/generic-crud.routes.ts]
+- **路线查询端点**: `GET /api/v1/routes` 支持查询参数:page, pageSize, keyword, sortBy, sortOrder, filters [Source: src/server/utils/generic-crud.routes.ts#L23]
+- **活动查询端点**: `GET /api/v1/activities` 支持查询参数:page, pageSize, keyword, sortBy, sortOrder, filters [Source: src/server/utils/generic-crud.routes.ts#L23]
+- **分页响应**: 使用标准分页格式 [Source: architecture/data-model-schema-changes.md#分页响应接口]
+- **通用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#实际项目结构]
+- **前端页面**: `src/client/home/pages/RouteList.tsx` [Source: architecture/source-tree.md#实际项目结构]
+- **前端组件**: `src/client/home/components/ActivityFilter.tsx` [Source: architecture/source-tree.md#实际项目结构]
+- **共享类型**: `src/share/route.types.ts`, `src/share/activity.types.ts` [Source: architecture/source-tree.md#实际项目结构]
+
+### 技术栈要求
+- **后端框架**: Hono + TypeORM [Source: architecture/tech-stack.md#现有技术栈维护]
+- **前端框架**: Taro + React [Source: architecture/tech-stack.md#现有技术栈维护]
+- **状态管理**: React Query [Source: architecture/tech-stack.md#现有技术栈维护]
+- **样式**: Tailwind CSS [Source: architecture/tech-stack.md#现有技术栈维护]
+
+### 通用CRUD使用模式
+- **路由创建**: 使用 `createCrudRoutes` 函数创建标准CRUD路由 [Source: src/server/api/users/index.ts#L9]
+- **搜索配置**: 配置 `searchFields` 支持关键词搜索 [Source: src/server/api/users/index.ts#L15]
+- **关联关系**: 配置 `relations` 字段加载关联数据 [Source: src/server/api/users/index.ts#L16]
+- **认证中间件**: 使用 `authMiddleware` 保护路由 [Source: src/server/api/users/index.ts#L17]
+- **前端调用**: 使用React Query调用通用CRUD API,支持分页、搜索、排序
+
+### Testing
+**测试要求**:
+- **单元测试位置**: `__tests__/` 文件夹与源码并列 [Source: architecture/testing-strategy.md#单元测试]
+- **集成测试位置**: `__integration_tests__/` 目录 [Source: architecture/testing-strategy.md#集成测试]
+- **测试框架**: Vitest + Testing Library + hono/testing [Source: architecture/testing-strategy.md#测试框架]
+- **覆盖率目标**: 核心业务逻辑 > 80% [Source: architecture/testing-strategy.md#覆盖率目标]
+
+**具体测试要求**:
+- 路线查询API的单元测试和集成测试
+- 活动查询API的单元测试和集成测试
+- 前端组件的单元测试
+- 查询功能的集成测试
+
+## Change Log
+| Date | Version | Description | Author |
+|------|---------|-------------|--------|
+| 2025-10-15 | 1.1 | 更新为使用通用CRUD服务 | Bob (Scrum Master) |
+| 2025-10-15 | 1.0 | 初始故事创建 | Bob (Scrum Master) |
+
+## Dev Agent Record
+*此部分由开发代理在实施过程中填写*
+
+### Agent Model Used
+
+### Debug Log References
+
+### Completion Notes List
+
+### File List
+
+## QA Results
+*此部分由QA代理在审查完成后填写*