| event_payload |
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","after":"68528dce9b8c543283a675374b5a23bc2e46c935","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72...68528dce9b8c543283a675374b5a23bc2e46c935","commits":[{"id":"68528dce9b8c543283a675374b5a23bc2e46c935","message":"feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获\n\n1. 修复 SKU 服务 Prisma to-one 关系查询错误\n - 移除 products include 中无效的 where 子句(to-one 关系不支持)\n - 修复 list/get/getSkuByCode 三个方法\n\n2. 新增 AI 工作流状态机 (ai-workflow.machine.ts)\n - XState 5.x 实现:draft → active ↔ paused → archived\n - 包含守卫、动作、转换表、辅助函数\n - ai-agent.service.ts 集成 canTransitionAIWorkflow 校验\n\n3. IM 消息处理器 RAG 增强\n - 集成向量嵌入生成 (generateEmbedding)\n - 接入 ragEnhancedExecutor 知识检索增强\n - 实时线索捕获:识别 create_lead 意图自动提取线索\n\n4. 线索采集服务增强\n - 新增 AI 驱动的文本线索提取 (extractLeadFromText)\n - 新增 processIMLead 流水线:提取→清洗→验证→去重→创建\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/68528dce9b8c543283a675374b5a23bc2e46c935","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-02-27T07:32:22+08:00","added":["backend/src/shared/state-machines/machines/ai-workflow.machine.ts"],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.service.ts","backend/src/modules/ai-agents/services/ai-agent-im-message-processor.service.ts","backend/src/modules/ai-agents/services/lead-collector.service.ts","backend/src/modules/products/services/sku.service.ts","backend/src/shared/state-machines/index.ts"]},{"id":"5bf60bf54c42c8295b8e5595fba959e0821ceb85","message":"Fix TypeScript any violations in duo\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/5bf60bf54c42c8295b8e5595fba959e0821ceb85","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-02-27T02:07:18+08:00","added":[],"removed":[],"modified":["backend/src/modules/contracts/contract.service.ts","backend/src/modules/dashboard/dashboard.controller.ts","backend/src/modules/dashboard/dashboard.routes.ts","backend/src/modules/finance/finance-costing.service.ts","backend/src/modules/finance/finance.routes.ts","backend/src/modules/leads/lead.schema.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/products/services/product.service.test.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/products/services/sku.service.test.ts","backend/src/modules/products/services/sku.service.ts","backend/src/shared/services/base.service.ts","backend/src/shared/utils/crud.ts","frontend/src/api/index.ts","frontend/src/components/responsive/ResponsiveStats.vue","frontend/src/views/diagnosis/Index.vue","frontend/src/views/knowledge-feedback/Index.vue"]},{"id":"169dc0ba22faf4ef27cd1d3c55114437b7855f23","message":"Replace any types in shared models\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/169dc0ba22faf4ef27cd1d3c55114437b7855f23","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-02-27T01:21:28+08:00","added":[".pnpm-type-check-output10.txt",".pnpm-type-check-output11.txt",".pnpm-type-check-output12.txt",".pnpm-type-check-output13.txt",".pnpm-type-check-output14.txt",".pnpm-type-check-output15.txt",".pnpm-type-check-output16.txt",".pnpm-type-check-output17.txt",".pnpm-type-check-output18.txt",".pnpm-type-check-output19.txt",".pnpm-type-check-output2.txt",".pnpm-type-check-output20.txt",".pnpm-type-check-output21.txt",".pnpm-type-check-output22.txt",".pnpm-type-check-output23.txt",".pnpm-type-check-output24.txt",".pnpm-type-check-output25.txt",".pnpm-type-check-output26.txt",".pnpm-type-check-output27.txt",".pnpm-type-check-output28.txt",".pnpm-type-check-output29.txt",".pnpm-type-check-output3.txt",".pnpm-type-check-output30.txt",".pnpm-type-check-output31.txt",".pnpm-type-check-output32.txt",".pnpm-type-check-output33.txt",".pnpm-type-check-output34.txt",".pnpm-type-check-output35.txt",".pnpm-type-check-output36.txt",".pnpm-type-check-output37.txt",".pnpm-type-check-output38.txt",".pnpm-type-check-output39.txt",".pnpm-type-check-output4.txt",".pnpm-type-check-output40.txt",".pnpm-type-check-output41.txt",".pnpm-type-check-output42.txt",".pnpm-type-check-output43.txt",".pnpm-type-check-output5.txt",".pnpm-type-check-output6.txt",".pnpm-type-check-output7.txt",".pnpm-type-check-output8.txt",".pnpm-type-check-output9.txt"],"removed":[],"modified":["backend/src/modules/ai-agents/services/agent-group-query.service.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/modules/landing-pages/landing-page.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/products/services/sku.service.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/stage-knowledge/stage-knowledge.service.ts","backend/src/modules/supply-chain/supply-chain-platform.service.ts","backend/src/modules/system-events/system-event.service.ts","frontend/src/api/index.ts","frontend/src/api/modules/dashboard.ts","frontend/src/api/modules/finance.ts","frontend/src/api/modules/leads.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/LeadScoreCard.vue","frontend/src/views/dashboard/Index.vue","frontend/src/views/dashboard/components/RecentActivities.vue","frontend/src/views/finance-os/cash/CashControlTower.vue","frontend/src/views/finance/MarketingReconciliation.vue","frontend/src/views/lead-scoring/Form.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/service-dashboard/components/TrendsPanel.vue","frontend/src/views/settings/Index.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/tickets/components/gantt/GanttToolbar.vue","frontend/src/views/tickets/components/gantt/TicketGanttChart.vue","frontend/src/views/tickets/components/gantt/composables/useGanttData.ts","shared/src/types/models.ts"]},{"id":"ffba80d4f2db2f955107f264e83c8d2a42f6b8e9","message":"Fix shared model any usage\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/ffba80d4f2db2f955107f264e83c8d2a42f6b8e9","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-02-26T22:54:25+08:00","added":[".gemini/policies/dev.toml",".pnpm-type-check-output.txt","backend/scripts/generate-route-inventory.ts","backend/src/modules/dashboard/omni-roi.service.ts","backend/src/modules/finance/reconciliation.controller.ts","backend/src/modules/finance/reconciliation.service.ts","backend/test-bpmn-moddle.js","backend/test-bpmn.mjs","backend/tests/business-flow.test.ts","docs/archive/sprint-stabilization-202602/GAP_MATRIX_20260206.md","docs/archive/sprint-stabilization-202602/route-contract-execution-checklist-v4-by-owner-detail.md","docs/audits/api-route-contract-audit.latest.md","docs/audits/event-publishing-audit.latest.md","docs/audits/route-registration-audit.latest.md","docs/audits/state-machine-integration-audit.latest.md","frontend/src/views/dashboard/OmniRoiDashboard.vue","frontend/src/views/finance/MarketingReconciliation.vue","scripts/db-performance-optimization.sql","scripts/gatekeeper.sh"],"removed":["reports/GAP_MATRIX_20260206.md","reports/route-contract-execution-checklist-v4-by-owner-detail.md"],"modified":["AGENTS.md","DEPLOY.md","GEMINI.md","backend/scripts/audit-baseline-gate.ts","backend/src/modules/channels/channel.controller.ts","backend/src/modules/channels/channel.service.ts","backend/src/modules/channels/index.ts","backend/src/modules/community-fission/community-fission.controller.ts","backend/src/modules/community-fission/community-fission.service.ts","backend/src/modules/content-distribution/content-distribution.controller.ts","backend/src/modules/content-distribution/content-distribution.service.ts","backend/src/modules/content-review/content-review.controller.ts","backend/src/modules/content-review/content-review.service.ts","backend/src/modules/customer-marketing/customer-marketing.controller.ts","backend/src/modules/customer-marketing/customer-marketing.service.ts","backend/src/modules/dashboard/dashboard.controller.ts","backend/src/modules/dashboard/dashboard.routes.ts","backend/src/modules/devices/asset-activation.controller.ts","backend/src/modules/devices/asset-activation.service.ts","backend/src/modules/diagnosis/diagnosis.controller.ts","backend/src/modules/diagnosis/diagnosis.routes.ts","backend/src/modules/diagnosis/diagnosis.service.ts","backend/src/modules/finance/finance.routes.ts","backend/src/modules/geo-analytics/geo-analytics.controller.ts","backend/src/modules/geo-analytics/geo-analytics.service.ts","backend/src/modules/groupbuy-products/groupbuy-product.controller.ts","backend/src/modules/groupbuy-products/groupbuy-product.routes.ts","backend/src/modules/groupbuy-products/groupbuy-product.service.ts","backend/src/modules/inventory/inventory.service.ts","backend/src/modules/inventory/services/index.ts","backend/src/modules/inventory/services/inventory-warehouse.service.ts","backend/src/modules/knowledge-feedback/knowledge-feedback.controller.ts","backend/src/modules/knowledge-feedback/knowledge-feedback.routes.ts","backend/src/modules/knowledge-feedback/knowledge-feedback.service.ts","backend/src/modules/leads/lead.controller.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-analytics/index.ts","backend/src/modules/livestream-analytics/livestream-analytics.controller.ts","backend/src/modules/livestream-analytics/livestream-analytics.routes.ts","backend/src/modules/livestream-analytics/livestream-analytics.service.ts","backend/src/modules/livestream-products/livestream-product.controller.ts","backend/src/modules/livestream-products/livestream-product.routes.ts","backend/src/modules/livestream-products/livestream-product.service.ts","backend/src/modules/process-designer/bpmn-converter.ts","backend/src/modules/process-designer/process-designer.controller.ts","backend/src/modules/process-designer/process-designer.service.ts","backend/src/modules/products/controllers/product.controller.ts","backend/src/modules/products/controllers/sku.controller.ts","backend/src/modules/products/product.routes.ts","backend/src/modules/products/routes/sku.routes.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/products/services/sku.service.ts","backend/src/modules/renewals/renewal.controller.ts","backend/src/modules/renewals/renewal.service.ts","backend/src/modules/reports/report.controller.ts","backend/src/modules/reports/report.service.ts","backend/src/modules/service-monitor/service-disruption.controller.ts","backend/src/modules/service-monitor/service-disruption.service.ts","backend/src/modules/social-analytics/social-analytics.controller.ts","backend/src/modules/social-analytics/social-analytics.service.ts","frontend/src/api/adapters.ts","frontend/src/api/index.ts","frontend/src/api/modules/dashboard.ts","frontend/src/api/modules/finance.ts","frontend/src/api/modules/leads.ts","frontend/src/api/modules/quotes.ts","frontend/src/stores/leads.ts","frontend/src/views/leads/Form.vue","frontend/src/views/opportunities/Pipeline.vue","frontend/src/views/orders/Detail.vue","frontend/src/views/quotes/Detail.vue","frontend/src/views/quotes/Index.vue","shared/src/types/models.ts"]},{"id":"b222af8d439100df34d9a6d61374df924561d451","message":"Update AI agent workflows\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/b222af8d439100df34d9a6d61374df924561d451","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-02-26T09:06:43+08:00","added":["backend/test-moddle.js","backend/test-moddle2.js","backend/test-moddle3.js","docs/operations/toc-operations-manual.md"],"removed":[],"modified":["backend/package.json","backend/src/main.ts","backend/src/modules/ai-agents/ai-agent-im.schema.ts","backend/src/modules/ai-agents/ai-agent-im.types.ts","backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/ai-agent.service.ts","backend/src/modules/ai-agents/services/agent-group-query.service.ts","backend/src/modules/ai-agents/services/ai-agent-im-message-processor.service.ts","backend/src/modules/ai-agents/services/ai-agent-im.service.ts","backend/src/modules/ai-agents/services/knowledge-vector-enhanced.service.ts","backend/src/modules/ai-agents/services/lead-collector.service.ts","backend/src/modules/ai-agents/services/model-state-manager.service.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/modules/ai-agents/services/task-heartbeat.service.ts","backend/src/modules/ai-agents/services/workflow-instance.service.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/meddpicc-analyses/meddpicc.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/process-designer/bpmn-converter.test.ts","backend/src/modules/process-designer/bpmn-converter.ts","backend/src/modules/process-designer/process-designer.controller.ts","backend/src/modules/process-designer/process-designer.routes.ts","backend/src/modules/process-designer/process-designer.schema.ts","backend/src/modules/process-designer/process-designer.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/renewals/renewal.service.ts","backend/src/modules/targets/target.service.ts","frontend/src/api/modules/ai-agent.ts","frontend/src/api/modules/process-designer.ts","frontend/src/types/ai-agent.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/ai-agents/IMQueue.vue","frontend/src/views/ai-agents/LeadCollector.vue","frontend/src/views/process-designer/ProcessList.vue","pnpm-lock.yaml","scripts/start-all.sh"]}],"total_commits":0,"head_commit":{"id":"68528dce9b8c543283a675374b5a23bc2e46c935","message":"feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获\n\n1. 修复 SKU 服务 Prisma to-one 关系查询错误\n - 移除 products include 中无效的 where 子句(to-one 关系不支持)\n - 修复 list/get/getSkuByCode 三个方法\n\n2. 新增 AI 工作流状态机 (ai-workflow.machine.ts)\n - XState 5.x 实现:draft → active ↔ paused → archived\n - 包含守卫、动作、转换表、辅助函数\n - ai-agent.service.ts 集成 canTransitionAIWorkflow 校验\n\n3. IM 消息处理器 RAG 增强\n - 集成向量嵌入生成 (generateEmbedding)\n - 接入 ragEnhancedExecutor 知识检索增强\n - 实时线索捕获:识别 create_lead 意图自动提取线索\n\n4. 线索采集服务增强\n - 新增 AI 驱动的文本线索提取 (extractLeadFromText)\n - 新增 processIMLead 流水线:提取→清洗→验证→去重→创建\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/68528dce9b8c543283a675374b5a23bc2e46c935","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-02-27T07:32:22+08:00","added":["backend/src/shared/state-machines/machines/ai-workflow.machine.ts"],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.service.ts","backend/src/modules/ai-agents/services/ai-agent-im-message-processor.service.ts","backend/src/modules/ai-agents/services/lead-collector.service.ts","backend/src/modules/products/services/sku.service.ts","backend/src/shared/state-machines/index.ts"]},"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/avatars/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":true,"fork":false,"template":false,"parent":null,"mirror":false,"size":479330,"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,"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-02-27T07:30:11+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":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,"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","repo_transfer":null},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatars/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":"luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatars/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"}}... |