| content |
{"Commits":[{"Sha1":"ff3149170 {"Commits":[{"Sha1":"ff3149170c6b0deb6d8151cb962592199b95bdd8","Message":"fix: 全面分析修复 — 44项安全+性能+架构+类型安全治理\n\n## 安全修复 (12项)\n- CRITICAL: 修复 knowledge-vector SQL 注入 + event-subscription SQL 注入\n- HIGH: 5处 $queryRawUnsafe → Prisma.sql, PDF XSS 防护, 租户严格模式\n- MEDIUM: 健康端点认证, CORS生产校验, PII脱敏, 权限缓存清除API\n\n## 性能优化 (5项)\n- N+1: getBulkSalesProfiles 800→9次, syncLinkStatistics 3N+1→3次\n- syncConversionStats 批量事务, leads 7索引补充, 慢查询监控恢复\n\n## 架构合规 (14项)\n- 12个controller prisma调用下沉service + requireTenantContext全局启用\n\n## 类型安全 — 77处as any清零\n- process-adapter 39→0, case-converter 15→0, validation 11→0, main 6→0\n\n## 前端v-permission核心链路6模块73指令 + 代码卫生清理\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-24T01:13:11+08:00"},{"Sha1":"9a8bbf8de635bd87de19154ac349be5f21784d52","Message":"fix: P2+P3 安全加固+质量提升 — 39 MEDIUM + 21 LOW 缺陷修复\n\n## 后端安全加固(10项)\n- 登录错误消息脱敏(不泄露剩余尝试次数)\n- 用户枚举 Timing Attack 防护(dummy bcrypt 消除时间差)\n- RMA 退货期限校验(30天,通过 SN 间接关联订单)\n- Order schema 金额上限 999999999.99\n- 门店批量状态更新加 $transaction\n- 序列号批量激活加 $transaction\n- Redis 缓存 delete-before-write 一致性改进\n- Opportunity bizCode 自动生成(空值防护)\n- SLA 暂停分钟数 Math.round → Math.floor(防误差累积)\n- system-monitor 6 处 $queryRawUnsafe → $queryRaw(杜绝 SQL 注入)\n\n## 前端安全+质量(6 P2 + 4 P3)\n- tickets/Detail.vue v-html 增加 DOMPurify 净化层\n- 幂等 Key 重复代码提取到 utils/idempotency.ts\n- useFormDraft sessionStorage try-catch 防溢出\n- useListPage handleLoadMore 基于 id 去重\n- response-normalizer 兜底搜索限定白名单字段\n- social-analytics window.open URL 协议校验\n- error.middleware TraceId 改用 crypto.randomUUID\n- Lead/Quote format 去 any → Record\u003cstring, unknown\u003e\n- Lead AI 评分并发限制(每批 5 个)\n- 4 个测试文件 console.log 清理\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-23T21:01:40+08:00"},{"Sha1":"076415ad09aa56a849acfbb65520f57320ec54d7","Message":"fix: P1 事务原子性+业务逻辑+前端安全修复 — 34 HIGH 缺陷解决\n\n## 事务缺失+事件原子性(8项 + 25处 void catch 消除)\n- 序列号激活包入 $transaction(sn.service.ts)\n- 出库单 deliver 包入 $transaction(shipment.service.ts)\n- 合同 create 事件移入事务内(contract.service.ts)\n- Lead marketing 事件去冗余事务(lead.service.ts)\n- BaseService batchUpdate/batchDelete 加事务保护\n- 13 个文件 25 处 void publishEvent().catch 替换为 logger.error\n- Order 状态转换加 status 条件更新(乐观锁)\n- SLA resume 改用 addBusinessMinutes(跳过非工作时段)\n\n## 业务逻辑+校验缺失(10项)\n- 工单 assign 校验用户有效性+租户归属\n- Order assign 校验用户租户归属\n- Opportunity create 校验 leadId/contactId 租户归属\n- Lead release 添加 canTransitionLead 校验(去除 as any)\n- 结算冲销 metadata 合并而非覆盖\n- Order update 拒绝 closed/cancelled/completed 状态编辑\n- Quote convertToContract 重构为单一事务 + 条件更新\n- getCurrentUser 添加 tenant_id 过滤\n- 工单 escalate 联动更新 priority + SLA 重匹配\n- 工单 start firstResponseAt 防覆盖\n\n## 前端安全+状态管理(6项)\n- API 响应拦截器增加 HTML/非对象响应防御\n- 多 Tab 登出同步(storage 事件监听)\n- 权限不足时 ElMessage.warning 提示\n- 路由 chunk 加载失败自动刷新(防循环)\n- useListPage handleDelete loading 守卫\n- localStorage Token 仅开发环境写入\n\n测试:87/87 通过(orders+contracts+leads+sla+base.service)\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-23T20:52:01+08:00"},{"Sha1":"6830b2416fb6af52cf44ff07ef793f66a1d59334","Message":"fix: P0 安全+并发+隔离缺陷修复 — 19 CRITICAL 全部解决\n\n## 安全修复(S1-S3 + 额外 3 项)\n- 8 个运维端点加 authenticate + requireSuperAdmin 认证保护\n- 禁用未实现的注册/密码重置端点(返回 400)\n- Refresh Token Cookie maxAge 与 Redis TTL 对齐(30天→7天)\n- Redis 降级方向修正:故障时拒绝登录(非放行)\n- 无角色用户登录拒绝(非赋默认权限)\n- Prisma 错误信息生产环境脱敏(不返回 meta/SQL)\n\n## 多租户隔离修复(T1-T2 + E1)\n- Opportunity 5 处 update({ where: { id } }) → updateMany + tenant_id\n- Order 8 处同样模式修复(含 shipments/payments 关联表)\n- Opportunity 8 处 publishLifecycleEvent 添加 tx 参数\n\n## 并发安全修复(C1-C6 + F1-F2)\n- 库存扣减加 FOR UPDATE 行锁(防超卖)\n- 发货取消时回滚库存 + 记录流水\n- 客户余额 6 个操作方法加 FOR UPDATE(防资金丢失)\n- 结算金额改用 Prisma Decimal 精确运算\n- 佣金费率总和 ≤100% 校验\n- 团购核销包裹 $transaction + 条件 updateMany\n- BizCode 批量生成改用 upsert 原子操作\n\n## 状态机竞态修复(L1 + C6)\n- SLA 暂停/恢复/停止全部移入工单事务内\n- 工单 reopen 改用 assertTransition 标准流程\n- 联盟协议 5 个状态转换加 $transaction + 条件更新\n- 工单 cancel 重构为标准事务模式\n\n## 前端安全修复(FE1-FE4)\n- useListPage 请求序号机制(防列表竞态)\n- 12 个 Form.vue 补防重复提交守卫\n- 路由参数 UUID 格式全局校验\n- 12 处 window.open 加 noopener,noreferrer\n\n测试:31/31 通过(opportunity 19 + order 12)\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-23T20:38:50+08:00"},{"Sha1":"a9c37ba6a57b57becc274010f8b892e28e5a7d30","Message":"refactor: 全栈死代码清理 + 重复消除 — 22 Agent 协作治理\n\n## 死代码清理(Phase 1-2 + Phase 4)\n- 删除 68 个死文件(20 service + 19 vue + 8 composable + 4 store + 3 API + 10 test + 2 util)\n- 卸载 4 个死 npm 包(express-validator / redis / @types/handlebars / @types/marked)\n- 删除 LLM 孤岛三件套(llm-gateway / prompt-registry / rag-pipeline)\n- 更新 6 个 barrel export 文件\n\n## 重复代码消除(Phase 3 全量推广)\n- asyncHandler Controller 改造:282/309(91.3%),4,443 个方法消除 try-catch 样板\n- idParamsSchema + withIdParams 工厂:180 个 schema 文件,1,016 处简化\n- toCamelCaseKeys 导入路径统一:105 个文件,207/207 达到 100%\n- useListPage composable:13 个 Index.vue 列表页样板消除\n- createCrudApi 工厂迁移:+24 个 API 模块(31% → 40%)\n- BaseService 迁移:+10 个纯 CRUD 模块(185 → 195)\n- el-table → DataTable 统一:+13 个页面(53% → 58%)\n\n## Bug 修复\n- SLA controller: next() → throw(authHandler 内不可用 next)\n- auth controller: 3 处 return next(error) → throw\n- cpq controller: 嵌套 try-catch 正确处理\n- useListPage: tableData 类型推断修复(Ref\u003cT[]\u003e)\n\n净减少 ~45,700 行代码,669 文件变更,283 个测试全绿。\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-23T20:19:56+08:00"}],"HeadCommit":{"Sha1":"ff3149170c6b0deb6d8151cb962592199b95bdd8","Message":"fix: 全面分析修复 — 44项安全+性能+架构+类型安全治理\n\n## 安全修复 (12项)\n- CRITICAL: 修复 knowledge-vector SQL 注入 + event-subscription SQL 注入\n- HIGH: 5处 $queryRawUnsafe → Prisma.sql, PDF XSS 防护, 租户严格模式\n- MEDIUM: 健康端点认证, CORS生产校验, PII脱敏, 权限缓存清除API\n\n## 性能优化 (5项)\n- N+1: getBulkSalesProfiles 800→9次, syncLinkStatistics 3N+1→3次\n- syncConversionStats 批量事务, leads 7索引补充, 慢查询监控恢复\n\n## 架构合规 (14项)\n- 12个controller prisma调用下沉service + requireTenantContext全局启用\n\n## 类型安全 — 77处as any清零\n- process-adapter 39→0, case-converter 15→0, validation 11→0, main 6→0\n\n## 前端v-permission核心链路6模块73指令 + 代码卫生清理\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-24T01:13:11+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/67078f9a95f53530156ad27027eafe15a3126e89...ff3149170c6b0deb6d8151cb962592199b95bdd8","Len":5}... |