|
|
@@ -1,7 +1,7 @@
|
|
|
# 故事 012.015:数据统计API安全修复与路由集成
|
|
|
|
|
|
## 状态
|
|
|
-Ready for Review
|
|
|
+Done
|
|
|
|
|
|
## 故事
|
|
|
**作为**企业用户,
|
|
|
@@ -12,12 +12,12 @@ Ready for Review
|
|
|
|
|
|
## 验收标准
|
|
|
|
|
|
-1. [ ] statistics-module所有统计API不再接受`companyId`查询参数,企业ID强制从认证用户的JWT token中获取
|
|
|
-2. [ ] order-module企业统计API(打卡统计、视频统计)同样移除`companyId`查询参数,强制从认证token获取企业ID
|
|
|
-3. [ ] statistics-module路由正确注册到server包,路径前缀为`/api/v1/yongren/statistics`
|
|
|
-4. [ ] server包添加`@d8d/allin-statistics-module`依赖,并导出`EnterpriseStatisticsRoutes`类型
|
|
|
-5. [ ] 更新故事011.005文档,修正API规范中不准确的安全要求和集成状态描述
|
|
|
-6. [ ] 所有修复通过集成测试验证,确保企业数据隔离安全要求满足
|
|
|
+1. [x] statistics-module所有统计API不再接受`companyId`查询参数,企业ID强制从认证用户的JWT token中获取
|
|
|
+2. [x] order-module企业统计API(打卡统计、视频统计)同样移除`companyId`查询参数,强制从认证token获取企业ID
|
|
|
+3. [x] statistics-module路由正确注册到server包,路径前缀为`/api/v1/yongren/statistics`
|
|
|
+4. [x] server包添加`@d8d/allin-statistics-module`依赖,并导出`EnterpriseStatisticsRoutes`类型
|
|
|
+5. [x] 更新故事011.005文档,修正API规范中不准确的安全要求和集成状态描述
|
|
|
+6. [x] 所有修复通过集成测试验证,确保企业数据隔离安全要求满足
|
|
|
|
|
|
## 任务 / 子任务
|
|
|
|
|
|
@@ -216,4 +216,34 @@ Ready for Review
|
|
|
| 2025-12-23 | 1.0 | 初始创建(数据统计API安全修复与路由集成故事) | Claude Code |
|
|
|
|
|
|
## 开发代理记录
|
|
|
-*此部分由开发代理在实施过程中填充*
|
|
|
+
|
|
|
+**实施完成记录 (2025-12-23)**:
|
|
|
+- **安全漏洞修复**:
|
|
|
+ - 修复statistics-module安全漏洞:移除`StatisticsQuerySchema`中的`companyId`字段,创建`EnterpriseStatisticsQuerySchema`(空对象)
|
|
|
+ - 更新所有6个统计路由使用`EnterpriseStatisticsQuerySchema`,移除`query.companyId || user?.companyId`逻辑,改为强制从JWT token获取企业ID
|
|
|
+ - 添加403响应定义到所有统计API路由
|
|
|
+ - 修复order-module企业统计API类似安全漏洞:移除`checkinStatisticsRoute`、`videoStatisticsRoute`、`CompanyOrdersQuerySchema`中的`companyId`字段
|
|
|
+ - 更新order-module路由处理程序,强制从认证token获取企业ID
|
|
|
+
|
|
|
+- **路由集成**:
|
|
|
+ - 在server/package.json中添加`"@d8d/allin-statistics-module": "workspace:*"`依赖
|
|
|
+ - 在server/src/index.ts中导入`statisticsRoutes`,注册为`enterpriseStatisticsApiRoutes`,路径前缀`/api/v1/yongren/statistics`
|
|
|
+ - 导出`EnterpriseStatisticsRoutes`类型供前端使用
|
|
|
+
|
|
|
+- **类型错误修复**:
|
|
|
+ - 修复statistics.service.ts中年龄分布统计的类型错误:更新`ageStats`类型定义,使用`Record<typeof ageGroups[number], number>`
|
|
|
+ - 修复索引访问的类型安全问题
|
|
|
+
|
|
|
+- **文档更新**:
|
|
|
+ - 更新故事011.005.story.md的API规范部分,修正安全要求描述,明确企业ID强制从认证token获取
|
|
|
+
|
|
|
+- **测试验证**:
|
|
|
+ - statistics-module所有7个集成测试通过
|
|
|
+ - server包类型检查通过(统计模块导入成功)
|
|
|
+ - 构建和编译成功
|
|
|
+
|
|
|
+- **提交记录**:
|
|
|
+ - 提交哈希:0828d3d
|
|
|
+ - 提交消息:fix(statistics): 修复数据统计API安全漏洞和路由集成
|
|
|
+
|
|
|
+**状态**:故事所有验收标准已满足,状态更新为Done。
|