Implemented
作为后端架构师,
我希望订单模块的路由实现清晰的职责分离,提供独立的orderRoutes(通用CRUD路由)和enterpriseOrderRoutes(企业专用路由),
以便前端UI包可以安全地使用enterpriseOrderRoutes类型创建企业专用API客户端,避免混合通用和企业专用路由导致的类型混淆和权限泄露风险。
orderRoutes实例只包含通用CRUD路由,使用authMiddleware中间件进行通用认证enterpriseOrderRoutes实例包含所有企业专用路由,使用enterpriseAuthMiddleware中间件进行企业用户认证orderRoutes实例中移除企业专用路由,确保通用订单API(/api/v1/order)不包含企业专用功能/api/v1/yongren/order前缀不变将故事分解为实施所需的具体任务和子任务。 在相关处引用适用的验收标准编号。
[x] 任务1:分析当前路由混合问题(AC: 1, 2, 3)
allin-packages/order-module/src/routes/order-custom.routes.ts文件authMiddleware的通用CRUD路由(当前12个路由)enterpriseAuthMiddleware的企业专用路由(当前6个路由)orderRoutes类型时包含企业专用路由,存在权限泄露风险[x] 任务2:重构路由索引文件(AC: 1, 2, 3, 7)
allin-packages/order-module/src/routes/index.ts文件enterpriseOrderRoutes实例,只包含企业专用路由orderRoutes实例只包含通用CRUD路由orderRoutes(通用)和enterpriseOrderRoutes(企业专用)export { orderRoutes, enterpriseOrderRoutes }[x] 任务3:更新路由注册结构(AC: 2, 4)
order-custom.routes.ts中,将企业专用路由移动到独立的组中/api/v1/yongren/order前缀(在server包中注册时添加)/api/v1/order前缀[x] 任务4:更新server包路由注册(AC: 4, 5, 6)
packages/server/src/routes/enterprise.ts中企业专用订单API的注册/api/v1/yongren/orderorder.ts中的注册是否保持不变enterpriseOrderRoutes并注册到企业专用API组[x] 任务5:更新前端类型引用(AC: 7)
import type { orderRoutes } from '@d8d/order-module'改为import type { enterpriseOrderRoutes } from '@d8d/order-module'[ ] 更新企业专用订单API客户端创建示例:
export const enterpriseOrderClient = rpcClient<typeof enterpriseOrderRoutes>('/api/v1/yongren/order');
[ ] 验证类型安全检查:企业专用客户端只能访问企业专用路由
[x] 任务6:更新集成测试(AC: 8)
/api/v1/order,企业专用API使用/api/v1/yongren/order[x] 任务7:验证向后兼容性(AC: 5, 6)
仅填充从docs文件夹中的实际工件提取的相关信息,与此故事相关:
故事012.005(视频管理API扩展)已完成的变更:
order-custom.routes.ts中实现[来源:docs/stories/012.005.story.md]checkin-statistics、video-statistics、company-orders、company-videos、batch-download、videos/{id}/status[来源:docs/stories/012.005.story.md]enterpriseAuthMiddleware中间件保护[来源:docs/stories/012.005.story.md]故事012.004(订单统计与数据统计API)已完成的变更:
故事011.004(订单管理功能实现)的依赖:
路由混合问题(基于代码审查发现):
allin-packages/order-module/src/routes/order-custom.routes.tsorderRoutes实例混合了12个通用CRUD路由(使用authMiddleware)和6个企业专用路由(使用enterpriseAuthMiddleware)orderRoutes类型创建企业专用客户端时,会包含通用CRUD路由,存在权限泄露风险packages/core-module/auth-module/src/routes/index.ts已正确分离authRoutes和enterpriseAuthRoutes现有路由统计:
authMiddleware
GET / - 订单列表查询GET /{id} - 订单详情查询POST / - 订单创建PUT /{id} - 订单更新DELETE /{id} - 订单删除POST /activate/{orderId} - 激活订单POST /close/{orderId} - 关闭订单POST /{orderId}/persons/batch - 批量添加人员POST /assets/create - 创建订单人员资产GET /assets/query - 查询订单人员资产DELETE /assets/delete/{id} - 删除订单人员资产PUT /persons/work-status - 更新订单人员工作状态enterpriseAuthMiddleware
GET /checkin-statistics - 打卡数据统计GET /video-statistics - 视频分类统计GET /company-orders - 企业维度订单查询GET /company-videos - 企业维度视频查询POST /batch-download - 批量下载视频PUT /videos/{id}/status - 更新视频审核状态基于现有实体定义和架构文档:
订单实体(allin-packages/order-module/src/entities/employment-order.entity.ts):
employment_order(@Entity('employment_order'))id(映射到order_id列)orderName、orderStatus、companyId、jobId、expectedPersonCount、actualPersonCount、startDate、expectedEndDate等[来源:docs/stories/012.005.story.md#数据模型]companyId关联EmployerCompany,jobId关联Job订单人员实体(allin-packages/order-module/src/entities/order-person.entity.ts):
order_person(@Entity('order_person'))id(映射到op_id列)orderId、personId、joinDate、salaryDetail、workStatus等[来源:docs/stories/012.013.story.md#数据模型]personId关联DisabledPerson,orderId关联EmploymentOrder订单人员资产实体(allin-packages/order-module/src/entities/order-person-asset.entity.ts):
order_person_asset(@Entity('order_person_asset'))id(映射到opa_id列)orderPersonId、assetType、fileId、status等[来源:docs/stories/012.005.story.md#数据模型]orderPersonId关联OrderPerson,fileId关联FileAPI路径约定(来自史诗012):
api/v1/yongren 前缀[来源:docs/prd/epic-012-api-supplement-for-employer-mini-program.md#API路径约定]/api/v1/order(管理后台使用)/api/v1/yongren/order(用人方小程序使用)路由设计规范(来自架构文档和auth-module参考):
authMiddleware进行基础认证[来源:docs/architecture/backend-module-package-standards.md#中间件模式]enterpriseAuthMiddleware进行企业用户认证[来源:docs/stories/012.002.story.md#开发笔记]验证系统规范(来自架构文档):
companyId或从认证用户自动获取[来源:docs/stories/012.005.story.md#API规范]基于项目结构指南:
allin-packages/order-module/src/routes/order-custom.routes.ts[来源:代码审查发现]allin-packages/order-module/src/routes/index.ts[来源:项目结构验证]packages/server/src/routes/enterprise.ts(企业专用)、packages/server/src/routes/order.ts(通用)[来源:项目结构验证]allin-packages/order-module/tests/integration/order-custom.integration.test.ts[来源:项目结构验证]测试策略(来自架构文档):
tests/integration/文件夹与源码并列[来源:docs/architecture/testing-strategy.md#集成测试]路由测试重点:
/api/v1/yongren/order前缀enterpriseOrderRoutes类型allin-packages/{module-name}-module/模式[来源:docs/architecture/backend-module-package-standards.md#包结构规范]| 日期 | 版本 | 描述 | 作者 |
|---|---|---|---|
| 2025-12-21 | 1.0 | 初始故事创建,解决订单模块路由混合问题 | Claude Code |
| 2025-12-21 | 1.1 | 实施路由分离:重构order-custom.routes.ts,分离orderRoutes和enterpriseOrderRoutes,更新server包路由注册,修复集成测试 | Claude Code |
此部分由开发代理在实施期间填写
实施期间填写
实施期间填写
实施期间填写
实施期间填写