| event_payload |
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"d169207d2a046f90cf861f8e805b45d3855fddc3","after":"abd8cdd0283c96dc4a62fbf753d2aca2e68aa379","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/d169207d2a046f90cf861f8e805b45d3855fddc3...abd8cdd0283c96dc4a62fbf753d2aca2e68aa379","commits":[{"id":"abd8cdd0283c96dc4a62fbf753d2aca2e68aa379","message":"fix: 修复前端请求 pageSize 超出后端限制\n\n后端 baseListQuerySchema 限制 pageSize 最大为 100,修复以下文件:\n- customer-balance/Index.vue: 500 → 100\n- opportunities/Pipeline.vue: 200 → 100\n- crm-activities/Index.vue: 500 → 100\n- ar-ledger/StatementGenerator.vue: 1000 → 100\n- disbursements/ApLedgerTab.vue: 200 → 100\n- hr/attendance/SchedulesTab.vue: 200 → 100\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\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/abd8cdd0283c96dc4a62fbf753d2aca2e68aa379","author":{"name":"hi.laoluo","email":"hi.laoluo@hilaoluodeMacBook-Pro.local","username":""},"committer":{"name":"hi.laoluo","email":"hi.laoluo@hilaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-01-08T00:11:49+08:00","added":[],"removed":[],"modified":["frontend/src/views/ar-ledger/components/StatementGenerator.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customer-balance/Index.vue","frontend/src/views/disbursements/components/ApLedgerTab.vue","frontend/src/views/hr/attendance/components/SchedulesTab.vue","frontend/src/views/opportunities/Pipeline.vue"]},{"id":"e92d5ee9c6fc7bfba6938afb71cd78ab4fa8a26b","message":"feat: 完善模块注册表和权限配置\n\n1. 新增 17 个缺失的模块定义:\n - 获客域: ad-placement (社媒投流)\n - 销售域: sales-dashboard, targets\n - 续费域: customer-analytics\n - 服务域: service-dashboard\n - 履约域: suppliers, sample-requests\n - 财务域: disbursements, payment-analytics\n - 知识域: knowledge-capture\n - 系统域: analytics, workflow-designer, attendance, training, benefits, settings\n\n2. 修正路由路径映射:\n - users: /users → /settings/users\n - roles: /roles → /settings/roles\n\n3. 补充权限配置:\n - ad-placement 相关: ad-creative, ad-budget-alert, ad-abtest\n - HR 相关: attendance, course, benefit-plan\n - 其他: analytics, target, supplier, sample-request, disbursement 等\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\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/e92d5ee9c6fc7bfba6938afb71cd78ab4fa8a26b","author":{"name":"hi.laoluo","email":"hi.laoluo@hilaoluodeMacBook-Pro.local","username":""},"committer":{"name":"hi.laoluo","email":"hi.laoluo@hilaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-01-08T00:11:41+08:00","added":[],"removed":[],"modified":["backend/src/shared/constants/modules.ts"]},{"id":"798facc3b09fa93b92c401f76126e821c5b187e8","message":"fix: 修复财务报表 $queryRaw 动态参数导致的 SQL 错误\n\n- getRevenueByPeriod: 改为条件分支处理 day/week/quarter/month\n- getCashFlowByPeriod: 改为条件分支处理 day/week/month\n- 原因: PostgreSQL 模板字符串不支持动态函数名参数\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\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/798facc3b09fa93b92c401f76126e821c5b187e8","author":{"name":"hi.laoluo","email":"hi.laoluo@hilaoluodeMacBook-Pro.local","username":""},"committer":{"name":"hi.laoluo","email":"hi.laoluo@hilaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-01-08T00:08:07+08:00","added":[],"removed":[],"modified":["backend/src/modules/financial-reports/financial-reports.service.ts"]},{"id":"1e3942bf83a209a2c22ce2b4deb2ef0a4ea7e21b","message":"test: 修复 auth 和 leads 模块测试用例\n\n- auth: 修复 changePassword 断言缺少 password_changed_at 字段\n- auth: 修复 getCurrentUser 权限断言匹配实际 mock 数据\n- leads: 修复 updateLead/assignLead 使用 updateMany 替代 update\n- leads: 修复 convertLead 测试使用 qualified 状态的线索\n- leads: 修复 batchUpdateStatus 添加 findMany mock 返回数组\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\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/1e3942bf83a209a2c22ce2b4deb2ef0a4ea7e21b","author":{"name":"hi.laoluo","email":"hi.laoluo@hilaoluodeMacBook-Pro.local","username":""},"committer":{"name":"hi.laoluo","email":"hi.laoluo@hilaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-01-08T00:00:12+08:00","added":[],"removed":[],"modified":["backend/src/modules/auth/auth.service.test.ts","backend/src/modules/leads/lead.service.test.ts"]},{"id":"c8a0c0a4b9a3eafd9dfb51d57264eded4ccce57b","message":"fix: 修复财务报表和客户余额模块的数据库查询错误\n\n1. financial-reports: 修复 getRevenueByProduct 查询\n - order_items 表使用 sku_id 而非 product_id\n - 通过 skus 表关联到 products 表获取产品信息\n - 修正 line_amount 为 line_total\n\n2. customer-balance: 修复 getBalanceList 查询\n - customers 表无 status 字段,改用 lifecycle_stage\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\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/c8a0c0a4b9a3eafd9dfb51d57264eded4ccce57b","author":{"name":"hi.laoluo","email":"hi.laoluo@hilaoluodeMacBook-Pro.local","username":""},"committer":{"name":"hi.laoluo","email":"hi.laoluo@hilaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-01-07T23:27:37+08:00","added":[],"removed":[],"modified":["backend/src/modules/customer-balance/customer-balance.service.ts","backend/src/modules/financial-reports/financial-reports.service.ts"]}],"total_commits":0,"head_commit":{"id":"abd8cdd0283c96dc4a62fbf753d2aca2e68aa379","message":"fix: 修复前端请求 pageSize 超出后端限制\n\n后端 baseListQuerySchema 限制 pageSize 最大为 100,修复以下文件:\n- customer-balance/Index.vue: 500 → 100\n- opportunities/Pipeline.vue: 200 → 100\n- crm-activities/Index.vue: 500 → 100\n- ar-ledger/StatementGenerator.vue: 1000 → 100\n- disbursements/ApLedgerTab.vue: 200 → 100\n- hr/attendance/SchedulesTab.vue: 200 → 100\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\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/abd8cdd0283c96dc4a62fbf753d2aca2e68aa379","author":{"name":"hi.laoluo","email":"hi.laoluo@hilaoluodeMacBook-Pro.local","username":""},"committer":{"name":"hi.laoluo","email":"hi.laoluo@hilaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-01-08T00:11:49+08:00","added":[],"removed":[],"modified":["frontend/src/views/ar-ledger/components/StatementGenerator.vue","frontend/src/views/crm-activities/Index.vue","frontend/src/views/customer-balance/Index.vue","frontend/src/views/disbursements/components/ApLedgerTab.vue","frontend/src/views/hr/attendance/components/SchedulesTab.vue","frontend/src/views/opportunities/Pipeline.vue"]},"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":4844,"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-23T23:59:14+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"}}... |