Approved
As a 系统管理员 I want 能够查看所有用户的乘客信息 so that 了解用户乘车人情况和进行数据统计
src/server/modules/passengers/passenger.entity.ts 实体文件src/share/passenger.types.ts 类型定义文件src/server/modules/passengers/passenger.schema.ts Zod Schema文件src/server/modules/passengers/passenger.service.ts 服务文件src/server/api/admin/passengers/index.ts API路由文件src/client/admin/pages/Passengers.tsx 页面组件scripts/seed.ts 中添加示例乘客数据基于 [docs/architecture/data-model-schema-changes.md#乘客模型],需要实现以下乘客实体结构:
乘客实体关键属性 [Source: architecture/data-model-schema-changes.md#乘客模型]:
id: number - 主键标识符userId: number - 用户IDname: string - 乘客姓名idType: IdType - 证件类型(身份证、港澳通行证、台湾通行证、护照等)idNumber: string - 证件号码phone: string - 手机号isDefault: boolean - 是否默认乘客证件类型枚举定义 [Source: architecture/data-model-schema-changes.md#枚举定义]:
export enum IdType {
ID_CARD = '身份证',
HONG_KONG_MACAO_PASS = '港澳通行证',
TAIWAN_PASS = '台湾通行证',
PASSPORT = '护照',
OTHER = '其他证件'
}
基于 [docs/architecture/generic-crud-standards.md#使用指南],乘客管理必须遵循通用CRUD规范:
实体设计 [Source: architecture/generic-crud-standards.md#实体设计]:
ObjectLiteralcreatedAt 和 updatedAt 时间戳Schema设计 [Source: architecture/generic-crud-standards.md#schema设计]:
.optional() 和 .nullable() 明确字段可选性CRUD路由注册 [Source: architecture/generic-crud-standards.md#注册crud路由]:
export const passengerRoutes = createCrudRoutes({
entity: Passenger,
createSchema: PassengerCreateSchema,
updateSchema: PassengerUpdateSchema,
getSchema: PassengerGetSchema,
listSchema: PassengerListSchema,
searchFields: ['name', 'phone', 'idNumber'],
relations: ['user'],
middleware: [authMiddleware],
userTracking: {
createdByField: 'createdBy',
updatedByField: 'updatedBy'
}
});
基于 [docs/architecture/admin-dashboard-standards.md#页面开发规范],乘客信息页面必须遵循管理后台开发标准:
技术栈要求 [Source: architecture/admin-dashboard-standards.md#技术栈要求]:
页面结构标准 [Source: architecture/admin-dashboard-standards.md#页面结构标准]:
RPC客户端使用规范 [Source: architecture/admin-dashboard-standards.md#rpc-client-使用规范]:
// 使用RPC方式提取类型
type PassengerResponse = InferResponseType<typeof passengerClient.$get, 200>['data'][0];
type PassengerListResponse = InferResponseType<typeof passengerClient.$get, 200>;
// API调用规范
const { data, isLoading, refetch } = useQuery({
queryKey: ['passengers', searchParams],
queryFn: async () => {
const res = await passengerClient.$get({
query: {
page: searchParams.page,
pageSize: searchParams.limit,
keyword: searchParams.keyword,
filters: hasActiveFilters ? JSON.stringify(filters) : undefined
}
});
if (res.status !== 200) throw new Error('获取数据失败');
return await res.json();
}
});
基于 [docs/architecture/source-tree.md#实际项目结构],所有乘客相关文件必须放置在指定位置:
后端文件位置 [Source: architecture/source-tree.md#实际项目结构]:
src/server/modules/passengers/passenger.entity.tssrc/server/modules/passengers/passenger.service.tssrc/server/modules/passengers/passenger.schema.tssrc/server/api/passengers/index.ts前端文件位置 [Source: architecture/source-tree.md#实际项目结构]:
src/client/admin/pages/Passengers.tsx共享类型位置 [Source: architecture/source-tree.md#实际项目结构]:
src/share/passenger.types.ts基于 [docs/architecture/tech-stack.md#现有技术栈维护],必须使用项目标准技术栈:
后端框架 [Source: architecture/tech-stack.md#现有技术栈维护]:
前端框架 [Source: architecture/tech-stack.md#现有技术栈维护]:
基于 [docs/architecture/coding-standards.md#通用crud开发规范],必须遵循编码标准:
CRUD开发 [Source: architecture/coding-standards.md#通用crud开发规范]:
ObjectLiteral,包含时间戳字段createCrudRoutes 自动生成API路由管理后台开发 [Source: architecture/coding-standards.md#管理后台开发规范]:
基于 [docs/prd/epic-005-travel-service-core.md#us005-05-乘客信息查看管理后台],需要实现数据导出功能:
导出格式要求:
测试要求 [Source: architecture/testing-strategy.md#主项目测试体系]:
tests/unit/, tests/integration/, tests/e2e/ 目录具体测试要求 [Source: architecture/testing-strategy.md#测试金字塔策略]:
| Date | Version | Description | Author |
|---|---|---|---|
| 2025-10-21 | 1.1 | 故事通过验证,状态更新为Approved | Sarah (Product Owner) |
| 2025-10-21 | 1.0 | 初始故事创建,基于史诗005 US005-05需求 | Bob (Scrum Master) |
此部分由开发代理在实施过程中填写
后端文件:
src/server/modules/passengers/passenger.entity.ts - 乘客实体定义src/server/modules/passengers/passenger.schema.ts - Zod Schema定义src/server/modules/passengers/passenger.service.ts - 乘客CRUD服务src/server/api/admin/passengers/index.ts - 管理后台乘客API路由前端文件:
src/client/admin/pages/Passengers.tsx - 管理后台乘客信息页面(已集成xlsx导出功能)src/client/admin/routes.tsx - 路由配置(已添加乘客页面)src/client/admin/menu.tsx - 侧边栏菜单(已添加乘客管理入口)src/client/api.ts - API客户端(已添加管理后台乘客客户端)依赖更新:
package.json - 已添加xlsx库依赖(版本0.18.5)共享文件:
src/share/passenger.types.ts - 乘客相关类型定义配置更新:
src/server/api.ts - 主API配置(已注册管理后台乘客路由)src/server/data-source.ts - 数据源配置(已注册乘客实体)种子数据文件:
scripts/seed.ts - 种子数据脚本(已添加乘客数据)测试文件:
tests/integration/server/admin/passengers.integration.test.ts - 乘客管理API集成测试(15个测试用例)此部分由QA代理在审查完成后填写