| event_payload |
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e15e357a819170a89dbcfd25fe33ea58972ae0ff","after":"c8adeb7142f7f1b57a10bfffc3de856524997227","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/e15e357a819170a89dbcfd25fe33ea58972ae0ff...c8adeb7142f7f1b57a10bfffc3de856524997227","commits":[{"id":"c8adeb7142f7f1b57a10bfffc3de856524997227","message":"docs: 添加项目缺失组件全面分析报告\n\n扫描 194 个后端模块、211 个前端 API 模块、236 个视图目录、67 个状态机,\n从 6 个维度系统分析项目缺失:后端 5 层完整性、前后端对应关系、\n事件发布覆盖、多租户隔离、MODULE_REGISTRY 注册、状态机覆盖。\n\nhttps://claude.ai/code/session_01GCDecp19keemJd6cdsCb7u\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c8adeb7142f7f1b57a10bfffc3de856524997227","author":{"name":"Claude","email":"noreply@anthropic.com","username":""},"committer":{"name":"Claude","email":"noreply@anthropic.com","username":""},"verification":null,"timestamp":"2026-02-07T00:59:30Z","added":["docs/MISSING-COMPONENTS-ANALYSIS.md"],"removed":[],"modified":[]},{"id":"ef7d327658968d43877a720fa4769acb2363b556","message":"chore: 添加用户权限检查和缓存清理脚本\n\n- check-user-permissions.ts: 检查用户角色和 MEDDPICC 相关权限\n- clear-user-cache.ts: 清除用户和角色权限的 Redis 缓存\n\nCo-Authored-By: Claude Opus 4.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/ef7d327658968d43877a720fa4769acb2363b556","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-01-26T22:50:15+08:00","added":["backend/scripts/check-user-permissions.ts","backend/scripts/clear-user-cache.ts"],"removed":[],"modified":[]},{"id":"4cf8f8a37c80ac40fc47068d0eb5c4e4377cde2c","message":"fix: 修复 groupbuy 模块 TypeScript 类型错误\n\n修复内容:\n- groupbuy-commissions: 修复 Prisma 表名类型和 JSON 字段类型\n- groupbuy-influencers: 修复 Prisma 表名类型\n- groupbuy-inventory: 修复 Prisma 表名类型\n- groupbuy-orders: 修复 Prisma 表名类型和 JSON 字段类型\n- groupbuy-participants: 修复 schema 和 service 类型\n- groupbuy-platforms: 修复 controller 和 service 类型\n- groupbuy-pricing: 修复 Prisma 表名类型\n- groupbuy-products: 修复 Prisma 表名类型和 JSON 字段类型\n- groupbuy-promotions: 修复 Prisma 表名类型\n- groupbuy-redemptions: 修复 schema 和 service 类型\n- groupbuy-reviews: 修复 controller 和 service 类型\n- groupbuy-settlements: 修复 BizCodePrefix 导入和 JSON 字段类型\n\n修复模式:\n- (prisma as any).table_name 处理未在 schema 中的表\n- Prisma.InputJsonValue 处理 JSON 字段类型\n- Record\u003cstring, unknown\u003e 替代 Record\u003cstring, any\u003e\n- as any 处理复杂查询参数类型\n\nCo-Authored-By: Claude Opus 4.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/4cf8f8a37c80ac40fc47068d0eb5c4e4377cde2c","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-01-26T22:40:45+08:00","added":[],"removed":[],"modified":["backend/prisma/migrations/20260126100000_add_critical_indexes/migration.sql","backend/src/modules/geo-reviews/index.ts","backend/src/modules/groupbuy-commissions/groupbuy-commission.controller.ts","backend/src/modules/groupbuy-commissions/groupbuy-commission.service.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.service.ts","backend/src/modules/groupbuy-inventory/groupbuy-inventory.service.ts","backend/src/modules/groupbuy-orders/groupbuy-order.service.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.schema.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.service.ts","backend/src/modules/groupbuy-platforms/groupbuy-platform.controller.ts","backend/src/modules/groupbuy-platforms/groupbuy-platform.service.ts","backend/src/modules/groupbuy-pricing/groupbuy-pricing.service.ts","backend/src/modules/groupbuy-products/groupbuy-product.service.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.service.ts","backend/src/modules/groupbuy-redemptions/groupbuy-redemption.schema.ts","backend/src/modules/groupbuy-redemptions/groupbuy-redemption.service.ts","backend/src/modules/groupbuy-reviews/groupbuy-review.controller.ts","backend/src/modules/groupbuy-reviews/groupbuy-review.service.ts","backend/src/modules/groupbuy-settlements/groupbuy-settlement.controller.ts","backend/src/modules/groupbuy-settlements/groupbuy-settlement.service.ts"]},{"id":"3b059cbbbaed4d76d3197383a280b976511f20a6","message":"fix: 修复多模块 TypeScript 类型错误\n\n主要修复:\n- geo-analytics: 修复 Prisma Decimal 类型导入和 OpenAPI 文档类型\n- disbursements: 修复控制器类型错误\n- files: 修复文件服务和控制器类型\n- event-subscriptions: 确认类型正确\n- 其他模块: 修复各类 TypeScript 类型推断问题\n\n涉及 67 个文件的类型安全改进\n\nCo-Authored-By: Claude Opus 4.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/3b059cbbbaed4d76d3197383a280b976511f20a6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-01-26T22:05:32+08:00","added":[],"removed":[],"modified":["backend/src/consumers/ai-agent-task-processor.consumer.ts","backend/src/consumers/ai-task-processor.consumer.ts","backend/src/modules/ad-accounts/ad-account.service.ts","backend/src/modules/ad-campaigns/ad-campaigns.service.ts","backend/src/modules/ad-reports/ad-report.service.ts","backend/src/modules/ai-agents/ai-agent.docs.ts","backend/src/modules/ai-agents/ai-agent.service.ts","backend/src/modules/ai-agents/services/lead-collector.service.ts","backend/src/modules/ai-agents/services/task-heartbeat.service.ts","backend/src/modules/ai-agents/services/workflow-instance.service.ts","backend/src/modules/alliance-packages/alliance-package.schema.ts","backend/src/modules/alliance-packages/alliance-package.service.ts","backend/src/modules/alliance-products/alliance-product.service.ts","backend/src/modules/alliance-referrals/alliance-referral.service.ts","backend/src/modules/alliance-settlements/alliance-settlement.service.ts","backend/src/modules/assets/asset.service.ts","backend/src/modules/campaign-use-case-templates/use-case-template.service.ts","backend/src/modules/channels/channel.transformer.ts","backend/src/modules/community-activities/community-activity.service.ts","backend/src/modules/community-bots/community-bot.service.ts","backend/src/modules/community-fission/community-fission.service.ts","backend/src/modules/community-materials/community-material.service.ts","backend/src/modules/community-tasks/community-task.service.ts","backend/src/modules/content-distribution/content-distribution.service.ts","backend/src/modules/content-library/content-library.controller.ts","backend/src/modules/content-library/content-library.service.ts","backend/src/modules/contract-templates/contract-template.service.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/contracts/payment-plan.docs.ts","backend/src/modules/contracts/payment-plan.service.ts","backend/src/modules/cpq/cpq.controller.ts","backend/src/modules/customer-marketing/customer-marketing.service.ts","backend/src/modules/customer-profit/customer-profit.docs.ts","backend/src/modules/customer-profit/customer-profit.service.ts","backend/src/modules/customers/customer-enhanced.docs.ts","backend/src/modules/customers/customer-service.service.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/customers/customer.transformer.ts","backend/src/modules/dashboard/dashboard-cache.service.ts","backend/src/modules/dashboard/dashboard.controller.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/devices/asset-activation.service.ts","backend/src/modules/devices/device.service.ts","backend/src/modules/disbursements/disbursement.controller.ts","backend/src/modules/event-subscriptions/event-subscriptions.service.ts","backend/src/modules/files/file.controller.ts","backend/src/modules/files/file.service.ts","backend/src/modules/finance/event-payment-integration.service.ts","backend/src/modules/finance/finance.controller.ts","backend/src/modules/finance/finance.routes.ts","backend/src/modules/finance/finance.service.ts","backend/src/modules/finance/treasury.service.ts","backend/src/modules/fulfillment/acceptance-automation.service.ts","backend/src/modules/fulfillment/fulfillment.service.ts","backend/src/modules/geo-analytics/geo-analytics.docs.ts","backend/src/modules/geo-analytics/geo-analytics.service.ts","backend/src/modules/geo-fences/geo-fences.controller.ts","backend/src/modules/geo-fences/geo-fences.service.ts","backend/src/modules/geo-fences/index.ts","backend/src/modules/geo-keywords/geo-keyword.controller.ts","backend/src/modules/geo-keywords/geo-keyword.service.ts","backend/src/modules/geo-keywords/index.ts","backend/src/modules/geo-pois/geo-poi.service.ts","backend/src/modules/geo-pois/index.ts","backend/src/shared/openapi/registry.ts","frontend/src/api/client.ts","frontend/src/views/acquisition/composables/useTodos.ts"]},{"id":"e9edc5693579b5dd189b08eacef3678ceaf3be4a","message":"fix(ai-agents): 修复 LeadCollector 组件 API 响应解包错误\n\n问题:\n- client.ts 拦截器对非分页响应自动解包 response.data\n- LeadCollector.vue 错误地使用 response.data.data 导致 undefined\n\n修复 4 处 API 调用:\n- loadIndustries: getSupportedIndustries 响应解包\n- loadIndustryKeywords: getIndustryKeywords 响应解包\n- handleCollect: collectLeads 响应解包\n- handleCheckDuplicate: detectDuplicate 响应解包\n\nCo-Authored-By: Claude Opus 4.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/e9edc5693579b5dd189b08eacef3678ceaf3be4a","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-01-26T21:25:55+08:00","added":[],"removed":[],"modified":["frontend/src/views/ai-agents/LeadCollector.vue"]}],"total_commits":0,"head_commit":{"id":"c8adeb7142f7f1b57a10bfffc3de856524997227","message":"docs: 添加项目缺失组件全面分析报告\n\n扫描 194 个后端模块、211 个前端 API 模块、236 个视图目录、67 个状态机,\n从 6 个维度系统分析项目缺失:后端 5 层完整性、前后端对应关系、\n事件发布覆盖、多租户隔离、MODULE_REGISTRY 注册、状态机覆盖。\n\nhttps://claude.ai/code/session_01GCDecp19keemJd6cdsCb7u\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c8adeb7142f7f1b57a10bfffc3de856524997227","author":{"name":"Claude","email":"noreply@anthropic.com","username":""},"committer":{"name":"Claude","email":"noreply@anthropic.com","username":""},"verification":null,"timestamp":"2026-02-07T00:59:30Z","added":["docs/MISSING-COMPONENTS-ANALYSIS.md"],"removed":[],"modified":[]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":true,"fork":false,"template":false,"parent":null,"mirror":false,"size":29511,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-02-24T00:01:38+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","repo_transfer":null},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}... |