005.001.story.md 5.5 KB

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代理在审查完成后填写