|
303
|
2
|
17
|
1
|
2
|
0
|
0
|
refs/heads/detached
|
0
|
|
1773911330
|
Edit
Delete
|
|
304
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"bd59e5501 {"Commits":[{"Sha1":"bd59e5501292cb061719f669c7a7b7afd4f1a0b7","Message":"Prepare v1.0.0 release\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-19T17:33:01+08:00"},{"Sha1":"3e200dbc88dfcb3956ab27f4f620206b037ae2d2","Message":"Finalize full-menu Playwright v4 E2E coverage\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-19T17:23:33+08:00"},{"Sha1":"ec555da79e0898b3ba48a8f9b75b5689a0845d9b","Message":"Stabilize full-menu Playwright batch runner and governance contracts\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-19T16:49:52+08:00"},{"Sha1":"6881b6da73bfa06aefc33d638df23979cfea87b2","Message":"Stabilize Playwright full-batch E2E governance\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-19T16:32:36+08:00"},{"Sha1":"b2b5220da718e21dae81c36253ad1705fd3e371b","Message":"Update Playwright batch reports and E2E auth state\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-19T15:40:17+08:00"}],"HeadCommit":{"Sha1":"bd59e5501292cb061719f669c7a7b7afd4f1a0b7","Message":"Prepare v1.0.0 release\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-19T17:33:01+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/b7eb415d7a9689f1efec941bcb2dcd7d098e9c28...bd59e5501292cb061719f669c7a7b7afd4f1a0b7","Len":43}...
|
1773912911
|
Edit
Delete
|
|
305
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"01a8ea919 {"Commits":[{"Sha1":"01a8ea9191c28b210d2abb3db3cbc65db42fc801","Message":"Merge remote-tracking branch 'origin/claude/project-diagnosis-roadmap-OvHyH'\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-19T17:41:24+08:00"},{"Sha1":"e24b5ac7b46ff888469af5f36106bc134dfeeaf5","Message":"chore: 更新索引覆盖率审计报告\n\nhttps://claude.ai/code/session_01XYrghcakBhTHkp1eyMmM1v\n","AuthorEmail":"noreply@anthropic.com","AuthorName":"Claude","CommitterEmail":"noreply@anthropic.com","CommitterName":"Claude","Timestamp":"2026-02-23T02:10:23Z"},{"Sha1":"1f04562fcb2c00ced785cf32c9888101e7039377","Message":"Day 7: 消除前端 TypeScript any 类型(115 → 4,减少 96.5%)\n\n## 核心变更\n\n### 基础设施\n- api/adapters.ts:添加 6 个强类型输入接口(LeadCreateInput、QuoteCreateInput 等),\n 替换 5 个 prepare 函数的 any 参数\n- types/process.ts:$attrs Record\u003cstring,any\u003e → Record\u003cstring,unknown\u003e\n- components/marketing/CampaignBuilder.vue:引入 MarketingToolType 类型代替 string\n\n### 视图文件(73 个文件,~111 处修复)\n- el-tag :type 断言:`as any` → `as TagType`(~45 处)\n- catch 块:`catch (error: any)` → `catch (error)`(~15 处)\n- API 响应解包:`(res as any).data` → 明确类型断言\n- 状态校验初始化:`{} as any` → 合理的类型初始化\n- HR 分页:`limit as any` → `limit as number`\n- 工具类型:`code as any` → `code as ToolType`(Step3Tools)\n\n### 保留的 4 处 any(bpmn-js JavaScript 互操作,不可消除)\n- types/process.ts:BpmnElement 索引签名、get() 返回值、gfx 字段\n\n## 质量提升\n- any 使用数量:115 → 4(减少 111 处)\n- 影响文件:73 个 Vue 组件 + 2 个 TypeScript 文件\n- 类型安全程度:基本消除运行时类型不确定性\n\nhttps://claude.ai/code/session_01XYrghcakBhTHkp1eyMmM1v\n","AuthorEmail":"noreply@anthropic.com","AuthorName":"Claude","CommitterEmail":"noreply@anthropic.com","CommitterName":"Claude","Timestamp":"2026-02-23T02:09:43Z"},{"Sha1":"6ff0f2f6a30f18d01ceb3256ed9df1a6a994f187","Message":"Day 6: 数据库性能索引优化 — P1 治理冲刺\n\n## 变更内容\n\n### schema.prisma 索引优化\n**新增索引(P1高频查询路径)**:\n- ar_ledger: +2 索引(客户×状态、到期日×状态)\n- invoices: +4 索引(客户、开票日期、状态×时间、合同)\n- service_tickets: +2 索引(解决时间、状态×优先级)\n\n**删除重复索引(减少写放大)**:\n- opportunities: -3 重复索引(closed_at、contact_id、stage_entered_at 各有两个)\n- service_tickets: -1 重复索引(tenant_id+status 重复)\n- quotes: -2 重复索引(owner_user_id、status 各有两个)\n\n### 新增文件\n- `backend/prisma/migrations/add_performance_indexes_day6.sql`\n 14 个 CONCURRENTLY 部分索引(含 WHERE 子句过滤,Prisma @@index 不支持)\n 覆盖:ar_ledger / invoices / customers / service_tickets / leads / orders\n\n- `backend/scripts/audit-index-coverage.ts`\n 数据库索引覆盖审计脚本:591 个模型,1573→2373 索引,检测重复索引\n 关键业务模型(ar_ledger/invoices/customers/quotes)已升至 ✅ Excellent\n 其余核心模型(contracts/leads/opportunities/orders)升至 🟢 Good\n\n## 审计结果(Day 6 后)\n- 关键业务模型零重复索引(修复 6 处重复)\n- 4 个核心财务模型达到 Excellent 级覆盖率\n- 新增审计工具可持续监控索引健康度\n\nhttps://claude.ai/code/session_01XYrghcakBhTHkp1eyMmM1v\n","AuthorEmail":"noreply@anthropic.com","AuthorName":"Claude","CommitterEmail":"noreply@anthropic.com","CommitterName":"Claude","Timestamp":"2026-02-23T01:45:59Z"},{"Sha1":"471f6aae84a4b160d12ef2d5ed039def2a4bd33a","Message":"Day 5: API路由契约覆盖率从93.93%提升至100%\n\n## 变更概要\n\n### 新建路由文件(6个)\n- rfm-analysis.routes.ts:RFM分析模块路由\n- customer-ltv.routes.ts:客户生命周期价值模块路由\n- dimension-transform.routes.ts:维度转换模块路由(+PUT方法)\n- omnichannel-data-hub.routes.ts:全渠道数据中心路由(+PUT方法)\n- multi-touch-attribution.routes.ts:多触点归因前端期望路径路由\n- public.routes.ts:公开API聚合路由(落地页/聊天机器人/表单/追踪)\n\n### 控制器存根扩展\n- knowledge.routes.ts:新增starred/move-to-folder 5条路由\n- matrix.controller.ts + matrix.routes.ts:新增5个存根+路由\n- marketing-workflow.controller.ts + routes.ts:新增5个存根+路由\n- 20+个模块:补充缺失的控制器函数和路由声明\n\n### 注册表更新\n- register-domain-routes.ts:注册6个新模块路由\n - multi-touch-attribution(/multi-touch-attribution)\n - public routes(/public)\n - rfm-analysis/customer-ltv/dimension-transform/omnichannel-data-hub\n\n### 方法不一致修复\n- dimension-transform/:id:新增PUT方法支持\n- omnichannel-data-hub/sources/:id:新增PUT方法支持\n\n## 审计结果\n- 覆盖率:100%(3623/3623)✅\n- 缺失端点:0(从88降至0)\n- 方法不一致:0\n- 参数不一致:0\n\nhttps://claude.ai/code/session_01XYrghcakBhTHkp1eyMmM1v\n","AuthorEmail":"noreply@anthropic.com","AuthorName":"Claude","CommitterEmail":"noreply@anthropic.com","CommitterName":"Claude","Timestamp":"2026-02-23T01:03:57Z"}],"HeadCommit":{"Sha1":"01a8ea9191c28b210d2abb3db3cbc65db42fc801","Message":"Merge remote-tracking branch 'origin/claude/project-diagnosis-roadmap-OvHyH'\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-19T17:41:24+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/bd59e5501292cb061719f669c7a7b7afd4f1a0b7...01a8ea9191c28b210d2abb3db3cbc65db42fc801","Len":5}...
|
1773913343
|
Edit
Delete
|
|
306
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"9771b23ae {"Commits":[{"Sha1":"9771b23ae7aaee164f15f9c4ccbdb18eb68fc71f","Message":"merge: 合并 codex/start-task-execution 分支\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-19T20:06:07+08:00"},{"Sha1":"45cc3de955c77d410edd8f0c751c14b19ba32d6c","Message":"merge: 合并 codex/find-next-steps 分支\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-19T19:59:55+08:00"},{"Sha1":"0690441d639452b384cf339fb08bb9ca5aca6318","Message":"merge: 解决 LeadCollector 冲突并合并 project-diagnosis-roadmap 分支\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-19T19:53:41+08:00"},{"Sha1":"f559123e2f8a9b99815dfd5a112568e952fef38b","Message":"docs: add commander next action checklist","AuthorEmail":"158980461+laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"158980461+laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-12T12:25:36+08:00"},{"Sha1":"2ba3fa67ecd78540d068729a800bebf3db851042","Message":"chore: ignore local build cache directories","AuthorEmail":"158980461+laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"158980461+laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-12T12:24:42+08:00"}],"HeadCommit":{"Sha1":"9771b23ae7aaee164f15f9c4ccbdb18eb68fc71f","Message":"merge: 合并 codex/start-task-execution 分支\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-19T20:06:07+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/01a8ea9191c28b210d2abb3db3cbc65db42fc801...9771b23ae7aaee164f15f9c4ccbdb18eb68fc71f","Len":6}...
|
1773929406
|
Edit
Delete
|
|
307
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"979d9c810 {"Commits":[{"Sha1":"979d9c81063fbda12f1445bf80b0c0027b0fbac2","Message":"Refine AI agent menus and add pending tasks review page\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-20T00:05:17+08:00"},{"Sha1":"8e492fbd580d447f4eaefeb6287810a0ca9bffbe","Message":"Implement AI autopilot canonical flows and governance updates\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-19T23:41:26+08:00"}],"HeadCommit":{"Sha1":"979d9c81063fbda12f1445bf80b0c0027b0fbac2","Message":"Refine AI agent menus and add pending tasks review page\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-20T00:05:17+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/9771b23ae7aaee164f15f9c4ccbdb18eb68fc71f...979d9c81063fbda12f1445bf80b0c0027b0fbac2","Len":2}...
|
1773939779
|
Edit
Delete
|
|
308
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"86beff17d {"Commits":[{"Sha1":"86beff17d922cf15f9ac6e298961a63c92ec85f8","Message":"Harden AI autopilot compiler recovery and self-test services\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-20T09:39:28+08:00"},{"Sha1":"b0abf8673ae89246e45660346c8a67fbbde5537d","Message":"Advance AutoPilot scheduler, vision, and UI coverage\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-20T08:38:09+08:00"},{"Sha1":"405ac31b4cabcd0c74da31317675ddc0f2178b89","Message":"Reset pending review status after autopilot task failure\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-20T01:20:03+08:00"},{"Sha1":"ae160c6ca2ca0d11efdeed88558744dd42e55c02","Message":"Align AI autopilot routes and finance AI views\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-20T01:19:01+08:00"},{"Sha1":"1b6daf049b7149968db82c98bc255e2ec6d77759","Message":"Expand AI autopilot with scheduler and natural command support\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-20T01:16:29+08:00"}],"HeadCommit":{"Sha1":"86beff17d922cf15f9ac6e298961a63c92ec85f8","Message":"Harden AI autopilot compiler recovery and self-test services\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-20T09:39:28+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/979d9c81063fbda12f1445bf80b0c0027b0fbac2...86beff17d922cf15f9ac6e298961a63c92ec85f8","Len":5}...
|
1773971165
|
Edit
Delete
|
|
309
|
1
|
1
|
1
|
17
|
0
|
0
|
|
0
|
|
1773988984
|
Edit
Delete
|
|
310
|
2
|
1
|
1
|
17
|
0
|
0
|
|
0
|
|
1773988984
|
Edit
Delete
|
|
311
|
1
|
5
|
1
|
17
|
0
|
0
|
refs/heads/master
|
0
|
|
1773989067
|
Edit
Delete
|
|
312
|
2
|
5
|
1
|
17
|
0
|
0
|
refs/heads/master
|
0
|
|
1773989067
|
Edit
Delete
|
|
313
|
1
|
5
|
1
|
17
|
0
|
0
|
refs/heads/master
|
0
|
{"Commits":[{"Sha1":"78427a51e {"Commits":[{"Sha1":"78427a51eb7bd5a7de532a80ec9e94f265930824","Message":"测试111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-03-20T14:23:11+08:00"}],"HeadCommit":{"Sha1":"78427a51eb7bd5a7de532a80ec9e94f265930824","Message":"测试111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-03-20T14:23:11+08:00"},"CompareURL":"","Len":1}...
|
1773989067
|
Edit
Delete
|
|
314
|
2
|
5
|
1
|
17
|
0
|
0
|
refs/heads/master
|
0
|
{"Commits":[{"Sha1":"78427a51e {"Commits":[{"Sha1":"78427a51eb7bd5a7de532a80ec9e94f265930824","Message":"测试111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-03-20T14:23:11+08:00"}],"HeadCommit":{"Sha1":"78427a51eb7bd5a7de532a80ec9e94f265930824","Message":"测试111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-03-20T14:23:11+08:00"},"CompareURL":"","Len":1}...
|
1773989067
|
Edit
Delete
|
|
315
|
1
|
17
|
1
|
17
|
0
|
0
|
refs/heads/master
|
0
|
|
1773989093
|
Edit
Delete
|
|
316
|
2
|
17
|
1
|
17
|
0
|
0
|
refs/heads/master
|
0
|
|
1773989093
|
Edit
Delete
|
|
317
|
1
|
5
|
1
|
17
|
0
|
0
|
refs/heads/testpc
|
0
|
|
1773989093
|
Edit
Delete
|
|
318
|
2
|
5
|
1
|
17
|
0
|
0
|
refs/heads/testpc
|
0
|
|
1773989093
|
Edit
Delete
|
|
319
|
1
|
5
|
1
|
17
|
0
|
0
|
refs/heads/pctest
|
0
|
|
1773989952
|
Edit
Delete
|
|
320
|
2
|
5
|
1
|
17
|
0
|
0
|
refs/heads/pctest
|
0
|
|
1773989952
|
Edit
Delete
|
|
321
|
1
|
5
|
1
|
17
|
0
|
0
|
refs/heads/pctest
|
0
|
{"Commits":[{"Sha1":"e31b1c088 {"Commits":[{"Sha1":"e31b1c088fcbd1c19c3ca487fe550697bfa9bdd6","Message":"测试2222333\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-03-20T14:58:36+08:00"}],"HeadCommit":{"Sha1":"e31b1c088fcbd1c19c3ca487fe550697bfa9bdd6","Message":"测试2222333\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-03-20T14:58:36+08:00"},"CompareURL":"juhai/pctest/compare/78427a51eb7bd5a7de532a80ec9e94f265930824...e31b1c088fcbd1c19c3ca487fe550697bfa9bdd6","Len":1}...
|
1773989952
|
Edit
Delete
|
|
322
|
2
|
5
|
1
|
17
|
0
|
0
|
refs/heads/pctest
|
0
|
{"Commits":[{"Sha1":"e31b1c088 {"Commits":[{"Sha1":"e31b1c088fcbd1c19c3ca487fe550697bfa9bdd6","Message":"测试2222333\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-03-20T14:58:36+08:00"}],"HeadCommit":{"Sha1":"e31b1c088fcbd1c19c3ca487fe550697bfa9bdd6","Message":"测试2222333\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-03-20T14:58:36+08:00"},"CompareURL":"juhai/pctest/compare/78427a51eb7bd5a7de532a80ec9e94f265930824...e31b1c088fcbd1c19c3ca487fe550697bfa9bdd6","Len":1}...
|
1773989952
|
Edit
Delete
|
|
323
|
1
|
17
|
1
|
17
|
0
|
0
|
refs/heads/testpc
|
0
|
|
1773990033
|
Edit
Delete
|
|
324
|
2
|
17
|
1
|
17
|
0
|
0
|
refs/heads/testpc
|
0
|
|
1773990033
|
Edit
Delete
|
|
325
|
1
|
5
|
1
|
17
|
0
|
0
|
refs/heads/pctest
|
0
|
{"Commits":[{"Sha1":"b23272882 {"Commits":[{"Sha1":"b23272882d68e0b61ab119ff0f670c4dbbe7a652","Message":"修改单个文件测试\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-03-20T15:04:08+08:00"}],"HeadCommit":{"Sha1":"b23272882d68e0b61ab119ff0f670c4dbbe7a652","Message":"修改单个文件测试\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-03-20T15:04:08+08:00"},"CompareURL":"juhai/pctest/compare/e31b1c088fcbd1c19c3ca487fe550697bfa9bdd6...b23272882d68e0b61ab119ff0f670c4dbbe7a652","Len":1}...
|
1773990288
|
Edit
Delete
|
|
326
|
2
|
5
|
1
|
17
|
0
|
0
|
refs/heads/pctest
|
0
|
{"Commits":[{"Sha1":"b23272882 {"Commits":[{"Sha1":"b23272882d68e0b61ab119ff0f670c4dbbe7a652","Message":"修改单个文件测试\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-03-20T15:04:08+08:00"}],"HeadCommit":{"Sha1":"b23272882d68e0b61ab119ff0f670c4dbbe7a652","Message":"修改单个文件测试\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-03-20T15:04:08+08:00"},"CompareURL":"juhai/pctest/compare/e31b1c088fcbd1c19c3ca487fe550697bfa9bdd6...b23272882d68e0b61ab119ff0f670c4dbbe7a652","Len":1}...
|
1773990288
|
Edit
Delete
|
|
327
|
1
|
6
|
1
|
17
|
0
|
0
|
|
0
|
1|🔍 代码审查报告:pctest 分支 - 修改单个文件测试
|
1773990362
|
Edit
Delete
|
|
328
|
2
|
6
|
1
|
17
|
0
|
0
|
|
0
|
1|🔍 代码审查报告:pctest 分支 - 修改单个文件测试
|
1773990362
|
Edit
Delete
|
|
329
|
1
|
5
|
1
|
17
|
0
|
0
|
refs/heads/pctest
|
0
|
{"Commits":[{"Sha1":"7fbec3ef9 {"Commits":[{"Sha1":"7fbec3ef95a3856eef25ceabf266030d5ca445e4","Message":"修改单个文件测试2\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-03-20T15:22:59+08:00"}],"HeadCommit":{"Sha1":"7fbec3ef95a3856eef25ceabf266030d5ca445e4","Message":"修改单个文件测试2\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-03-20T15:22:59+08:00"},"CompareURL":"juhai/pctest/compare/b23272882d68e0b61ab119ff0f670c4dbbe7a652...7fbec3ef95a3856eef25ceabf266030d5ca445e4","Len":1}...
|
1773991404
|
Edit
Delete
|
|
330
|
2
|
5
|
1
|
17
|
0
|
0
|
refs/heads/pctest
|
0
|
{"Commits":[{"Sha1":"7fbec3ef9 {"Commits":[{"Sha1":"7fbec3ef95a3856eef25ceabf266030d5ca445e4","Message":"修改单个文件测试2\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-03-20T15:22:59+08:00"}],"HeadCommit":{"Sha1":"7fbec3ef95a3856eef25ceabf266030d5ca445e4","Message":"修改单个文件测试2\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-03-20T15:22:59+08:00"},"CompareURL":"juhai/pctest/compare/b23272882d68e0b61ab119ff0f670c4dbbe7a652...7fbec3ef95a3856eef25ceabf266030d5ca445e4","Len":1}...
|
1773991404
|
Edit
Delete
|
|
331
|
1
|
6
|
1
|
17
|
0
|
0
|
|
0
|
2|🔍 代码审查报告:pctest 分支 - 修改单个文件测试2
|
1773991492
|
Edit
Delete
|
|
332
|
2
|
6
|
1
|
17
|
0
|
0
|
|
0
|
2|🔍 代码审查报告:pctest 分支 - 修改单个文件测试2
|
1773991492
|
Edit
Delete
|
|
333
|
1
|
5
|
1
|
17
|
0
|
0
|
refs/heads/pctest
|
0
|
{"Commits":[{"Sha1":"12a4a4ad4 {"Commits":[{"Sha1":"12a4a4ad441e2edf19328cb83a4d1532f1985c69","Message":"修改单个文件测试3\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-03-20T15:26:46+08:00"}],"HeadCommit":{"Sha1":"12a4a4ad441e2edf19328cb83a4d1532f1985c69","Message":"修改单个文件测试3\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-03-20T15:26:46+08:00"},"CompareURL":"juhai/pctest/compare/7fbec3ef95a3856eef25ceabf266030d5ca445e4...12a4a4ad441e2edf19328cb83a4d1532f1985c69","Len":1}...
|
1773991753
|
Edit
Delete
|
|
334
|
2
|
5
|
1
|
17
|
0
|
0
|
refs/heads/pctest
|
0
|
{"Commits":[{"Sha1":"12a4a4ad4 {"Commits":[{"Sha1":"12a4a4ad441e2edf19328cb83a4d1532f1985c69","Message":"修改单个文件测试3\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-03-20T15:26:46+08:00"}],"HeadCommit":{"Sha1":"12a4a4ad441e2edf19328cb83a4d1532f1985c69","Message":"修改单个文件测试3\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-03-20T15:26:46+08:00"},"CompareURL":"juhai/pctest/compare/7fbec3ef95a3856eef25ceabf266030d5ca445e4...12a4a4ad441e2edf19328cb83a4d1532f1985c69","Len":1}...
|
1773991753
|
Edit
Delete
|
|
335
|
1
|
6
|
1
|
17
|
0
|
0
|
|
0
|
3|🔍 代码审查报告:pctest 分支 - 修改单个文件测试3
|
1773991826
|
Edit
Delete
|
|
336
|
2
|
6
|
1
|
17
|
0
|
0
|
|
0
|
3|🔍 代码审查报告:pctest 分支 - 修改单个文件测试3
|
1773991826
|
Edit
Delete
|
|
337
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"0900b15d6 {"Commits":[{"Sha1":"0900b15d607e5c78f97fec16a73357ad4f814390","Message":"fix: 前端 UI 交互防崩溃加固 — 25 个视图文件 + useApiQuery 增强\n\n三类修复(多 Agent 并行协作,零回归验证通过):\n\n1. 列表页 undefined 防护(10 文件 14 处):\n - res.data → res?.data ?? [] 防止 .map()/.length 崩溃\n - res.meta.total → res?.meta?.total ?? 0 防止分页异常\n\n2. 表单验证 try-catch(10 文件):\n - validate() 裸调用 → .catch(() =\u003e false) + if (!valid) return\n - 防止验证失败时页面卡死\n\n3. 删除操作错误处理(5 文件 8 处):\n - 空 catch 吞掉所有错误 → isCancelError 区分用户取消/真实错误\n - 真实 API 错误显示友好提示\n\n4. useApiQuery.ts 增强:\n - normalizeListResult 归一化防 undefined\n - useApiMutation 添加 onError 默认提示 + successMessage 控制\n - 全部 hook 添加 retry: 1\n\n验证:Vite 构建通过 / vue-tsc 0 新增错误 / 后端 4267 测试通过(+51)/ E2E 12/14 通过(0 回归)\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-23T07:09:28+08:00"},{"Sha1":"d896457d1be5c717ded0691d144621b3c521cd35","Message":"chore: Phase 0-5 附带修复 — Agent 产生的额外优化\n\n- database.ts: 类型优化\n- main.ts: 路由注册和 schema 转换修复\n- auth.middleware.ts: 类型收紧\n- schema-converter.ts: 冗余移除\n- IMPanel.vue/MessageSearch.vue: 前端组件优化\n- list-cache.service.ts: 新增列表缓存服务\n- 更新审计报告快照\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-22T23:08:14+08:00"},{"Sha1":"8d6bbbf7db74cd492873138a576a303da86c39cf","Message":"test: Phase 3 — IM 15 测试 + Revenue 13 测试 + ZodEffects 兼容修复\n\n- 新增 tests/api/im.test.ts: 15 用例覆盖会话/消息/参与者/在线状态/未读统计\n- 新增 tests/api/revenue-payment-terms.test.ts: 13 用例覆盖统计/CRUD/批量/事件集成\n- 修复 validation.ts: ZodEffects.prototype 添加 partial/omit/extend 代理\n- 修复 rfm-analysis.schema.ts: .passthrough() 顺序修正\n- 发现: IM 模块需加入 requestCaseConverter 排除列表\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-22T23:05:53+08:00"},{"Sha1":"5154c3ae921f8ff76d803e3e30208edd8c791d77","Message":"test: Phase 3 — Marketing API 集成测试 19 用例 + schema bug 修复\n\n- 新增 tests/api/marketing.test.ts: 19 个测试用例覆盖 CRUD + 状态机 + 多租户隔离\n- 修复 lead-scoring.schema.ts: .transform() 后 .partial() 运行时错误\n- 修复 lead-assignment.schema.ts: 同上\n- 修复 campaign-analytics.schema.ts: .passthrough() 顺序修正\n- 修复 diagnosis.schema.ts: 同上\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-22T23:01:58+08:00"},{"Sha1":"e75f31c633c3520ac69d3d9e47b2bdb86a517e6d","Message":"refactor: Phase 4 — 循环依赖 8→1(仅剩 prisma 自引用误报)\n\n修复策略:\n- finance 循环(#5-8): 提取 finance.types.ts 共享类型,打断子模块↔主模块循环\n- kafka/circuit-breaker(#1): producerProvider 回调注入替代动态 import\n- ai-agents(#3-4): 函数注册表模式(ai-autopilot-registry.ts)解耦互相调用\n- prisma-fallback-types(#2): madge 递归类型误报,无需修复\n\ntsc --noEmit 零错误 / madge circular 仅剩 1 个误报\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-22T23:00:25+08:00"}],"HeadCommit":{"Sha1":"0900b15d607e5c78f97fec16a73357ad4f814390","Message":"fix: 前端 UI 交互防崩溃加固 — 25 个视图文件 + useApiQuery 增强\n\n三类修复(多 Agent 并行协作,零回归验证通过):\n\n1. 列表页 undefined 防护(10 文件 14 处):\n - res.data → res?.data ?? [] 防止 .map()/.length 崩溃\n - res.meta.total → res?.meta?.total ?? 0 防止分页异常\n\n2. 表单验证 try-catch(10 文件):\n - validate() 裸调用 → .catch(() =\u003e false) + if (!valid) return\n - 防止验证失败时页面卡死\n\n3. 删除操作错误处理(5 文件 8 处):\n - 空 catch 吞掉所有错误 → isCancelError 区分用户取消/真实错误\n - 真实 API 错误显示友好提示\n\n4. useApiQuery.ts 增强:\n - normalizeListResult 归一化防 undefined\n - useApiMutation 添加 onError 默认提示 + successMessage 控制\n - 全部 hook 添加 retry: 1\n\n验证:Vite 构建通过 / vue-tsc 0 新增错误 / 后端 4267 测试通过(+51)/ E2E 12/14 通过(0 回归)\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-23T07:09:28+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/86beff17d922cf15f9ac6e298961a63c92ec85f8...0900b15d607e5c78f97fec16a73357ad4f814390","Len":104}...
|
1774220981
|
Edit
Delete
|
|
338
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"80c2bdb2f {"Commits":[{"Sha1":"80c2bdb2f93a19aa53d16ded06387b70c6084bf8","Message":"fix: 前端 API 路径对齐 + 路由缺失 + 表单提交反馈修复\n\n1. API 路径对齐后端(7 处 404 修复):\n - faults: start-diagnosis→start-diagnose, diagnosis→diagnose, solution→resolve\n - marketing-matrix: batch-group→batch/group(PATCH), batch-operator→batch/operator(PATCH),\n platform-comparison→analytics/platform-comparison, auth-status→authorize\n\n2. 路由缺失修复(2 处):\n - groupbuy-orders/create 新建路由注册\n - marketing-tools 编辑模式从 query.id 改为 params.id + 拆分 create/edit 路由\n\n3. 表单提交失败用户反馈(15 文件 33 处):\n - catch 块只有 console.error → 补充 ElMessage.error 用户可见提示\n - 涉及:contracts, quotes, opportunities, customers, departments 等核心模块\n\n验证:Vite 构建通过 / vue-tsc 0 新增错误\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-23T07:43:31+08:00"}],"HeadCommit":{"Sha1":"80c2bdb2f93a19aa53d16ded06387b70c6084bf8","Message":"fix: 前端 API 路径对齐 + 路由缺失 + 表单提交反馈修复\n\n1. API 路径对齐后端(7 处 404 修复):\n - faults: start-diagnosis→start-diagnose, diagnosis→diagnose, solution→resolve\n - marketing-matrix: batch-group→batch/group(PATCH), batch-operator→batch/operator(PATCH),\n platform-comparison→analytics/platform-comparison, auth-status→authorize\n\n2. 路由缺失修复(2 处):\n - groupbuy-orders/create 新建路由注册\n - marketing-tools 编辑模式从 query.id 改为 params.id + 拆分 create/edit 路由\n\n3. 表单提交失败用户反馈(15 文件 33 处):\n - catch 块只有 console.error → 补充 ElMessage.error 用户可见提示\n - 涉及:contracts, quotes, opportunities, customers, departments 等核心模块\n\n验证:Vite 构建通过 / vue-tsc 0 新增错误\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-23T07:43:31+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/0900b15d607e5c78f97fec16a73357ad4f814390...80c2bdb2f93a19aa53d16ded06387b70c6084bf8","Len":1}...
|
1774223019
|
Edit
Delete
|
|
339
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"df7b6f461 {"Commits":[{"Sha1":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","Message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-23T07:51:53+08:00"}],"HeadCommit":{"Sha1":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","Message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-23T07:51:53+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/80c2bdb2f93a19aa53d16ded06387b70c6084bf8...df7b6f46170cb46db4771dd1e07991b0b13d90a0","Len":1}...
|
1774223516
|
Edit
Delete
|
|
340
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"339ea969e {"Commits":[{"Sha1":"339ea969ec2633756fb1a155d47723d0f61396a4","Message":"chore: comprehensive governance updates and test artifacts\n\n- Add Prisma schema modularization and migration scripts\n- Add service test coverage across all modules (AI, alliance, community, marketing, etc.)\n- Add shared services (cache, custom-fields, dynamic-state-machine, encryption, etc.)\n- Add infrastructure configs (ClickHouse, Debezium, Tempo)\n- Add user manual and technical documentation with screenshots\n- Add router module organization for all centers\n- Add store/test coverage and Playwright artifacts\n- Update CI workflow, environment configs, and dependencies\n- Fix security issues in auth, kafka, and validation layers\n- Fix permission naming tests to expect kebab-case output\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-23T09:22:37+08:00"}],"HeadCommit":{"Sha1":"339ea969ec2633756fb1a155d47723d0f61396a4","Message":"chore: comprehensive governance updates and test artifacts\n\n- Add Prisma schema modularization and migration scripts\n- Add service test coverage across all modules (AI, alliance, community, marketing, etc.)\n- Add shared services (cache, custom-fields, dynamic-state-machine, encryption, etc.)\n- Add infrastructure configs (ClickHouse, Debezium, Tempo)\n- Add user manual and technical documentation with screenshots\n- Add router module organization for all centers\n- Add store/test coverage and Playwright artifacts\n- Update CI workflow, environment configs, and dependencies\n- Fix security issues in auth, kafka, and validation layers\n- Fix permission naming tests to expect kebab-case output\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-23T09:22:37+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/df7b6f46170cb46db4771dd1e07991b0b13d90a0...339ea969ec2633756fb1a155d47723d0f61396a4","Len":1}...
|
1774229061
|
Edit
Delete
|
|
341
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"67078f9a9 {"Commits":[{"Sha1":"67078f9a95f53530156ad27027eafe15a3126e89","Message":"feat: 新增阿里云部署、PII 加密、运维脚本和前端优化\n\n- 新增阿里云部署配置和工作流\n- 实现 PII 字段加密和迁移脚本\n- 新增运维脚本 (备份、监控、事件响应)\n- 前端移动端优化 (PWA、离线支持、响应式)\n- 优化部署脚本和 Docker 配置\n- 新增模块依赖文档和图标资源\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-23T18:39:31+08:00"}],"HeadCommit":{"Sha1":"67078f9a95f53530156ad27027eafe15a3126e89","Message":"feat: 新增阿里云部署、PII 加密、运维脚本和前端优化\n\n- 新增阿里云部署配置和工作流\n- 实现 PII 字段加密和迁移脚本\n- 新增运维脚本 (备份、监控、事件响应)\n- 前端移动端优化 (PWA、离线支持、响应式)\n- 优化部署脚本和 Docker 配置\n- 新增模块依赖文档和图标资源\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-23T18:39:31+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/339ea969ec2633756fb1a155d47723d0f61396a4...67078f9a95f53530156ad27027eafe15a3126e89","Len":1}...
|
1774262374
|
Edit
Delete
|
|
342
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/main
|
0
|
{"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}...
|
1774286006
|
Edit
Delete
|
|
343
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"2ec5b7d80 {"Commits":[{"Sha1":"2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","Message":"fix: v-permission第二批5模块覆盖 + 三表多租户索引优化\n\n## v-permission 第二批覆盖 (17 个指令)\n- customers: create/import/export/update/delete (5个)\n- campaigns: create/update (3个)\n- partners: create/update/delete (3个)\n- shipments: create/update/delete (4个)\n- renewals: update/quote:create (4个,含JS+指令双重防线)\n\n## 多租户索引优化\n- opportunities: 清理6个重复/缺失tenant_id索引 → 8个多租户复合索引\n- orders: fulfillment_status/payment_status 补充 tenant_id 前缀\n- service_tickets: priority 补充 tenant_id+status 复合索引\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-24T08:29:44+08:00"}],"HeadCommit":{"Sha1":"2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","Message":"fix: v-permission第二批5模块覆盖 + 三表多租户索引优化\n\n## v-permission 第二批覆盖 (17 个指令)\n- customers: create/import/export/update/delete (5个)\n- campaigns: create/update (3个)\n- partners: create/update/delete (3个)\n- shipments: create/update/delete (4个)\n- renewals: update/quote:create (4个,含JS+指令双重防线)\n\n## 多租户索引优化\n- opportunities: 清理6个重复/缺失tenant_id索引 → 8个多租户复合索引\n- orders: fulfillment_status/payment_status 补充 tenant_id 前缀\n- service_tickets: priority 补充 tenant_id+status 复合索引\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-24T08:29:44+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/ff3149170c6b0deb6d8151cb962592199b95bdd8...2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","Len":1}...
|
1774312189
|
Edit
Delete
|
|
344
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"07680473f {"Commits":[{"Sha1":"07680473f95a02e139e159147a93ef74e61f3db2","Message":"refactor: 4模块 as any 热点清零 + prismaModel 统一代理\n\n## as any 清零 (48处)\n- redemptions.service.ts: 16→0 (prismaModel 代理)\n- store-settlements.service.ts: 13→0\n- store-inventory.service.ts: 10→0\n- community-analytics.service.ts: 9→0\n\n## 新增 prismaModel 辅助函数\n- prisma-fallback-types.ts 新增 PrismaModelDelegate 接口和 prismaModel() 函数\n- 替代散布的 (prisma as any).modelName 模式\n- 类型安全地访问 Prisma Client 类型未导出但运行时存在的模型\n\n累计 as any 清零:125处 (77+48) = process-adapter/case-converter/validation/\nmain/order/redemptions/store-settlements/store-inventory/community-analytics\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-24T09:01:52+08:00"}],"HeadCommit":{"Sha1":"07680473f95a02e139e159147a93ef74e61f3db2","Message":"refactor: 4模块 as any 热点清零 + prismaModel 统一代理\n\n## as any 清零 (48处)\n- redemptions.service.ts: 16→0 (prismaModel 代理)\n- store-settlements.service.ts: 13→0\n- store-inventory.service.ts: 10→0\n- community-analytics.service.ts: 9→0\n\n## 新增 prismaModel 辅助函数\n- prisma-fallback-types.ts 新增 PrismaModelDelegate 接口和 prismaModel() 函数\n- 替代散布的 (prisma as any).modelName 模式\n- 类型安全地访问 Prisma Client 类型未导出但运行时存在的模型\n\n累计 as any 清零:125处 (77+48) = process-adapter/case-converter/validation/\nmain/order/redemptions/store-settlements/store-inventory/community-analytics\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-24T09:01:52+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/2ec5b7d8079ffd911c7b27a395d5aba3ceafe372...07680473f95a02e139e159147a93ef74e61f3db2","Len":1}...
|
1774314117
|
Edit
Delete
|
|
345
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"cfe1efeda {"Commits":[{"Sha1":"cfe1efeda7265f05374d3bd0036cf684a15f3cb9","Message":"refactor: 5模块78处as any精确替换 + v-permission第三批 + API层any清理\n\n## as any 精确替换 (78处 → 0)\n- community-material.service.ts: 17→0 (Prisma UncheckedCreateInput + InputJsonValue)\n- swot.service.ts: 16→0 (Record\u003cstring,unknown\u003e + 具体接口)\n- groupbuy-analytics.service.ts: 16→0 (Prisma WhereInput + 移除冗余断言)\n- groupbuy-commission.service.ts: 15→0 (Prisma WhereInput + InputJsonValue)\n- workflow.service.ts: 14→0 (InputJsonValue + 具体类型)\n\n## v-permission 第三批 (9个指令)\n- knowledge: create (1)\n- sla: create (1)\n- inventory: update×2 (2)\n- assets: import/export/create (3)\n\n## 前端 API 层 any 清理\n- factory.ts: Record\u003cstring,any\u003e → Record\u003cstring,unknown\u003e (4处)\n- response-normalizer.ts: any → unknown (4处)\n\n累计 as any 清零:203处 (125+78)\n累计 v-permission:99个指令覆盖16模块\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-24T09:17:32+08:00"}],"HeadCommit":{"Sha1":"cfe1efeda7265f05374d3bd0036cf684a15f3cb9","Message":"refactor: 5模块78处as any精确替换 + v-permission第三批 + API层any清理\n\n## as any 精确替换 (78处 → 0)\n- community-material.service.ts: 17→0 (Prisma UncheckedCreateInput + InputJsonValue)\n- swot.service.ts: 16→0 (Record\u003cstring,unknown\u003e + 具体接口)\n- groupbuy-analytics.service.ts: 16→0 (Prisma WhereInput + 移除冗余断言)\n- groupbuy-commission.service.ts: 15→0 (Prisma WhereInput + InputJsonValue)\n- workflow.service.ts: 14→0 (InputJsonValue + 具体类型)\n\n## v-permission 第三批 (9个指令)\n- knowledge: create (1)\n- sla: create (1)\n- inventory: update×2 (2)\n- assets: import/export/create (3)\n\n## 前端 API 层 any 清理\n- factory.ts: Record\u003cstring,any\u003e → Record\u003cstring,unknown\u003e (4处)\n- response-normalizer.ts: any → unknown (4处)\n\n累计 as any 清零:203处 (125+78)\n累计 v-permission:99个指令覆盖16模块\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-24T09:17:32+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/07680473f95a02e139e159147a93ef74e61f3db2...cfe1efeda7265f05374d3bd0036cf684a15f3cb9","Len":1}...
|
1774315056
|
Edit
Delete
|
|
346
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"8c39619c9 {"Commits":[{"Sha1":"8c39619c9cdb0d888d10942bf50533c8238021df","Message":"refactor: 8模块96处 as any 精确替换清零\n\n## 手动清理 (33处)\n- ticket-operations.service.ts: 11→0 (Prisma UpdateManyMutationInput)\n- knowledge-crud.service.ts: 11→0 (Record\u003cstring,unknown\u003e + 具体DTO)\n- crm-activity.service.ts: 11→0 (prismaModel + Record + string)\n\n## Agent 清理 (63处)\n- groupbuy-promotion.service.ts: 14→0\n- analytics.controller.ts: 13→0\n- partner.service.ts: 12→0\n- groupbuy-redemption.service.ts: 12→0\n- groupbuy-participant.service.ts: 12→0\n\n累计 as any 清零:299处 (203+96),覆盖24个文件\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-24T09:45:09+08:00"}],"HeadCommit":{"Sha1":"8c39619c9cdb0d888d10942bf50533c8238021df","Message":"refactor: 8模块96处 as any 精确替换清零\n\n## 手动清理 (33处)\n- ticket-operations.service.ts: 11→0 (Prisma UpdateManyMutationInput)\n- knowledge-crud.service.ts: 11→0 (Record\u003cstring,unknown\u003e + 具体DTO)\n- crm-activity.service.ts: 11→0 (prismaModel + Record + string)\n\n## Agent 清理 (63处)\n- groupbuy-promotion.service.ts: 14→0\n- analytics.controller.ts: 13→0\n- partner.service.ts: 12→0\n- groupbuy-redemption.service.ts: 12→0\n- groupbuy-participant.service.ts: 12→0\n\n累计 as any 清零:299处 (203+96),覆盖24个文件\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-24T09:45:09+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/cfe1efeda7265f05374d3bd0036cf684a15f3cb9...8c39619c9cdb0d888d10942bf50533c8238021df","Len":1}...
|
1774316714
|
Edit
Delete
|
|
347
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"dbf34b08b {"Commits":[{"Sha1":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","Message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-24T10:14:13+08:00"}],"HeadCommit":{"Sha1":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","Message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-24T10:14:13+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/8c39619c9cdb0d888d10942bf50533c8238021df...dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","Len":1}...
|
1774318460
|
Edit
Delete
|
|
348
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"db7f39e63 {"Commits":[{"Sha1":"db7f39e63151b9c065646855287b8be73e13649b","Message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-24T11:01:20+08:00"}],"HeadCommit":{"Sha1":"db7f39e63151b9c065646855287b8be73e13649b","Message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-24T11:01:20+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655...db7f39e63151b9c065646855287b8be73e13649b","Len":1}...
|
1774321430
|
Edit
Delete
|
|
349
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"81e883dff {"Commits":[{"Sha1":"81e883dfff9283af39b3dd2aa30e25ae2119e8f0","Message":"fix: Phase 4 三线并行治理 — 类型清零+测试扩展+性能深度优化\n\nLine A - 前端类型清零:\n- vue-tsc 错误 417→95 (322个修复, 77%修复率)\n- DataTable/ResponsiveDataTable 泛型约束放宽 (消除~100错误)\n- inventory/products/shipments API 类型补全 (消除~80错误)\n- useListPage 泛型显式化 + queryParams→filters 修正\n- FilterField 类型扩展 + 多处 as unknown as 桥接\n\nLine B - 测试覆盖扩展:\n- 14个无测试模块补充: 11模块14文件166用例全通过\n (channel-analytics/cache-warmup/realtime/workflow-generator/process/search等)\n- Lead-to-Cash E2E: 2文件29用例 (完整链路+状态机流转)\n- 状态机边界测试: 709用例全通过 (6核心实体终态/死状态/非法转换/可达性)\n\nLine C - 性能深度优化:\n- 剩余N+1修复: 5文件11处 (marketing-tools/price-books/cash-flow/knowledge-vector/lead-import)\n- Outbox原子化: tickets 4文件17方法 $transaction+tx (38测试通过)\n (opportunities/quotes/contracts/orders 已正确实现,无需改造)\n\n验证: 后端tsc 0错误 | 709状态机测试通过 | 166新增单测通过\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-24T11:45:35+08:00"}],"HeadCommit":{"Sha1":"81e883dfff9283af39b3dd2aa30e25ae2119e8f0","Message":"fix: Phase 4 三线并行治理 — 类型清零+测试扩展+性能深度优化\n\nLine A - 前端类型清零:\n- vue-tsc 错误 417→95 (322个修复, 77%修复率)\n- DataTable/ResponsiveDataTable 泛型约束放宽 (消除~100错误)\n- inventory/products/shipments API 类型补全 (消除~80错误)\n- useListPage 泛型显式化 + queryParams→filters 修正\n- FilterField 类型扩展 + 多处 as unknown as 桥接\n\nLine B - 测试覆盖扩展:\n- 14个无测试模块补充: 11模块14文件166用例全通过\n (channel-analytics/cache-warmup/realtime/workflow-generator/process/search等)\n- Lead-to-Cash E2E: 2文件29用例 (完整链路+状态机流转)\n- 状态机边界测试: 709用例全通过 (6核心实体终态/死状态/非法转换/可达性)\n\nLine C - 性能深度优化:\n- 剩余N+1修复: 5文件11处 (marketing-tools/price-books/cash-flow/knowledge-vector/lead-import)\n- Outbox原子化: tickets 4文件17方法 $transaction+tx (38测试通过)\n (opportunities/quotes/contracts/orders 已正确实现,无需改造)\n\n验证: 后端tsc 0错误 | 709状态机测试通过 | 166新增单测通过\n","AuthorEmail":"laoluojuhai@users.noreply.github.com","AuthorName":"laoluojuhai","CommitterEmail":"laoluojuhai@users.noreply.github.com","CommitterName":"laoluojuhai","Timestamp":"2026-03-24T11:45:35+08:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/db7f39e63151b9c065646855287b8be73e13649b...81e883dfff9283af39b3dd2aa30e25ae2119e8f0","Len":1}...
|
1774325030
|
Edit
Delete
|
|
350
|
1
|
1
|
1
|
18
|
0
|
0
|
|
0
|
|
1774342391
|
Edit
Delete
|
|
351
|
9
|
1
|
1
|
18
|
0
|
0
|
|
0
|
|
1774342391
|
Edit
Delete
|
|
352
|
7
|
1
|
1
|
18
|
0
|
0
|
|
0
|
|
1774342391
|
Edit
Delete
|