|
14167
|
feat: 同步最新代码更改,包括后端API、前端组件、测试和报告更新
|
6
|
5
|
health-check.yml
|
14089
|
-2
|
268
|
refs/heads/main
|
d2c68b13960de626f7a8d496bf1977d263eb7931
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"98cc8da660b8d4dba9887432490471d976c03f5f","after":"d2c68b13960de626f7a8d496bf1977d263eb7931","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/98cc8da660b8d4dba9887432490471d976c03f5f...d2c68b13960de626f7a8d496bf1977d263eb7931","commits":[{"id":"d2c68b13960de626f7a8d496bf1977d263eb7931","message":"feat: 同步最新代码更改,包括后端API、前端组件、测试和报告更新\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/d2c68b13960de626f7a8d496bf1977d263eb7931","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T15:39:52+08:00","added":["backend/prisma/migrations/20260413_add_journey_orchestration_and_store_configs/migration.sql","backend/src/modules/journey-orchestration/journey-orchestration.contract.routes.ts","backend/src/modules/process/process.controller.ts","backend/src/modules/process/process.types.ts","backend/src/modules/revenue/revenue-crud.service.ts","backend/src/modules/stores/store-config.service.ts","backend/src/modules/treasury/treasury-crud.service.ts","e2e/test-results/form-interactions-core-bus-0f529-d-to-Cash-F03-商机表单---编辑回填验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-0f529-d-to-Cash-F03-商机表单---编辑回填验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-184fa--to-Cash-F01-客户表单---创建成功全流程-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-184fa--to-Cash-F01-客户表单---创建成功全流程-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-4c4ce--to-Cash-F07-客户表单---手机号重复检测-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-4c4ce--to-Cash-F07-客户表单---手机号重复检测-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-64a51-to-Cash-F05-合同表单---复杂字段联动验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-64a51-to-Cash-F05-合同表单---复杂字段联动验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-80c59-d-to-Cash-F08-报价表单---实时计算验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-80c59-d-to-Cash-F08-报价表单---实时计算验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-90544-d-to-Cash-F02-线索表单---验证错误提示-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-90544-d-to-Cash-F02-线索表单---验证错误提示-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-a51f4-d-to-Cash-F04-报价表单---草稿自动恢复-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-a51f4-d-to-Cash-F04-报价表单---草稿自动恢复-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-cf0d9--to-Cash-F06-订单表单---动态明细行验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-cf0d9--to-Cash-F06-订单表单---动态明细行验证-chromium/test-failed-1.png","e2e/tests/form-interactions/hr-forms.spec.ts","e2e/tests/form-interactions/large-data-performance.spec.ts","e2e/tests/form-interactions/service-center-forms.spec.ts","e2e/tests/form-interactions/supply-chain-forms.spec.ts","frontend/src/views/cpq/components/PoliciesTab.vue","frontend/src/views/marketing-calendar/components/CalendarAgendaView.vue","frontend/src/views/marketing-calendar/components/CalendarMonthView.vue","frontend/src/views/marketing-calendar/components/CalendarWeekView.vue","frontend/src/views/marketing-calendar/components/EventDetailDrawer.vue","frontend/src/views/marketing-calendar/components/EventFormDialog.vue","frontend/src/views/marketing-calendar/composables/useMarketingCalendar.ts","frontend/src/views/marketing-north-star/components/NorthStarAlerts.vue","frontend/src/views/marketing-north-star/components/NorthStarDashboard.vue","frontend/src/views/marketing-north-star/components/NorthStarMetricForm.vue","frontend/src/views/settings/components/integration/IntegrationAdPlatformsPanel.vue","frontend/src/views/settings/components/integration/IntegrationAiConfig.vue","frontend/src/views/settings/components/integration/IntegrationDingtalkConfig.vue","frontend/src/views/settings/components/integration/IntegrationEmailConfig.vue","frontend/src/views/settings/components/integration/IntegrationFeishuConfig.vue","frontend/src/views/settings/components/integration/IntegrationGroupbuyPanel.vue","frontend/src/views/settings/components/integration/IntegrationSmsConfig.vue","frontend/src/views/settings/components/integration/IntegrationWebhookConfig.vue","frontend/src/views/settings/components/integration/IntegrationWechatPublicConfig.vue","frontend/src/views/settings/components/integration/IntegrationWechatWorkConfig.vue","scripts/migrate-to-uselistpage.ts"],"removed":["e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png"],"modified":[".github/workflows/e2e-tests.yml","backend/.env.test","backend/prisma/schema/marketing.prisma","backend/prisma/schema/stores.prisma","backend/src/modules/ad-placement/placement.contract.routes.ts","backend/src/modules/ad-placement/placement.controller.ts","backend/src/modules/ad-placement/placement.service.ts","backend/src/modules/channels/channel.contract.routes.ts","backend/src/modules/dimension-transform/dimension-transform.controller.ts","backend/src/modules/dimension-transform/dimension-transform.routes.ts","backend/src/modules/dimension-transform/dimension-transform.service.ts","backend/src/modules/expense/expense.contract.routes.ts","backend/src/modules/expense/expense.controller.ts","backend/src/modules/expense/expense.routes.ts","backend/src/modules/faults/fault.contract.routes.ts","backend/src/modules/faults/fault.service.ts","backend/src/modules/geo-keywords/geo-keyword.contract.routes.ts","backend/src/modules/geo-keywords/geo-keyword.controller.ts","backend/src/modules/geo-keywords/geo-keyword.routes.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/geo-keywords/geo-keyword.service.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.contract.routes.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.controller.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.routes.ts","backend/src/modules/journey-orchestration/journey-orchestration.service.ts","backend/src/modules/knowledge/knowledge.routes.ts","backend/src/modules/livestream-groupbuy/livestream-groupbuy-conversion.contract.routes.ts","backend/src/modules/livestream-groupbuy/livestream-groupbuy-conversion.controller.ts","backend/src/modules/livestream-groupbuy/livestream-groupbuy-conversion.routes.ts","backend/src/modules/marketing-matrix/matrix.contract.routes.ts","backend/src/modules/marketing-matrix/matrix.controller.ts","backend/src/modules/mdm/mdm.service.ts","backend/src/modules/orders/order.controller.ts","backend/src/modules/process/process.routes.ts","backend/src/modules/process/process.schema.ts","backend/src/modules/process/process.service.test.ts","backend/src/modules/process/process.service.ts","backend/src/modules/realtime/realtime.contract.routes.ts","backend/src/modules/realtime/realtime.controller.ts","backend/src/modules/realtime/realtime.routes.ts","backend/src/modules/revenue/revenue.contract.routes.ts","backend/src/modules/revenue/revenue.controller.ts","backend/src/modules/revenue/revenue.routes.ts","backend/src/modules/search/search.controller.ts","backend/src/modules/search/search.routes.ts","backend/src/modules/search/search.schema.ts","backend/src/modules/search/search.service.ts","backend/src/modules/social-analytics/social-analytics.service.ts","backend/src/modules/stores/store.contract.routes.ts","backend/src/modules/stores/store.controller.ts","backend/src/modules/stores/store.routes.ts","backend/src/modules/stores/store.schema.ts","backend/src/modules/treasury/treasury.contract.routes.ts","backend/src/modules/treasury/treasury.controller.ts","backend/src/modules/treasury/treasury.routes.ts","e2e/.auth/admin.json","e2e/helpers/form-test-helpers.ts","e2e/package.json","e2e/test-results/.last-run.json","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/api/modules/im-channels.ts","frontend/src/composables/useDashboardRealtime.ts","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-audiences/Index.vue","frontend/src/views/ad-biddings/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-reports/Index.vue","frontend/src/views/alliance-analytics/Index.vue","frontend/src/views/alliance-merchants/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/alliance-promotions/Index.vue","frontend/src/views/alliance-referrals/Index.vue","frontend/src/views/alliance-settlements/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-drafts/Index.vue","frontend/src/views/campaign-use-case-templates/Index.vue","frontend/src/views/channel-integrations/Index.vue","frontend/src/views/cohort-analysis/Index.vue","frontend/src/views/community-activities/Index.vue","frontend/src/views/community-analytics/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-levels/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-categories/Index.vue","frontend/src/views/content-copyright/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Index.vue","frontend/src/views/content-review/Index.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cpq/composables/useCpqCommon.ts","frontend/src/views/crm-activities/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Index.vue","frontend/src/views/customer-ltv/Index.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-marketing/Index.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/finance-os/ai/AutoCreditAdjustment.vue","frontend/src/views/finance-os/ai/CashForecastModel.vue","frontend/src/views/finance-os/ai/DefaultProbabilityModel.vue","frontend/src/views/finance-os/ai/ROIEvaluation.vue","frontend/src/views/geo-fences/Index.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-analytics/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/im-channels/Index.vue","frontend/src/views/invoice-requests/Index.vue","frontend/src/views/invoice-verification/Index.vue","frontend/src/views/journey-orchestration/Index.vue","frontend/src/views/knowledge-candidates/Index.vue","frontend/src/views/knowledge-capture/Index.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/landing-pages/Index.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-pool/Index.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/livestream-analytics/Index.vue","frontend/src/views/livestream-interactions/Index.vue","frontend/src/views/livestream-products/Index.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/location-assessments/Index.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-calendar/Index.vue","frontend/src/views/marketing-content/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-forms/Index.vue","frontend/src/views/marketing-matrix/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/predictive-analytics/Index.vue","frontend/src/views/product-categories/Index.vue","frontend/src/views/projects/Index.vue","frontend/src/views/purchase-orders/Index.vue","frontend/src/views/realtime-trigger/Index.vue","frontend/src/views/redemptions/Index.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/satisfaction/Index.vue","frontend/src/views/settings/IntegrationServices.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-followers/Index.vue","frontend/src/views/social-hot-topics/Index.vue","frontend/src/views/social-interactions/Index.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/store-inventory/Index.vue","frontend/src/views/store-settlements/Index.vue","frontend/src/views/store-staff/Index.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-center/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/ticket-workflows/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/video-calls/Index.vue","frontend/src/views/video-content/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/approval-governance.latest.json","reports/approval-governance.latest.md","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md","reports/outbox-atomicity-audit.latest.json"]}],"total_commits":0,"head_commit":{"id":"d2c68b13960de626f7a8d496bf1977d263eb7931","message":"feat: 同步最新代码更改,包括后端API、前端组件、测试和报告更新\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/d2c68b13960de626f7a8d496bf1977d263eb7931","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T15:39:52+08:00","added":["backend/prisma/migrations/20260413_add_journey_orchestration_and_store_configs/migration.sql","backend/src/modules/journey-orchestration/journey-orchestration.contract.routes.ts","backend/src/modules/process/process.controller.ts","backend/src/modules/process/process.types.ts","backend/src/modules/revenue/revenue-crud.service.ts","backend/src/modules/stores/store-config.service.ts","backend/src/modules/treasury/treasury-crud.service.ts","e2e/test-results/form-interactions-core-bus-0f529-d-to-Cash-F03-商机表单---编辑回填验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-0f529-d-to-Cash-F03-商机表单---编辑回填验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-184fa--to-Cash-F01-客户表单---创建成功全流程-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-184fa--to-Cash-F01-客户表单---创建成功全流程-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-4c4ce--to-Cash-F07-客户表单---手机号重复检测-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-4c4ce--to-Cash-F07-客户表单---手机号重复检测-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-64a51-to-Cash-F05-合同表单---复杂字段联动验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-64a51-to-Cash-F05-合同表单---复杂字段联动验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-80c59-d-to-Cash-F08-报价表单---实时计算验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-80c59-d-to-Cash-F08-报价表单---实时计算验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-90544-d-to-Cash-F02-线索表单---验证错误提示-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-90544-d-to-Cash-F02-线索表单---验证错误提示-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-a51f4-d-to-Cash-F04-报价表单---草稿自动恢复-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-a51f4-d-to-Cash-F04-报价表单---草稿自动恢复-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-cf0d9--to-Cash-F06-订单表单---动态明细行验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-cf0d9--to-Cash-F06-订单表单---动态明细行验证-chromium/test-failed-1.png","e2e/tests/form-interactions/hr-forms.spec.ts","e2e/tests/form-interactions/large-data-performance.spec.ts","e2e/tests/form-interactions/service-center-forms.spec.ts","e2e/tests/form-interactions/supply-chain-forms.spec.ts","frontend/src/views/cpq/components/PoliciesTab.vue","frontend/src/views/marketing-calendar/components/CalendarAgendaView.vue","frontend/src/views/marketing-calendar/components/CalendarMonthView.vue","frontend/src/views/marketing-calendar/components/CalendarWeekView.vue","frontend/src/views/marketing-calendar/components/EventDetailDrawer.vue","frontend/src/views/marketing-calendar/components/EventFormDialog.vue","frontend/src/views/marketing-calendar/composables/useMarketingCalendar.ts","frontend/src/views/marketing-north-star/components/NorthStarAlerts.vue","frontend/src/views/marketing-north-star/components/NorthStarDashboard.vue","frontend/src/views/marketing-north-star/components/NorthStarMetricForm.vue","frontend/src/views/settings/components/integration/IntegrationAdPlatformsPanel.vue","frontend/src/views/settings/components/integration/IntegrationAiConfig.vue","frontend/src/views/settings/components/integration/IntegrationDingtalkConfig.vue","frontend/src/views/settings/components/integration/IntegrationEmailConfig.vue","frontend/src/views/settings/components/integration/IntegrationFeishuConfig.vue","frontend/src/views/settings/components/integration/IntegrationGroupbuyPanel.vue","frontend/src/views/settings/components/integration/IntegrationSmsConfig.vue","frontend/src/views/settings/components/integration/IntegrationWebhookConfig.vue","frontend/src/views/settings/components/integration/IntegrationWechatPublicConfig.vue","frontend/src/views/settings/components/integration/IntegrationWechatWorkConfig.vue","scripts/migrate-to-uselistpage.ts"],"removed":["e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png"],"modified":[".github/workflows/e2e-tests.yml","backend/.env.test","backend/prisma/schema/marketing.prisma","backend/prisma/schema/stores.prisma","backend/src/modules/ad-placement/placement.contract.routes.ts","backend/src/modules/ad-placement/placement.controller.ts","backend/src/modules/ad-placement/placement.service.ts","backend/src/modules/channels/channel.contract.routes.ts","backend/src/modules/dimension-transform/dimension-transform.controller.ts","backend/src/modules/dimension-transform/dimension-transform.routes.ts","backend/src/modules/dimension-transform/dimension-transform.service.ts","backend/src/modules/expense/expense.contract.routes.ts","backend/src/modules/expense/expense.controller.ts","backend/src/modules/expense/expense.routes.ts","backend/src/modules/faults/fault.contract.routes.ts","backend/src/modules/faults/fault.service.ts","backend/src/modules/geo-keywords/geo-keyword.contract.routes.ts","backend/src/modules/geo-keywords/geo-keyword.controller.ts","backend/src/modules/geo-keywords/geo-keyword.routes.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/geo-keywords/geo-keyword.service.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.contract.routes.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.controller.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.routes.ts","backend/src/modules/journey-orchestration/journey-orchestration.service.ts","backend/src/modules/knowledge/knowledge.routes.ts","backend/src/modules/livestream-groupbuy/livestream-groupbuy-conversion.contract.routes.ts","backend/src/modules/livestream-groupbuy/livestream-groupbuy-conversion.controller.ts","backend/src/modules/livestream-groupbuy/livestream-groupbuy-conversion.routes.ts","backend/src/modules/marketing-matrix/matrix.contract.routes.ts","backend/src/modules/marketing-matrix/matrix.controller.ts","backend/src/modules/mdm/mdm.service.ts","backend/src/modules/orders/order.controller.ts","backend/src/modules/process/process.routes.ts","backend/src/modules/process/process.schema.ts","backend/src/modules/process/process.service.test.ts","backend/src/modules/process/process.service.ts","backend/src/modules/realtime/realtime.contract.routes.ts","backend/src/modules/realtime/realtime.controller.ts","backend/src/modules/realtime/realtime.routes.ts","backend/src/modules/revenue/revenue.contract.routes.ts","backend/src/modules/revenue/revenue.controller.ts","backend/src/modules/revenue/revenue.routes.ts","backend/src/modules/search/search.controller.ts","backend/src/modules/search/search.routes.ts","backend/src/modules/search/search.schema.ts","backend/src/modules/search/search.service.ts","backend/src/modules/social-analytics/social-analytics.service.ts","backend/src/modules/stores/store.contract.routes.ts","backend/src/modules/stores/store.controller.ts","backend/src/modules/stores/store.routes.ts","backend/src/modules/stores/store.schema.ts","backend/src/modules/treasury/treasury.contract.routes.ts","backend/src/modules/treasury/treasury.controller.ts","backend/src/modules/treasury/treasury.routes.ts","e2e/.auth/admin.json","e2e/helpers/form-test-helpers.ts","e2e/package.json","e2e/test-results/.last-run.json","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/api/modules/im-channels.ts","frontend/src/composables/useDashboardRealtime.ts","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-audiences/Index.vue","frontend/src/views/ad-biddings/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-reports/Index.vue","frontend/src/views/alliance-analytics/Index.vue","frontend/src/views/alliance-merchants/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/alliance-promotions/Index.vue","frontend/src/views/alliance-referrals/Index.vue","frontend/src/views/alliance-settlements/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-drafts/Index.vue","frontend/src/views/campaign-use-case-templates/Index.vue","frontend/src/views/channel-integrations/Index.vue","frontend/src/views/cohort-analysis/Index.vue","frontend/src/views/community-activities/Index.vue","frontend/src/views/community-analytics/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-levels/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-categories/Index.vue","frontend/src/views/content-copyright/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Index.vue","frontend/src/views/content-review/Index.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cpq/composables/useCpqCommon.ts","frontend/src/views/crm-activities/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Index.vue","frontend/src/views/customer-ltv/Index.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-marketing/Index.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/finance-os/ai/AutoCreditAdjustment.vue","frontend/src/views/finance-os/ai/CashForecastModel.vue","frontend/src/views/finance-os/ai/DefaultProbabilityModel.vue","frontend/src/views/finance-os/ai/ROIEvaluation.vue","frontend/src/views/geo-fences/Index.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-analytics/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/im-channels/Index.vue","frontend/src/views/invoice-requests/Index.vue","frontend/src/views/invoice-verification/Index.vue","frontend/src/views/journey-orchestration/Index.vue","frontend/src/views/knowledge-candidates/Index.vue","frontend/src/views/knowledge-capture/Index.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/landing-pages/Index.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-pool/Index.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/livestream-analytics/Index.vue","frontend/src/views/livestream-interactions/Index.vue","frontend/src/views/livestream-products/Index.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/location-assessments/Index.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-calendar/Index.vue","frontend/src/views/marketing-content/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-forms/Index.vue","frontend/src/views/marketing-matrix/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/predictive-analytics/Index.vue","frontend/src/views/product-categories/Index.vue","frontend/src/views/projects/Index.vue","frontend/src/views/purchase-orders/Index.vue","frontend/src/views/realtime-trigger/Index.vue","frontend/src/views/redemptions/Index.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/satisfaction/Index.vue","frontend/src/views/settings/IntegrationServices.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-followers/Index.vue","frontend/src/views/social-hot-topics/Index.vue","frontend/src/views/social-interactions/Index.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/store-inventory/Index.vue","frontend/src/views/store-settlements/Index.vue","frontend/src/views/store-staff/Index.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-center/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/ticket-workflows/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/video-calls/Index.vue","frontend/src/views/video-content/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/approval-governance.latest.json","reports/approval-governance.latest.md","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md","reports/outbox-atomicity-audit.latest.json"]},"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":5212729,"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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-13T00:24:48+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"}}...
|
schedule
|
4
|
4
|
1776168950
|
1776168951
|
0
|
1776168950
|
1776168951
|
|
|
0
|
Edit
Delete
|
|
14168
|
feat: 同步最新代码更改,包括后端API、前端组件、测试和报告更新
|
6
|
5
|
health-check.yml
|
14090
|
-2
|
268
|
refs/heads/main
|
d2c68b13960de626f7a8d496bf1977d263eb7931
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"98cc8da660b8d4dba9887432490471d976c03f5f","after":"d2c68b13960de626f7a8d496bf1977d263eb7931","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/98cc8da660b8d4dba9887432490471d976c03f5f...d2c68b13960de626f7a8d496bf1977d263eb7931","commits":[{"id":"d2c68b13960de626f7a8d496bf1977d263eb7931","message":"feat: 同步最新代码更改,包括后端API、前端组件、测试和报告更新\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/d2c68b13960de626f7a8d496bf1977d263eb7931","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T15:39:52+08:00","added":["backend/prisma/migrations/20260413_add_journey_orchestration_and_store_configs/migration.sql","backend/src/modules/journey-orchestration/journey-orchestration.contract.routes.ts","backend/src/modules/process/process.controller.ts","backend/src/modules/process/process.types.ts","backend/src/modules/revenue/revenue-crud.service.ts","backend/src/modules/stores/store-config.service.ts","backend/src/modules/treasury/treasury-crud.service.ts","e2e/test-results/form-interactions-core-bus-0f529-d-to-Cash-F03-商机表单---编辑回填验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-0f529-d-to-Cash-F03-商机表单---编辑回填验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-184fa--to-Cash-F01-客户表单---创建成功全流程-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-184fa--to-Cash-F01-客户表单---创建成功全流程-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-4c4ce--to-Cash-F07-客户表单---手机号重复检测-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-4c4ce--to-Cash-F07-客户表单---手机号重复检测-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-64a51-to-Cash-F05-合同表单---复杂字段联动验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-64a51-to-Cash-F05-合同表单---复杂字段联动验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-80c59-d-to-Cash-F08-报价表单---实时计算验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-80c59-d-to-Cash-F08-报价表单---实时计算验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-90544-d-to-Cash-F02-线索表单---验证错误提示-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-90544-d-to-Cash-F02-线索表单---验证错误提示-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-a51f4-d-to-Cash-F04-报价表单---草稿自动恢复-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-a51f4-d-to-Cash-F04-报价表单---草稿自动恢复-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-cf0d9--to-Cash-F06-订单表单---动态明细行验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-cf0d9--to-Cash-F06-订单表单---动态明细行验证-chromium/test-failed-1.png","e2e/tests/form-interactions/hr-forms.spec.ts","e2e/tests/form-interactions/large-data-performance.spec.ts","e2e/tests/form-interactions/service-center-forms.spec.ts","e2e/tests/form-interactions/supply-chain-forms.spec.ts","frontend/src/views/cpq/components/PoliciesTab.vue","frontend/src/views/marketing-calendar/components/CalendarAgendaView.vue","frontend/src/views/marketing-calendar/components/CalendarMonthView.vue","frontend/src/views/marketing-calendar/components/CalendarWeekView.vue","frontend/src/views/marketing-calendar/components/EventDetailDrawer.vue","frontend/src/views/marketing-calendar/components/EventFormDialog.vue","frontend/src/views/marketing-calendar/composables/useMarketingCalendar.ts","frontend/src/views/marketing-north-star/components/NorthStarAlerts.vue","frontend/src/views/marketing-north-star/components/NorthStarDashboard.vue","frontend/src/views/marketing-north-star/components/NorthStarMetricForm.vue","frontend/src/views/settings/components/integration/IntegrationAdPlatformsPanel.vue","frontend/src/views/settings/components/integration/IntegrationAiConfig.vue","frontend/src/views/settings/components/integration/IntegrationDingtalkConfig.vue","frontend/src/views/settings/components/integration/IntegrationEmailConfig.vue","frontend/src/views/settings/components/integration/IntegrationFeishuConfig.vue","frontend/src/views/settings/components/integration/IntegrationGroupbuyPanel.vue","frontend/src/views/settings/components/integration/IntegrationSmsConfig.vue","frontend/src/views/settings/components/integration/IntegrationWebhookConfig.vue","frontend/src/views/settings/components/integration/IntegrationWechatPublicConfig.vue","frontend/src/views/settings/components/integration/IntegrationWechatWorkConfig.vue","scripts/migrate-to-uselistpage.ts"],"removed":["e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png"],"modified":[".github/workflows/e2e-tests.yml","backend/.env.test","backend/prisma/schema/marketing.prisma","backend/prisma/schema/stores.prisma","backend/src/modules/ad-placement/placement.contract.routes.ts","backend/src/modules/ad-placement/placement.controller.ts","backend/src/modules/ad-placement/placement.service.ts","backend/src/modules/channels/channel.contract.routes.ts","backend/src/modules/dimension-transform/dimension-transform.controller.ts","backend/src/modules/dimension-transform/dimension-transform.routes.ts","backend/src/modules/dimension-transform/dimension-transform.service.ts","backend/src/modules/expense/expense.contract.routes.ts","backend/src/modules/expense/expense.controller.ts","backend/src/modules/expense/expense.routes.ts","backend/src/modules/faults/fault.contract.routes.ts","backend/src/modules/faults/fault.service.ts","backend/src/modules/geo-keywords/geo-keyword.contract.routes.ts","backend/src/modules/geo-keywords/geo-keyword.controller.ts","backend/src/modules/geo-keywords/geo-keyword.routes.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/geo-keywords/geo-keyword.service.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.contract.routes.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.controller.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.routes.ts","backend/src/modules/journey-orchestration/journey-orchestration.service.ts","backend/src/modules/knowledge/knowledge.routes.ts","backend/src/modules/livestream-groupbuy/livestream-groupbuy-conversion.contract.routes.ts","backend/src/modules/livestream-groupbuy/livestream-groupbuy-conversion.controller.ts","backend/src/modules/livestream-groupbuy/livestream-groupbuy-conversion.routes.ts","backend/src/modules/marketing-matrix/matrix.contract.routes.ts","backend/src/modules/marketing-matrix/matrix.controller.ts","backend/src/modules/mdm/mdm.service.ts","backend/src/modules/orders/order.controller.ts","backend/src/modules/process/process.routes.ts","backend/src/modules/process/process.schema.ts","backend/src/modules/process/process.service.test.ts","backend/src/modules/process/process.service.ts","backend/src/modules/realtime/realtime.contract.routes.ts","backend/src/modules/realtime/realtime.controller.ts","backend/src/modules/realtime/realtime.routes.ts","backend/src/modules/revenue/revenue.contract.routes.ts","backend/src/modules/revenue/revenue.controller.ts","backend/src/modules/revenue/revenue.routes.ts","backend/src/modules/search/search.controller.ts","backend/src/modules/search/search.routes.ts","backend/src/modules/search/search.schema.ts","backend/src/modules/search/search.service.ts","backend/src/modules/social-analytics/social-analytics.service.ts","backend/src/modules/stores/store.contract.routes.ts","backend/src/modules/stores/store.controller.ts","backend/src/modules/stores/store.routes.ts","backend/src/modules/stores/store.schema.ts","backend/src/modules/treasury/treasury.contract.routes.ts","backend/src/modules/treasury/treasury.controller.ts","backend/src/modules/treasury/treasury.routes.ts","e2e/.auth/admin.json","e2e/helpers/form-test-helpers.ts","e2e/package.json","e2e/test-results/.last-run.json","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/api/modules/im-channels.ts","frontend/src/composables/useDashboardRealtime.ts","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-audiences/Index.vue","frontend/src/views/ad-biddings/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-reports/Index.vue","frontend/src/views/alliance-analytics/Index.vue","frontend/src/views/alliance-merchants/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/alliance-promotions/Index.vue","frontend/src/views/alliance-referrals/Index.vue","frontend/src/views/alliance-settlements/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-drafts/Index.vue","frontend/src/views/campaign-use-case-templates/Index.vue","frontend/src/views/channel-integrations/Index.vue","frontend/src/views/cohort-analysis/Index.vue","frontend/src/views/community-activities/Index.vue","frontend/src/views/community-analytics/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-levels/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-categories/Index.vue","frontend/src/views/content-copyright/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Index.vue","frontend/src/views/content-review/Index.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cpq/composables/useCpqCommon.ts","frontend/src/views/crm-activities/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Index.vue","frontend/src/views/customer-ltv/Index.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-marketing/Index.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/finance-os/ai/AutoCreditAdjustment.vue","frontend/src/views/finance-os/ai/CashForecastModel.vue","frontend/src/views/finance-os/ai/DefaultProbabilityModel.vue","frontend/src/views/finance-os/ai/ROIEvaluation.vue","frontend/src/views/geo-fences/Index.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-analytics/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/im-channels/Index.vue","frontend/src/views/invoice-requests/Index.vue","frontend/src/views/invoice-verification/Index.vue","frontend/src/views/journey-orchestration/Index.vue","frontend/src/views/knowledge-candidates/Index.vue","frontend/src/views/knowledge-capture/Index.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/landing-pages/Index.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-pool/Index.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/livestream-analytics/Index.vue","frontend/src/views/livestream-interactions/Index.vue","frontend/src/views/livestream-products/Index.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/location-assessments/Index.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-calendar/Index.vue","frontend/src/views/marketing-content/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-forms/Index.vue","frontend/src/views/marketing-matrix/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/predictive-analytics/Index.vue","frontend/src/views/product-categories/Index.vue","frontend/src/views/projects/Index.vue","frontend/src/views/purchase-orders/Index.vue","frontend/src/views/realtime-trigger/Index.vue","frontend/src/views/redemptions/Index.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/satisfaction/Index.vue","frontend/src/views/settings/IntegrationServices.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-followers/Index.vue","frontend/src/views/social-hot-topics/Index.vue","frontend/src/views/social-interactions/Index.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/store-inventory/Index.vue","frontend/src/views/store-settlements/Index.vue","frontend/src/views/store-staff/Index.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-center/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/ticket-workflows/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/video-calls/Index.vue","frontend/src/views/video-content/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/approval-governance.latest.json","reports/approval-governance.latest.md","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md","reports/outbox-atomicity-audit.latest.json"]}],"total_commits":0,"head_commit":{"id":"d2c68b13960de626f7a8d496bf1977d263eb7931","message":"feat: 同步最新代码更改,包括后端API、前端组件、测试和报告更新\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/d2c68b13960de626f7a8d496bf1977d263eb7931","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T15:39:52+08:00","added":["backend/prisma/migrations/20260413_add_journey_orchestration_and_store_configs/migration.sql","backend/src/modules/journey-orchestration/journey-orchestration.contract.routes.ts","backend/src/modules/process/process.controller.ts","backend/src/modules/process/process.types.ts","backend/src/modules/revenue/revenue-crud.service.ts","backend/src/modules/stores/store-config.service.ts","backend/src/modules/treasury/treasury-crud.service.ts","e2e/test-results/form-interactions-core-bus-0f529-d-to-Cash-F03-商机表单---编辑回填验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-0f529-d-to-Cash-F03-商机表单---编辑回填验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-184fa--to-Cash-F01-客户表单---创建成功全流程-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-184fa--to-Cash-F01-客户表单---创建成功全流程-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-4c4ce--to-Cash-F07-客户表单---手机号重复检测-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-4c4ce--to-Cash-F07-客户表单---手机号重复检测-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-64a51-to-Cash-F05-合同表单---复杂字段联动验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-64a51-to-Cash-F05-合同表单---复杂字段联动验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-80c59-d-to-Cash-F08-报价表单---实时计算验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-80c59-d-to-Cash-F08-报价表单---实时计算验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-90544-d-to-Cash-F02-线索表单---验证错误提示-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-90544-d-to-Cash-F02-线索表单---验证错误提示-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-a51f4-d-to-Cash-F04-报价表单---草稿自动恢复-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-a51f4-d-to-Cash-F04-报价表单---草稿自动恢复-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-cf0d9--to-Cash-F06-订单表单---动态明细行验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-cf0d9--to-Cash-F06-订单表单---动态明细行验证-chromium/test-failed-1.png","e2e/tests/form-interactions/hr-forms.spec.ts","e2e/tests/form-interactions/large-data-performance.spec.ts","e2e/tests/form-interactions/service-center-forms.spec.ts","e2e/tests/form-interactions/supply-chain-forms.spec.ts","frontend/src/views/cpq/components/PoliciesTab.vue","frontend/src/views/marketing-calendar/components/CalendarAgendaView.vue","frontend/src/views/marketing-calendar/components/CalendarMonthView.vue","frontend/src/views/marketing-calendar/components/CalendarWeekView.vue","frontend/src/views/marketing-calendar/components/EventDetailDrawer.vue","frontend/src/views/marketing-calendar/components/EventFormDialog.vue","frontend/src/views/marketing-calendar/composables/useMarketingCalendar.ts","frontend/src/views/marketing-north-star/components/NorthStarAlerts.vue","frontend/src/views/marketing-north-star/components/NorthStarDashboard.vue","frontend/src/views/marketing-north-star/components/NorthStarMetricForm.vue","frontend/src/views/settings/components/integration/IntegrationAdPlatformsPanel.vue","frontend/src/views/settings/components/integration/IntegrationAiConfig.vue","frontend/src/views/settings/components/integration/IntegrationDingtalkConfig.vue","frontend/src/views/settings/components/integration/IntegrationEmailConfig.vue","frontend/src/views/settings/components/integration/IntegrationFeishuConfig.vue","frontend/src/views/settings/components/integration/IntegrationGroupbuyPanel.vue","frontend/src/views/settings/components/integration/IntegrationSmsConfig.vue","frontend/src/views/settings/components/integration/IntegrationWebhookConfig.vue","frontend/src/views/settings/components/integration/IntegrationWechatPublicConfig.vue","frontend/src/views/settings/components/integration/IntegrationWechatWorkConfig.vue","scripts/migrate-to-uselistpage.ts"],"removed":["e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png"],"modified":[".github/workflows/e2e-tests.yml","backend/.env.test","backend/prisma/schema/marketing.prisma","backend/prisma/schema/stores.prisma","backend/src/modules/ad-placement/placement.contract.routes.ts","backend/src/modules/ad-placement/placement.controller.ts","backend/src/modules/ad-placement/placement.service.ts","backend/src/modules/channels/channel.contract.routes.ts","backend/src/modules/dimension-transform/dimension-transform.controller.ts","backend/src/modules/dimension-transform/dimension-transform.routes.ts","backend/src/modules/dimension-transform/dimension-transform.service.ts","backend/src/modules/expense/expense.contract.routes.ts","backend/src/modules/expense/expense.controller.ts","backend/src/modules/expense/expense.routes.ts","backend/src/modules/faults/fault.contract.routes.ts","backend/src/modules/faults/fault.service.ts","backend/src/modules/geo-keywords/geo-keyword.contract.routes.ts","backend/src/modules/geo-keywords/geo-keyword.controller.ts","backend/src/modules/geo-keywords/geo-keyword.routes.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/geo-keywords/geo-keyword.service.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.contract.routes.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.controller.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.routes.ts","backend/src/modules/journey-orchestration/journey-orchestration.service.ts","backend/src/modules/knowledge/knowledge.routes.ts","backend/src/modules/livestream-groupbuy/livestream-groupbuy-conversion.contract.routes.ts","backend/src/modules/livestream-groupbuy/livestream-groupbuy-conversion.controller.ts","backend/src/modules/livestream-groupbuy/livestream-groupbuy-conversion.routes.ts","backend/src/modules/marketing-matrix/matrix.contract.routes.ts","backend/src/modules/marketing-matrix/matrix.controller.ts","backend/src/modules/mdm/mdm.service.ts","backend/src/modules/orders/order.controller.ts","backend/src/modules/process/process.routes.ts","backend/src/modules/process/process.schema.ts","backend/src/modules/process/process.service.test.ts","backend/src/modules/process/process.service.ts","backend/src/modules/realtime/realtime.contract.routes.ts","backend/src/modules/realtime/realtime.controller.ts","backend/src/modules/realtime/realtime.routes.ts","backend/src/modules/revenue/revenue.contract.routes.ts","backend/src/modules/revenue/revenue.controller.ts","backend/src/modules/revenue/revenue.routes.ts","backend/src/modules/search/search.controller.ts","backend/src/modules/search/search.routes.ts","backend/src/modules/search/search.schema.ts","backend/src/modules/search/search.service.ts","backend/src/modules/social-analytics/social-analytics.service.ts","backend/src/modules/stores/store.contract.routes.ts","backend/src/modules/stores/store.controller.ts","backend/src/modules/stores/store.routes.ts","backend/src/modules/stores/store.schema.ts","backend/src/modules/treasury/treasury.contract.routes.ts","backend/src/modules/treasury/treasury.controller.ts","backend/src/modules/treasury/treasury.routes.ts","e2e/.auth/admin.json","e2e/helpers/form-test-helpers.ts","e2e/package.json","e2e/test-results/.last-run.json","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/api/modules/im-channels.ts","frontend/src/composables/useDashboardRealtime.ts","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-audiences/Index.vue","frontend/src/views/ad-biddings/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-reports/Index.vue","frontend/src/views/alliance-analytics/Index.vue","frontend/src/views/alliance-merchants/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/alliance-promotions/Index.vue","frontend/src/views/alliance-referrals/Index.vue","frontend/src/views/alliance-settlements/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-drafts/Index.vue","frontend/src/views/campaign-use-case-templates/Index.vue","frontend/src/views/channel-integrations/Index.vue","frontend/src/views/cohort-analysis/Index.vue","frontend/src/views/community-activities/Index.vue","frontend/src/views/community-analytics/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-levels/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-categories/Index.vue","frontend/src/views/content-copyright/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Index.vue","frontend/src/views/content-review/Index.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cpq/composables/useCpqCommon.ts","frontend/src/views/crm-activities/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Index.vue","frontend/src/views/customer-ltv/Index.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-marketing/Index.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/finance-os/ai/AutoCreditAdjustment.vue","frontend/src/views/finance-os/ai/CashForecastModel.vue","frontend/src/views/finance-os/ai/DefaultProbabilityModel.vue","frontend/src/views/finance-os/ai/ROIEvaluation.vue","frontend/src/views/geo-fences/Index.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-analytics/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/im-channels/Index.vue","frontend/src/views/invoice-requests/Index.vue","frontend/src/views/invoice-verification/Index.vue","frontend/src/views/journey-orchestration/Index.vue","frontend/src/views/knowledge-candidates/Index.vue","frontend/src/views/knowledge-capture/Index.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/landing-pages/Index.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-pool/Index.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/livestream-analytics/Index.vue","frontend/src/views/livestream-interactions/Index.vue","frontend/src/views/livestream-products/Index.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/location-assessments/Index.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-calendar/Index.vue","frontend/src/views/marketing-content/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-forms/Index.vue","frontend/src/views/marketing-matrix/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/predictive-analytics/Index.vue","frontend/src/views/product-categories/Index.vue","frontend/src/views/projects/Index.vue","frontend/src/views/purchase-orders/Index.vue","frontend/src/views/realtime-trigger/Index.vue","frontend/src/views/redemptions/Index.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/satisfaction/Index.vue","frontend/src/views/settings/IntegrationServices.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-followers/Index.vue","frontend/src/views/social-hot-topics/Index.vue","frontend/src/views/social-interactions/Index.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/store-inventory/Index.vue","frontend/src/views/store-settlements/Index.vue","frontend/src/views/store-staff/Index.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-center/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/ticket-workflows/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/video-calls/Index.vue","frontend/src/views/video-content/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/approval-governance.latest.json","reports/approval-governance.latest.md","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md","reports/outbox-atomicity-audit.latest.json"]},"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":5212729,"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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-13T00:24:48+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"}}...
|
schedule
|
4
|
4
|
1776169250
|
1776169251
|
0
|
1776169250
|
1776169251
|
|
|
0
|
Edit
Delete
|
|
14169
|
feat: 同步最新代码更改,包括后端API、前端组件、测试和报告更新
|
6
|
5
|
health-check.yml
|
14091
|
-2
|
268
|
refs/heads/main
|
d2c68b13960de626f7a8d496bf1977d263eb7931
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"98cc8da660b8d4dba9887432490471d976c03f5f","after":"d2c68b13960de626f7a8d496bf1977d263eb7931","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/98cc8da660b8d4dba9887432490471d976c03f5f...d2c68b13960de626f7a8d496bf1977d263eb7931","commits":[{"id":"d2c68b13960de626f7a8d496bf1977d263eb7931","message":"feat: 同步最新代码更改,包括后端API、前端组件、测试和报告更新\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/d2c68b13960de626f7a8d496bf1977d263eb7931","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T15:39:52+08:00","added":["backend/prisma/migrations/20260413_add_journey_orchestration_and_store_configs/migration.sql","backend/src/modules/journey-orchestration/journey-orchestration.contract.routes.ts","backend/src/modules/process/process.controller.ts","backend/src/modules/process/process.types.ts","backend/src/modules/revenue/revenue-crud.service.ts","backend/src/modules/stores/store-config.service.ts","backend/src/modules/treasury/treasury-crud.service.ts","e2e/test-results/form-interactions-core-bus-0f529-d-to-Cash-F03-商机表单---编辑回填验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-0f529-d-to-Cash-F03-商机表单---编辑回填验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-184fa--to-Cash-F01-客户表单---创建成功全流程-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-184fa--to-Cash-F01-客户表单---创建成功全流程-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-4c4ce--to-Cash-F07-客户表单---手机号重复检测-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-4c4ce--to-Cash-F07-客户表单---手机号重复检测-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-64a51-to-Cash-F05-合同表单---复杂字段联动验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-64a51-to-Cash-F05-合同表单---复杂字段联动验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-80c59-d-to-Cash-F08-报价表单---实时计算验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-80c59-d-to-Cash-F08-报价表单---实时计算验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-90544-d-to-Cash-F02-线索表单---验证错误提示-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-90544-d-to-Cash-F02-线索表单---验证错误提示-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-a51f4-d-to-Cash-F04-报价表单---草稿自动恢复-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-a51f4-d-to-Cash-F04-报价表单---草稿自动恢复-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-cf0d9--to-Cash-F06-订单表单---动态明细行验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-cf0d9--to-Cash-F06-订单表单---动态明细行验证-chromium/test-failed-1.png","e2e/tests/form-interactions/hr-forms.spec.ts","e2e/tests/form-interactions/large-data-performance.spec.ts","e2e/tests/form-interactions/service-center-forms.spec.ts","e2e/tests/form-interactions/supply-chain-forms.spec.ts","frontend/src/views/cpq/components/PoliciesTab.vue","frontend/src/views/marketing-calendar/components/CalendarAgendaView.vue","frontend/src/views/marketing-calendar/components/CalendarMonthView.vue","frontend/src/views/marketing-calendar/components/CalendarWeekView.vue","frontend/src/views/marketing-calendar/components/EventDetailDrawer.vue","frontend/src/views/marketing-calendar/components/EventFormDialog.vue","frontend/src/views/marketing-calendar/composables/useMarketingCalendar.ts","frontend/src/views/marketing-north-star/components/NorthStarAlerts.vue","frontend/src/views/marketing-north-star/components/NorthStarDashboard.vue","frontend/src/views/marketing-north-star/components/NorthStarMetricForm.vue","frontend/src/views/settings/components/integration/IntegrationAdPlatformsPanel.vue","frontend/src/views/settings/components/integration/IntegrationAiConfig.vue","frontend/src/views/settings/components/integration/IntegrationDingtalkConfig.vue","frontend/src/views/settings/components/integration/IntegrationEmailConfig.vue","frontend/src/views/settings/components/integration/IntegrationFeishuConfig.vue","frontend/src/views/settings/components/integration/IntegrationGroupbuyPanel.vue","frontend/src/views/settings/components/integration/IntegrationSmsConfig.vue","frontend/src/views/settings/components/integration/IntegrationWebhookConfig.vue","frontend/src/views/settings/components/integration/IntegrationWechatPublicConfig.vue","frontend/src/views/settings/components/integration/IntegrationWechatWorkConfig.vue","scripts/migrate-to-uselistpage.ts"],"removed":["e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png"],"modified":[".github/workflows/e2e-tests.yml","backend/.env.test","backend/prisma/schema/marketing.prisma","backend/prisma/schema/stores.prisma","backend/src/modules/ad-placement/placement.contract.routes.ts","backend/src/modules/ad-placement/placement.controller.ts","backend/src/modules/ad-placement/placement.service.ts","backend/src/modules/channels/channel.contract.routes.ts","backend/src/modules/dimension-transform/dimension-transform.controller.ts","backend/src/modules/dimension-transform/dimension-transform.routes.ts","backend/src/modules/dimension-transform/dimension-transform.service.ts","backend/src/modules/expense/expense.contract.routes.ts","backend/src/modules/expense/expense.controller.ts","backend/src/modules/expense/expense.routes.ts","backend/src/modules/faults/fault.contract.routes.ts","backend/src/modules/faults/fault.service.ts","backend/src/modules/geo-keywords/geo-keyword.contract.routes.ts","backend/src/modules/geo-keywords/geo-keyword.controller.ts","backend/src/modules/geo-keywords/geo-keyword.routes.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/geo-keywords/geo-keyword.service.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.contract.routes.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.controller.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.routes.ts","backend/src/modules/journey-orchestration/journey-orchestration.service.ts","backend/src/modules/knowledge/knowledge.routes.ts","backend/src/modules/livestream-groupbuy/livestream-groupbuy-conversion.contract.routes.ts","backend/src/modules/livestream-groupbuy/livestream-groupbuy-conversion.controller.ts","backend/src/modules/livestream-groupbuy/livestream-groupbuy-conversion.routes.ts","backend/src/modules/marketing-matrix/matrix.contract.routes.ts","backend/src/modules/marketing-matrix/matrix.controller.ts","backend/src/modules/mdm/mdm.service.ts","backend/src/modules/orders/order.controller.ts","backend/src/modules/process/process.routes.ts","backend/src/modules/process/process.schema.ts","backend/src/modules/process/process.service.test.ts","backend/src/modules/process/process.service.ts","backend/src/modules/realtime/realtime.contract.routes.ts","backend/src/modules/realtime/realtime.controller.ts","backend/src/modules/realtime/realtime.routes.ts","backend/src/modules/revenue/revenue.contract.routes.ts","backend/src/modules/revenue/revenue.controller.ts","backend/src/modules/revenue/revenue.routes.ts","backend/src/modules/search/search.controller.ts","backend/src/modules/search/search.routes.ts","backend/src/modules/search/search.schema.ts","backend/src/modules/search/search.service.ts","backend/src/modules/social-analytics/social-analytics.service.ts","backend/src/modules/stores/store.contract.routes.ts","backend/src/modules/stores/store.controller.ts","backend/src/modules/stores/store.routes.ts","backend/src/modules/stores/store.schema.ts","backend/src/modules/treasury/treasury.contract.routes.ts","backend/src/modules/treasury/treasury.controller.ts","backend/src/modules/treasury/treasury.routes.ts","e2e/.auth/admin.json","e2e/helpers/form-test-helpers.ts","e2e/package.json","e2e/test-results/.last-run.json","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/api/modules/im-channels.ts","frontend/src/composables/useDashboardRealtime.ts","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-audiences/Index.vue","frontend/src/views/ad-biddings/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-reports/Index.vue","frontend/src/views/alliance-analytics/Index.vue","frontend/src/views/alliance-merchants/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/alliance-promotions/Index.vue","frontend/src/views/alliance-referrals/Index.vue","frontend/src/views/alliance-settlements/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-drafts/Index.vue","frontend/src/views/campaign-use-case-templates/Index.vue","frontend/src/views/channel-integrations/Index.vue","frontend/src/views/cohort-analysis/Index.vue","frontend/src/views/community-activities/Index.vue","frontend/src/views/community-analytics/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-levels/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-categories/Index.vue","frontend/src/views/content-copyright/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Index.vue","frontend/src/views/content-review/Index.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cpq/composables/useCpqCommon.ts","frontend/src/views/crm-activities/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Index.vue","frontend/src/views/customer-ltv/Index.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-marketing/Index.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/finance-os/ai/AutoCreditAdjustment.vue","frontend/src/views/finance-os/ai/CashForecastModel.vue","frontend/src/views/finance-os/ai/DefaultProbabilityModel.vue","frontend/src/views/finance-os/ai/ROIEvaluation.vue","frontend/src/views/geo-fences/Index.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-analytics/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/im-channels/Index.vue","frontend/src/views/invoice-requests/Index.vue","frontend/src/views/invoice-verification/Index.vue","frontend/src/views/journey-orchestration/Index.vue","frontend/src/views/knowledge-candidates/Index.vue","frontend/src/views/knowledge-capture/Index.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/landing-pages/Index.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-pool/Index.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/livestream-analytics/Index.vue","frontend/src/views/livestream-interactions/Index.vue","frontend/src/views/livestream-products/Index.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/location-assessments/Index.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-calendar/Index.vue","frontend/src/views/marketing-content/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-forms/Index.vue","frontend/src/views/marketing-matrix/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/predictive-analytics/Index.vue","frontend/src/views/product-categories/Index.vue","frontend/src/views/projects/Index.vue","frontend/src/views/purchase-orders/Index.vue","frontend/src/views/realtime-trigger/Index.vue","frontend/src/views/redemptions/Index.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/satisfaction/Index.vue","frontend/src/views/settings/IntegrationServices.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-followers/Index.vue","frontend/src/views/social-hot-topics/Index.vue","frontend/src/views/social-interactions/Index.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/store-inventory/Index.vue","frontend/src/views/store-settlements/Index.vue","frontend/src/views/store-staff/Index.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-center/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/ticket-workflows/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/video-calls/Index.vue","frontend/src/views/video-content/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/approval-governance.latest.json","reports/approval-governance.latest.md","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md","reports/outbox-atomicity-audit.latest.json"]}],"total_commits":0,"head_commit":{"id":"d2c68b13960de626f7a8d496bf1977d263eb7931","message":"feat: 同步最新代码更改,包括后端API、前端组件、测试和报告更新\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/d2c68b13960de626f7a8d496bf1977d263eb7931","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T15:39:52+08:00","added":["backend/prisma/migrations/20260413_add_journey_orchestration_and_store_configs/migration.sql","backend/src/modules/journey-orchestration/journey-orchestration.contract.routes.ts","backend/src/modules/process/process.controller.ts","backend/src/modules/process/process.types.ts","backend/src/modules/revenue/revenue-crud.service.ts","backend/src/modules/stores/store-config.service.ts","backend/src/modules/treasury/treasury-crud.service.ts","e2e/test-results/form-interactions-core-bus-0f529-d-to-Cash-F03-商机表单---编辑回填验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-0f529-d-to-Cash-F03-商机表单---编辑回填验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-184fa--to-Cash-F01-客户表单---创建成功全流程-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-184fa--to-Cash-F01-客户表单---创建成功全流程-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-4c4ce--to-Cash-F07-客户表单---手机号重复检测-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-4c4ce--to-Cash-F07-客户表单---手机号重复检测-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-64a51-to-Cash-F05-合同表单---复杂字段联动验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-64a51-to-Cash-F05-合同表单---复杂字段联动验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-80c59-d-to-Cash-F08-报价表单---实时计算验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-80c59-d-to-Cash-F08-报价表单---实时计算验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-90544-d-to-Cash-F02-线索表单---验证错误提示-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-90544-d-to-Cash-F02-线索表单---验证错误提示-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-a51f4-d-to-Cash-F04-报价表单---草稿自动恢复-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-a51f4-d-to-Cash-F04-报价表单---草稿自动恢复-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-cf0d9--to-Cash-F06-订单表单---动态明细行验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-cf0d9--to-Cash-F06-订单表单---动态明细行验证-chromium/test-failed-1.png","e2e/tests/form-interactions/hr-forms.spec.ts","e2e/tests/form-interactions/large-data-performance.spec.ts","e2e/tests/form-interactions/service-center-forms.spec.ts","e2e/tests/form-interactions/supply-chain-forms.spec.ts","frontend/src/views/cpq/components/PoliciesTab.vue","frontend/src/views/marketing-calendar/components/CalendarAgendaView.vue","frontend/src/views/marketing-calendar/components/CalendarMonthView.vue","frontend/src/views/marketing-calendar/components/CalendarWeekView.vue","frontend/src/views/marketing-calendar/components/EventDetailDrawer.vue","frontend/src/views/marketing-calendar/components/EventFormDialog.vue","frontend/src/views/marketing-calendar/composables/useMarketingCalendar.ts","frontend/src/views/marketing-north-star/components/NorthStarAlerts.vue","frontend/src/views/marketing-north-star/components/NorthStarDashboard.vue","frontend/src/views/marketing-north-star/components/NorthStarMetricForm.vue","frontend/src/views/settings/components/integration/IntegrationAdPlatformsPanel.vue","frontend/src/views/settings/components/integration/IntegrationAiConfig.vue","frontend/src/views/settings/components/integration/IntegrationDingtalkConfig.vue","frontend/src/views/settings/components/integration/IntegrationEmailConfig.vue","frontend/src/views/settings/components/integration/IntegrationFeishuConfig.vue","frontend/src/views/settings/components/integration/IntegrationGroupbuyPanel.vue","frontend/src/views/settings/components/integration/IntegrationSmsConfig.vue","frontend/src/views/settings/components/integration/IntegrationWebhookConfig.vue","frontend/src/views/settings/components/integration/IntegrationWechatPublicConfig.vue","frontend/src/views/settings/components/integration/IntegrationWechatWorkConfig.vue","scripts/migrate-to-uselistpage.ts"],"removed":["e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png"],"modified":[".github/workflows/e2e-tests.yml","backend/.env.test","backend/prisma/schema/marketing.prisma","backend/prisma/schema/stores.prisma","backend/src/modules/ad-placement/placement.contract.routes.ts","backend/src/modules/ad-placement/placement.controller.ts","backend/src/modules/ad-placement/placement.service.ts","backend/src/modules/channels/channel.contract.routes.ts","backend/src/modules/dimension-transform/dimension-transform.controller.ts","backend/src/modules/dimension-transform/dimension-transform.routes.ts","backend/src/modules/dimension-transform/dimension-transform.service.ts","backend/src/modules/expense/expense.contract.routes.ts","backend/src/modules/expense/expense.controller.ts","backend/src/modules/expense/expense.routes.ts","backend/src/modules/faults/fault.contract.routes.ts","backend/src/modules/faults/fault.service.ts","backend/src/modules/geo-keywords/geo-keyword.contract.routes.ts","backend/src/modules/geo-keywords/geo-keyword.controller.ts","backend/src/modules/geo-keywords/geo-keyword.routes.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/geo-keywords/geo-keyword.service.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.contract.routes.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.controller.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.routes.ts","backend/src/modules/journey-orchestration/journey-orchestration.service.ts","backend/src/modules/knowledge/knowledge.routes.ts","backend/src/modules/livestream-groupbuy/livestream-groupbuy-conversion.contract.routes.ts","backend/src/modules/livestream-groupbuy/livestream-groupbuy-conversion.controller.ts","backend/src/modules/livestream-groupbuy/livestream-groupbuy-conversion.routes.ts","backend/src/modules/marketing-matrix/matrix.contract.routes.ts","backend/src/modules/marketing-matrix/matrix.controller.ts","backend/src/modules/mdm/mdm.service.ts","backend/src/modules/orders/order.controller.ts","backend/src/modules/process/process.routes.ts","backend/src/modules/process/process.schema.ts","backend/src/modules/process/process.service.test.ts","backend/src/modules/process/process.service.ts","backend/src/modules/realtime/realtime.contract.routes.ts","backend/src/modules/realtime/realtime.controller.ts","backend/src/modules/realtime/realtime.routes.ts","backend/src/modules/revenue/revenue.contract.routes.ts","backend/src/modules/revenue/revenue.controller.ts","backend/src/modules/revenue/revenue.routes.ts","backend/src/modules/search/search.controller.ts","backend/src/modules/search/search.routes.ts","backend/src/modules/search/search.schema.ts","backend/src/modules/search/search.service.ts","backend/src/modules/social-analytics/social-analytics.service.ts","backend/src/modules/stores/store.contract.routes.ts","backend/src/modules/stores/store.controller.ts","backend/src/modules/stores/store.routes.ts","backend/src/modules/stores/store.schema.ts","backend/src/modules/treasury/treasury.contract.routes.ts","backend/src/modules/treasury/treasury.controller.ts","backend/src/modules/treasury/treasury.routes.ts","e2e/.auth/admin.json","e2e/helpers/form-test-helpers.ts","e2e/package.json","e2e/test-results/.last-run.json","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/api/modules/im-channels.ts","frontend/src/composables/useDashboardRealtime.ts","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-audiences/Index.vue","frontend/src/views/ad-biddings/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-reports/Index.vue","frontend/src/views/alliance-analytics/Index.vue","frontend/src/views/alliance-merchants/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/alliance-promotions/Index.vue","frontend/src/views/alliance-referrals/Index.vue","frontend/src/views/alliance-settlements/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-drafts/Index.vue","frontend/src/views/campaign-use-case-templates/Index.vue","frontend/src/views/channel-integrations/Index.vue","frontend/src/views/cohort-analysis/Index.vue","frontend/src/views/community-activities/Index.vue","frontend/src/views/community-analytics/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-levels/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-categories/Index.vue","frontend/src/views/content-copyright/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Index.vue","frontend/src/views/content-review/Index.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cpq/composables/useCpqCommon.ts","frontend/src/views/crm-activities/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Index.vue","frontend/src/views/customer-ltv/Index.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-marketing/Index.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/finance-os/ai/AutoCreditAdjustment.vue","frontend/src/views/finance-os/ai/CashForecastModel.vue","frontend/src/views/finance-os/ai/DefaultProbabilityModel.vue","frontend/src/views/finance-os/ai/ROIEvaluation.vue","frontend/src/views/geo-fences/Index.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-analytics/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/im-channels/Index.vue","frontend/src/views/invoice-requests/Index.vue","frontend/src/views/invoice-verification/Index.vue","frontend/src/views/journey-orchestration/Index.vue","frontend/src/views/knowledge-candidates/Index.vue","frontend/src/views/knowledge-capture/Index.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/landing-pages/Index.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-pool/Index.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/livestream-analytics/Index.vue","frontend/src/views/livestream-interactions/Index.vue","frontend/src/views/livestream-products/Index.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/location-assessments/Index.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-calendar/Index.vue","frontend/src/views/marketing-content/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-forms/Index.vue","frontend/src/views/marketing-matrix/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/predictive-analytics/Index.vue","frontend/src/views/product-categories/Index.vue","frontend/src/views/projects/Index.vue","frontend/src/views/purchase-orders/Index.vue","frontend/src/views/realtime-trigger/Index.vue","frontend/src/views/redemptions/Index.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/satisfaction/Index.vue","frontend/src/views/settings/IntegrationServices.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-followers/Index.vue","frontend/src/views/social-hot-topics/Index.vue","frontend/src/views/social-interactions/Index.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/store-inventory/Index.vue","frontend/src/views/store-settlements/Index.vue","frontend/src/views/store-staff/Index.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-center/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/ticket-workflows/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/video-calls/Index.vue","frontend/src/views/video-content/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/approval-governance.latest.json","reports/approval-governance.latest.md","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md","reports/outbox-atomicity-audit.latest.json"]},"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":5212729,"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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-13T00:24:48+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"}}...
|
schedule
|
4
|
4
|
1776169550
|
1776169551
|
0
|
1776169550
|
1776169551
|
|
|
0
|
Edit
Delete
|
|
14170
|
feat: 同步最新代码更改,包括后端API、前端组件、测试和报告更新
|
6
|
5
|
health-check.yml
|
14092
|
-2
|
268
|
refs/heads/main
|
d2c68b13960de626f7a8d496bf1977d263eb7931
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"98cc8da660b8d4dba9887432490471d976c03f5f","after":"d2c68b13960de626f7a8d496bf1977d263eb7931","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/98cc8da660b8d4dba9887432490471d976c03f5f...d2c68b13960de626f7a8d496bf1977d263eb7931","commits":[{"id":"d2c68b13960de626f7a8d496bf1977d263eb7931","message":"feat: 同步最新代码更改,包括后端API、前端组件、测试和报告更新\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/d2c68b13960de626f7a8d496bf1977d263eb7931","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T15:39:52+08:00","added":["backend/prisma/migrations/20260413_add_journey_orchestration_and_store_configs/migration.sql","backend/src/modules/journey-orchestration/journey-orchestration.contract.routes.ts","backend/src/modules/process/process.controller.ts","backend/src/modules/process/process.types.ts","backend/src/modules/revenue/revenue-crud.service.ts","backend/src/modules/stores/store-config.service.ts","backend/src/modules/treasury/treasury-crud.service.ts","e2e/test-results/form-interactions-core-bus-0f529-d-to-Cash-F03-商机表单---编辑回填验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-0f529-d-to-Cash-F03-商机表单---编辑回填验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-184fa--to-Cash-F01-客户表单---创建成功全流程-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-184fa--to-Cash-F01-客户表单---创建成功全流程-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-4c4ce--to-Cash-F07-客户表单---手机号重复检测-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-4c4ce--to-Cash-F07-客户表单---手机号重复检测-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-64a51-to-Cash-F05-合同表单---复杂字段联动验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-64a51-to-Cash-F05-合同表单---复杂字段联动验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-80c59-d-to-Cash-F08-报价表单---实时计算验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-80c59-d-to-Cash-F08-报价表单---实时计算验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-90544-d-to-Cash-F02-线索表单---验证错误提示-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-90544-d-to-Cash-F02-线索表单---验证错误提示-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-a51f4-d-to-Cash-F04-报价表单---草稿自动恢复-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-a51f4-d-to-Cash-F04-报价表单---草稿自动恢复-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-cf0d9--to-Cash-F06-订单表单---动态明细行验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-cf0d9--to-Cash-F06-订单表单---动态明细行验证-chromium/test-failed-1.png","e2e/tests/form-interactions/hr-forms.spec.ts","e2e/tests/form-interactions/large-data-performance.spec.ts","e2e/tests/form-interactions/service-center-forms.spec.ts","e2e/tests/form-interactions/supply-chain-forms.spec.ts","frontend/src/views/cpq/components/PoliciesTab.vue","frontend/src/views/marketing-calendar/components/CalendarAgendaView.vue","frontend/src/views/marketing-calendar/components/CalendarMonthView.vue","frontend/src/views/marketing-calendar/components/CalendarWeekView.vue","frontend/src/views/marketing-calendar/components/EventDetailDrawer.vue","frontend/src/views/marketing-calendar/components/EventFormDialog.vue","frontend/src/views/marketing-calendar/composables/useMarketingCalendar.ts","frontend/src/views/marketing-north-star/components/NorthStarAlerts.vue","frontend/src/views/marketing-north-star/components/NorthStarDashboard.vue","frontend/src/views/marketing-north-star/components/NorthStarMetricForm.vue","frontend/src/views/settings/components/integration/IntegrationAdPlatformsPanel.vue","frontend/src/views/settings/components/integration/IntegrationAiConfig.vue","frontend/src/views/settings/components/integration/IntegrationDingtalkConfig.vue","frontend/src/views/settings/components/integration/IntegrationEmailConfig.vue","frontend/src/views/settings/components/integration/IntegrationFeishuConfig.vue","frontend/src/views/settings/components/integration/IntegrationGroupbuyPanel.vue","frontend/src/views/settings/components/integration/IntegrationSmsConfig.vue","frontend/src/views/settings/components/integration/IntegrationWebhookConfig.vue","frontend/src/views/settings/components/integration/IntegrationWechatPublicConfig.vue","frontend/src/views/settings/components/integration/IntegrationWechatWorkConfig.vue","scripts/migrate-to-uselistpage.ts"],"removed":["e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png"],"modified":[".github/workflows/e2e-tests.yml","backend/.env.test","backend/prisma/schema/marketing.prisma","backend/prisma/schema/stores.prisma","backend/src/modules/ad-placement/placement.contract.routes.ts","backend/src/modules/ad-placement/placement.controller.ts","backend/src/modules/ad-placement/placement.service.ts","backend/src/modules/channels/channel.contract.routes.ts","backend/src/modules/dimension-transform/dimension-transform.controller.ts","backend/src/modules/dimension-transform/dimension-transform.routes.ts","backend/src/modules/dimension-transform/dimension-transform.service.ts","backend/src/modules/expense/expense.contract.routes.ts","backend/src/modules/expense/expense.controller.ts","backend/src/modules/expense/expense.routes.ts","backend/src/modules/faults/fault.contract.routes.ts","backend/src/modules/faults/fault.service.ts","backend/src/modules/geo-keywords/geo-keyword.contract.routes.ts","backend/src/modules/geo-keywords/geo-keyword.controller.ts","backend/src/modules/geo-keywords/geo-keyword.routes.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/geo-keywords/geo-keyword.service.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.contract.routes.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.controller.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.routes.ts","backend/src/modules/journey-orchestration/journey-orchestration.service.ts","backend/src/modules/knowledge/knowledge.routes.ts","backend/src/modules/livestream-groupbuy/livestream-groupbuy-conversion.contract.routes.ts","backend/src/modules/livestream-groupbuy/livestream-groupbuy-conversion.controller.ts","backend/src/modules/livestream-groupbuy/livestream-groupbuy-conversion.routes.ts","backend/src/modules/marketing-matrix/matrix.contract.routes.ts","backend/src/modules/marketing-matrix/matrix.controller.ts","backend/src/modules/mdm/mdm.service.ts","backend/src/modules/orders/order.controller.ts","backend/src/modules/process/process.routes.ts","backend/src/modules/process/process.schema.ts","backend/src/modules/process/process.service.test.ts","backend/src/modules/process/process.service.ts","backend/src/modules/realtime/realtime.contract.routes.ts","backend/src/modules/realtime/realtime.controller.ts","backend/src/modules/realtime/realtime.routes.ts","backend/src/modules/revenue/revenue.contract.routes.ts","backend/src/modules/revenue/revenue.controller.ts","backend/src/modules/revenue/revenue.routes.ts","backend/src/modules/search/search.controller.ts","backend/src/modules/search/search.routes.ts","backend/src/modules/search/search.schema.ts","backend/src/modules/search/search.service.ts","backend/src/modules/social-analytics/social-analytics.service.ts","backend/src/modules/stores/store.contract.routes.ts","backend/src/modules/stores/store.controller.ts","backend/src/modules/stores/store.routes.ts","backend/src/modules/stores/store.schema.ts","backend/src/modules/treasury/treasury.contract.routes.ts","backend/src/modules/treasury/treasury.controller.ts","backend/src/modules/treasury/treasury.routes.ts","e2e/.auth/admin.json","e2e/helpers/form-test-helpers.ts","e2e/package.json","e2e/test-results/.last-run.json","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/api/modules/im-channels.ts","frontend/src/composables/useDashboardRealtime.ts","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-audiences/Index.vue","frontend/src/views/ad-biddings/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-reports/Index.vue","frontend/src/views/alliance-analytics/Index.vue","frontend/src/views/alliance-merchants/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/alliance-promotions/Index.vue","frontend/src/views/alliance-referrals/Index.vue","frontend/src/views/alliance-settlements/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-drafts/Index.vue","frontend/src/views/campaign-use-case-templates/Index.vue","frontend/src/views/channel-integrations/Index.vue","frontend/src/views/cohort-analysis/Index.vue","frontend/src/views/community-activities/Index.vue","frontend/src/views/community-analytics/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-levels/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-categories/Index.vue","frontend/src/views/content-copyright/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Index.vue","frontend/src/views/content-review/Index.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cpq/composables/useCpqCommon.ts","frontend/src/views/crm-activities/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Index.vue","frontend/src/views/customer-ltv/Index.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-marketing/Index.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/finance-os/ai/AutoCreditAdjustment.vue","frontend/src/views/finance-os/ai/CashForecastModel.vue","frontend/src/views/finance-os/ai/DefaultProbabilityModel.vue","frontend/src/views/finance-os/ai/ROIEvaluation.vue","frontend/src/views/geo-fences/Index.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-analytics/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/im-channels/Index.vue","frontend/src/views/invoice-requests/Index.vue","frontend/src/views/invoice-verification/Index.vue","frontend/src/views/journey-orchestration/Index.vue","frontend/src/views/knowledge-candidates/Index.vue","frontend/src/views/knowledge-capture/Index.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/landing-pages/Index.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-pool/Index.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/livestream-analytics/Index.vue","frontend/src/views/livestream-interactions/Index.vue","frontend/src/views/livestream-products/Index.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/location-assessments/Index.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-calendar/Index.vue","frontend/src/views/marketing-content/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-forms/Index.vue","frontend/src/views/marketing-matrix/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/predictive-analytics/Index.vue","frontend/src/views/product-categories/Index.vue","frontend/src/views/projects/Index.vue","frontend/src/views/purchase-orders/Index.vue","frontend/src/views/realtime-trigger/Index.vue","frontend/src/views/redemptions/Index.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/satisfaction/Index.vue","frontend/src/views/settings/IntegrationServices.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-followers/Index.vue","frontend/src/views/social-hot-topics/Index.vue","frontend/src/views/social-interactions/Index.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/store-inventory/Index.vue","frontend/src/views/store-settlements/Index.vue","frontend/src/views/store-staff/Index.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-center/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/ticket-workflows/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/video-calls/Index.vue","frontend/src/views/video-content/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/approval-governance.latest.json","reports/approval-governance.latest.md","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md","reports/outbox-atomicity-audit.latest.json"]}],"total_commits":0,"head_commit":{"id":"d2c68b13960de626f7a8d496bf1977d263eb7931","message":"feat: 同步最新代码更改,包括后端API、前端组件、测试和报告更新\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/d2c68b13960de626f7a8d496bf1977d263eb7931","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T15:39:52+08:00","added":["backend/prisma/migrations/20260413_add_journey_orchestration_and_store_configs/migration.sql","backend/src/modules/journey-orchestration/journey-orchestration.contract.routes.ts","backend/src/modules/process/process.controller.ts","backend/src/modules/process/process.types.ts","backend/src/modules/revenue/revenue-crud.service.ts","backend/src/modules/stores/store-config.service.ts","backend/src/modules/treasury/treasury-crud.service.ts","e2e/test-results/form-interactions-core-bus-0f529-d-to-Cash-F03-商机表单---编辑回填验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-0f529-d-to-Cash-F03-商机表单---编辑回填验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-184fa--to-Cash-F01-客户表单---创建成功全流程-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-184fa--to-Cash-F01-客户表单---创建成功全流程-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-4c4ce--to-Cash-F07-客户表单---手机号重复检测-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-4c4ce--to-Cash-F07-客户表单---手机号重复检测-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-64a51-to-Cash-F05-合同表单---复杂字段联动验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-64a51-to-Cash-F05-合同表单---复杂字段联动验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-80c59-d-to-Cash-F08-报价表单---实时计算验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-80c59-d-to-Cash-F08-报价表单---实时计算验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-90544-d-to-Cash-F02-线索表单---验证错误提示-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-90544-d-to-Cash-F02-线索表单---验证错误提示-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-a51f4-d-to-Cash-F04-报价表单---草稿自动恢复-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-a51f4-d-to-Cash-F04-报价表单---草稿自动恢复-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-cf0d9--to-Cash-F06-订单表单---动态明细行验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-cf0d9--to-Cash-F06-订单表单---动态明细行验证-chromium/test-failed-1.png","e2e/tests/form-interactions/hr-forms.spec.ts","e2e/tests/form-interactions/large-data-performance.spec.ts","e2e/tests/form-interactions/service-center-forms.spec.ts","e2e/tests/form-interactions/supply-chain-forms.spec.ts","frontend/src/views/cpq/components/PoliciesTab.vue","frontend/src/views/marketing-calendar/components/CalendarAgendaView.vue","frontend/src/views/marketing-calendar/components/CalendarMonthView.vue","frontend/src/views/marketing-calendar/components/CalendarWeekView.vue","frontend/src/views/marketing-calendar/components/EventDetailDrawer.vue","frontend/src/views/marketing-calendar/components/EventFormDialog.vue","frontend/src/views/marketing-calendar/composables/useMarketingCalendar.ts","frontend/src/views/marketing-north-star/components/NorthStarAlerts.vue","frontend/src/views/marketing-north-star/components/NorthStarDashboard.vue","frontend/src/views/marketing-north-star/components/NorthStarMetricForm.vue","frontend/src/views/settings/components/integration/IntegrationAdPlatformsPanel.vue","frontend/src/views/settings/components/integration/IntegrationAiConfig.vue","frontend/src/views/settings/components/integration/IntegrationDingtalkConfig.vue","frontend/src/views/settings/components/integration/IntegrationEmailConfig.vue","frontend/src/views/settings/components/integration/IntegrationFeishuConfig.vue","frontend/src/views/settings/components/integration/IntegrationGroupbuyPanel.vue","frontend/src/views/settings/components/integration/IntegrationSmsConfig.vue","frontend/src/views/settings/components/integration/IntegrationWebhookConfig.vue","frontend/src/views/settings/components/integration/IntegrationWechatPublicConfig.vue","frontend/src/views/settings/components/integration/IntegrationWechatWorkConfig.vue","scripts/migrate-to-uselistpage.ts"],"removed":["e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png"],"modified":[".github/workflows/e2e-tests.yml","backend/.env.test","backend/prisma/schema/marketing.prisma","backend/prisma/schema/stores.prisma","backend/src/modules/ad-placement/placement.contract.routes.ts","backend/src/modules/ad-placement/placement.controller.ts","backend/src/modules/ad-placement/placement.service.ts","backend/src/modules/channels/channel.contract.routes.ts","backend/src/modules/dimension-transform/dimension-transform.controller.ts","backend/src/modules/dimension-transform/dimension-transform.routes.ts","backend/src/modules/dimension-transform/dimension-transform.service.ts","backend/src/modules/expense/expense.contract.routes.ts","backend/src/modules/expense/expense.controller.ts","backend/src/modules/expense/expense.routes.ts","backend/src/modules/faults/fault.contract.routes.ts","backend/src/modules/faults/fault.service.ts","backend/src/modules/geo-keywords/geo-keyword.contract.routes.ts","backend/src/modules/geo-keywords/geo-keyword.controller.ts","backend/src/modules/geo-keywords/geo-keyword.routes.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/geo-keywords/geo-keyword.service.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.contract.routes.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.controller.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.routes.ts","backend/src/modules/journey-orchestration/journey-orchestration.service.ts","backend/src/modules/knowledge/knowledge.routes.ts","backend/src/modules/livestream-groupbuy/livestream-groupbuy-conversion.contract.routes.ts","backend/src/modules/livestream-groupbuy/livestream-groupbuy-conversion.controller.ts","backend/src/modules/livestream-groupbuy/livestream-groupbuy-conversion.routes.ts","backend/src/modules/marketing-matrix/matrix.contract.routes.ts","backend/src/modules/marketing-matrix/matrix.controller.ts","backend/src/modules/mdm/mdm.service.ts","backend/src/modules/orders/order.controller.ts","backend/src/modules/process/process.routes.ts","backend/src/modules/process/process.schema.ts","backend/src/modules/process/process.service.test.ts","backend/src/modules/process/process.service.ts","backend/src/modules/realtime/realtime.contract.routes.ts","backend/src/modules/realtime/realtime.controller.ts","backend/src/modules/realtime/realtime.routes.ts","backend/src/modules/revenue/revenue.contract.routes.ts","backend/src/modules/revenue/revenue.controller.ts","backend/src/modules/revenue/revenue.routes.ts","backend/src/modules/search/search.controller.ts","backend/src/modules/search/search.routes.ts","backend/src/modules/search/search.schema.ts","backend/src/modules/search/search.service.ts","backend/src/modules/social-analytics/social-analytics.service.ts","backend/src/modules/stores/store.contract.routes.ts","backend/src/modules/stores/store.controller.ts","backend/src/modules/stores/store.routes.ts","backend/src/modules/stores/store.schema.ts","backend/src/modules/treasury/treasury.contract.routes.ts","backend/src/modules/treasury/treasury.controller.ts","backend/src/modules/treasury/treasury.routes.ts","e2e/.auth/admin.json","e2e/helpers/form-test-helpers.ts","e2e/package.json","e2e/test-results/.last-run.json","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/api/modules/im-channels.ts","frontend/src/composables/useDashboardRealtime.ts","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-audiences/Index.vue","frontend/src/views/ad-biddings/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-reports/Index.vue","frontend/src/views/alliance-analytics/Index.vue","frontend/src/views/alliance-merchants/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/alliance-promotions/Index.vue","frontend/src/views/alliance-referrals/Index.vue","frontend/src/views/alliance-settlements/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-drafts/Index.vue","frontend/src/views/campaign-use-case-templates/Index.vue","frontend/src/views/channel-integrations/Index.vue","frontend/src/views/cohort-analysis/Index.vue","frontend/src/views/community-activities/Index.vue","frontend/src/views/community-analytics/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-levels/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-categories/Index.vue","frontend/src/views/content-copyright/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Index.vue","frontend/src/views/content-review/Index.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cpq/composables/useCpqCommon.ts","frontend/src/views/crm-activities/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Index.vue","frontend/src/views/customer-ltv/Index.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-marketing/Index.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/finance-os/ai/AutoCreditAdjustment.vue","frontend/src/views/finance-os/ai/CashForecastModel.vue","frontend/src/views/finance-os/ai/DefaultProbabilityModel.vue","frontend/src/views/finance-os/ai/ROIEvaluation.vue","frontend/src/views/geo-fences/Index.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-analytics/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/im-channels/Index.vue","frontend/src/views/invoice-requests/Index.vue","frontend/src/views/invoice-verification/Index.vue","frontend/src/views/journey-orchestration/Index.vue","frontend/src/views/knowledge-candidates/Index.vue","frontend/src/views/knowledge-capture/Index.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/landing-pages/Index.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-pool/Index.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/livestream-analytics/Index.vue","frontend/src/views/livestream-interactions/Index.vue","frontend/src/views/livestream-products/Index.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/location-assessments/Index.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-calendar/Index.vue","frontend/src/views/marketing-content/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-forms/Index.vue","frontend/src/views/marketing-matrix/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/predictive-analytics/Index.vue","frontend/src/views/product-categories/Index.vue","frontend/src/views/projects/Index.vue","frontend/src/views/purchase-orders/Index.vue","frontend/src/views/realtime-trigger/Index.vue","frontend/src/views/redemptions/Index.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/satisfaction/Index.vue","frontend/src/views/settings/IntegrationServices.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-followers/Index.vue","frontend/src/views/social-hot-topics/Index.vue","frontend/src/views/social-interactions/Index.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/store-inventory/Index.vue","frontend/src/views/store-settlements/Index.vue","frontend/src/views/store-staff/Index.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-center/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/ticket-workflows/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/video-calls/Index.vue","frontend/src/views/video-content/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/approval-governance.latest.json","reports/approval-governance.latest.md","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md","reports/outbox-atomicity-audit.latest.json"]},"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":5212729,"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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-13T00:24:48+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"}}...
|
schedule
|
4
|
4
|
1776169850
|
1776169851
|
0
|
1776169850
|
1776169851
|
|
|
0
|
Edit
Delete
|
|
10813
|
feat: 单机 Docker 生产部署 + 治理基线对齐 (#18)
|
6
|
5
|
e2e-tests.yml
|
10737
|
5
|
0
|
refs/heads/main
|
40dae5944f158653af8288a3f38b6c97e8ce9f06
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"624893ef324e57874ecb721dfd5539eb58d49b8e","after":"40dae5944f158653af8288a3f38b6c97e8ce9f06","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/624893ef324e57874ecb721dfd5539eb58d49b8e...40dae5944f158653af8288a3f38b6c97e8ce9f06","commits":[{"id":"40dae5944f158653af8288a3f38b6c97e8ce9f06","message":"feat: 单机 Docker 生产部署 + 治理基线对齐 (#18)\n\nfeat: 单机 Docker 生产部署 + 治理基线对齐","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/40dae5944f158653af8288a3f38b6c97e8ce9f06","author":{"name":"laoluojuhai","email":"158980461+laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"GitHub","email":"noreply@github.com","username":""},"verification":null,"timestamp":"2026-04-02T22:53:05+08:00","added":[".dockerignore.local","backend/Dockerfile.local","deploy/ssl/.gitkeep","docker-compose.local-prod.yml","frontend/Dockerfile.local"],"removed":[],"modified":[".gitignore","backend/package.json","backend/prisma/schema/_base.prisma","pnpm-lock.yaml"]},{"id":"588c47ea1f151f20d7e919cd87a5b07385b02022","message":"chore: 将 .env.production 加入 .gitignore 防止密钥泄露\n\nhttps://claude.ai/code/session_0178CfAo3ibEjsJuMqDCHR7X\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/588c47ea1f151f20d7e919cd87a5b07385b02022","author":{"name":"Claude","email":"noreply@anthropic.com","username":""},"committer":{"name":"Claude","email":"noreply@anthropic.com","username":""},"verification":null,"timestamp":"2026-04-02T14:47:51Z","added":[],"removed":[],"modified":[".gitignore"]},{"id":"3b9130b7e0040b49d5bc08307c9e050175994903","message":"feat: 单机 Docker 生产部署成功 - 全套本地构建方案\n\n新增本地部署配套文件:\n- docker-compose.local-prod.yml: 本地单机生产编排(pgvector + apache/kafka + minio + api + frontend + nginx)\n- backend/Dockerfile.local: 后端本地构建镜像(tsx 运行源码,避免路径别名问题)\n- frontend/Dockerfile.local: 前端本地构建镜像\n- .dockerignore.local: 本地构建专用忽略规则(保留 dist/node_modules)\n\n修改:\n- backend/prisma/schema/_base.prisma: 添加 binaryTargets linux-musl-openssl-3.0.x(Alpine 容器支持)\n\n部署验证通过:\n- PostgreSQL (pgvector:pg16) + Redis + Kafka + MinIO + API + Frontend + Nginx 全部在线\n- 135+ 数据库迁移全部应用成功\n- API /health 返回 {\"status\":\"ok\"}\n- Nginx HTTP→HTTPS 重定向正常,SSL 自签名证书工作\n\nhttps://claude.ai/code/session_0178CfAo3ibEjsJuMqDCHR7X\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/3b9130b7e0040b49d5bc08307c9e050175994903","author":{"name":"Claude","email":"noreply@anthropic.com","username":""},"committer":{"name":"Claude","email":"noreply@anthropic.com","username":""},"verification":null,"timestamp":"2026-04-02T14:46:47Z","added":[".dockerignore.local","backend/Dockerfile.local","docker-compose.local-prod.yml","frontend/Dockerfile.local"],"removed":[],"modified":["backend/prisma/schema/_base.prisma"]},{"id":"a5244b9fafc440f46250c8a1b72b7fea82d6d1ef","message":"chore: 部署准备 - 补齐 deploy/ssl 目录 + 修复 fast-xml-parser 缺失依赖\n\n- 创建 deploy/ssl/.gitkeep,确保 Nginx 生产环境 SSL 挂载目录存在\n- 添加 fast-xml-parser 依赖,修复微信企业号 webhook 模块的类型错误\n- 后端 tsc 0 错误 / 前端 vue-tsc 0 错误,类型检查双清零\n\nhttps://claude.ai/code/session_0178CfAo3ibEjsJuMqDCHR7X\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/a5244b9fafc440f46250c8a1b72b7fea82d6d1ef","author":{"name":"Claude","email":"noreply@anthropic.com","username":""},"committer":{"name":"Claude","email":"noreply@anthropic.com","username":""},"verification":null,"timestamp":"2026-04-02T14:04:59Z","added":["deploy/ssl/.gitkeep"],"removed":[],"modified":["backend/package.json","pnpm-lock.yaml"]}],"total_commits":0,"head_commit":{"id":"40dae5944f158653af8288a3f38b6c97e8ce9f06","message":"feat: 单机 Docker 生产部署 + 治理基线对齐 (#18)\n\nfeat: 单机 Docker 生产部署 + 治理基线对齐","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/40dae5944f158653af8288a3f38b6c97e8ce9f06","author":{"name":"laoluojuhai","email":"158980461+laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"GitHub","email":"noreply@github.com","username":""},"verification":null,"timestamp":"2026-04-02T22:53:05+08:00","added":[".dockerignore.local","backend/Dockerfile.local","deploy/ssl/.gitkeep","docker-compose.local-prod.yml","frontend/Dockerfile.local"],"removed":[],"modified":[".gitignore","backend/package.json","backend/prisma/schema/_base.prisma","pnpm-lock.yaml"]},"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":5204315,"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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-02T10:31:56+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"}}...
|
push
|
2
|
20
|
1775180411
|
1775181235
|
0
|
1775180411
|
1775184778
|
|
|
0
|
Edit
Delete
|
|
10814
|
feat: 单机 Docker 生产部署 + 治理基线对齐 (#18)
|
6
|
5
|
test-pipeline.yml
|
10738
|
5
|
0
|
refs/heads/main
|
40dae5944f158653af8288a3f38b6c97e8ce9f06
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"624893ef324e57874ecb721dfd5539eb58d49b8e","after":"40dae5944f158653af8288a3f38b6c97e8ce9f06","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/624893ef324e57874ecb721dfd5539eb58d49b8e...40dae5944f158653af8288a3f38b6c97e8ce9f06","commits":[{"id":"40dae5944f158653af8288a3f38b6c97e8ce9f06","message":"feat: 单机 Docker 生产部署 + 治理基线对齐 (#18)\n\nfeat: 单机 Docker 生产部署 + 治理基线对齐","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/40dae5944f158653af8288a3f38b6c97e8ce9f06","author":{"name":"laoluojuhai","email":"158980461+laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"GitHub","email":"noreply@github.com","username":""},"verification":null,"timestamp":"2026-04-02T22:53:05+08:00","added":[".dockerignore.local","backend/Dockerfile.local","deploy/ssl/.gitkeep","docker-compose.local-prod.yml","frontend/Dockerfile.local"],"removed":[],"modified":[".gitignore","backend/package.json","backend/prisma/schema/_base.prisma","pnpm-lock.yaml"]},{"id":"588c47ea1f151f20d7e919cd87a5b07385b02022","message":"chore: 将 .env.production 加入 .gitignore 防止密钥泄露\n\nhttps://claude.ai/code/session_0178CfAo3ibEjsJuMqDCHR7X\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/588c47ea1f151f20d7e919cd87a5b07385b02022","author":{"name":"Claude","email":"noreply@anthropic.com","username":""},"committer":{"name":"Claude","email":"noreply@anthropic.com","username":""},"verification":null,"timestamp":"2026-04-02T14:47:51Z","added":[],"removed":[],"modified":[".gitignore"]},{"id":"3b9130b7e0040b49d5bc08307c9e050175994903","message":"feat: 单机 Docker 生产部署成功 - 全套本地构建方案\n\n新增本地部署配套文件:\n- docker-compose.local-prod.yml: 本地单机生产编排(pgvector + apache/kafka + minio + api + frontend + nginx)\n- backend/Dockerfile.local: 后端本地构建镜像(tsx 运行源码,避免路径别名问题)\n- frontend/Dockerfile.local: 前端本地构建镜像\n- .dockerignore.local: 本地构建专用忽略规则(保留 dist/node_modules)\n\n修改:\n- backend/prisma/schema/_base.prisma: 添加 binaryTargets linux-musl-openssl-3.0.x(Alpine 容器支持)\n\n部署验证通过:\n- PostgreSQL (pgvector:pg16) + Redis + Kafka + MinIO + API + Frontend + Nginx 全部在线\n- 135+ 数据库迁移全部应用成功\n- API /health 返回 {\"status\":\"ok\"}\n- Nginx HTTP→HTTPS 重定向正常,SSL 自签名证书工作\n\nhttps://claude.ai/code/session_0178CfAo3ibEjsJuMqDCHR7X\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/3b9130b7e0040b49d5bc08307c9e050175994903","author":{"name":"Claude","email":"noreply@anthropic.com","username":""},"committer":{"name":"Claude","email":"noreply@anthropic.com","username":""},"verification":null,"timestamp":"2026-04-02T14:46:47Z","added":[".dockerignore.local","backend/Dockerfile.local","docker-compose.local-prod.yml","frontend/Dockerfile.local"],"removed":[],"modified":["backend/prisma/schema/_base.prisma"]},{"id":"a5244b9fafc440f46250c8a1b72b7fea82d6d1ef","message":"chore: 部署准备 - 补齐 deploy/ssl 目录 + 修复 fast-xml-parser 缺失依赖\n\n- 创建 deploy/ssl/.gitkeep,确保 Nginx 生产环境 SSL 挂载目录存在\n- 添加 fast-xml-parser 依赖,修复微信企业号 webhook 模块的类型错误\n- 后端 tsc 0 错误 / 前端 vue-tsc 0 错误,类型检查双清零\n\nhttps://claude.ai/code/session_0178CfAo3ibEjsJuMqDCHR7X\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/a5244b9fafc440f46250c8a1b72b7fea82d6d1ef","author":{"name":"Claude","email":"noreply@anthropic.com","username":""},"committer":{"name":"Claude","email":"noreply@anthropic.com","username":""},"verification":null,"timestamp":"2026-04-02T14:04:59Z","added":["deploy/ssl/.gitkeep"],"removed":[],"modified":["backend/package.json","pnpm-lock.yaml"]}],"total_commits":0,"head_commit":{"id":"40dae5944f158653af8288a3f38b6c97e8ce9f06","message":"feat: 单机 Docker 生产部署 + 治理基线对齐 (#18)\n\nfeat: 单机 Docker 生产部署 + 治理基线对齐","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/40dae5944f158653af8288a3f38b6c97e8ce9f06","author":{"name":"laoluojuhai","email":"158980461+laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"GitHub","email":"noreply@github.com","username":""},"verification":null,"timestamp":"2026-04-02T22:53:05+08:00","added":[".dockerignore.local","backend/Dockerfile.local","deploy/ssl/.gitkeep","docker-compose.local-prod.yml","frontend/Dockerfile.local"],"removed":[],"modified":[".gitignore","backend/package.json","backend/prisma/schema/_base.prisma","pnpm-lock.yaml"]},"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":5204315,"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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-02T10:31:56+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"}}...
|
push
|
3
|
24
|
0
|
1775180537
|
0
|
1775180412
|
1775180540
|
group: test-pipeline-${{ github.ref }}
cancel-in-p group: test-pipeline-${{ github.ref }}
cancel-in-progress: "true"
...
|
test-pipeline-refs/heads/main
|
1
|
Edit
Delete
|
|
1687
|
feat: 全栈功能完善 + 开发环境免登录配置
|
14
|
5
|
ci.yml
|
1
|
5
|
0
|
refs/heads/main
|
6bcd0f0b608c7161cdf8589d556a56257ee178bd
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"1300bf9430ace637fba9931b50090670d6c1e585","after":"6bcd0f0b608c7161cdf8589d556a56257ee178bd","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-ops/compare/1300bf9430ace637fba9931b50090670d6c1e585...6bcd0f0b608c7161cdf8589d556a56257ee178bd","commits":[{"id":"6bcd0f0b608c7161cdf8589d556a56257ee178bd","message":"feat: 全栈功能完善 + 开发环境免登录配置\n\n- 新增 AuthController 登录/登出/me 接口(token driver)\n- 新增 WorkspaceController、WorkOrderController、HygieneController\n- 新增卫生维护模块全栈实现(区域/模板/任务/检查项)\n- 新增工单模块(创建/更新/列表)\n- 新增角色权限中间件 CheckVenueRole + Role/UserVenueRole 模型\n- 新增 DevAutoAuth 中间件,开发环境自动注入 admin 用户\n- 新增前端免登录配置:VITE_AUTH_DISABLED + localStorage token 注入\n- 新增 WebSocket/Reverb noop 存根,开发环境静默连接失败\n- 新增数据库迁移:工单/卫生/角色/workflow 字段/API token\n- 新增 HygieneSeeder、AuthTest、HygieneTest 等测试\n- 新增 GitHub Actions CI 工作流\n- 新增 DeviceDetectorService + 检测器模式重构\n- 前端新增 Login/Hygiene/WorkOrder/Workspace 视图\n- 前端新增 authStore、composables、e2e 测试框架\n","url":"https://gitea.g-hi.com/luoanwu/juhi-ops/commit/6bcd0f0b608c7161cdf8589d556a56257ee178bd","author":{"name":"luoanwu","email":"luoanwu@g-hi.com","username":""},"committer":{"name":"luoanwu","email":"luoanwu@g-hi.com","username":""},"verification":null,"timestamp":"2026-03-01T12:36:50+08:00","added":[".env.example",".github/workflows/ci.yml","backend/app/Events/DeviceStatusUpdated.php","backend/app/Events/TaskStatusUpdated.php","backend/app/Http/Controllers/AuthController.php","backend/app/Http/Controllers/HygieneController.php","backend/app/Http/Controllers/WorkOrderController.php","backend/app/Http/Controllers/WorkspaceController.php","backend/app/Http/Middleware/CheckVenueRole.php","backend/app/Http/Middleware/DevAutoAuth.php","backend/app/Http/Requests/CreateHygieneTemplateRequest.php","backend/app/Http/Requests/CreateWorkOrderRequest.php","backend/app/Models/HygieneArea.php","backend/app/Models/HygieneTask.php","backend/app/Models/HygieneTaskItem.php","backend/app/Models/HygieneTemplate.php","backend/app/Models/HygieneTemplateItem.php","backend/app/Models/Role.php","backend/app/Models/UserVenueRole.php","backend/app/Models/WorkOrder.php","backend/app/Services/Detectors/ChessDeviceTrait.php","backend/app/Services/Detectors/KtvDeviceTrait.php","backend/app/Services/Detectors/PoolDeviceTrait.php","backend/app/Services/Detectors/SharedDeviceTrait.php","backend/app/Services/DeviceDetectorService.php","backend/app/Services/HygieneGeneratorService.php","backend/config/broadcasting.php","backend/database/migrations/2024_01_01_000007_add_metrics_to_room_device_statuses.php","backend/database/migrations/2024_01_01_000008_add_photo_url_to_room_device_statuses.php","backend/database/migrations/2024_01_01_000009_create_work_orders_table.php","backend/database/migrations/2024_01_01_000010_add_time_fields_to_work_orders.php","backend/database/migrations/2024_01_01_000011_create_hygiene_areas_table.php","backend/database/migrations/2024_01_01_000012_create_hygiene_templates_table.php","backend/database/migrations/2024_01_01_000013_create_hygiene_template_items_table.php","backend/database/migrations/2024_01_01_000014_create_hygiene_tasks_table.php","backend/database/migrations/2024_01_01_000015_create_hygiene_task_items_table.php","backend/database/migrations/2026_02_28_074745_create_roles_table_and_user_roles.php","backend/database/migrations/2026_02_28_074806_add_workflow_fields_to_tasks_tables.php","backend/database/migrations/2026_02_28_161347_add_personnel_fields_to_hygiene_tables.php","backend/database/migrations/2026_02_28_170637_make_room_id_nullable_on_work_orders_table.php","backend/database/migrations/2026_02_28_171030_add_photo_url_to_task_instance_items_table.php","backend/database/migrations/2026_03_01_000001_add_api_token_to_users_table.php","backend/database/seeders/HygieneSeeder.php","backend/ops_db","backend/routes/channels.php","backend/tests/Feature/AuthTest.php","backend/tests/Feature/HygieneTest.php","backend/tests/Feature/MonitorTest.php","backend/tests/Feature/NotificationTest.php","backend/tests/Feature/WorkspaceTest.php","frontend/e2e/auth.spec.ts","frontend/playwright.config.ts","frontend/src/api/auth.ts","frontend/src/api/echo.ts","frontend/src/api/hygiene.ts","frontend/src/api/index.ts","frontend/src/api/workspace.ts","frontend/src/components/HygieneCreateModal.vue","frontend/src/components/HygieneTaskSheet.vue","frontend/src/components/TemplateDetailSheet.vue","frontend/src/components/WorkOrderDetailSheet.vue","frontend/src/components/WorkOrderSheet.vue","frontend/src/composables/useHygiene.ts","frontend/src/stores/authStore.ts","frontend/src/views/Hygiene/Index.vue","frontend/src/views/Login/Index.vue","frontend/src/views/WorkOrder/Index.vue","frontend/src/views/Workspace/CommandCenter.vue","frontend/src/views/Workspace/Index.vue","frontend/test-results/.last-run.json","pencil-new.pen","scripts/gen-dev-cert.sh"],"removed":["backend/app/Services/TaskInstanceGeneratorService.php"],"modified":[".gitignore","CLAUDE.md","backend/.env.example","backend/app/Http/Controllers/BaseController.php","backend/app/Http/Controllers/InspectController.php","backend/app/Http/Controllers/MonitorController.php","backend/app/Http/Controllers/NotificationController.php","backend/app/Http/Controllers/TaskController.php","backend/app/Models/RoomDeviceStatus.php","backend/app/Models/TaskInstance.php","backend/app/Models/TaskInstanceItem.php","backend/app/Models/TaskTemplate.php","backend/app/Models/User.php","backend/app/Services/DeviceScanService.php","backend/app/Services/TaskGeneratorService.php","backend/bootstrap/app.php","backend/config/auth.php","backend/config/cors.php","backend/database/seeders/DatabaseSeeder.php","backend/database/seeders/DemoDataSeeder.php","backend/database/seeders/VenueSeeder.php","backend/phpunit.xml","backend/routes/api.php","backend/routes/console.php","docker-compose.yml","docker/nginx/nginx.conf","docker/php/Dockerfile","frontend/index.html","frontend/package.json","frontend/pnpm-lock.yaml","frontend/src/App.vue","frontend/src/api/inspect.ts","frontend/src/api/monitor.ts","frontend/src/api/notification.ts","frontend/src/api/request.ts","frontend/src/components/NotificationSheet.vue","frontend/src/main.ts","frontend/src/router/index.ts","frontend/src/stores/notificationStore.ts","frontend/src/types/enums.ts","frontend/src/types/index.ts","frontend/src/types/models.ts","frontend/src/views/Inspect/Index.vue","frontend/src/views/Monitor/Index.vue","frontend/vite.config.ts"]}],"total_commits":0,"head_commit":{"id":"6bcd0f0b608c7161cdf8589d556a56257ee178bd","message":"feat: 全栈功能完善 + 开发环境免登录配置\n\n- 新增 AuthController 登录/登出/me 接口(token driver)\n- 新增 WorkspaceController、WorkOrderController、HygieneController\n- 新增卫生维护模块全栈实现(区域/模板/任务/检查项)\n- 新增工单模块(创建/更新/列表)\n- 新增角色权限中间件 CheckVenueRole + Role/UserVenueRole 模型\n- 新增 DevAutoAuth 中间件,开发环境自动注入 admin 用户\n- 新增前端免登录配置:VITE_AUTH_DISABLED + localStorage token 注入\n- 新增 WebSocket/Reverb noop 存根,开发环境静默连接失败\n- 新增数据库迁移:工单/卫生/角色/workflow 字段/API token\n- 新增 HygieneSeeder、AuthTest、HygieneTest 等测试\n- 新增 GitHub Actions CI 工作流\n- 新增 DeviceDetectorService + 检测器模式重构\n- 前端新增 Login/Hygiene/WorkOrder/Workspace 视图\n- 前端新增 authStore、composables、e2e 测试框架\n","url":"https://gitea.g-hi.com/luoanwu/juhi-ops/commit/6bcd0f0b608c7161cdf8589d556a56257ee178bd","author":{"name":"luoanwu","email":"luoanwu@g-hi.com","username":""},"committer":{"name":"luoanwu","email":"luoanwu@g-hi.com","username":""},"verification":null,"timestamp":"2026-03-01T12:36:50+08:00","added":[".env.example",".github/workflows/ci.yml","backend/app/Events/DeviceStatusUpdated.php","backend/app/Events/TaskStatusUpdated.php","backend/app/Http/Controllers/AuthController.php","backend/app/Http/Controllers/HygieneController.php","backend/app/Http/Controllers/WorkOrderController.php","backend/app/Http/Controllers/WorkspaceController.php","backend/app/Http/Middleware/CheckVenueRole.php","backend/app/Http/Middleware/DevAutoAuth.php","backend/app/Http/Requests/CreateHygieneTemplateRequest.php","backend/app/Http/Requests/CreateWorkOrderRequest.php","backend/app/Models/HygieneArea.php","backend/app/Models/HygieneTask.php","backend/app/Models/HygieneTaskItem.php","backend/app/Models/HygieneTemplate.php","backend/app/Models/HygieneTemplateItem.php","backend/app/Models/Role.php","backend/app/Models/UserVenueRole.php","backend/app/Models/WorkOrder.php","backend/app/Services/Detectors/ChessDeviceTrait.php","backend/app/Services/Detectors/KtvDeviceTrait.php","backend/app/Services/Detectors/PoolDeviceTrait.php","backend/app/Services/Detectors/SharedDeviceTrait.php","backend/app/Services/DeviceDetectorService.php","backend/app/Services/HygieneGeneratorService.php","backend/config/broadcasting.php","backend/database/migrations/2024_01_01_000007_add_metrics_to_room_device_statuses.php","backend/database/migrations/2024_01_01_000008_add_photo_url_to_room_device_statuses.php","backend/database/migrations/2024_01_01_000009_create_work_orders_table.php","backend/database/migrations/2024_01_01_000010_add_time_fields_to_work_orders.php","backend/database/migrations/2024_01_01_000011_create_hygiene_areas_table.php","backend/database/migrations/2024_01_01_000012_create_hygiene_templates_table.php","backend/database/migrations/2024_01_01_000013_create_hygiene_template_items_table.php","backend/database/migrations/2024_01_01_000014_create_hygiene_tasks_table.php","backend/database/migrations/2024_01_01_000015_create_hygiene_task_items_table.php","backend/database/migrations/2026_02_28_074745_create_roles_table_and_user_roles.php","backend/database/migrations/2026_02_28_074806_add_workflow_fields_to_tasks_tables.php","backend/database/migrations/2026_02_28_161347_add_personnel_fields_to_hygiene_tables.php","backend/database/migrations/2026_02_28_170637_make_room_id_nullable_on_work_orders_table.php","backend/database/migrations/2026_02_28_171030_add_photo_url_to_task_instance_items_table.php","backend/database/migrations/2026_03_01_000001_add_api_token_to_users_table.php","backend/database/seeders/HygieneSeeder.php","backend/ops_db","backend/routes/channels.php","backend/tests/Feature/AuthTest.php","backend/tests/Feature/HygieneTest.php","backend/tests/Feature/MonitorTest.php","backend/tests/Feature/NotificationTest.php","backend/tests/Feature/WorkspaceTest.php","frontend/e2e/auth.spec.ts","frontend/playwright.config.ts","frontend/src/api/auth.ts","frontend/src/api/echo.ts","frontend/src/api/hygiene.ts","frontend/src/api/index.ts","frontend/src/api/workspace.ts","frontend/src/components/HygieneCreateModal.vue","frontend/src/components/HygieneTaskSheet.vue","frontend/src/components/TemplateDetailSheet.vue","frontend/src/components/WorkOrderDetailSheet.vue","frontend/src/components/WorkOrderSheet.vue","frontend/src/composables/useHygiene.ts","frontend/src/stores/authStore.ts","frontend/src/views/Hygiene/Index.vue","frontend/src/views/Login/Index.vue","frontend/src/views/WorkOrder/Index.vue","frontend/src/views/Workspace/CommandCenter.vue","frontend/src/views/Workspace/Index.vue","frontend/test-results/.last-run.json","pencil-new.pen","scripts/gen-dev-cert.sh"],"removed":["backend/app/Services/TaskInstanceGeneratorService.php"],"modified":[".gitignore","CLAUDE.md","backend/.env.example","backend/app/Http/Controllers/BaseController.php","backend/app/Http/Controllers/InspectController.php","backend/app/Http/Controllers/MonitorController.php","backend/app/Http/Controllers/NotificationController.php","backend/app/Http/Controllers/TaskController.php","backend/app/Models/RoomDeviceStatus.php","backend/app/Models/TaskInstance.php","backend/app/Models/TaskInstanceItem.php","backend/app/Models/TaskTemplate.php","backend/app/Models/User.php","backend/app/Services/DeviceScanService.php","backend/app/Services/TaskGeneratorService.php","backend/bootstrap/app.php","backend/config/auth.php","backend/config/cors.php","backend/database/seeders/DatabaseSeeder.php","backend/database/seeders/DemoDataSeeder.php","backend/database/seeders/VenueSeeder.php","backend/phpunit.xml","backend/routes/api.php","backend/routes/console.php","docker-compose.yml","docker/nginx/nginx.conf","docker/php/Dockerfile","frontend/index.html","frontend/package.json","frontend/pnpm-lock.yaml","frontend/src/App.vue","frontend/src/api/inspect.ts","frontend/src/api/monitor.ts","frontend/src/api/notification.ts","frontend/src/api/request.ts","frontend/src/components/NotificationSheet.vue","frontend/src/main.ts","frontend/src/router/index.ts","frontend/src/stores/notificationStore.ts","frontend/src/types/enums.ts","frontend/src/types/index.ts","frontend/src/types/models.ts","frontend/src/views/Inspect/Index.vue","frontend/src/views/Monitor/Index.vue","frontend/vite.config.ts"]},"repository":{"id":14,"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-ops","full_name":"luoanwu/juhi-ops","description":"巨嗨场馆运维中心 - KTV/棋牌/台球娱乐场馆移动端运维管理系统","empty":false,"private":true,"fork":false,"template":false,"parent":null,"mirror":false,"size":275,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-ops/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-ops","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-ops","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-ops.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-ops.git","original_url":"","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-28T12:11:37+08:00","updated_at":"2026-02-28T13:00:53+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"}}...
|
push
|
2
|
6
|
1772339824
|
1772340576
|
0
|
1772339824
|
1772340576
|
NULL
|
|
0
|
Edit
Delete
|
|
1032
|
feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获
|
6
|
5
|
ci.yml
|
993
|
5
|
0
|
refs/heads/main
|
68528dce9b8c543283a675374b5a23bc2e46c935
|
0
|
0
|
0
|
push
|
{"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"}}...
|
push
|
2
|
24
|
1772148752
|
1772148814
|
0
|
1772148752
|
1772148814
|
NULL
|
|
0
|
Edit
Delete
|
|
1033
|
feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获
|
6
|
5
|
health-check.yml
|
994
|
-2
|
39
|
refs/heads/main
|
68528dce9b8c543283a675374b5a23bc2e46c935
|
0
|
0
|
0
|
push
|
{"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"}}...
|
schedule
|
1
|
3
|
1772148910
|
1772148910
|
0
|
1772148910
|
1772148910
|
NULL
|
|
0
|
Edit
Delete
|
|
1034
|
feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获
|
6
|
5
|
health-check.yml
|
995
|
-2
|
39
|
refs/heads/main
|
68528dce9b8c543283a675374b5a23bc2e46c935
|
0
|
0
|
0
|
push
|
{"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"}}...
|
schedule
|
1
|
3
|
1772149210
|
1772149210
|
0
|
1772149210
|
1772149210
|
NULL
|
|
0
|
Edit
Delete
|
|
1035
|
feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获
|
6
|
5
|
health-check.yml
|
996
|
-2
|
39
|
refs/heads/main
|
68528dce9b8c543283a675374b5a23bc2e46c935
|
0
|
0
|
0
|
push
|
{"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"}}...
|
schedule
|
1
|
3
|
1772149510
|
1772149510
|
0
|
1772149510
|
1772149510
|
NULL
|
|
0
|
Edit
Delete
|
|
1036
|
feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获
|
6
|
5
|
health-check.yml
|
997
|
-2
|
39
|
refs/heads/main
|
68528dce9b8c543283a675374b5a23bc2e46c935
|
0
|
0
|
0
|
push
|
{"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"}}...
|
schedule
|
1
|
3
|
1772149810
|
1772149810
|
0
|
1772149810
|
1772149810
|
NULL
|
|
0
|
Edit
Delete
|
|
1037
|
feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获
|
6
|
5
|
health-check.yml
|
998
|
-2
|
39
|
refs/heads/main
|
68528dce9b8c543283a675374b5a23bc2e46c935
|
0
|
0
|
0
|
push
|
{"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"}}...
|
schedule
|
1
|
3
|
1772150110
|
1772150110
|
0
|
1772150110
|
1772150110
|
NULL
|
|
0
|
Edit
Delete
|
|
1038
|
feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获
|
6
|
5
|
health-check.yml
|
999
|
-2
|
39
|
refs/heads/main
|
68528dce9b8c543283a675374b5a23bc2e46c935
|
0
|
0
|
0
|
push
|
{"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"}}...
|
schedule
|
1
|
3
|
1772150410
|
1772150410
|
0
|
1772150410
|
1772150410
|
NULL
|
|
0
|
Edit
Delete
|
|
1039
|
feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获
|
6
|
5
|
health-check.yml
|
1000
|
-2
|
39
|
refs/heads/main
|
68528dce9b8c543283a675374b5a23bc2e46c935
|
0
|
0
|
0
|
push
|
{"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"}}...
|
schedule
|
1
|
3
|
1772150710
|
1772150710
|
0
|
1772150710
|
1772150710
|
NULL
|
|
0
|
Edit
Delete
|
|
1040
|
feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获
|
6
|
5
|
health-check.yml
|
1001
|
-2
|
39
|
refs/heads/main
|
68528dce9b8c543283a675374b5a23bc2e46c935
|
0
|
0
|
0
|
push
|
{"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"}}...
|
schedule
|
1
|
3
|
1772151010
|
1772151010
|
0
|
1772151010
|
1772151010
|
NULL
|
|
0
|
Edit
Delete
|
|
1041
|
feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获
|
6
|
5
|
health-check.yml
|
1002
|
-2
|
39
|
refs/heads/main
|
68528dce9b8c543283a675374b5a23bc2e46c935
|
0
|
0
|
0
|
push
|
{"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"}}...
|
schedule
|
1
|
3
|
1772151310
|
1772151310
|
0
|
1772151310
|
1772151310
|
NULL
|
|
0
|
Edit
Delete
|
|
1042
|
feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获
|
6
|
5
|
health-check.yml
|
1003
|
-2
|
39
|
refs/heads/main
|
68528dce9b8c543283a675374b5a23bc2e46c935
|
0
|
0
|
0
|
push
|
{"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"}}...
|
schedule
|
1
|
3
|
1772151610
|
1772151610
|
0
|
1772151610
|
1772151610
|
NULL
|
|
0
|
Edit
Delete
|
|
1043
|
feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获
|
6
|
5
|
health-check.yml
|
1004
|
-2
|
39
|
refs/heads/main
|
68528dce9b8c543283a675374b5a23bc2e46c935
|
0
|
0
|
0
|
push
|
{"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"}}...
|
schedule
|
1
|
3
|
1772151910
|
1772151910
|
0
|
1772151910
|
1772151910
|
NULL
|
|
0
|
Edit
Delete
|
|
1044
|
feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获
|
6
|
5
|
health-check.yml
|
1005
|
-2
|
39
|
refs/heads/main
|
68528dce9b8c543283a675374b5a23bc2e46c935
|
0
|
0
|
0
|
push
|
{"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"}}...
|
schedule
|
1
|
3
|
1772152210
|
1772152210
|
0
|
1772152210
|
1772152210
|
NULL
|
|
0
|
Edit
Delete
|
|
1045
|
feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获
|
6
|
5
|
health-check.yml
|
1006
|
-2
|
39
|
refs/heads/main
|
68528dce9b8c543283a675374b5a23bc2e46c935
|
0
|
0
|
0
|
push
|
{"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"}}...
|
schedule
|
1
|
3
|
1772152510
|
1772152510
|
0
|
1772152510
|
1772152510
|
NULL
|
|
0
|
Edit
Delete
|
|
1046
|
feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获
|
6
|
5
|
health-check.yml
|
1007
|
-2
|
39
|
refs/heads/main
|
68528dce9b8c543283a675374b5a23bc2e46c935
|
0
|
0
|
0
|
push
|
{"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"}}...
|
schedule
|
1
|
3
|
1772152810
|
1772152810
|
0
|
1772152810
|
1772152810
|
NULL
|
|
0
|
Edit
Delete
|
|
1047
|
feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获
|
6
|
5
|
health-check.yml
|
1008
|
-2
|
39
|
refs/heads/main
|
68528dce9b8c543283a675374b5a23bc2e46c935
|
0
|
0
|
0
|
push
|
{"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"}}...
|
schedule
|
1
|
3
|
1772153110
|
1772153110
|
0
|
1772153110
|
1772153110
|
NULL
|
|
0
|
Edit
Delete
|
|
1048
|
feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获
|
6
|
5
|
health-check.yml
|
1009
|
-2
|
39
|
refs/heads/main
|
68528dce9b8c543283a675374b5a23bc2e46c935
|
0
|
0
|
0
|
push
|
{"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"}}...
|
schedule
|
1
|
3
|
1772153410
|
1772153410
|
0
|
1772153410
|
1772153410
|
NULL
|
|
0
|
Edit
Delete
|
|
1049
|
feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获
|
6
|
5
|
health-check.yml
|
1010
|
-2
|
39
|
refs/heads/main
|
68528dce9b8c543283a675374b5a23bc2e46c935
|
0
|
0
|
0
|
push
|
{"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"}}...
|
schedule
|
1
|
3
|
1772153710
|
1772153710
|
0
|
1772153710
|
1772153710
|
NULL
|
|
0
|
Edit
Delete
|
|
1050
|
feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获
|
6
|
5
|
health-check.yml
|
1011
|
-2
|
39
|
refs/heads/main
|
68528dce9b8c543283a675374b5a23bc2e46c935
|
0
|
0
|
0
|
push
|
{"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"}}...
|
schedule
|
1
|
3
|
1772154010
|
1772154010
|
0
|
1772154010
|
1772154010
|
NULL
|
|
0
|
Edit
Delete
|
|
1051
|
feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获
|
6
|
5
|
health-check.yml
|
1012
|
-2
|
39
|
refs/heads/main
|
68528dce9b8c543283a675374b5a23bc2e46c935
|
0
|
0
|
0
|
push
|
{"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"}}...
|
schedule
|
1
|
3
|
1772154310
|
1772154310
|
0
|
1772154310
|
1772154310
|
NULL
|
|
0
|
Edit
Delete
|
|
1052
|
feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获
|
6
|
5
|
health-check.yml
|
1013
|
-2
|
39
|
refs/heads/main
|
68528dce9b8c543283a675374b5a23bc2e46c935
|
0
|
0
|
0
|
push
|
{"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"}}...
|
schedule
|
1
|
3
|
1772154610
|
1772154610
|
0
|
1772154610
|
1772154610
|
NULL
|
|
0
|
Edit
Delete
|
|
1053
|
feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获
|
6
|
5
|
health-check.yml
|
1014
|
-2
|
39
|
refs/heads/main
|
68528dce9b8c543283a675374b5a23bc2e46c935
|
0
|
0
|
0
|
push
|
{"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"}}...
|
schedule
|
1
|
3
|
1772154910
|
1772154910
|
0
|
1772154910
|
1772154910
|
NULL
|
|
0
|
Edit
Delete
|
|
1054
|
feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获
|
6
|
5
|
health-check.yml
|
1015
|
-2
|
39
|
refs/heads/main
|
68528dce9b8c543283a675374b5a23bc2e46c935
|
0
|
0
|
0
|
push
|
{"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"}}...
|
schedule
|
1
|
3
|
1772155210
|
1772155210
|
0
|
1772155210
|
1772155210
|
NULL
|
|
0
|
Edit
Delete
|
|
1055
|
feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获
|
6
|
5
|
health-check.yml
|
1016
|
-2
|
39
|
refs/heads/main
|
68528dce9b8c543283a675374b5a23bc2e46c935
|
0
|
0
|
0
|
push
|
{"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"}}...
|
schedule
|
1
|
3
|
1772155510
|
1772155510
|
0
|
1772155510
|
1772155510
|
NULL
|
|
0
|
Edit
Delete
|
|
1056
|
feat: SKU查询修复 + AI工作流状态机 + RAG集成 + 线索自动捕获
|
6
|
5
|
health-check.yml
|
1017
|
-2
|
39
|
refs/heads/main
|
68528dce9b8c543283a675374b5a23bc2e46c935
|
0
|
0
|
0
|
push
|
{"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"}}...
|
schedule
|
1
|
3
|
1772155810
|
1772155810
|
0
|
1772155810
|
1772155810
|
NULL
|
|
0
|
Edit
Delete
|
|
13615
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
ci.yml
|
13538
|
5
|
0
|
refs/heads/main
|
98cc8da660b8d4dba9887432490471d976c03f5f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0","after":"98cc8da660b8d4dba9887432490471d976c03f5f","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0...98cc8da660b8d4dba9887432490471d976c03f5f","commits":[{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.ts"]}],"total_commits":0,"head_commit":{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.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/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":5211826,"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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-12T21:40:53+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"}}...
|
push
|
2
|
12
|
1776011087
|
1776011123
|
0
|
1776011085
|
1776011734
|
group: ci-${{ github.ref }}
cancel-in-progress: group: ci-${{ github.ref }}
cancel-in-progress: "true"
...
|
ci-refs/heads/main
|
1
|
Edit
Delete
|
|
13616
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
e2e-tests.yml
|
13539
|
5
|
0
|
refs/heads/main
|
98cc8da660b8d4dba9887432490471d976c03f5f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0","after":"98cc8da660b8d4dba9887432490471d976c03f5f","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0...98cc8da660b8d4dba9887432490471d976c03f5f","commits":[{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.ts"]}],"total_commits":0,"head_commit":{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.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/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":5211826,"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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-12T21:40:53+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"}}...
|
push
|
2
|
20
|
1776011124
|
1776011670
|
0
|
1776011086
|
1776011800
|
|
|
0
|
Edit
Delete
|
|
13617
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
test-pipeline.yml
|
13540
|
5
|
0
|
refs/heads/main
|
98cc8da660b8d4dba9887432490471d976c03f5f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0","after":"98cc8da660b8d4dba9887432490471d976c03f5f","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0...98cc8da660b8d4dba9887432490471d976c03f5f","commits":[{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.ts"]}],"total_commits":0,"head_commit":{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.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/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":5211826,"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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-12T21:40:53+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"}}...
|
push
|
2
|
68
|
1776011671
|
1776011732
|
0
|
1776011086
|
1776011896
|
group: test-pipeline-${{ github.ref }}
cancel-in-p group: test-pipeline-${{ github.ref }}
cancel-in-progress: "true"
...
|
test-pipeline-refs/heads/main
|
1
|
Edit
Delete
|
|
13618
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13541
|
-2
|
265
|
refs/heads/main
|
98cc8da660b8d4dba9887432490471d976c03f5f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0","after":"98cc8da660b8d4dba9887432490471d976c03f5f","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0...98cc8da660b8d4dba9887432490471d976c03f5f","commits":[{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.ts"]}],"total_commits":0,"head_commit":{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.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/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":5211826,"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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-12T21:40:53+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"}}...
|
schedule
|
4
|
4
|
1776011735
|
1776011736
|
0
|
1776011150
|
1776011736
|
|
|
0
|
Edit
Delete
|
|
13619
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13542
|
-2
|
265
|
refs/heads/main
|
98cc8da660b8d4dba9887432490471d976c03f5f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0","after":"98cc8da660b8d4dba9887432490471d976c03f5f","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0...98cc8da660b8d4dba9887432490471d976c03f5f","commits":[{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.ts"]}],"total_commits":0,"head_commit":{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.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/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":5211826,"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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-12T21:40:53+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"}}...
|
schedule
|
4
|
4
|
1776011737
|
1776011738
|
0
|
1776011450
|
1776011738
|
|
|
0
|
Edit
Delete
|
|
13620
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
test-report.yml
|
13543
|
5
|
0
|
refs/heads/main
|
98cc8da660b8d4dba9887432490471d976c03f5f
|
0
|
0
|
0
|
workflow_run
|
{"action":"completed","workflo {"action":"completed","workflow":{"id":"e2e-tests.yml","name":"E2E Tests","path":".github/workflows/e2e-tests.yml","state":"active","created_at":"2026-04-13T00:24:31+08:00","updated_at":"2026-04-13T00:24:31+08:00","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/workflows/e2e-tests.yml","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/src/branch/main/.github/workflows/e2e-tests.yml","badge_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/workflows/e2e-tests.yml/badge.svg?branch=main","deleted_at":"0001-01-01T00:00:00Z"},"workflow_run":{"id":13616,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/13616","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/13616","display_title":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成","path":"e2e-tests.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":13539,"head_sha":"98cc8da660b8d4dba9887432490471d976c03f5f","head_branch":"main","status":"completed","actor":{"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"},"trigger_actor":{"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"},"repository":{"id":6,"owner":{"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"},"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":5212729,"language":"HTML","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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-13T00:24:48+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"pull":false},"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":[]},"conclusion":"failure","started_at":"2026-04-13T00:25:24+08:00","completed_at":"2026-04-13T00:34:30+08:00"},"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":5212729,"language":"HTML","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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-13T00:24:48+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":[]},"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"}}...
|
workflow_run
|
2
|
14
|
1776011739
|
1776011770
|
0
|
1776011671
|
1776011818
|
|
|
0
|
Edit
Delete
|
|
13621
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
deploy.yml
|
13544
|
5
|
0
|
refs/heads/main
|
98cc8da660b8d4dba9887432490471d976c03f5f
|
0
|
0
|
0
|
workflow_run
|
{"action":"completed","workflo {"action":"completed","workflow":{"id":"test-pipeline.yml","name":"Test Pipeline","path":".github/workflows/test-pipeline.yml","state":"active","created_at":"2026-04-13T00:24:31+08:00","updated_at":"2026-04-13T00:24:31+08:00","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/src/branch/main/.github/workflows/test-pipeline.yml","badge_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml/badge.svg?branch=main","deleted_at":"0001-01-01T00:00:00Z"},"workflow_run":{"id":13617,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/13617","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/13617","display_title":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":13540,"head_sha":"98cc8da660b8d4dba9887432490471d976c03f5f","head_branch":"main","status":"completed","actor":{"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"},"trigger_actor":{"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"},"repository":{"id":6,"owner":{"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"},"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":5212729,"language":"HTML","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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-13T00:24:48+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"pull":false},"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":[]},"conclusion":"failure","started_at":"2026-04-13T00:34:31+08:00","completed_at":"2026-04-13T00:35:32+08:00"},"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":5212729,"language":"HTML","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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-13T00:24:48+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":[]},"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"}}...
|
workflow_run
|
3
|
26
|
1776011801
|
1776011890
|
0
|
1776011733
|
1776011891
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "true"
...
|
deploy-refs/heads/main
|
1
|
Edit
Delete
|
|
13622
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13545
|
-2
|
265
|
refs/heads/main
|
98cc8da660b8d4dba9887432490471d976c03f5f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0","after":"98cc8da660b8d4dba9887432490471d976c03f5f","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0...98cc8da660b8d4dba9887432490471d976c03f5f","commits":[{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.ts"]}],"total_commits":0,"head_commit":{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.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/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":5211826,"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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-12T21:40:53+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"}}...
|
schedule
|
4
|
4
|
1776011813
|
1776011814
|
0
|
1776011750
|
1776011814
|
|
|
0
|
Edit
Delete
|
|
13623
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
test-report.yml
|
13546
|
5
|
0
|
refs/heads/main
|
98cc8da660b8d4dba9887432490471d976c03f5f
|
0
|
0
|
0
|
workflow_run
|
{"action":"completed","workflo {"action":"completed","workflow":{"id":"e2e-tests.yml","name":"E2E Tests","path":".github/workflows/e2e-tests.yml","state":"active","created_at":"2026-04-13T00:24:31+08:00","updated_at":"2026-04-13T00:24:31+08:00","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/workflows/e2e-tests.yml","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/src/branch/main/.github/workflows/e2e-tests.yml","badge_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/workflows/e2e-tests.yml/badge.svg?branch=main","deleted_at":"0001-01-01T00:00:00Z"},"workflow_run":{"id":13616,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/13616","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/13616","display_title":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成","path":"e2e-tests.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":13539,"head_sha":"98cc8da660b8d4dba9887432490471d976c03f5f","head_branch":"main","status":"completed","actor":{"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"},"trigger_actor":{"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"},"repository":{"id":6,"owner":{"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"},"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":5212729,"language":"HTML","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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-13T00:24:48+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"pull":false},"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":[]},"conclusion":"failure","started_at":"2026-04-13T00:25:24+08:00","completed_at":"2026-04-13T00:34:30+08:00"},"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":5212729,"language":"HTML","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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-13T00:24:48+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":[]},"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"}}...
|
workflow_run
|
2
|
14
|
1776011819
|
1776011850
|
0
|
1776011801
|
1776011888
|
|
|
0
|
Edit
Delete
|
|
13624
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
deploy.yml
|
13547
|
5
|
0
|
refs/heads/main
|
98cc8da660b8d4dba9887432490471d976c03f5f
|
0
|
0
|
0
|
workflow_run
|
{"action":"completed","workflo {"action":"completed","workflow":{"id":"test-pipeline.yml","name":"Test Pipeline","path":".github/workflows/test-pipeline.yml","state":"active","created_at":"2026-04-13T00:24:31+08:00","updated_at":"2026-04-13T00:24:31+08:00","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/src/branch/main/.github/workflows/test-pipeline.yml","badge_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml/badge.svg?branch=main","deleted_at":"0001-01-01T00:00:00Z"},"workflow_run":{"id":13617,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/13617","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/13617","display_title":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":13540,"head_sha":"98cc8da660b8d4dba9887432490471d976c03f5f","head_branch":"main","status":"completed","actor":{"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"},"trigger_actor":{"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"},"repository":{"id":6,"owner":{"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"},"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":5212729,"language":"HTML","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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-13T00:24:48+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"pull":false},"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":[]},"conclusion":"failure","started_at":"2026-04-13T00:34:31+08:00","completed_at":"2026-04-13T00:35:32+08:00"},"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":5212729,"language":"HTML","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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-13T00:24:48+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":[]},"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"}}...
|
workflow_run
|
3
|
17
|
1776011892
|
1776011897
|
0
|
1776011891
|
1776011898
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "true"
...
|
deploy-refs/heads/main
|
1
|
Edit
Delete
|
|
13625
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
deploy.yml
|
13548
|
5
|
0
|
refs/heads/main
|
98cc8da660b8d4dba9887432490471d976c03f5f
|
0
|
0
|
0
|
workflow_run
|
{"action":"completed","workflo {"action":"completed","workflow":{"id":"test-pipeline.yml","name":"Test Pipeline","path":".github/workflows/test-pipeline.yml","state":"active","created_at":"2026-04-13T00:24:31+08:00","updated_at":"2026-04-13T00:24:31+08:00","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/src/branch/main/.github/workflows/test-pipeline.yml","badge_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml/badge.svg?branch=main","deleted_at":"0001-01-01T00:00:00Z"},"workflow_run":{"id":13617,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/13617","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/13617","display_title":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":13540,"head_sha":"98cc8da660b8d4dba9887432490471d976c03f5f","head_branch":"main","status":"completed","actor":{"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"},"trigger_actor":{"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"},"repository":{"id":6,"owner":{"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"},"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":5212729,"language":"HTML","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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-13T00:24:48+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"pull":false},"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":[]},"conclusion":"failure","started_at":"2026-04-13T00:34:31+08:00","completed_at":"2026-04-13T00:35:32+08:00"},"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":5212729,"language":"HTML","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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-13T00:24:48+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":[]},"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"}}...
|
workflow_run
|
1
|
40
|
1776011898
|
1776011918
|
0
|
1776011898
|
1776011918
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "true"
...
|
deploy-refs/heads/main
|
1
|
Edit
Delete
|
|
13626
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13549
|
-2
|
265
|
refs/heads/main
|
98cc8da660b8d4dba9887432490471d976c03f5f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0","after":"98cc8da660b8d4dba9887432490471d976c03f5f","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0...98cc8da660b8d4dba9887432490471d976c03f5f","commits":[{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.ts"]}],"total_commits":0,"head_commit":{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.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/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":5211826,"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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-12T21:40:53+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"}}...
|
schedule
|
4
|
4
|
1776012050
|
1776012051
|
0
|
1776012050
|
1776012051
|
|
|
0
|
Edit
Delete
|
|
13627
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13550
|
-2
|
265
|
refs/heads/main
|
98cc8da660b8d4dba9887432490471d976c03f5f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0","after":"98cc8da660b8d4dba9887432490471d976c03f5f","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0...98cc8da660b8d4dba9887432490471d976c03f5f","commits":[{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.ts"]}],"total_commits":0,"head_commit":{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.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/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":5211826,"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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-12T21:40:53+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"}}...
|
schedule
|
4
|
4
|
1776012350
|
1776012351
|
0
|
1776012350
|
1776012351
|
|
|
0
|
Edit
Delete
|
|
13628
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13551
|
-2
|
265
|
refs/heads/main
|
98cc8da660b8d4dba9887432490471d976c03f5f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0","after":"98cc8da660b8d4dba9887432490471d976c03f5f","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0...98cc8da660b8d4dba9887432490471d976c03f5f","commits":[{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.ts"]}],"total_commits":0,"head_commit":{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.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/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":5211826,"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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-12T21:40:53+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"}}...
|
schedule
|
4
|
4
|
1776012650
|
1776012651
|
0
|
1776012650
|
1776012651
|
|
|
0
|
Edit
Delete
|
|
13629
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13552
|
-2
|
265
|
refs/heads/main
|
98cc8da660b8d4dba9887432490471d976c03f5f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0","after":"98cc8da660b8d4dba9887432490471d976c03f5f","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0...98cc8da660b8d4dba9887432490471d976c03f5f","commits":[{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.ts"]}],"total_commits":0,"head_commit":{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.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/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":5211826,"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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-12T21:40:53+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"}}...
|
schedule
|
4
|
4
|
1776012950
|
1776012951
|
0
|
1776012950
|
1776012951
|
|
|
0
|
Edit
Delete
|
|
13630
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13553
|
-2
|
265
|
refs/heads/main
|
98cc8da660b8d4dba9887432490471d976c03f5f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0","after":"98cc8da660b8d4dba9887432490471d976c03f5f","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0...98cc8da660b8d4dba9887432490471d976c03f5f","commits":[{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.ts"]}],"total_commits":0,"head_commit":{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.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/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":5211826,"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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-12T21:40:53+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"}}...
|
schedule
|
4
|
4
|
1776013250
|
1776013251
|
0
|
1776013250
|
1776013251
|
|
|
0
|
Edit
Delete
|
|
13631
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13554
|
-2
|
265
|
refs/heads/main
|
98cc8da660b8d4dba9887432490471d976c03f5f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0","after":"98cc8da660b8d4dba9887432490471d976c03f5f","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0...98cc8da660b8d4dba9887432490471d976c03f5f","commits":[{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.ts"]}],"total_commits":0,"head_commit":{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.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/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":5211826,"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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-12T21:40:53+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"}}...
|
schedule
|
4
|
4
|
1776013550
|
1776013551
|
0
|
1776013550
|
1776013551
|
|
|
0
|
Edit
Delete
|
|
13632
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13555
|
-2
|
265
|
refs/heads/main
|
98cc8da660b8d4dba9887432490471d976c03f5f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0","after":"98cc8da660b8d4dba9887432490471d976c03f5f","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/2e3188c85a6cfc38ac7d3643b1cbbfc2e3e850d0...98cc8da660b8d4dba9887432490471d976c03f5f","commits":[{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.ts"]}],"total_commits":0,"head_commit":{"id":"98cc8da660b8d4dba9887432490471d976c03f5f","message":"feat: E2E 表单测试框架 + P0/P1/P2 治理完成\n\nE2E 表单测试 (新):\n- 新增 4 个测试文件,21 个测试用例,983 行代码\n- helpers/form-test-helpers.ts: 12 个通用测试工具函数\n- 覆盖 Lead-to-Cash/营销/审批/财务 4 大业务域\n- 测试矩阵: F01创建/F02验证错误/F03编辑回填/F04草稿恢复\n\nP0 治理完成:\n- ES 安全配置: xpack.security.enabled=true + 密码认证\n- Dockerfile.dev: 前后端统一 pnpm + frozen-lockfile\n- customers/Index.vue: reactive\u003cany\u003e → CustomerQueryParams 接口\n- CLAUDE.md 红线 9: 列表页必须使用 useListPage\n- useListPage 覆盖: 13 → 23/208 (11.1%),新增 10 个页面\n\nP1 治理完成:\n- Prisma 升级: 5.7.0 → 5.22.0,prismaSchemaFolder 启用\n- schema 拆分: 27 个子文件,prisma validate 通过\n- 大组件拆分: sms-marketing 1774 → 840 行 (↓53%)\n - SmsTemplateManager.vue (514 行)\n - SmsCampaignManager.vue (598 行)\n- 测试覆盖率: 后端 65→70%, 前端 60→65%\n- Dockerfile prune: pnpm prune --prod --no-optional\n\nP2 治理完成:\n- Kafka HA: Makefile deploy-ha 命令\n- SBOM: CI anchore/sbom-action 集成\n- ECharts 按需引入: echarts/core\n- 虚拟列表方案: @tanstack/vue-virtual 实施计划\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/98cc8da660b8d4dba9887432490471d976c03f5f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T00:24:31+08:00","added":["e2e/helpers/form-test-helpers.ts","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/error-context.md","e2e/test-results/auth.setup.ts-authenticate-as-admin-setup/test-failed-1.png","e2e/tests/form-interactions/approval-workflow-forms.spec.ts","e2e/tests/form-interactions/core-business-forms.spec.ts","e2e/tests/form-interactions/finance-forms.spec.ts","e2e/tests/form-interactions/marketing-campaign-forms.spec.ts","frontend/src/views/sms-marketing/components/SmsCampaignManager.vue","frontend/src/views/sms-marketing/components/SmsTemplateManager.vue","reports/project-census.baseline.json","reports/project-census.latest.json","scripts/audit-project-census.ts"],"removed":["e2e/test-results/create-verify-all-report.json"],"modified":[".env.production.example",".github/workflows/ci.yml","CLAUDE.md","Makefile","backend/Dockerfile","backend/Dockerfile.dev","backend/package.json","backend/prisma/schema.prisma","backend/src/config/env.ts","backend/vitest.config.ts","backend/vitest.workspace.ts","docker-compose.prod.yml","docs/governance/baseline-and-experience.md","e2e/test-results/.last-run.json","frontend/Dockerfile.dev","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/departments/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/faults/Index.vue","frontend/src/views/positions/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/sms-marketing/Index.vue","frontend/vitest.config.ts","package.json","pnpm-lock.yaml","scripts/harness/audit-registry.ts","scripts/harness/cli.ts","scripts/harness/report.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/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":5211826,"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":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-12T21:40:53+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"}}...
|
schedule
|
4
|
4
|
1776013852
|
1776013853
|
0
|
1776013850
|
1776013853
|
|
|
0
|
Edit
Delete
|