2
0
Эх сурвалжийг харах

docs(story012.004): 完善订单统计与数据统计API故事文档

- 为statistics-module新建文件添加具体的参考文件路径(services、schemas、index.ts、集成测试等)
- 根据故事草稿检查清单反馈修复:
  - 引用格式标准化(使用Markdown链接格式)
  - 补充环境变量说明(使用项目共享数据库连接)
  - 明确编码模式例外(TypeORM QueryBuilder和CTE使用)
- 更新变更日志记录文档版本1.5

🤖 Generated with [Claude Code](https://claude.com/claude-code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
yourname 1 долоо хоног өмнө
parent
commit
4f1c914570

+ 17 - 13
docs/stories/012.004.story.md

@@ -47,23 +47,23 @@ Draft
     - [ ] `tsconfig.json` - TypeScript配置(参考`allin-packages/order-module/tsconfig.json`的配置)
     - [ ] `vitest.config.ts` - 测试配置(参考`allin-packages/order-module/vitest.config.ts`的配置)
     - [ ] `src/` - 源代码目录,参考现有模块的目录结构组织
-  - [ ] 创建`src/routes/statistics.routes.ts`路由文件,实现6个统计接口:
-    - [ ] 残疾类型分布:`GET /statistics/disability-type-distribution`
-    - [ ] 性别分布:`GET /statistics/gender-distribution`
-    - [ ] 年龄分布:`GET /statistics/age-distribution`(基于`birth_date`字段计算年龄分组:18-25、26-35、36-45、46+)
-    - [ ] 户籍分布:`GET /statistics/household-distribution`
-    - [ ] 在职状态分布:`GET /statistics/job-status-distribution`
-    - [ ] 薪资分布:`GET /statistics/salary-distribution`
-  - [ ] 创建`src/services/statistics.service.ts`服务文件,实现统计业务逻辑:
+  - [ ] 创建`src/routes/statistics.routes.ts`路由文件,实现6个统计接口(参考`allin-packages/order-module/src/routes/order-custom.routes.ts`的路由定义模式)
+    - [ ] 残疾类型分布:`GET /statistics/disability-type-distribution`(企业维度,基于`disabled_person.disability_type`统计)
+    - [ ] 性别分布:`GET /statistics/gender-distribution`(企业维度,基于`disabled_person.gender`统计)
+    - [ ] 年龄分布:`GET /statistics/age-distribution`(企业维度,基于`birth_date`字段计算年龄分组:18-25、26-35、36-45、46+)
+    - [ ] 户籍分布:`GET /statistics/household-distribution`(企业维度,基于`disabled_person.household_province`和`household_city`统计)
+    - [ ] 在职状态分布:`GET /statistics/job-status-distribution`(企业维度,基于`disabled_person.job_status`统计)
+    - [ ] 薪资分布:`GET /statistics/salary-distribution`(企业维度,基于`order_person.salary_detail`统计薪资范围分布)
+  - [ ] 创建`src/services/statistics.service.ts`服务文件,实现统计业务逻辑(参考`allin-packages/order-module/src/services/order.service.ts`的服务类结构)
     - [ ] 依赖注入:注入`DisabledPersonRepository`、`OrderPersonRepository`等实体仓库
     - [ ] 实现6个统计查询方法,使用TypeORM QueryBuilder进行复杂统计查询
     - [ ] 实现企业数据隔离:所有统计查询必须通过`company_id`关联过滤(`employment_order`→`order_person`→`disabled_person`关联链)
-  - [ ] 创建`src/schemas/statistics.schema.ts`Schema文件,定义Zod验证:
+  - [ ] 创建`src/schemas/statistics.schema.ts`Schema文件,定义Zod验证(参考`allin-packages/order-module/src/schemas/order.schema.ts`的Schema定义模式)
     - [ ] 6个统计接口的请求参数和响应Schema
     - [ ] 年龄分组计算逻辑Schema
     - [ ] 企业ID验证Schema
-  - [ ] 创建`src/index.ts`包入口文件,导出路由、服务、schema
-  - [ ] 创建`tests/integration/statistics.integration.test.ts`集成测试文件:
+  - [ ] 创建`src/index.ts`包入口文件,导出路由、服务、schema(参考`allin-packages/order-module/src/index.ts`的导出结构):
+  - [ ] 创建`tests/integration/statistics.integration.test.ts`集成测试文件(参考`allin-packages/order-module/tests/integration/order.integration.test.ts`的集成测试结构)
     - [ ] 测试6个统计接口的正确性
     - [ ] 测试企业数据隔离(不同企业用户只能看到自己企业的统计)
     - [ ] 测试空数据、边缘情况处理
@@ -185,11 +185,13 @@ Draft
 - `allin-packages/disability-module/src/repositories/` - 数据访问层
 
 ### 技术约束
-- **API路径规范**:模块包内路由不应包含`/api/v1/yongren`前缀,前缀在server包统一注册 [来源:docs/prd/epic-012-api-supplement-for-employer-mini-program.md#故事012-08]
+- **API路径规范**:模块包内路由不应包含`/api/v1/yongren`前缀,前缀在server包统一注册 [史诗012文档](docs/prd/epic-012-api-supplement-for-employer-mini-program.md#故事012-08)
 - **企业数据隔离**:企业用户只能访问自己关联的企业数据,通过`company_id`验证
 - **性能要求**:统计查询需要优化,大数据量下响应时间应可接受
-- **数据库兼容性**:使用PostgreSQL 17,TypeORM 0.3.25 [来源:docs/architecture/tech-stack.md]
+- **数据库兼容性**:使用PostgreSQL 17,TypeORM 0.3.25 [技术栈文档](docs/architecture/tech-stack.md)
 - **数据完整性假设**:假设数据库已包含必要的业务数据且字段完整(如`birth_date`字段已添加且部分记录有值,`asset_type`枚举已扩展),统计查询应考虑空数据情况的优雅处理
+- **环境变量**:使用项目共享的数据库连接配置(通过TypeORM DataSource),无需为statistics-module添加额外环境变量
+- **编码模式例外**:统计查询优先使用TypeORM QueryBuilder,复杂统计(如年龄分组、薪资分布)可使用CTE(Common Table Expressions)优化性能
 
 ### 项目结构说明
 - Monorepo结构,`allin-packages/`用于业务模块
@@ -230,6 +232,8 @@ Draft
 | 2025-12-17 | 1.1 | 根据检查清单反馈更新:添加史诗上下文、修正引用格式、明确统计模块决策、添加企业数据隔离实现细节、完善性能优化策略和边缘情况测试 | Bob(Scrum Master) |
 | 2025-12-17 | 1.2 | 架构决策更新:采用方案A,明确statistics-module职责范围仅限跨实体通用统计,与故事012.003的企业统计功能职责划分清晰 | Bob(Scrum Master) |
 | 2025-12-17 | 1.3 | 任务重写:根据创建新模块决策,重写任务1-4,提供具体的文件路径、package.json依赖、集成测试等详细实施指导 | Bob(Scrum Master) |
+| 2025-12-17 | 1.4 | 为statistics-module新建文件添加具体的参考文件路径,确保开发者有清晰的对照参考(services、schemas、index.ts、集成测试等文件参考现有模块的对应文件) | Bob(Scrum Master) |
+| 2025-12-17 | 1.5 | 根据故事草稿检查清单反馈修复:1) 引用格式标准化(使用Markdown链接格式),2) 补充环境变量说明,3) 明确编码模式例外(TypeORM QueryBuilder和CTE使用) | Bob(Scrum Master) |
 
 ## 开发代理记录
 此部分由开发代理在实施过程中填充