| event_payload |
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","after":"db7f39e63151b9c065646855287b8be73e13649b","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655...db7f39e63151b9c065646855287b8be73e13649b","commits":[{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]}],"total_commits":0,"head_commit":{"id":"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","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1958148,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-24T10:14:22+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}... |