|
13793
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13715
|
-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
|
1776060651
|
1776060652
|
0
|
1776060650
|
1776060652
|
|
|
0
|
Edit
Delete
|
|
13794
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13716
|
-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
|
1776060951
|
1776060952
|
0
|
1776060950
|
1776060952
|
|
|
0
|
Edit
Delete
|
|
13795
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13717
|
-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
|
1776061251
|
1776061252
|
0
|
1776061250
|
1776061252
|
|
|
0
|
Edit
Delete
|
|
13796
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13718
|
-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
|
1776061551
|
1776061552
|
0
|
1776061550
|
1776061552
|
|
|
0
|
Edit
Delete
|
|
13797
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13719
|
-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
|
1776061851
|
1776061852
|
0
|
1776061850
|
1776061852
|
|
|
0
|
Edit
Delete
|
|
13798
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13720
|
-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
|
1776062151
|
1776062152
|
0
|
1776062150
|
1776062152
|
|
|
0
|
Edit
Delete
|
|
13799
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13721
|
-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
|
1776062451
|
1776062452
|
0
|
1776062450
|
1776062452
|
|
|
0
|
Edit
Delete
|
|
13800
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13722
|
-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
|
1776062751
|
1776062752
|
0
|
1776062750
|
1776062752
|
|
|
0
|
Edit
Delete
|
|
13801
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13723
|
-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
|
1776063051
|
1776063052
|
0
|
1776063050
|
1776063052
|
|
|
0
|
Edit
Delete
|
|
13802
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13724
|
-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
|
1776063351
|
1776063352
|
0
|
1776063350
|
1776063352
|
|
|
0
|
Edit
Delete
|
|
13803
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13725
|
-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
|
1776063651
|
1776063652
|
0
|
1776063650
|
1776063652
|
|
|
0
|
Edit
Delete
|
|
13804
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13726
|
-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
|
1776063951
|
1776063952
|
0
|
1776063950
|
1776063952
|
|
|
0
|
Edit
Delete
|
|
13805
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13727
|
-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
|
1776064251
|
1776064252
|
0
|
1776064250
|
1776064252
|
|
|
0
|
Edit
Delete
|
|
13806
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13728
|
-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
|
1776064551
|
1776064552
|
0
|
1776064550
|
1776064552
|
|
|
0
|
Edit
Delete
|
|
13807
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13729
|
-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
|
1776064851
|
1776064852
|
0
|
1776064850
|
1776064852
|
|
|
0
|
Edit
Delete
|
|
13808
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13730
|
-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
|
1776065151
|
1776065152
|
0
|
1776065150
|
1776065152
|
|
|
0
|
Edit
Delete
|
|
13809
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13731
|
-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
|
1776065451
|
1776065452
|
0
|
1776065450
|
1776065452
|
|
|
0
|
Edit
Delete
|
|
13810
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13732
|
-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
|
1776065751
|
1776065752
|
0
|
1776065750
|
1776065752
|
|
|
0
|
Edit
Delete
|
|
13811
|
feat: E2E 表单测试框架 + P0/P1/P2 治理完成
|
6
|
5
|
health-check.yml
|
13733
|
-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
|
1776066051
|
1776066052
|
0
|
1776066050
|
1776066052
|
|
|
0
|
Edit
Delete
|
|
9913
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
e2e-tests.yml
|
9837
|
5
|
0
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774923481
|
1774924033
|
0
|
1774923479
|
1774926173
|
|
|
0
|
Edit
Delete
|
|
9914
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
test-pipeline.yml
|
9838
|
5
|
0
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774924034
|
1774925150
|
0
|
1774923480
|
1774927462
|
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
|
|
9915
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9839
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774925151
|
1774925151
|
0
|
1774923618
|
1774925151
|
|
|
0
|
Edit
Delete
|
|
9916
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9840
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774925153
|
1774925153
|
0
|
1774923918
|
1774925153
|
|
|
0
|
Edit
Delete
|
|
9917
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
test-report.yml
|
9841
|
5
|
0
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
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-03-31T10:08:45+08:00","updated_at":"2026-03-31T10:08:45+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":9913,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/9913","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/9913","display_title":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施","path":"e2e-tests.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":9837,"head_sha":"9901c454467cf62d4e127620f218a97bcca01629","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":3546146,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-31T10:18:02+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-03-31T10:18:01+08:00","completed_at":"2026-03-31T10:27:13+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":3546146,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-31T10:18:02+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
|
1774926174
|
1774926265
|
0
|
1774924033
|
1774927311
|
|
|
0
|
Edit
Delete
|
|
9918
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9842
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774926265
|
1774926265
|
0
|
1774924218
|
1774926265
|
|
|
0
|
Edit
Delete
|
|
9919
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9843
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774926267
|
1774926267
|
0
|
1774924518
|
1774926267
|
|
|
0
|
Edit
Delete
|
|
9920
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9844
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774926269
|
1774926269
|
0
|
1774924818
|
1774926269
|
|
|
0
|
Edit
Delete
|
|
9921
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9845
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774926271
|
1774926271
|
0
|
1774925118
|
1774926271
|
|
|
0
|
Edit
Delete
|
|
9922
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
deploy.yml
|
9846
|
5
|
0
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
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-03-31T10:08:45+08:00","updated_at":"2026-03-31T10:08:45+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":9914,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/9914","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/9914","display_title":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":9838,"head_sha":"9901c454467cf62d4e127620f218a97bcca01629","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":3546146,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-31T10:18:02+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-03-31T10:27:14+08:00","completed_at":"2026-03-31T10:45:50+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":3546146,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-31T10:18:02+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
|
1774926273
|
1774927430
|
0
|
1774925150
|
1774927431
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "false"
...
|
deploy-refs/heads/main
|
0
|
Edit
Delete
|
|
9923
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9847
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774926283
|
1774926283
|
0
|
1774925418
|
1774926283
|
|
|
0
|
Edit
Delete
|
|
9924
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9848
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774926285
|
1774926285
|
0
|
1774925718
|
1774926285
|
|
|
0
|
Edit
Delete
|
|
9925
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9849
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774926287
|
1774926287
|
0
|
1774926018
|
1774926287
|
|
|
0
|
Edit
Delete
|
|
9926
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
test-report.yml
|
9850
|
5
|
0
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
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-03-31T10:08:45+08:00","updated_at":"2026-03-31T10:08:45+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":9913,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/9913","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/9913","display_title":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施","path":"e2e-tests.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":9837,"head_sha":"9901c454467cf62d4e127620f218a97bcca01629","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":3546146,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-31T10:18:02+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-03-31T10:18:01+08:00","completed_at":"2026-03-31T10:27:13+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":3546146,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-31T10:18:02+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
|
1774926289
|
1774927308
|
0
|
1774926174
|
1774927425
|
|
|
0
|
Edit
Delete
|
|
9927
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9851
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774927415
|
1774927415
|
0
|
1774926318
|
1774927415
|
|
|
0
|
Edit
Delete
|
|
9928
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9852
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774927417
|
1774927417
|
0
|
1774926618
|
1774927417
|
|
|
0
|
Edit
Delete
|
|
9929
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9853
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774927419
|
1774927419
|
0
|
1774926918
|
1774927419
|
|
|
0
|
Edit
Delete
|
|
9930
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9854
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774927421
|
1774927421
|
0
|
1774927218
|
1774927421
|
|
|
0
|
Edit
Delete
|
|
9931
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
deploy.yml
|
9855
|
5
|
0
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
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-03-31T10:08:45+08:00","updated_at":"2026-03-31T10:08:45+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":9914,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/9914","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/9914","display_title":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":9838,"head_sha":"9901c454467cf62d4e127620f218a97bcca01629","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":3546146,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-31T10:18:02+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-03-31T10:27:14+08:00","completed_at":"2026-03-31T10:45:50+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":3546146,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-31T10:18:02+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
|
12
|
0
|
1774927462
|
0
|
1774927431
|
1774927463
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "false"
...
|
deploy-refs/heads/main
|
0
|
Edit
Delete
|
|
9932
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
deploy.yml
|
9856
|
5
|
0
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
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-03-31T10:08:45+08:00","updated_at":"2026-03-31T10:08:45+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":9914,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/9914","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/9914","display_title":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":9838,"head_sha":"9901c454467cf62d4e127620f218a97bcca01629","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":3546146,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-31T10:18:02+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-03-31T10:27:14+08:00","completed_at":"2026-03-31T10:45:50+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":3546146,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-31T10:18:02+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
|
40
|
1774927464
|
1774927512
|
0
|
1774927463
|
1774927512
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "false"
...
|
deploy-refs/heads/main
|
0
|
Edit
Delete
|
|
9933
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9857
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774927518
|
1774927519
|
0
|
1774927518
|
1774927519
|
|
|
0
|
Edit
Delete
|
|
9934
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9858
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774927818
|
1774927819
|
0
|
1774927818
|
1774927819
|
|
|
0
|
Edit
Delete
|
|
9935
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9859
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774928118
|
1774928119
|
0
|
1774928118
|
1774928119
|
|
|
0
|
Edit
Delete
|
|
9936
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9860
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774928418
|
1774928419
|
0
|
1774928418
|
1774928419
|
|
|
0
|
Edit
Delete
|
|
9937
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9861
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774928718
|
1774928719
|
0
|
1774928718
|
1774928719
|
|
|
0
|
Edit
Delete
|
|
9938
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9862
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774929018
|
1774929019
|
0
|
1774929018
|
1774929019
|
|
|
0
|
Edit
Delete
|
|
9939
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9863
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774929318
|
1774929319
|
0
|
1774929318
|
1774929319
|
|
|
0
|
Edit
Delete
|
|
9940
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9864
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774929618
|
1774929619
|
0
|
1774929618
|
1774929619
|
|
|
0
|
Edit
Delete
|
|
9941
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9865
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774929918
|
1774929919
|
0
|
1774929918
|
1774929919
|
|
|
0
|
Edit
Delete
|
|
9942
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9866
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774930218
|
1774930219
|
0
|
1774930218
|
1774930219
|
|
|
0
|
Edit
Delete
|
|
9943
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9867
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.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":1906045,"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":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+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
|
1774930518
|
1774930519
|
0
|
1774930518
|
1774930519
|
|
|
0
|
Edit
Delete
|