|
7277
|
fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御
|
6
|
5
|
health-check.yml
|
7203
|
-2
|
104
|
refs/heads/main
|
df7b6f46170cb46db4771dd1e07991b0b13d90a0
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"80c2bdb2f93a19aa53d16ded06387b70c6084bf8","after":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/80c2bdb2f93a19aa53d16ded06387b70c6084bf8...df7b6f46170cb46db4771dd1e07991b0b13d90a0","commits":[{"id":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/df7b6f46170cb46db4771dd1e07991b0b13d90a0","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-23T07:51:53+08:00","added":[],"removed":[],"modified":["frontend/src/views/approval-configs/Form.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.vue"]}],"total_commits":0,"head_commit":{"id":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/df7b6f46170cb46db4771dd1e07991b0b13d90a0","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-23T07:51:53+08:00","added":[],"removed":[],"modified":["frontend/src/views/approval-configs/Form.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.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/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":1919904,"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":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-03-23T07:43:43+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
|
1774225540
|
1774225540
|
0
|
1774225540
|
1774225540
|
|
|
0
|
Edit
Delete
|
|
7278
|
fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御
|
6
|
5
|
health-check.yml
|
7204
|
-2
|
104
|
refs/heads/main
|
df7b6f46170cb46db4771dd1e07991b0b13d90a0
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"80c2bdb2f93a19aa53d16ded06387b70c6084bf8","after":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/80c2bdb2f93a19aa53d16ded06387b70c6084bf8...df7b6f46170cb46db4771dd1e07991b0b13d90a0","commits":[{"id":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/df7b6f46170cb46db4771dd1e07991b0b13d90a0","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-23T07:51:53+08:00","added":[],"removed":[],"modified":["frontend/src/views/approval-configs/Form.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.vue"]}],"total_commits":0,"head_commit":{"id":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/df7b6f46170cb46db4771dd1e07991b0b13d90a0","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-23T07:51:53+08:00","added":[],"removed":[],"modified":["frontend/src/views/approval-configs/Form.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.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/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":1919904,"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":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-03-23T07:43:43+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
|
1774225840
|
1774225840
|
0
|
1774225840
|
1774225840
|
|
|
0
|
Edit
Delete
|
|
7279
|
fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御
|
6
|
5
|
health-check.yml
|
7205
|
-2
|
104
|
refs/heads/main
|
df7b6f46170cb46db4771dd1e07991b0b13d90a0
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"80c2bdb2f93a19aa53d16ded06387b70c6084bf8","after":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/80c2bdb2f93a19aa53d16ded06387b70c6084bf8...df7b6f46170cb46db4771dd1e07991b0b13d90a0","commits":[{"id":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/df7b6f46170cb46db4771dd1e07991b0b13d90a0","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-23T07:51:53+08:00","added":[],"removed":[],"modified":["frontend/src/views/approval-configs/Form.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.vue"]}],"total_commits":0,"head_commit":{"id":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/df7b6f46170cb46db4771dd1e07991b0b13d90a0","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-23T07:51:53+08:00","added":[],"removed":[],"modified":["frontend/src/views/approval-configs/Form.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.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/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":1919904,"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":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-03-23T07:43:43+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
|
1774226140
|
1774226140
|
0
|
1774226140
|
1774226140
|
|
|
0
|
Edit
Delete
|
|
7280
|
fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御
|
6
|
5
|
health-check.yml
|
7206
|
-2
|
104
|
refs/heads/main
|
df7b6f46170cb46db4771dd1e07991b0b13d90a0
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"80c2bdb2f93a19aa53d16ded06387b70c6084bf8","after":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/80c2bdb2f93a19aa53d16ded06387b70c6084bf8...df7b6f46170cb46db4771dd1e07991b0b13d90a0","commits":[{"id":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/df7b6f46170cb46db4771dd1e07991b0b13d90a0","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-23T07:51:53+08:00","added":[],"removed":[],"modified":["frontend/src/views/approval-configs/Form.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.vue"]}],"total_commits":0,"head_commit":{"id":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/df7b6f46170cb46db4771dd1e07991b0b13d90a0","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-23T07:51:53+08:00","added":[],"removed":[],"modified":["frontend/src/views/approval-configs/Form.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.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/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":1919904,"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":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-03-23T07:43:43+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
|
1774226440
|
1774226440
|
0
|
1774226440
|
1774226440
|
|
|
0
|
Edit
Delete
|
|
7281
|
fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御
|
6
|
5
|
health-check.yml
|
7207
|
-2
|
104
|
refs/heads/main
|
df7b6f46170cb46db4771dd1e07991b0b13d90a0
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"80c2bdb2f93a19aa53d16ded06387b70c6084bf8","after":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/80c2bdb2f93a19aa53d16ded06387b70c6084bf8...df7b6f46170cb46db4771dd1e07991b0b13d90a0","commits":[{"id":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/df7b6f46170cb46db4771dd1e07991b0b13d90a0","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-23T07:51:53+08:00","added":[],"removed":[],"modified":["frontend/src/views/approval-configs/Form.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.vue"]}],"total_commits":0,"head_commit":{"id":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/df7b6f46170cb46db4771dd1e07991b0b13d90a0","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-23T07:51:53+08:00","added":[],"removed":[],"modified":["frontend/src/views/approval-configs/Form.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.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/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":1919904,"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":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-03-23T07:43:43+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
|
1774226740
|
1774226740
|
0
|
1774226740
|
1774226740
|
|
|
0
|
Edit
Delete
|
|
7282
|
fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御
|
6
|
5
|
health-check.yml
|
7208
|
-2
|
104
|
refs/heads/main
|
df7b6f46170cb46db4771dd1e07991b0b13d90a0
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"80c2bdb2f93a19aa53d16ded06387b70c6084bf8","after":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/80c2bdb2f93a19aa53d16ded06387b70c6084bf8...df7b6f46170cb46db4771dd1e07991b0b13d90a0","commits":[{"id":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/df7b6f46170cb46db4771dd1e07991b0b13d90a0","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-23T07:51:53+08:00","added":[],"removed":[],"modified":["frontend/src/views/approval-configs/Form.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.vue"]}],"total_commits":0,"head_commit":{"id":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/df7b6f46170cb46db4771dd1e07991b0b13d90a0","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-23T07:51:53+08:00","added":[],"removed":[],"modified":["frontend/src/views/approval-configs/Form.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.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/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":1919904,"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":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-03-23T07:43:43+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
|
1774227040
|
1774227040
|
0
|
1774227040
|
1774227040
|
|
|
0
|
Edit
Delete
|
|
7283
|
fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御
|
6
|
5
|
health-check.yml
|
7209
|
-2
|
104
|
refs/heads/main
|
df7b6f46170cb46db4771dd1e07991b0b13d90a0
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"80c2bdb2f93a19aa53d16ded06387b70c6084bf8","after":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/80c2bdb2f93a19aa53d16ded06387b70c6084bf8...df7b6f46170cb46db4771dd1e07991b0b13d90a0","commits":[{"id":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/df7b6f46170cb46db4771dd1e07991b0b13d90a0","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-23T07:51:53+08:00","added":[],"removed":[],"modified":["frontend/src/views/approval-configs/Form.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.vue"]}],"total_commits":0,"head_commit":{"id":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/df7b6f46170cb46db4771dd1e07991b0b13d90a0","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-23T07:51:53+08:00","added":[],"removed":[],"modified":["frontend/src/views/approval-configs/Form.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.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/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":1919904,"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":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-03-23T07:43:43+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
|
1774227340
|
1774227340
|
0
|
1774227340
|
1774227340
|
|
|
0
|
Edit
Delete
|
|
7284
|
fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御
|
6
|
5
|
health-check.yml
|
7210
|
-2
|
104
|
refs/heads/main
|
df7b6f46170cb46db4771dd1e07991b0b13d90a0
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"80c2bdb2f93a19aa53d16ded06387b70c6084bf8","after":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/80c2bdb2f93a19aa53d16ded06387b70c6084bf8...df7b6f46170cb46db4771dd1e07991b0b13d90a0","commits":[{"id":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/df7b6f46170cb46db4771dd1e07991b0b13d90a0","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-23T07:51:53+08:00","added":[],"removed":[],"modified":["frontend/src/views/approval-configs/Form.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.vue"]}],"total_commits":0,"head_commit":{"id":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/df7b6f46170cb46db4771dd1e07991b0b13d90a0","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-23T07:51:53+08:00","added":[],"removed":[],"modified":["frontend/src/views/approval-configs/Form.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.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/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":1919904,"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":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-03-23T07:43:43+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
|
1774227640
|
1774227640
|
0
|
1774227640
|
1774227640
|
|
|
0
|
Edit
Delete
|
|
7285
|
fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御
|
6
|
5
|
health-check.yml
|
7211
|
-2
|
104
|
refs/heads/main
|
df7b6f46170cb46db4771dd1e07991b0b13d90a0
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"80c2bdb2f93a19aa53d16ded06387b70c6084bf8","after":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/80c2bdb2f93a19aa53d16ded06387b70c6084bf8...df7b6f46170cb46db4771dd1e07991b0b13d90a0","commits":[{"id":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/df7b6f46170cb46db4771dd1e07991b0b13d90a0","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-23T07:51:53+08:00","added":[],"removed":[],"modified":["frontend/src/views/approval-configs/Form.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.vue"]}],"total_commits":0,"head_commit":{"id":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/df7b6f46170cb46db4771dd1e07991b0b13d90a0","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-23T07:51:53+08:00","added":[],"removed":[],"modified":["frontend/src/views/approval-configs/Form.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.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/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":1919904,"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":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-03-23T07:43:43+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
|
1774227940
|
1774227940
|
0
|
1774227940
|
1774227940
|
|
|
0
|
Edit
Delete
|
|
7286
|
fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御
|
6
|
5
|
health-check.yml
|
7212
|
-2
|
104
|
refs/heads/main
|
df7b6f46170cb46db4771dd1e07991b0b13d90a0
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"80c2bdb2f93a19aa53d16ded06387b70c6084bf8","after":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/80c2bdb2f93a19aa53d16ded06387b70c6084bf8...df7b6f46170cb46db4771dd1e07991b0b13d90a0","commits":[{"id":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/df7b6f46170cb46db4771dd1e07991b0b13d90a0","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-23T07:51:53+08:00","added":[],"removed":[],"modified":["frontend/src/views/approval-configs/Form.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.vue"]}],"total_commits":0,"head_commit":{"id":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/df7b6f46170cb46db4771dd1e07991b0b13d90a0","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-23T07:51:53+08:00","added":[],"removed":[],"modified":["frontend/src/views/approval-configs/Form.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.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/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":1919904,"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":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-03-23T07:43:43+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
|
1774228240
|
1774228240
|
0
|
1774228240
|
1774228240
|
|
|
0
|
Edit
Delete
|
|
7287
|
fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御
|
6
|
5
|
health-check.yml
|
7213
|
-2
|
104
|
refs/heads/main
|
df7b6f46170cb46db4771dd1e07991b0b13d90a0
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"80c2bdb2f93a19aa53d16ded06387b70c6084bf8","after":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/80c2bdb2f93a19aa53d16ded06387b70c6084bf8...df7b6f46170cb46db4771dd1e07991b0b13d90a0","commits":[{"id":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/df7b6f46170cb46db4771dd1e07991b0b13d90a0","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-23T07:51:53+08:00","added":[],"removed":[],"modified":["frontend/src/views/approval-configs/Form.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.vue"]}],"total_commits":0,"head_commit":{"id":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/df7b6f46170cb46db4771dd1e07991b0b13d90a0","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-23T07:51:53+08:00","added":[],"removed":[],"modified":["frontend/src/views/approval-configs/Form.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.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/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":1919904,"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":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-03-23T07:43:43+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
|
1774228540
|
1774228540
|
0
|
1774228540
|
1774228540
|
|
|
0
|
Edit
Delete
|
|
7288
|
fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御
|
6
|
5
|
health-check.yml
|
7214
|
-2
|
104
|
refs/heads/main
|
df7b6f46170cb46db4771dd1e07991b0b13d90a0
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"80c2bdb2f93a19aa53d16ded06387b70c6084bf8","after":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/80c2bdb2f93a19aa53d16ded06387b70c6084bf8...df7b6f46170cb46db4771dd1e07991b0b13d90a0","commits":[{"id":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/df7b6f46170cb46db4771dd1e07991b0b13d90a0","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-23T07:51:53+08:00","added":[],"removed":[],"modified":["frontend/src/views/approval-configs/Form.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.vue"]}],"total_commits":0,"head_commit":{"id":"df7b6f46170cb46db4771dd1e07991b0b13d90a0","message":"fix: P2 交互问题修复 — API 冗余字段 + 后端缺失路由防御\n\n1. approval-configs 提交数据修复:\n - 删除冗余 objectType(后端期望 entityType)\n - 删除冗余 nodes(后端期望 steps)\n\n2. geo-keywords 后端缺失路由防御(7 个):\n - 批量删除/排名检查/导出等按钮禁用 + warning 提示\n - 保留 API 方法定义供后端实现后使用\n\n3. groupbuy-participants 后端缺失路由防御(8 个):\n - GET/:id 不存在 → 查看/编辑改为 warning 提示\n - stats 接口 catch 兜底返回空数据\n\n4. 确认无需修改的模块:\n - invoice-requests 复用 invoicesApi:设计如此(同一后端模块)\n - video-publishing 复用 socialPostApi:设计如此(视频子集视图)\n - outbound 复用 shipments 路由:后端已覆盖所有端点\n - qr-codes 使用 campaignsApi:后端缺失 qr-codes 路由,前端无法单独修复\n\n验证:Vite 构建通过\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/df7b6f46170cb46db4771dd1e07991b0b13d90a0","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-23T07:51:53+08:00","added":[],"removed":[],"modified":["frontend/src/views/approval-configs/Form.vue","frontend/src/views/geo-keywords/Detail.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/groupbuy-participants/Detail.vue","frontend/src/views/groupbuy-participants/Form.vue","frontend/src/views/groupbuy-participants/Index.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/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":1919904,"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":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-03-23T07:43:43+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
|
1774228840
|
1774228840
|
0
|
1774228840
|
1774228840
|
|
|
0
|
Edit
Delete
|
|
39
|
t22收拾收拾99ii
|
2
|
2
|
hello-world.yaml
|
38
|
1
|
0
|
refs/heads/main
|
dd0c28fc64f996117a47cf5b8ed9e7ae228630ef
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"8b9043cb7c726e4e59948720bb4009d9c10c8041","after":"dd0c28fc64f996117a47cf5b8ed9e7ae228630ef","compare_url":"https://gitea.g-hi.com/juhai/testpc/compare/8b9043cb7c726e4e59948720bb4009d9c10c8041...dd0c28fc64f996117a47cf5b8ed9e7ae228630ef","commits":[{"id":"dd0c28fc64f996117a47cf5b8ed9e7ae228630ef","message":"t22收拾收拾99ii\n","url":"https://gitea.g-hi.com/juhai/testpc/commit/dd0c28fc64f996117a47cf5b8ed9e7ae228630ef","author":{"name":"zhangjunnan","email":"121158035@qq.com","username":"zhangjunnan"},"committer":{"name":"zhangjunnan","email":"121158035@qq.com","username":"zhangjunnan"},"verification":null,"timestamp":"2026-02-12T18:06:47+08:00","added":[],"removed":[],"modified":[".gitea/workflows/hello-world.yaml","pc/kg.php"]}],"total_commits":0,"head_commit":{"id":"dd0c28fc64f996117a47cf5b8ed9e7ae228630ef","message":"t22收拾收拾99ii\n","url":"https://gitea.g-hi.com/juhai/testpc/commit/dd0c28fc64f996117a47cf5b8ed9e7ae228630ef","author":{"name":"zhangjunnan","email":"121158035@qq.com","username":"zhangjunnan"},"committer":{"name":"zhangjunnan","email":"121158035@qq.com","username":"zhangjunnan"},"verification":null,"timestamp":"2026-02-12T18:06:47+08:00","added":[],"removed":[],"modified":[".gitea/workflows/hello-world.yaml","pc/kg.php"]},"repository":{"id":2,"owner":{"id":2,"login":"juhai","login_name":"","source_id":0,"full_name":"","email":"","avatar_url":"https://gitea.g-hi.com/avatars/8edeea9a6ada1d3d48db9231e9328f15","html_url":"https://gitea.g-hi.com/juhai","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T15:37:00+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"private","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"juhai"},"name":"testpc","full_name":"juhai/testpc","description":"pc测试环境","empty":false,"private":false,"fork":false,"template":false,"parent":null,"mirror":false,"size":17766,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/juhai/testpc/languages","html_url":"https://gitea.g-hi.com/juhai/testpc","url":"https://gitea.g-hi.com/api/v1/repos/juhai/testpc","link":"","ssh_url":"git@gitea.g-hi.com:juhai/testpc.git","clone_url":"https://gitea.g-hi.com/juhai/testpc.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-06T13:52:11+08:00","updated_at":"2026-02-12T18:05:26+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":true,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","repo_transfer":null},"pusher":{"id":1,"login":"zhangjunnan","login_name":"","source_id":0,"full_name":"","email":"zhangjunnan@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatars/db7dcb12d6f370df9341167b55583f8b","html_url":"https://gitea.g-hi.com/zhangjunnan","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T15:36:25+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"zhangjunnan"},"sender":{"id":1,"login":"zhangjunnan","login_name":"","source_id":0,"full_name":"","email":"zhangjunnan@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatars/db7dcb12d6f370df9341167b55583f8b","html_url":"https://gitea.g-hi.com/zhangjunnan","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T15:36:25+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"zhangjunnan"}}...
|
push
|
1
|
3
|
1770890814
|
1770890822
|
0
|
1770890813
|
1770890822
|
NULL
|
|
0
|
Edit
Delete
|
|
7649
|
feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理...
|
6
|
5
|
e2e-tests.yml
|
7574
|
5
|
0
|
refs/heads/main
|
dbf34b08bbb60650d15b0c55262dbfe8d0a3a655
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"8c39619c9cdb0d888d10942bf50533c8238021df","after":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/8c39619c9cdb0d888d10942bf50533c8238021df...dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","commits":[{"id":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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-24T10:14:13+08:00","added":["backend/src/shared/constants/events/common.ts","backend/src/shared/constants/events/finance.ts","backend/src/shared/constants/events/hr.ts","backend/src/shared/constants/events/im.ts","backend/src/shared/constants/events/index.ts","backend/src/shared/constants/events/knowledge.ts","backend/src/shared/constants/events/lifecycle.ts","backend/src/shared/constants/events/marketing.ts","backend/src/shared/constants/events/sales.ts","backend/src/shared/constants/events/service.ts","backend/src/shared/constants/events/store.ts","backend/src/shared/constants/events/supply_chain.ts","backend/src/shared/constants/events/system.ts","backend/src/shared/services/list-cache.service.ts","backend/src/shared/utils/cache-utils.ts"],"removed":[],"modified":["backend/src/consumers/attribution.consumer.ts","backend/src/consumers/campaign-effectiveness.consumer.ts","backend/src/consumers/marketing-workflow-executor.consumer.ts","backend/src/consumers/scheduled-jobs.consumer.ts","backend/src/modules/ai-agents/services/knowledge-vector-enhanced.service.ts","backend/src/modules/alliance-settlements/alliance-settlement.service.test.ts","backend/src/modules/campaign-analytics/campaign-analytics.controller.ts","backend/src/modules/contract-templates/contract-template.service.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.service.test.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/leads/lead-ai-scoring.service.ts","backend/src/modules/leads/lead-sla.service.ts","backend/src/modules/leads/lead-smart-assignment.service.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-interactions/livestream-realtime.service.ts","backend/src/modules/marketing-automation/workflow-trigger.service.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.controller.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.routes.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.service.ts","backend/src/modules/notifications/notification.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/payments/payment.service.test.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/segments/segment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-interactions/social-interactions.service.ts","backend/src/modules/store-staff/store-staff.service.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/shared/constants/events.ts","backend/src/shared/services/partition-maintenance.service.ts","backend/src/shared/state-machines/machines/contract.machine.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/types.ts","backend/src/shared/state-machines/utils/transitions/sales.transitions.ts","backend/src/shared/utils/biz-code.ts","frontend/src/api/adapters.ts","frontend/src/api/im-binding.ts","frontend/src/api/modules/ad-accounts.ts","frontend/src/api/modules/ad-audiences.ts","frontend/src/api/modules/ad-creatives.ts","frontend/src/api/modules/ad-placement.ts","frontend/src/api/modules/ad-reports.ts","frontend/src/api/modules/agent-group.ts","frontend/src/api/modules/ai-agent.ts","frontend/src/api/modules/alliance-analytics.ts","frontend/src/api/modules/alliance-merchants.ts","frontend/src/api/modules/alliance-products.ts","frontend/src/api/modules/alliance-promotions.ts","frontend/src/api/modules/alliance-referrals.ts","frontend/src/api/modules/analytics.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/assets.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/audit-logs.ts","frontend/src/api/modules/campaign-drafts.ts","frontend/src/api/modules/campaign-library.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/campaign-tools.ts","frontend/src/api/modules/campaign-use-case-templates.ts","frontend/src/api/modules/campaign-wizard.ts","frontend/src/api/modules/campaigns.ts","frontend/src/api/modules/cohort-analysis.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-activities.ts","frontend/src/api/modules/community-analytics.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-groups.ts","frontend/src/api/modules/community-levels.ts","frontend/src/api/modules/community-members.ts","frontend/src/api/modules/community-messages.ts","frontend/src/api/modules/community-points.ts","frontend/src/api/modules/consumer-behavior-analytics.ts","frontend/src/api/modules/content-categories.ts","frontend/src/api/modules/content-copyright.ts","frontend/src/api/modules/content-creation.ts","frontend/src/api/modules/content-distribution.ts","frontend/src/api/modules/content-library.ts","frontend/src/api/modules/content-templates.ts","frontend/src/api/modules/contract-templates.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/cross-domain-funnel.ts","frontend/src/api/modules/customer-analytics.ts","frontend/src/api/modules/customer-health.ts","frontend/src/api/modules/customer-journey.ts","frontend/src/api/modules/customer-ltv.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customer-segmentation.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/dictionaries.ts","frontend/src/api/modules/dimension-transform.ts","frontend/src/api/modules/email-marketing.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/event-logs.ts","frontend/src/api/modules/events.ts","frontend/src/api/modules/expense.ts","frontend/src/api/modules/financial-reports.ts","frontend/src/api/modules/fulfillment.ts","frontend/src/api/modules/geo-fences.ts","frontend/src/api/modules/geo-pois.ts","frontend/src/api/modules/groupbuy-analytics.ts","frontend/src/api/modules/groupbuy-campaigns.ts","frontend/src/api/modules/groupbuy-platforms.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-products.ts","frontend/src/api/modules/groupbuy-settlements.ts","frontend/src/api/modules/hr-benefits.ts","frontend/src/api/modules/hr-payroll.ts","frontend/src/api/modules/im-channels.ts","frontend/src/api/modules/im.ts","frontend/src/api/modules/integration-services.ts","frontend/src/api/modules/intent-analyzer.ts","frontend/src/api/modules/journey-orchestration.ts","frontend/src/api/modules/knowledge-candidates.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-groupbuy-conversion.ts","frontend/src/api/modules/livestream-groupbuy.ts","frontend/src/api/modules/livestream-interactions.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/location-assessments.ts","frontend/src/api/modules/login-logs.ts","frontend/src/api/modules/maintenance.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-calendar.ts","frontend/src/api/modules/marketing-chatbot.ts","frontend/src/api/modules/marketing-content.ts","frontend/src/api/modules/marketing-forms.ts","frontend/src/api/modules/marketing-matrix.ts","frontend/src/api/modules/marketing-north-star.ts","frontend/src/api/modules/marketing-timeslots.ts","frontend/src/api/modules/marketing.ts","frontend/src/api/modules/omnichannel-dashboard.ts","frontend/src/api/modules/omnichannel-data-hub.ts","frontend/src/api/modules/omnichannel-touchpoints.ts","frontend/src/api/modules/operation-logs.ts","frontend/src/api/modules/opportunities.ts","frontend/src/api/modules/predictive-analytics.ts","frontend/src/api/modules/process-designer.ts","frontend/src/api/modules/process.ts","frontend/src/api/modules/products.ts","frontend/src/api/modules/realtime-trigger.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/resource-requests.ts","frontend/src/api/modules/revenue.ts","frontend/src/api/modules/rfm-analysis.ts","frontend/src/api/modules/rma.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/scheduled-jobs.ts","frontend/src/api/modules/search.ts","frontend/src/api/modules/segments.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/api/modules/sms-marketing.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/api/modules/social-auto-replies.ts","frontend/src/api/modules/social-competitors.ts","frontend/src/api/modules/social-hot-topics.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/spare-parts.ts","frontend/src/api/modules/store-performance.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supplier-management.ts","frontend/src/api/modules/swot-analyses.ts","frontend/src/api/modules/system-events.ts","frontend/src/api/modules/ticket-workflows.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/tob-toc-gateway.ts","frontend/src/api/modules/unified-campaign.ts","frontend/src/api/modules/web-tracking.ts","frontend/src/api/modules/workflow-generator.ts","frontend/src/api/response-normalizer.ts","frontend/src/components/business/ActivityTimeline.vue","frontend/src/components/business/EventStreamPanel.vue","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/DataTable.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/mobile/MobileFilter.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/types/ai-agent.ts","frontend/src/utils/echarts.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/abm-marketing/Index.vue","frontend/src/views/acquisition/Index.vue","frontend/src/views/ad-accounts/Form.vue","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-analytics/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-placement/ABTests.vue","frontend/src/views/ad-placement/AudiencePacks.vue","frontend/src/views/ad-placement/BudgetAlerts.vue","frontend/src/views/ad-placement/Creatives.vue","frontend/src/views/ad-placement/Index.vue","frontend/src/views/ad-placement/RoiAnalysis.vue","frontend/src/views/alliance-agreements/Index.vue","frontend/src/views/alliance-campaigns/Index.vue","frontend/src/views/alliance-coupons/Index.vue","frontend/src/views/alliance-packages/Index.vue","frontend/src/views/alliance-partners/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/analytics/roi/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Form.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/attribution/Index.vue","frontend/src/views/auth/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-analytics/Index.vue","frontend/src/views/campaign-library/Index.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaign-tools/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/ToolConfigDialog.vue","frontend/src/views/campaigns/wizard/Step3Tools.vue","frontend/src/views/campaigns/wizard/Step4BasicInfo.vue","frontend/src/views/campaigns/wizard/Step7Review.vue","frontend/src/views/campaigns/wizard/components/ToolConfigForms.vue","frontend/src/views/channel-analytics/Index.vue","frontend/src/views/community-bots/Index.vue","frontend/src/views/community-fission/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/community-tasks/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Detail.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/contracts/Form.vue","frontend/src/views/conversion-paths/Index.vue","frontend/src/views/cost-allocation/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Detail.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Form.vue","frontend/src/views/departments/Detail.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Alerts.vue","frontend/src/views/devices/Form.vue","frontend/src/views/diagnosis/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-templates/Form.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/geo-pois/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-inventory/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-platforms/Index.vue","frontend/src/views/groupbuy-pricing/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-promotions/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/hr/attendance/components/AttendanceTab.vue","frontend/src/views/hr/attendance/components/HolidaysTab.vue","frontend/src/views/hr/attendance/components/LeavesTab.vue","frontend/src/views/hr/attendance/components/OvertimeTab.vue","frontend/src/views/hr/attendance/components/ShiftsTab.vue","frontend/src/views/hr/training/components/CertificatesTab.vue","frontend/src/views/hr/training/components/CompetencyTab.vue","frontend/src/views/hr/training/components/CoursesTab.vue","frontend/src/views/hr/training/components/ExamsTab.vue","frontend/src/views/hr/training/components/PlansTab.vue","frontend/src/views/hr/training/components/SessionsTab.vue","frontend/src/views/inventory/Counts.vue","frontend/src/views/inventory/Index.vue","frontend/src/views/inventory/Snapshots.vue","frontend/src/views/journey-orchestration/Form.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/lead-assignment/Form.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/lead-qualification/Form.vue","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/Index.vue","frontend/src/views/livestream-gifts/Index.vue","frontend/src/views/livestream-groupbuy-conversion/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/maintenance/Index.vue","frontend/src/views/maintenance/TaskDetail.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Detail.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/marketing/budget-alerts/Index.vue","frontend/src/views/mdm/Index.vue","frontend/src/views/member-benefits/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/menus/Index.vue","frontend/src/views/notification-configs/Index.vue","frontend/src/views/notifications/Index.vue","frontend/src/views/omnichannel-dashboard/Index.vue","frontend/src/views/omnichannel-data-hub/Index.vue","frontend/src/views/opportunities/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/orders/Index.vue","frontend/src/views/org-chart/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/predictive-analytics/Form.vue","frontend/src/views/process-designer/Designer.vue","frontend/src/views/product-analytics/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/qr-codes/Index.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/realtime-trigger/Form.vue","frontend/src/views/renewal-tasks/Index.vue","frontend/src/views/rfm-analysis/Detail.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/scheduled-jobs/Index.vue","frontend/src/views/segments/Index.vue","frontend/src/views/service-monitor/Index.vue","frontend/src/views/settings/Index.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-matrix/Index.vue","frontend/src/views/social-posts/Detail.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/spare-parts/components/TransactionHistory.vue","frontend/src/views/stage-knowledge/Index.vue","frontend/src/views/store-configs/Index.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/suppliers/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/system-monitor/Index.vue","frontend/src/views/system/AuditLogs.vue","frontend/src/views/tenant-configs/Index.vue","frontend/src/views/tickets/Form.vue","frontend/src/views/tickets/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-publishing/Index.vue","frontend/src/views/web-tracking/Index.vue"]}],"total_commits":0,"head_commit":{"id":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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-24T10:14:13+08:00","added":["backend/src/shared/constants/events/common.ts","backend/src/shared/constants/events/finance.ts","backend/src/shared/constants/events/hr.ts","backend/src/shared/constants/events/im.ts","backend/src/shared/constants/events/index.ts","backend/src/shared/constants/events/knowledge.ts","backend/src/shared/constants/events/lifecycle.ts","backend/src/shared/constants/events/marketing.ts","backend/src/shared/constants/events/sales.ts","backend/src/shared/constants/events/service.ts","backend/src/shared/constants/events/store.ts","backend/src/shared/constants/events/supply_chain.ts","backend/src/shared/constants/events/system.ts","backend/src/shared/services/list-cache.service.ts","backend/src/shared/utils/cache-utils.ts"],"removed":[],"modified":["backend/src/consumers/attribution.consumer.ts","backend/src/consumers/campaign-effectiveness.consumer.ts","backend/src/consumers/marketing-workflow-executor.consumer.ts","backend/src/consumers/scheduled-jobs.consumer.ts","backend/src/modules/ai-agents/services/knowledge-vector-enhanced.service.ts","backend/src/modules/alliance-settlements/alliance-settlement.service.test.ts","backend/src/modules/campaign-analytics/campaign-analytics.controller.ts","backend/src/modules/contract-templates/contract-template.service.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.service.test.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/leads/lead-ai-scoring.service.ts","backend/src/modules/leads/lead-sla.service.ts","backend/src/modules/leads/lead-smart-assignment.service.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-interactions/livestream-realtime.service.ts","backend/src/modules/marketing-automation/workflow-trigger.service.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.controller.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.routes.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.service.ts","backend/src/modules/notifications/notification.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/payments/payment.service.test.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/segments/segment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-interactions/social-interactions.service.ts","backend/src/modules/store-staff/store-staff.service.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/shared/constants/events.ts","backend/src/shared/services/partition-maintenance.service.ts","backend/src/shared/state-machines/machines/contract.machine.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/types.ts","backend/src/shared/state-machines/utils/transitions/sales.transitions.ts","backend/src/shared/utils/biz-code.ts","frontend/src/api/adapters.ts","frontend/src/api/im-binding.ts","frontend/src/api/modules/ad-accounts.ts","frontend/src/api/modules/ad-audiences.ts","frontend/src/api/modules/ad-creatives.ts","frontend/src/api/modules/ad-placement.ts","frontend/src/api/modules/ad-reports.ts","frontend/src/api/modules/agent-group.ts","frontend/src/api/modules/ai-agent.ts","frontend/src/api/modules/alliance-analytics.ts","frontend/src/api/modules/alliance-merchants.ts","frontend/src/api/modules/alliance-products.ts","frontend/src/api/modules/alliance-promotions.ts","frontend/src/api/modules/alliance-referrals.ts","frontend/src/api/modules/analytics.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/assets.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/audit-logs.ts","frontend/src/api/modules/campaign-drafts.ts","frontend/src/api/modules/campaign-library.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/campaign-tools.ts","frontend/src/api/modules/campaign-use-case-templates.ts","frontend/src/api/modules/campaign-wizard.ts","frontend/src/api/modules/campaigns.ts","frontend/src/api/modules/cohort-analysis.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-activities.ts","frontend/src/api/modules/community-analytics.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-groups.ts","frontend/src/api/modules/community-levels.ts","frontend/src/api/modules/community-members.ts","frontend/src/api/modules/community-messages.ts","frontend/src/api/modules/community-points.ts","frontend/src/api/modules/consumer-behavior-analytics.ts","frontend/src/api/modules/content-categories.ts","frontend/src/api/modules/content-copyright.ts","frontend/src/api/modules/content-creation.ts","frontend/src/api/modules/content-distribution.ts","frontend/src/api/modules/content-library.ts","frontend/src/api/modules/content-templates.ts","frontend/src/api/modules/contract-templates.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/cross-domain-funnel.ts","frontend/src/api/modules/customer-analytics.ts","frontend/src/api/modules/customer-health.ts","frontend/src/api/modules/customer-journey.ts","frontend/src/api/modules/customer-ltv.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customer-segmentation.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/dictionaries.ts","frontend/src/api/modules/dimension-transform.ts","frontend/src/api/modules/email-marketing.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/event-logs.ts","frontend/src/api/modules/events.ts","frontend/src/api/modules/expense.ts","frontend/src/api/modules/financial-reports.ts","frontend/src/api/modules/fulfillment.ts","frontend/src/api/modules/geo-fences.ts","frontend/src/api/modules/geo-pois.ts","frontend/src/api/modules/groupbuy-analytics.ts","frontend/src/api/modules/groupbuy-campaigns.ts","frontend/src/api/modules/groupbuy-platforms.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-products.ts","frontend/src/api/modules/groupbuy-settlements.ts","frontend/src/api/modules/hr-benefits.ts","frontend/src/api/modules/hr-payroll.ts","frontend/src/api/modules/im-channels.ts","frontend/src/api/modules/im.ts","frontend/src/api/modules/integration-services.ts","frontend/src/api/modules/intent-analyzer.ts","frontend/src/api/modules/journey-orchestration.ts","frontend/src/api/modules/knowledge-candidates.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-groupbuy-conversion.ts","frontend/src/api/modules/livestream-groupbuy.ts","frontend/src/api/modules/livestream-interactions.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/location-assessments.ts","frontend/src/api/modules/login-logs.ts","frontend/src/api/modules/maintenance.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-calendar.ts","frontend/src/api/modules/marketing-chatbot.ts","frontend/src/api/modules/marketing-content.ts","frontend/src/api/modules/marketing-forms.ts","frontend/src/api/modules/marketing-matrix.ts","frontend/src/api/modules/marketing-north-star.ts","frontend/src/api/modules/marketing-timeslots.ts","frontend/src/api/modules/marketing.ts","frontend/src/api/modules/omnichannel-dashboard.ts","frontend/src/api/modules/omnichannel-data-hub.ts","frontend/src/api/modules/omnichannel-touchpoints.ts","frontend/src/api/modules/operation-logs.ts","frontend/src/api/modules/opportunities.ts","frontend/src/api/modules/predictive-analytics.ts","frontend/src/api/modules/process-designer.ts","frontend/src/api/modules/process.ts","frontend/src/api/modules/products.ts","frontend/src/api/modules/realtime-trigger.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/resource-requests.ts","frontend/src/api/modules/revenue.ts","frontend/src/api/modules/rfm-analysis.ts","frontend/src/api/modules/rma.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/scheduled-jobs.ts","frontend/src/api/modules/search.ts","frontend/src/api/modules/segments.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/api/modules/sms-marketing.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/api/modules/social-auto-replies.ts","frontend/src/api/modules/social-competitors.ts","frontend/src/api/modules/social-hot-topics.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/spare-parts.ts","frontend/src/api/modules/store-performance.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supplier-management.ts","frontend/src/api/modules/swot-analyses.ts","frontend/src/api/modules/system-events.ts","frontend/src/api/modules/ticket-workflows.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/tob-toc-gateway.ts","frontend/src/api/modules/unified-campaign.ts","frontend/src/api/modules/web-tracking.ts","frontend/src/api/modules/workflow-generator.ts","frontend/src/api/response-normalizer.ts","frontend/src/components/business/ActivityTimeline.vue","frontend/src/components/business/EventStreamPanel.vue","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/DataTable.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/mobile/MobileFilter.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/types/ai-agent.ts","frontend/src/utils/echarts.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/abm-marketing/Index.vue","frontend/src/views/acquisition/Index.vue","frontend/src/views/ad-accounts/Form.vue","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-analytics/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-placement/ABTests.vue","frontend/src/views/ad-placement/AudiencePacks.vue","frontend/src/views/ad-placement/BudgetAlerts.vue","frontend/src/views/ad-placement/Creatives.vue","frontend/src/views/ad-placement/Index.vue","frontend/src/views/ad-placement/RoiAnalysis.vue","frontend/src/views/alliance-agreements/Index.vue","frontend/src/views/alliance-campaigns/Index.vue","frontend/src/views/alliance-coupons/Index.vue","frontend/src/views/alliance-packages/Index.vue","frontend/src/views/alliance-partners/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/analytics/roi/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Form.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/attribution/Index.vue","frontend/src/views/auth/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-analytics/Index.vue","frontend/src/views/campaign-library/Index.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaign-tools/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/ToolConfigDialog.vue","frontend/src/views/campaigns/wizard/Step3Tools.vue","frontend/src/views/campaigns/wizard/Step4BasicInfo.vue","frontend/src/views/campaigns/wizard/Step7Review.vue","frontend/src/views/campaigns/wizard/components/ToolConfigForms.vue","frontend/src/views/channel-analytics/Index.vue","frontend/src/views/community-bots/Index.vue","frontend/src/views/community-fission/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/community-tasks/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Detail.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/contracts/Form.vue","frontend/src/views/conversion-paths/Index.vue","frontend/src/views/cost-allocation/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Detail.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Form.vue","frontend/src/views/departments/Detail.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Alerts.vue","frontend/src/views/devices/Form.vue","frontend/src/views/diagnosis/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-templates/Form.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/geo-pois/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-inventory/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-platforms/Index.vue","frontend/src/views/groupbuy-pricing/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-promotions/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/hr/attendance/components/AttendanceTab.vue","frontend/src/views/hr/attendance/components/HolidaysTab.vue","frontend/src/views/hr/attendance/components/LeavesTab.vue","frontend/src/views/hr/attendance/components/OvertimeTab.vue","frontend/src/views/hr/attendance/components/ShiftsTab.vue","frontend/src/views/hr/training/components/CertificatesTab.vue","frontend/src/views/hr/training/components/CompetencyTab.vue","frontend/src/views/hr/training/components/CoursesTab.vue","frontend/src/views/hr/training/components/ExamsTab.vue","frontend/src/views/hr/training/components/PlansTab.vue","frontend/src/views/hr/training/components/SessionsTab.vue","frontend/src/views/inventory/Counts.vue","frontend/src/views/inventory/Index.vue","frontend/src/views/inventory/Snapshots.vue","frontend/src/views/journey-orchestration/Form.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/lead-assignment/Form.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/lead-qualification/Form.vue","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/Index.vue","frontend/src/views/livestream-gifts/Index.vue","frontend/src/views/livestream-groupbuy-conversion/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/maintenance/Index.vue","frontend/src/views/maintenance/TaskDetail.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Detail.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/marketing/budget-alerts/Index.vue","frontend/src/views/mdm/Index.vue","frontend/src/views/member-benefits/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/menus/Index.vue","frontend/src/views/notification-configs/Index.vue","frontend/src/views/notifications/Index.vue","frontend/src/views/omnichannel-dashboard/Index.vue","frontend/src/views/omnichannel-data-hub/Index.vue","frontend/src/views/opportunities/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/orders/Index.vue","frontend/src/views/org-chart/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/predictive-analytics/Form.vue","frontend/src/views/process-designer/Designer.vue","frontend/src/views/product-analytics/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/qr-codes/Index.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/realtime-trigger/Form.vue","frontend/src/views/renewal-tasks/Index.vue","frontend/src/views/rfm-analysis/Detail.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/scheduled-jobs/Index.vue","frontend/src/views/segments/Index.vue","frontend/src/views/service-monitor/Index.vue","frontend/src/views/settings/Index.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-matrix/Index.vue","frontend/src/views/social-posts/Detail.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/spare-parts/components/TransactionHistory.vue","frontend/src/views/stage-knowledge/Index.vue","frontend/src/views/store-configs/Index.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/suppliers/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/system-monitor/Index.vue","frontend/src/views/system/AuditLogs.vue","frontend/src/views/tenant-configs/Index.vue","frontend/src/views/tickets/Form.vue","frontend/src/views/tickets/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-publishing/Index.vue","frontend/src/views/web-tracking/Index.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/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":1956552,"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":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-03-24T09:45:16+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
|
1774318462
|
1774319005
|
0
|
1774318460
|
1774319045
|
|
|
0
|
Edit
Delete
|
|
7650
|
feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理...
|
6
|
5
|
test-pipeline.yml
|
7575
|
5
|
0
|
refs/heads/main
|
dbf34b08bbb60650d15b0c55262dbfe8d0a3a655
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"8c39619c9cdb0d888d10942bf50533c8238021df","after":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/8c39619c9cdb0d888d10942bf50533c8238021df...dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","commits":[{"id":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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-24T10:14:13+08:00","added":["backend/src/shared/constants/events/common.ts","backend/src/shared/constants/events/finance.ts","backend/src/shared/constants/events/hr.ts","backend/src/shared/constants/events/im.ts","backend/src/shared/constants/events/index.ts","backend/src/shared/constants/events/knowledge.ts","backend/src/shared/constants/events/lifecycle.ts","backend/src/shared/constants/events/marketing.ts","backend/src/shared/constants/events/sales.ts","backend/src/shared/constants/events/service.ts","backend/src/shared/constants/events/store.ts","backend/src/shared/constants/events/supply_chain.ts","backend/src/shared/constants/events/system.ts","backend/src/shared/services/list-cache.service.ts","backend/src/shared/utils/cache-utils.ts"],"removed":[],"modified":["backend/src/consumers/attribution.consumer.ts","backend/src/consumers/campaign-effectiveness.consumer.ts","backend/src/consumers/marketing-workflow-executor.consumer.ts","backend/src/consumers/scheduled-jobs.consumer.ts","backend/src/modules/ai-agents/services/knowledge-vector-enhanced.service.ts","backend/src/modules/alliance-settlements/alliance-settlement.service.test.ts","backend/src/modules/campaign-analytics/campaign-analytics.controller.ts","backend/src/modules/contract-templates/contract-template.service.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.service.test.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/leads/lead-ai-scoring.service.ts","backend/src/modules/leads/lead-sla.service.ts","backend/src/modules/leads/lead-smart-assignment.service.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-interactions/livestream-realtime.service.ts","backend/src/modules/marketing-automation/workflow-trigger.service.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.controller.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.routes.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.service.ts","backend/src/modules/notifications/notification.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/payments/payment.service.test.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/segments/segment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-interactions/social-interactions.service.ts","backend/src/modules/store-staff/store-staff.service.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/shared/constants/events.ts","backend/src/shared/services/partition-maintenance.service.ts","backend/src/shared/state-machines/machines/contract.machine.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/types.ts","backend/src/shared/state-machines/utils/transitions/sales.transitions.ts","backend/src/shared/utils/biz-code.ts","frontend/src/api/adapters.ts","frontend/src/api/im-binding.ts","frontend/src/api/modules/ad-accounts.ts","frontend/src/api/modules/ad-audiences.ts","frontend/src/api/modules/ad-creatives.ts","frontend/src/api/modules/ad-placement.ts","frontend/src/api/modules/ad-reports.ts","frontend/src/api/modules/agent-group.ts","frontend/src/api/modules/ai-agent.ts","frontend/src/api/modules/alliance-analytics.ts","frontend/src/api/modules/alliance-merchants.ts","frontend/src/api/modules/alliance-products.ts","frontend/src/api/modules/alliance-promotions.ts","frontend/src/api/modules/alliance-referrals.ts","frontend/src/api/modules/analytics.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/assets.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/audit-logs.ts","frontend/src/api/modules/campaign-drafts.ts","frontend/src/api/modules/campaign-library.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/campaign-tools.ts","frontend/src/api/modules/campaign-use-case-templates.ts","frontend/src/api/modules/campaign-wizard.ts","frontend/src/api/modules/campaigns.ts","frontend/src/api/modules/cohort-analysis.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-activities.ts","frontend/src/api/modules/community-analytics.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-groups.ts","frontend/src/api/modules/community-levels.ts","frontend/src/api/modules/community-members.ts","frontend/src/api/modules/community-messages.ts","frontend/src/api/modules/community-points.ts","frontend/src/api/modules/consumer-behavior-analytics.ts","frontend/src/api/modules/content-categories.ts","frontend/src/api/modules/content-copyright.ts","frontend/src/api/modules/content-creation.ts","frontend/src/api/modules/content-distribution.ts","frontend/src/api/modules/content-library.ts","frontend/src/api/modules/content-templates.ts","frontend/src/api/modules/contract-templates.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/cross-domain-funnel.ts","frontend/src/api/modules/customer-analytics.ts","frontend/src/api/modules/customer-health.ts","frontend/src/api/modules/customer-journey.ts","frontend/src/api/modules/customer-ltv.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customer-segmentation.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/dictionaries.ts","frontend/src/api/modules/dimension-transform.ts","frontend/src/api/modules/email-marketing.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/event-logs.ts","frontend/src/api/modules/events.ts","frontend/src/api/modules/expense.ts","frontend/src/api/modules/financial-reports.ts","frontend/src/api/modules/fulfillment.ts","frontend/src/api/modules/geo-fences.ts","frontend/src/api/modules/geo-pois.ts","frontend/src/api/modules/groupbuy-analytics.ts","frontend/src/api/modules/groupbuy-campaigns.ts","frontend/src/api/modules/groupbuy-platforms.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-products.ts","frontend/src/api/modules/groupbuy-settlements.ts","frontend/src/api/modules/hr-benefits.ts","frontend/src/api/modules/hr-payroll.ts","frontend/src/api/modules/im-channels.ts","frontend/src/api/modules/im.ts","frontend/src/api/modules/integration-services.ts","frontend/src/api/modules/intent-analyzer.ts","frontend/src/api/modules/journey-orchestration.ts","frontend/src/api/modules/knowledge-candidates.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-groupbuy-conversion.ts","frontend/src/api/modules/livestream-groupbuy.ts","frontend/src/api/modules/livestream-interactions.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/location-assessments.ts","frontend/src/api/modules/login-logs.ts","frontend/src/api/modules/maintenance.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-calendar.ts","frontend/src/api/modules/marketing-chatbot.ts","frontend/src/api/modules/marketing-content.ts","frontend/src/api/modules/marketing-forms.ts","frontend/src/api/modules/marketing-matrix.ts","frontend/src/api/modules/marketing-north-star.ts","frontend/src/api/modules/marketing-timeslots.ts","frontend/src/api/modules/marketing.ts","frontend/src/api/modules/omnichannel-dashboard.ts","frontend/src/api/modules/omnichannel-data-hub.ts","frontend/src/api/modules/omnichannel-touchpoints.ts","frontend/src/api/modules/operation-logs.ts","frontend/src/api/modules/opportunities.ts","frontend/src/api/modules/predictive-analytics.ts","frontend/src/api/modules/process-designer.ts","frontend/src/api/modules/process.ts","frontend/src/api/modules/products.ts","frontend/src/api/modules/realtime-trigger.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/resource-requests.ts","frontend/src/api/modules/revenue.ts","frontend/src/api/modules/rfm-analysis.ts","frontend/src/api/modules/rma.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/scheduled-jobs.ts","frontend/src/api/modules/search.ts","frontend/src/api/modules/segments.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/api/modules/sms-marketing.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/api/modules/social-auto-replies.ts","frontend/src/api/modules/social-competitors.ts","frontend/src/api/modules/social-hot-topics.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/spare-parts.ts","frontend/src/api/modules/store-performance.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supplier-management.ts","frontend/src/api/modules/swot-analyses.ts","frontend/src/api/modules/system-events.ts","frontend/src/api/modules/ticket-workflows.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/tob-toc-gateway.ts","frontend/src/api/modules/unified-campaign.ts","frontend/src/api/modules/web-tracking.ts","frontend/src/api/modules/workflow-generator.ts","frontend/src/api/response-normalizer.ts","frontend/src/components/business/ActivityTimeline.vue","frontend/src/components/business/EventStreamPanel.vue","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/DataTable.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/mobile/MobileFilter.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/types/ai-agent.ts","frontend/src/utils/echarts.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/abm-marketing/Index.vue","frontend/src/views/acquisition/Index.vue","frontend/src/views/ad-accounts/Form.vue","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-analytics/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-placement/ABTests.vue","frontend/src/views/ad-placement/AudiencePacks.vue","frontend/src/views/ad-placement/BudgetAlerts.vue","frontend/src/views/ad-placement/Creatives.vue","frontend/src/views/ad-placement/Index.vue","frontend/src/views/ad-placement/RoiAnalysis.vue","frontend/src/views/alliance-agreements/Index.vue","frontend/src/views/alliance-campaigns/Index.vue","frontend/src/views/alliance-coupons/Index.vue","frontend/src/views/alliance-packages/Index.vue","frontend/src/views/alliance-partners/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/analytics/roi/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Form.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/attribution/Index.vue","frontend/src/views/auth/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-analytics/Index.vue","frontend/src/views/campaign-library/Index.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaign-tools/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/ToolConfigDialog.vue","frontend/src/views/campaigns/wizard/Step3Tools.vue","frontend/src/views/campaigns/wizard/Step4BasicInfo.vue","frontend/src/views/campaigns/wizard/Step7Review.vue","frontend/src/views/campaigns/wizard/components/ToolConfigForms.vue","frontend/src/views/channel-analytics/Index.vue","frontend/src/views/community-bots/Index.vue","frontend/src/views/community-fission/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/community-tasks/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Detail.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/contracts/Form.vue","frontend/src/views/conversion-paths/Index.vue","frontend/src/views/cost-allocation/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Detail.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Form.vue","frontend/src/views/departments/Detail.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Alerts.vue","frontend/src/views/devices/Form.vue","frontend/src/views/diagnosis/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-templates/Form.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/geo-pois/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-inventory/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-platforms/Index.vue","frontend/src/views/groupbuy-pricing/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-promotions/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/hr/attendance/components/AttendanceTab.vue","frontend/src/views/hr/attendance/components/HolidaysTab.vue","frontend/src/views/hr/attendance/components/LeavesTab.vue","frontend/src/views/hr/attendance/components/OvertimeTab.vue","frontend/src/views/hr/attendance/components/ShiftsTab.vue","frontend/src/views/hr/training/components/CertificatesTab.vue","frontend/src/views/hr/training/components/CompetencyTab.vue","frontend/src/views/hr/training/components/CoursesTab.vue","frontend/src/views/hr/training/components/ExamsTab.vue","frontend/src/views/hr/training/components/PlansTab.vue","frontend/src/views/hr/training/components/SessionsTab.vue","frontend/src/views/inventory/Counts.vue","frontend/src/views/inventory/Index.vue","frontend/src/views/inventory/Snapshots.vue","frontend/src/views/journey-orchestration/Form.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/lead-assignment/Form.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/lead-qualification/Form.vue","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/Index.vue","frontend/src/views/livestream-gifts/Index.vue","frontend/src/views/livestream-groupbuy-conversion/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/maintenance/Index.vue","frontend/src/views/maintenance/TaskDetail.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Detail.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/marketing/budget-alerts/Index.vue","frontend/src/views/mdm/Index.vue","frontend/src/views/member-benefits/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/menus/Index.vue","frontend/src/views/notification-configs/Index.vue","frontend/src/views/notifications/Index.vue","frontend/src/views/omnichannel-dashboard/Index.vue","frontend/src/views/omnichannel-data-hub/Index.vue","frontend/src/views/opportunities/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/orders/Index.vue","frontend/src/views/org-chart/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/predictive-analytics/Form.vue","frontend/src/views/process-designer/Designer.vue","frontend/src/views/product-analytics/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/qr-codes/Index.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/realtime-trigger/Form.vue","frontend/src/views/renewal-tasks/Index.vue","frontend/src/views/rfm-analysis/Detail.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/scheduled-jobs/Index.vue","frontend/src/views/segments/Index.vue","frontend/src/views/service-monitor/Index.vue","frontend/src/views/settings/Index.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-matrix/Index.vue","frontend/src/views/social-posts/Detail.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/spare-parts/components/TransactionHistory.vue","frontend/src/views/stage-knowledge/Index.vue","frontend/src/views/store-configs/Index.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/suppliers/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/system-monitor/Index.vue","frontend/src/views/system/AuditLogs.vue","frontend/src/views/tenant-configs/Index.vue","frontend/src/views/tickets/Form.vue","frontend/src/views/tickets/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-publishing/Index.vue","frontend/src/views/web-tracking/Index.vue"]}],"total_commits":0,"head_commit":{"id":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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-24T10:14:13+08:00","added":["backend/src/shared/constants/events/common.ts","backend/src/shared/constants/events/finance.ts","backend/src/shared/constants/events/hr.ts","backend/src/shared/constants/events/im.ts","backend/src/shared/constants/events/index.ts","backend/src/shared/constants/events/knowledge.ts","backend/src/shared/constants/events/lifecycle.ts","backend/src/shared/constants/events/marketing.ts","backend/src/shared/constants/events/sales.ts","backend/src/shared/constants/events/service.ts","backend/src/shared/constants/events/store.ts","backend/src/shared/constants/events/supply_chain.ts","backend/src/shared/constants/events/system.ts","backend/src/shared/services/list-cache.service.ts","backend/src/shared/utils/cache-utils.ts"],"removed":[],"modified":["backend/src/consumers/attribution.consumer.ts","backend/src/consumers/campaign-effectiveness.consumer.ts","backend/src/consumers/marketing-workflow-executor.consumer.ts","backend/src/consumers/scheduled-jobs.consumer.ts","backend/src/modules/ai-agents/services/knowledge-vector-enhanced.service.ts","backend/src/modules/alliance-settlements/alliance-settlement.service.test.ts","backend/src/modules/campaign-analytics/campaign-analytics.controller.ts","backend/src/modules/contract-templates/contract-template.service.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.service.test.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/leads/lead-ai-scoring.service.ts","backend/src/modules/leads/lead-sla.service.ts","backend/src/modules/leads/lead-smart-assignment.service.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-interactions/livestream-realtime.service.ts","backend/src/modules/marketing-automation/workflow-trigger.service.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.controller.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.routes.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.service.ts","backend/src/modules/notifications/notification.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/payments/payment.service.test.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/segments/segment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-interactions/social-interactions.service.ts","backend/src/modules/store-staff/store-staff.service.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/shared/constants/events.ts","backend/src/shared/services/partition-maintenance.service.ts","backend/src/shared/state-machines/machines/contract.machine.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/types.ts","backend/src/shared/state-machines/utils/transitions/sales.transitions.ts","backend/src/shared/utils/biz-code.ts","frontend/src/api/adapters.ts","frontend/src/api/im-binding.ts","frontend/src/api/modules/ad-accounts.ts","frontend/src/api/modules/ad-audiences.ts","frontend/src/api/modules/ad-creatives.ts","frontend/src/api/modules/ad-placement.ts","frontend/src/api/modules/ad-reports.ts","frontend/src/api/modules/agent-group.ts","frontend/src/api/modules/ai-agent.ts","frontend/src/api/modules/alliance-analytics.ts","frontend/src/api/modules/alliance-merchants.ts","frontend/src/api/modules/alliance-products.ts","frontend/src/api/modules/alliance-promotions.ts","frontend/src/api/modules/alliance-referrals.ts","frontend/src/api/modules/analytics.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/assets.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/audit-logs.ts","frontend/src/api/modules/campaign-drafts.ts","frontend/src/api/modules/campaign-library.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/campaign-tools.ts","frontend/src/api/modules/campaign-use-case-templates.ts","frontend/src/api/modules/campaign-wizard.ts","frontend/src/api/modules/campaigns.ts","frontend/src/api/modules/cohort-analysis.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-activities.ts","frontend/src/api/modules/community-analytics.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-groups.ts","frontend/src/api/modules/community-levels.ts","frontend/src/api/modules/community-members.ts","frontend/src/api/modules/community-messages.ts","frontend/src/api/modules/community-points.ts","frontend/src/api/modules/consumer-behavior-analytics.ts","frontend/src/api/modules/content-categories.ts","frontend/src/api/modules/content-copyright.ts","frontend/src/api/modules/content-creation.ts","frontend/src/api/modules/content-distribution.ts","frontend/src/api/modules/content-library.ts","frontend/src/api/modules/content-templates.ts","frontend/src/api/modules/contract-templates.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/cross-domain-funnel.ts","frontend/src/api/modules/customer-analytics.ts","frontend/src/api/modules/customer-health.ts","frontend/src/api/modules/customer-journey.ts","frontend/src/api/modules/customer-ltv.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customer-segmentation.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/dictionaries.ts","frontend/src/api/modules/dimension-transform.ts","frontend/src/api/modules/email-marketing.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/event-logs.ts","frontend/src/api/modules/events.ts","frontend/src/api/modules/expense.ts","frontend/src/api/modules/financial-reports.ts","frontend/src/api/modules/fulfillment.ts","frontend/src/api/modules/geo-fences.ts","frontend/src/api/modules/geo-pois.ts","frontend/src/api/modules/groupbuy-analytics.ts","frontend/src/api/modules/groupbuy-campaigns.ts","frontend/src/api/modules/groupbuy-platforms.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-products.ts","frontend/src/api/modules/groupbuy-settlements.ts","frontend/src/api/modules/hr-benefits.ts","frontend/src/api/modules/hr-payroll.ts","frontend/src/api/modules/im-channels.ts","frontend/src/api/modules/im.ts","frontend/src/api/modules/integration-services.ts","frontend/src/api/modules/intent-analyzer.ts","frontend/src/api/modules/journey-orchestration.ts","frontend/src/api/modules/knowledge-candidates.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-groupbuy-conversion.ts","frontend/src/api/modules/livestream-groupbuy.ts","frontend/src/api/modules/livestream-interactions.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/location-assessments.ts","frontend/src/api/modules/login-logs.ts","frontend/src/api/modules/maintenance.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-calendar.ts","frontend/src/api/modules/marketing-chatbot.ts","frontend/src/api/modules/marketing-content.ts","frontend/src/api/modules/marketing-forms.ts","frontend/src/api/modules/marketing-matrix.ts","frontend/src/api/modules/marketing-north-star.ts","frontend/src/api/modules/marketing-timeslots.ts","frontend/src/api/modules/marketing.ts","frontend/src/api/modules/omnichannel-dashboard.ts","frontend/src/api/modules/omnichannel-data-hub.ts","frontend/src/api/modules/omnichannel-touchpoints.ts","frontend/src/api/modules/operation-logs.ts","frontend/src/api/modules/opportunities.ts","frontend/src/api/modules/predictive-analytics.ts","frontend/src/api/modules/process-designer.ts","frontend/src/api/modules/process.ts","frontend/src/api/modules/products.ts","frontend/src/api/modules/realtime-trigger.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/resource-requests.ts","frontend/src/api/modules/revenue.ts","frontend/src/api/modules/rfm-analysis.ts","frontend/src/api/modules/rma.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/scheduled-jobs.ts","frontend/src/api/modules/search.ts","frontend/src/api/modules/segments.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/api/modules/sms-marketing.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/api/modules/social-auto-replies.ts","frontend/src/api/modules/social-competitors.ts","frontend/src/api/modules/social-hot-topics.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/spare-parts.ts","frontend/src/api/modules/store-performance.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supplier-management.ts","frontend/src/api/modules/swot-analyses.ts","frontend/src/api/modules/system-events.ts","frontend/src/api/modules/ticket-workflows.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/tob-toc-gateway.ts","frontend/src/api/modules/unified-campaign.ts","frontend/src/api/modules/web-tracking.ts","frontend/src/api/modules/workflow-generator.ts","frontend/src/api/response-normalizer.ts","frontend/src/components/business/ActivityTimeline.vue","frontend/src/components/business/EventStreamPanel.vue","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/DataTable.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/mobile/MobileFilter.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/types/ai-agent.ts","frontend/src/utils/echarts.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/abm-marketing/Index.vue","frontend/src/views/acquisition/Index.vue","frontend/src/views/ad-accounts/Form.vue","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-analytics/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-placement/ABTests.vue","frontend/src/views/ad-placement/AudiencePacks.vue","frontend/src/views/ad-placement/BudgetAlerts.vue","frontend/src/views/ad-placement/Creatives.vue","frontend/src/views/ad-placement/Index.vue","frontend/src/views/ad-placement/RoiAnalysis.vue","frontend/src/views/alliance-agreements/Index.vue","frontend/src/views/alliance-campaigns/Index.vue","frontend/src/views/alliance-coupons/Index.vue","frontend/src/views/alliance-packages/Index.vue","frontend/src/views/alliance-partners/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/analytics/roi/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Form.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/attribution/Index.vue","frontend/src/views/auth/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-analytics/Index.vue","frontend/src/views/campaign-library/Index.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaign-tools/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/ToolConfigDialog.vue","frontend/src/views/campaigns/wizard/Step3Tools.vue","frontend/src/views/campaigns/wizard/Step4BasicInfo.vue","frontend/src/views/campaigns/wizard/Step7Review.vue","frontend/src/views/campaigns/wizard/components/ToolConfigForms.vue","frontend/src/views/channel-analytics/Index.vue","frontend/src/views/community-bots/Index.vue","frontend/src/views/community-fission/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/community-tasks/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Detail.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/contracts/Form.vue","frontend/src/views/conversion-paths/Index.vue","frontend/src/views/cost-allocation/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Detail.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Form.vue","frontend/src/views/departments/Detail.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Alerts.vue","frontend/src/views/devices/Form.vue","frontend/src/views/diagnosis/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-templates/Form.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/geo-pois/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-inventory/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-platforms/Index.vue","frontend/src/views/groupbuy-pricing/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-promotions/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/hr/attendance/components/AttendanceTab.vue","frontend/src/views/hr/attendance/components/HolidaysTab.vue","frontend/src/views/hr/attendance/components/LeavesTab.vue","frontend/src/views/hr/attendance/components/OvertimeTab.vue","frontend/src/views/hr/attendance/components/ShiftsTab.vue","frontend/src/views/hr/training/components/CertificatesTab.vue","frontend/src/views/hr/training/components/CompetencyTab.vue","frontend/src/views/hr/training/components/CoursesTab.vue","frontend/src/views/hr/training/components/ExamsTab.vue","frontend/src/views/hr/training/components/PlansTab.vue","frontend/src/views/hr/training/components/SessionsTab.vue","frontend/src/views/inventory/Counts.vue","frontend/src/views/inventory/Index.vue","frontend/src/views/inventory/Snapshots.vue","frontend/src/views/journey-orchestration/Form.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/lead-assignment/Form.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/lead-qualification/Form.vue","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/Index.vue","frontend/src/views/livestream-gifts/Index.vue","frontend/src/views/livestream-groupbuy-conversion/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/maintenance/Index.vue","frontend/src/views/maintenance/TaskDetail.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Detail.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/marketing/budget-alerts/Index.vue","frontend/src/views/mdm/Index.vue","frontend/src/views/member-benefits/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/menus/Index.vue","frontend/src/views/notification-configs/Index.vue","frontend/src/views/notifications/Index.vue","frontend/src/views/omnichannel-dashboard/Index.vue","frontend/src/views/omnichannel-data-hub/Index.vue","frontend/src/views/opportunities/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/orders/Index.vue","frontend/src/views/org-chart/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/predictive-analytics/Form.vue","frontend/src/views/process-designer/Designer.vue","frontend/src/views/product-analytics/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/qr-codes/Index.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/realtime-trigger/Form.vue","frontend/src/views/renewal-tasks/Index.vue","frontend/src/views/rfm-analysis/Detail.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/scheduled-jobs/Index.vue","frontend/src/views/segments/Index.vue","frontend/src/views/service-monitor/Index.vue","frontend/src/views/settings/Index.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-matrix/Index.vue","frontend/src/views/social-posts/Detail.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/spare-parts/components/TransactionHistory.vue","frontend/src/views/stage-knowledge/Index.vue","frontend/src/views/store-configs/Index.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/suppliers/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/system-monitor/Index.vue","frontend/src/views/system/AuditLogs.vue","frontend/src/views/tenant-configs/Index.vue","frontend/src/views/tickets/Form.vue","frontend/src/views/tickets/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-publishing/Index.vue","frontend/src/views/web-tracking/Index.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/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":1956552,"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":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-03-24T09:45:16+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
|
1774319006
|
1774319038
|
0
|
1774318460
|
1774319280
|
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
|
|
7651
|
feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理...
|
6
|
5
|
health-check.yml
|
7576
|
-2
|
130
|
refs/heads/main
|
dbf34b08bbb60650d15b0c55262dbfe8d0a3a655
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"8c39619c9cdb0d888d10942bf50533c8238021df","after":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/8c39619c9cdb0d888d10942bf50533c8238021df...dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","commits":[{"id":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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-24T10:14:13+08:00","added":["backend/src/shared/constants/events/common.ts","backend/src/shared/constants/events/finance.ts","backend/src/shared/constants/events/hr.ts","backend/src/shared/constants/events/im.ts","backend/src/shared/constants/events/index.ts","backend/src/shared/constants/events/knowledge.ts","backend/src/shared/constants/events/lifecycle.ts","backend/src/shared/constants/events/marketing.ts","backend/src/shared/constants/events/sales.ts","backend/src/shared/constants/events/service.ts","backend/src/shared/constants/events/store.ts","backend/src/shared/constants/events/supply_chain.ts","backend/src/shared/constants/events/system.ts","backend/src/shared/services/list-cache.service.ts","backend/src/shared/utils/cache-utils.ts"],"removed":[],"modified":["backend/src/consumers/attribution.consumer.ts","backend/src/consumers/campaign-effectiveness.consumer.ts","backend/src/consumers/marketing-workflow-executor.consumer.ts","backend/src/consumers/scheduled-jobs.consumer.ts","backend/src/modules/ai-agents/services/knowledge-vector-enhanced.service.ts","backend/src/modules/alliance-settlements/alliance-settlement.service.test.ts","backend/src/modules/campaign-analytics/campaign-analytics.controller.ts","backend/src/modules/contract-templates/contract-template.service.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.service.test.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/leads/lead-ai-scoring.service.ts","backend/src/modules/leads/lead-sla.service.ts","backend/src/modules/leads/lead-smart-assignment.service.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-interactions/livestream-realtime.service.ts","backend/src/modules/marketing-automation/workflow-trigger.service.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.controller.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.routes.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.service.ts","backend/src/modules/notifications/notification.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/payments/payment.service.test.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/segments/segment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-interactions/social-interactions.service.ts","backend/src/modules/store-staff/store-staff.service.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/shared/constants/events.ts","backend/src/shared/services/partition-maintenance.service.ts","backend/src/shared/state-machines/machines/contract.machine.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/types.ts","backend/src/shared/state-machines/utils/transitions/sales.transitions.ts","backend/src/shared/utils/biz-code.ts","frontend/src/api/adapters.ts","frontend/src/api/im-binding.ts","frontend/src/api/modules/ad-accounts.ts","frontend/src/api/modules/ad-audiences.ts","frontend/src/api/modules/ad-creatives.ts","frontend/src/api/modules/ad-placement.ts","frontend/src/api/modules/ad-reports.ts","frontend/src/api/modules/agent-group.ts","frontend/src/api/modules/ai-agent.ts","frontend/src/api/modules/alliance-analytics.ts","frontend/src/api/modules/alliance-merchants.ts","frontend/src/api/modules/alliance-products.ts","frontend/src/api/modules/alliance-promotions.ts","frontend/src/api/modules/alliance-referrals.ts","frontend/src/api/modules/analytics.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/assets.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/audit-logs.ts","frontend/src/api/modules/campaign-drafts.ts","frontend/src/api/modules/campaign-library.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/campaign-tools.ts","frontend/src/api/modules/campaign-use-case-templates.ts","frontend/src/api/modules/campaign-wizard.ts","frontend/src/api/modules/campaigns.ts","frontend/src/api/modules/cohort-analysis.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-activities.ts","frontend/src/api/modules/community-analytics.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-groups.ts","frontend/src/api/modules/community-levels.ts","frontend/src/api/modules/community-members.ts","frontend/src/api/modules/community-messages.ts","frontend/src/api/modules/community-points.ts","frontend/src/api/modules/consumer-behavior-analytics.ts","frontend/src/api/modules/content-categories.ts","frontend/src/api/modules/content-copyright.ts","frontend/src/api/modules/content-creation.ts","frontend/src/api/modules/content-distribution.ts","frontend/src/api/modules/content-library.ts","frontend/src/api/modules/content-templates.ts","frontend/src/api/modules/contract-templates.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/cross-domain-funnel.ts","frontend/src/api/modules/customer-analytics.ts","frontend/src/api/modules/customer-health.ts","frontend/src/api/modules/customer-journey.ts","frontend/src/api/modules/customer-ltv.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customer-segmentation.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/dictionaries.ts","frontend/src/api/modules/dimension-transform.ts","frontend/src/api/modules/email-marketing.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/event-logs.ts","frontend/src/api/modules/events.ts","frontend/src/api/modules/expense.ts","frontend/src/api/modules/financial-reports.ts","frontend/src/api/modules/fulfillment.ts","frontend/src/api/modules/geo-fences.ts","frontend/src/api/modules/geo-pois.ts","frontend/src/api/modules/groupbuy-analytics.ts","frontend/src/api/modules/groupbuy-campaigns.ts","frontend/src/api/modules/groupbuy-platforms.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-products.ts","frontend/src/api/modules/groupbuy-settlements.ts","frontend/src/api/modules/hr-benefits.ts","frontend/src/api/modules/hr-payroll.ts","frontend/src/api/modules/im-channels.ts","frontend/src/api/modules/im.ts","frontend/src/api/modules/integration-services.ts","frontend/src/api/modules/intent-analyzer.ts","frontend/src/api/modules/journey-orchestration.ts","frontend/src/api/modules/knowledge-candidates.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-groupbuy-conversion.ts","frontend/src/api/modules/livestream-groupbuy.ts","frontend/src/api/modules/livestream-interactions.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/location-assessments.ts","frontend/src/api/modules/login-logs.ts","frontend/src/api/modules/maintenance.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-calendar.ts","frontend/src/api/modules/marketing-chatbot.ts","frontend/src/api/modules/marketing-content.ts","frontend/src/api/modules/marketing-forms.ts","frontend/src/api/modules/marketing-matrix.ts","frontend/src/api/modules/marketing-north-star.ts","frontend/src/api/modules/marketing-timeslots.ts","frontend/src/api/modules/marketing.ts","frontend/src/api/modules/omnichannel-dashboard.ts","frontend/src/api/modules/omnichannel-data-hub.ts","frontend/src/api/modules/omnichannel-touchpoints.ts","frontend/src/api/modules/operation-logs.ts","frontend/src/api/modules/opportunities.ts","frontend/src/api/modules/predictive-analytics.ts","frontend/src/api/modules/process-designer.ts","frontend/src/api/modules/process.ts","frontend/src/api/modules/products.ts","frontend/src/api/modules/realtime-trigger.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/resource-requests.ts","frontend/src/api/modules/revenue.ts","frontend/src/api/modules/rfm-analysis.ts","frontend/src/api/modules/rma.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/scheduled-jobs.ts","frontend/src/api/modules/search.ts","frontend/src/api/modules/segments.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/api/modules/sms-marketing.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/api/modules/social-auto-replies.ts","frontend/src/api/modules/social-competitors.ts","frontend/src/api/modules/social-hot-topics.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/spare-parts.ts","frontend/src/api/modules/store-performance.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supplier-management.ts","frontend/src/api/modules/swot-analyses.ts","frontend/src/api/modules/system-events.ts","frontend/src/api/modules/ticket-workflows.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/tob-toc-gateway.ts","frontend/src/api/modules/unified-campaign.ts","frontend/src/api/modules/web-tracking.ts","frontend/src/api/modules/workflow-generator.ts","frontend/src/api/response-normalizer.ts","frontend/src/components/business/ActivityTimeline.vue","frontend/src/components/business/EventStreamPanel.vue","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/DataTable.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/mobile/MobileFilter.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/types/ai-agent.ts","frontend/src/utils/echarts.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/abm-marketing/Index.vue","frontend/src/views/acquisition/Index.vue","frontend/src/views/ad-accounts/Form.vue","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-analytics/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-placement/ABTests.vue","frontend/src/views/ad-placement/AudiencePacks.vue","frontend/src/views/ad-placement/BudgetAlerts.vue","frontend/src/views/ad-placement/Creatives.vue","frontend/src/views/ad-placement/Index.vue","frontend/src/views/ad-placement/RoiAnalysis.vue","frontend/src/views/alliance-agreements/Index.vue","frontend/src/views/alliance-campaigns/Index.vue","frontend/src/views/alliance-coupons/Index.vue","frontend/src/views/alliance-packages/Index.vue","frontend/src/views/alliance-partners/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/analytics/roi/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Form.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/attribution/Index.vue","frontend/src/views/auth/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-analytics/Index.vue","frontend/src/views/campaign-library/Index.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaign-tools/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/ToolConfigDialog.vue","frontend/src/views/campaigns/wizard/Step3Tools.vue","frontend/src/views/campaigns/wizard/Step4BasicInfo.vue","frontend/src/views/campaigns/wizard/Step7Review.vue","frontend/src/views/campaigns/wizard/components/ToolConfigForms.vue","frontend/src/views/channel-analytics/Index.vue","frontend/src/views/community-bots/Index.vue","frontend/src/views/community-fission/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/community-tasks/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Detail.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/contracts/Form.vue","frontend/src/views/conversion-paths/Index.vue","frontend/src/views/cost-allocation/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Detail.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Form.vue","frontend/src/views/departments/Detail.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Alerts.vue","frontend/src/views/devices/Form.vue","frontend/src/views/diagnosis/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-templates/Form.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/geo-pois/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-inventory/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-platforms/Index.vue","frontend/src/views/groupbuy-pricing/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-promotions/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/hr/attendance/components/AttendanceTab.vue","frontend/src/views/hr/attendance/components/HolidaysTab.vue","frontend/src/views/hr/attendance/components/LeavesTab.vue","frontend/src/views/hr/attendance/components/OvertimeTab.vue","frontend/src/views/hr/attendance/components/ShiftsTab.vue","frontend/src/views/hr/training/components/CertificatesTab.vue","frontend/src/views/hr/training/components/CompetencyTab.vue","frontend/src/views/hr/training/components/CoursesTab.vue","frontend/src/views/hr/training/components/ExamsTab.vue","frontend/src/views/hr/training/components/PlansTab.vue","frontend/src/views/hr/training/components/SessionsTab.vue","frontend/src/views/inventory/Counts.vue","frontend/src/views/inventory/Index.vue","frontend/src/views/inventory/Snapshots.vue","frontend/src/views/journey-orchestration/Form.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/lead-assignment/Form.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/lead-qualification/Form.vue","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/Index.vue","frontend/src/views/livestream-gifts/Index.vue","frontend/src/views/livestream-groupbuy-conversion/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/maintenance/Index.vue","frontend/src/views/maintenance/TaskDetail.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Detail.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/marketing/budget-alerts/Index.vue","frontend/src/views/mdm/Index.vue","frontend/src/views/member-benefits/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/menus/Index.vue","frontend/src/views/notification-configs/Index.vue","frontend/src/views/notifications/Index.vue","frontend/src/views/omnichannel-dashboard/Index.vue","frontend/src/views/omnichannel-data-hub/Index.vue","frontend/src/views/opportunities/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/orders/Index.vue","frontend/src/views/org-chart/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/predictive-analytics/Form.vue","frontend/src/views/process-designer/Designer.vue","frontend/src/views/product-analytics/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/qr-codes/Index.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/realtime-trigger/Form.vue","frontend/src/views/renewal-tasks/Index.vue","frontend/src/views/rfm-analysis/Detail.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/scheduled-jobs/Index.vue","frontend/src/views/segments/Index.vue","frontend/src/views/service-monitor/Index.vue","frontend/src/views/settings/Index.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-matrix/Index.vue","frontend/src/views/social-posts/Detail.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/spare-parts/components/TransactionHistory.vue","frontend/src/views/stage-knowledge/Index.vue","frontend/src/views/store-configs/Index.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/suppliers/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/system-monitor/Index.vue","frontend/src/views/system/AuditLogs.vue","frontend/src/views/tenant-configs/Index.vue","frontend/src/views/tickets/Form.vue","frontend/src/views/tickets/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-publishing/Index.vue","frontend/src/views/web-tracking/Index.vue"]}],"total_commits":0,"head_commit":{"id":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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-24T10:14:13+08:00","added":["backend/src/shared/constants/events/common.ts","backend/src/shared/constants/events/finance.ts","backend/src/shared/constants/events/hr.ts","backend/src/shared/constants/events/im.ts","backend/src/shared/constants/events/index.ts","backend/src/shared/constants/events/knowledge.ts","backend/src/shared/constants/events/lifecycle.ts","backend/src/shared/constants/events/marketing.ts","backend/src/shared/constants/events/sales.ts","backend/src/shared/constants/events/service.ts","backend/src/shared/constants/events/store.ts","backend/src/shared/constants/events/supply_chain.ts","backend/src/shared/constants/events/system.ts","backend/src/shared/services/list-cache.service.ts","backend/src/shared/utils/cache-utils.ts"],"removed":[],"modified":["backend/src/consumers/attribution.consumer.ts","backend/src/consumers/campaign-effectiveness.consumer.ts","backend/src/consumers/marketing-workflow-executor.consumer.ts","backend/src/consumers/scheduled-jobs.consumer.ts","backend/src/modules/ai-agents/services/knowledge-vector-enhanced.service.ts","backend/src/modules/alliance-settlements/alliance-settlement.service.test.ts","backend/src/modules/campaign-analytics/campaign-analytics.controller.ts","backend/src/modules/contract-templates/contract-template.service.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.service.test.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/leads/lead-ai-scoring.service.ts","backend/src/modules/leads/lead-sla.service.ts","backend/src/modules/leads/lead-smart-assignment.service.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-interactions/livestream-realtime.service.ts","backend/src/modules/marketing-automation/workflow-trigger.service.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.controller.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.routes.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.service.ts","backend/src/modules/notifications/notification.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/payments/payment.service.test.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/segments/segment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-interactions/social-interactions.service.ts","backend/src/modules/store-staff/store-staff.service.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/shared/constants/events.ts","backend/src/shared/services/partition-maintenance.service.ts","backend/src/shared/state-machines/machines/contract.machine.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/types.ts","backend/src/shared/state-machines/utils/transitions/sales.transitions.ts","backend/src/shared/utils/biz-code.ts","frontend/src/api/adapters.ts","frontend/src/api/im-binding.ts","frontend/src/api/modules/ad-accounts.ts","frontend/src/api/modules/ad-audiences.ts","frontend/src/api/modules/ad-creatives.ts","frontend/src/api/modules/ad-placement.ts","frontend/src/api/modules/ad-reports.ts","frontend/src/api/modules/agent-group.ts","frontend/src/api/modules/ai-agent.ts","frontend/src/api/modules/alliance-analytics.ts","frontend/src/api/modules/alliance-merchants.ts","frontend/src/api/modules/alliance-products.ts","frontend/src/api/modules/alliance-promotions.ts","frontend/src/api/modules/alliance-referrals.ts","frontend/src/api/modules/analytics.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/assets.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/audit-logs.ts","frontend/src/api/modules/campaign-drafts.ts","frontend/src/api/modules/campaign-library.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/campaign-tools.ts","frontend/src/api/modules/campaign-use-case-templates.ts","frontend/src/api/modules/campaign-wizard.ts","frontend/src/api/modules/campaigns.ts","frontend/src/api/modules/cohort-analysis.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-activities.ts","frontend/src/api/modules/community-analytics.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-groups.ts","frontend/src/api/modules/community-levels.ts","frontend/src/api/modules/community-members.ts","frontend/src/api/modules/community-messages.ts","frontend/src/api/modules/community-points.ts","frontend/src/api/modules/consumer-behavior-analytics.ts","frontend/src/api/modules/content-categories.ts","frontend/src/api/modules/content-copyright.ts","frontend/src/api/modules/content-creation.ts","frontend/src/api/modules/content-distribution.ts","frontend/src/api/modules/content-library.ts","frontend/src/api/modules/content-templates.ts","frontend/src/api/modules/contract-templates.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/cross-domain-funnel.ts","frontend/src/api/modules/customer-analytics.ts","frontend/src/api/modules/customer-health.ts","frontend/src/api/modules/customer-journey.ts","frontend/src/api/modules/customer-ltv.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customer-segmentation.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/dictionaries.ts","frontend/src/api/modules/dimension-transform.ts","frontend/src/api/modules/email-marketing.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/event-logs.ts","frontend/src/api/modules/events.ts","frontend/src/api/modules/expense.ts","frontend/src/api/modules/financial-reports.ts","frontend/src/api/modules/fulfillment.ts","frontend/src/api/modules/geo-fences.ts","frontend/src/api/modules/geo-pois.ts","frontend/src/api/modules/groupbuy-analytics.ts","frontend/src/api/modules/groupbuy-campaigns.ts","frontend/src/api/modules/groupbuy-platforms.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-products.ts","frontend/src/api/modules/groupbuy-settlements.ts","frontend/src/api/modules/hr-benefits.ts","frontend/src/api/modules/hr-payroll.ts","frontend/src/api/modules/im-channels.ts","frontend/src/api/modules/im.ts","frontend/src/api/modules/integration-services.ts","frontend/src/api/modules/intent-analyzer.ts","frontend/src/api/modules/journey-orchestration.ts","frontend/src/api/modules/knowledge-candidates.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-groupbuy-conversion.ts","frontend/src/api/modules/livestream-groupbuy.ts","frontend/src/api/modules/livestream-interactions.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/location-assessments.ts","frontend/src/api/modules/login-logs.ts","frontend/src/api/modules/maintenance.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-calendar.ts","frontend/src/api/modules/marketing-chatbot.ts","frontend/src/api/modules/marketing-content.ts","frontend/src/api/modules/marketing-forms.ts","frontend/src/api/modules/marketing-matrix.ts","frontend/src/api/modules/marketing-north-star.ts","frontend/src/api/modules/marketing-timeslots.ts","frontend/src/api/modules/marketing.ts","frontend/src/api/modules/omnichannel-dashboard.ts","frontend/src/api/modules/omnichannel-data-hub.ts","frontend/src/api/modules/omnichannel-touchpoints.ts","frontend/src/api/modules/operation-logs.ts","frontend/src/api/modules/opportunities.ts","frontend/src/api/modules/predictive-analytics.ts","frontend/src/api/modules/process-designer.ts","frontend/src/api/modules/process.ts","frontend/src/api/modules/products.ts","frontend/src/api/modules/realtime-trigger.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/resource-requests.ts","frontend/src/api/modules/revenue.ts","frontend/src/api/modules/rfm-analysis.ts","frontend/src/api/modules/rma.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/scheduled-jobs.ts","frontend/src/api/modules/search.ts","frontend/src/api/modules/segments.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/api/modules/sms-marketing.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/api/modules/social-auto-replies.ts","frontend/src/api/modules/social-competitors.ts","frontend/src/api/modules/social-hot-topics.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/spare-parts.ts","frontend/src/api/modules/store-performance.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supplier-management.ts","frontend/src/api/modules/swot-analyses.ts","frontend/src/api/modules/system-events.ts","frontend/src/api/modules/ticket-workflows.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/tob-toc-gateway.ts","frontend/src/api/modules/unified-campaign.ts","frontend/src/api/modules/web-tracking.ts","frontend/src/api/modules/workflow-generator.ts","frontend/src/api/response-normalizer.ts","frontend/src/components/business/ActivityTimeline.vue","frontend/src/components/business/EventStreamPanel.vue","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/DataTable.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/mobile/MobileFilter.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/types/ai-agent.ts","frontend/src/utils/echarts.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/abm-marketing/Index.vue","frontend/src/views/acquisition/Index.vue","frontend/src/views/ad-accounts/Form.vue","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-analytics/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-placement/ABTests.vue","frontend/src/views/ad-placement/AudiencePacks.vue","frontend/src/views/ad-placement/BudgetAlerts.vue","frontend/src/views/ad-placement/Creatives.vue","frontend/src/views/ad-placement/Index.vue","frontend/src/views/ad-placement/RoiAnalysis.vue","frontend/src/views/alliance-agreements/Index.vue","frontend/src/views/alliance-campaigns/Index.vue","frontend/src/views/alliance-coupons/Index.vue","frontend/src/views/alliance-packages/Index.vue","frontend/src/views/alliance-partners/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/analytics/roi/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Form.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/attribution/Index.vue","frontend/src/views/auth/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-analytics/Index.vue","frontend/src/views/campaign-library/Index.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaign-tools/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/ToolConfigDialog.vue","frontend/src/views/campaigns/wizard/Step3Tools.vue","frontend/src/views/campaigns/wizard/Step4BasicInfo.vue","frontend/src/views/campaigns/wizard/Step7Review.vue","frontend/src/views/campaigns/wizard/components/ToolConfigForms.vue","frontend/src/views/channel-analytics/Index.vue","frontend/src/views/community-bots/Index.vue","frontend/src/views/community-fission/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/community-tasks/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Detail.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/contracts/Form.vue","frontend/src/views/conversion-paths/Index.vue","frontend/src/views/cost-allocation/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Detail.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Form.vue","frontend/src/views/departments/Detail.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Alerts.vue","frontend/src/views/devices/Form.vue","frontend/src/views/diagnosis/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-templates/Form.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/geo-pois/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-inventory/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-platforms/Index.vue","frontend/src/views/groupbuy-pricing/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-promotions/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/hr/attendance/components/AttendanceTab.vue","frontend/src/views/hr/attendance/components/HolidaysTab.vue","frontend/src/views/hr/attendance/components/LeavesTab.vue","frontend/src/views/hr/attendance/components/OvertimeTab.vue","frontend/src/views/hr/attendance/components/ShiftsTab.vue","frontend/src/views/hr/training/components/CertificatesTab.vue","frontend/src/views/hr/training/components/CompetencyTab.vue","frontend/src/views/hr/training/components/CoursesTab.vue","frontend/src/views/hr/training/components/ExamsTab.vue","frontend/src/views/hr/training/components/PlansTab.vue","frontend/src/views/hr/training/components/SessionsTab.vue","frontend/src/views/inventory/Counts.vue","frontend/src/views/inventory/Index.vue","frontend/src/views/inventory/Snapshots.vue","frontend/src/views/journey-orchestration/Form.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/lead-assignment/Form.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/lead-qualification/Form.vue","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/Index.vue","frontend/src/views/livestream-gifts/Index.vue","frontend/src/views/livestream-groupbuy-conversion/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/maintenance/Index.vue","frontend/src/views/maintenance/TaskDetail.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Detail.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/marketing/budget-alerts/Index.vue","frontend/src/views/mdm/Index.vue","frontend/src/views/member-benefits/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/menus/Index.vue","frontend/src/views/notification-configs/Index.vue","frontend/src/views/notifications/Index.vue","frontend/src/views/omnichannel-dashboard/Index.vue","frontend/src/views/omnichannel-data-hub/Index.vue","frontend/src/views/opportunities/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/orders/Index.vue","frontend/src/views/org-chart/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/predictive-analytics/Form.vue","frontend/src/views/process-designer/Designer.vue","frontend/src/views/product-analytics/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/qr-codes/Index.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/realtime-trigger/Form.vue","frontend/src/views/renewal-tasks/Index.vue","frontend/src/views/rfm-analysis/Detail.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/scheduled-jobs/Index.vue","frontend/src/views/segments/Index.vue","frontend/src/views/service-monitor/Index.vue","frontend/src/views/settings/Index.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-matrix/Index.vue","frontend/src/views/social-posts/Detail.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/spare-parts/components/TransactionHistory.vue","frontend/src/views/stage-knowledge/Index.vue","frontend/src/views/store-configs/Index.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/suppliers/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/system-monitor/Index.vue","frontend/src/views/system/AuditLogs.vue","frontend/src/views/tenant-configs/Index.vue","frontend/src/views/tickets/Form.vue","frontend/src/views/tickets/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-publishing/Index.vue","frontend/src/views/web-tracking/Index.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/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":1956552,"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":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-03-24T09:45:16+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
|
1774319038
|
1774319038
|
0
|
1774318540
|
1774319038
|
|
|
0
|
Edit
Delete
|
|
7652
|
feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理...
|
6
|
5
|
health-check.yml
|
7577
|
-2
|
130
|
refs/heads/main
|
dbf34b08bbb60650d15b0c55262dbfe8d0a3a655
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"8c39619c9cdb0d888d10942bf50533c8238021df","after":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/8c39619c9cdb0d888d10942bf50533c8238021df...dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","commits":[{"id":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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-24T10:14:13+08:00","added":["backend/src/shared/constants/events/common.ts","backend/src/shared/constants/events/finance.ts","backend/src/shared/constants/events/hr.ts","backend/src/shared/constants/events/im.ts","backend/src/shared/constants/events/index.ts","backend/src/shared/constants/events/knowledge.ts","backend/src/shared/constants/events/lifecycle.ts","backend/src/shared/constants/events/marketing.ts","backend/src/shared/constants/events/sales.ts","backend/src/shared/constants/events/service.ts","backend/src/shared/constants/events/store.ts","backend/src/shared/constants/events/supply_chain.ts","backend/src/shared/constants/events/system.ts","backend/src/shared/services/list-cache.service.ts","backend/src/shared/utils/cache-utils.ts"],"removed":[],"modified":["backend/src/consumers/attribution.consumer.ts","backend/src/consumers/campaign-effectiveness.consumer.ts","backend/src/consumers/marketing-workflow-executor.consumer.ts","backend/src/consumers/scheduled-jobs.consumer.ts","backend/src/modules/ai-agents/services/knowledge-vector-enhanced.service.ts","backend/src/modules/alliance-settlements/alliance-settlement.service.test.ts","backend/src/modules/campaign-analytics/campaign-analytics.controller.ts","backend/src/modules/contract-templates/contract-template.service.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.service.test.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/leads/lead-ai-scoring.service.ts","backend/src/modules/leads/lead-sla.service.ts","backend/src/modules/leads/lead-smart-assignment.service.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-interactions/livestream-realtime.service.ts","backend/src/modules/marketing-automation/workflow-trigger.service.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.controller.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.routes.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.service.ts","backend/src/modules/notifications/notification.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/payments/payment.service.test.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/segments/segment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-interactions/social-interactions.service.ts","backend/src/modules/store-staff/store-staff.service.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/shared/constants/events.ts","backend/src/shared/services/partition-maintenance.service.ts","backend/src/shared/state-machines/machines/contract.machine.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/types.ts","backend/src/shared/state-machines/utils/transitions/sales.transitions.ts","backend/src/shared/utils/biz-code.ts","frontend/src/api/adapters.ts","frontend/src/api/im-binding.ts","frontend/src/api/modules/ad-accounts.ts","frontend/src/api/modules/ad-audiences.ts","frontend/src/api/modules/ad-creatives.ts","frontend/src/api/modules/ad-placement.ts","frontend/src/api/modules/ad-reports.ts","frontend/src/api/modules/agent-group.ts","frontend/src/api/modules/ai-agent.ts","frontend/src/api/modules/alliance-analytics.ts","frontend/src/api/modules/alliance-merchants.ts","frontend/src/api/modules/alliance-products.ts","frontend/src/api/modules/alliance-promotions.ts","frontend/src/api/modules/alliance-referrals.ts","frontend/src/api/modules/analytics.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/assets.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/audit-logs.ts","frontend/src/api/modules/campaign-drafts.ts","frontend/src/api/modules/campaign-library.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/campaign-tools.ts","frontend/src/api/modules/campaign-use-case-templates.ts","frontend/src/api/modules/campaign-wizard.ts","frontend/src/api/modules/campaigns.ts","frontend/src/api/modules/cohort-analysis.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-activities.ts","frontend/src/api/modules/community-analytics.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-groups.ts","frontend/src/api/modules/community-levels.ts","frontend/src/api/modules/community-members.ts","frontend/src/api/modules/community-messages.ts","frontend/src/api/modules/community-points.ts","frontend/src/api/modules/consumer-behavior-analytics.ts","frontend/src/api/modules/content-categories.ts","frontend/src/api/modules/content-copyright.ts","frontend/src/api/modules/content-creation.ts","frontend/src/api/modules/content-distribution.ts","frontend/src/api/modules/content-library.ts","frontend/src/api/modules/content-templates.ts","frontend/src/api/modules/contract-templates.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/cross-domain-funnel.ts","frontend/src/api/modules/customer-analytics.ts","frontend/src/api/modules/customer-health.ts","frontend/src/api/modules/customer-journey.ts","frontend/src/api/modules/customer-ltv.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customer-segmentation.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/dictionaries.ts","frontend/src/api/modules/dimension-transform.ts","frontend/src/api/modules/email-marketing.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/event-logs.ts","frontend/src/api/modules/events.ts","frontend/src/api/modules/expense.ts","frontend/src/api/modules/financial-reports.ts","frontend/src/api/modules/fulfillment.ts","frontend/src/api/modules/geo-fences.ts","frontend/src/api/modules/geo-pois.ts","frontend/src/api/modules/groupbuy-analytics.ts","frontend/src/api/modules/groupbuy-campaigns.ts","frontend/src/api/modules/groupbuy-platforms.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-products.ts","frontend/src/api/modules/groupbuy-settlements.ts","frontend/src/api/modules/hr-benefits.ts","frontend/src/api/modules/hr-payroll.ts","frontend/src/api/modules/im-channels.ts","frontend/src/api/modules/im.ts","frontend/src/api/modules/integration-services.ts","frontend/src/api/modules/intent-analyzer.ts","frontend/src/api/modules/journey-orchestration.ts","frontend/src/api/modules/knowledge-candidates.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-groupbuy-conversion.ts","frontend/src/api/modules/livestream-groupbuy.ts","frontend/src/api/modules/livestream-interactions.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/location-assessments.ts","frontend/src/api/modules/login-logs.ts","frontend/src/api/modules/maintenance.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-calendar.ts","frontend/src/api/modules/marketing-chatbot.ts","frontend/src/api/modules/marketing-content.ts","frontend/src/api/modules/marketing-forms.ts","frontend/src/api/modules/marketing-matrix.ts","frontend/src/api/modules/marketing-north-star.ts","frontend/src/api/modules/marketing-timeslots.ts","frontend/src/api/modules/marketing.ts","frontend/src/api/modules/omnichannel-dashboard.ts","frontend/src/api/modules/omnichannel-data-hub.ts","frontend/src/api/modules/omnichannel-touchpoints.ts","frontend/src/api/modules/operation-logs.ts","frontend/src/api/modules/opportunities.ts","frontend/src/api/modules/predictive-analytics.ts","frontend/src/api/modules/process-designer.ts","frontend/src/api/modules/process.ts","frontend/src/api/modules/products.ts","frontend/src/api/modules/realtime-trigger.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/resource-requests.ts","frontend/src/api/modules/revenue.ts","frontend/src/api/modules/rfm-analysis.ts","frontend/src/api/modules/rma.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/scheduled-jobs.ts","frontend/src/api/modules/search.ts","frontend/src/api/modules/segments.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/api/modules/sms-marketing.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/api/modules/social-auto-replies.ts","frontend/src/api/modules/social-competitors.ts","frontend/src/api/modules/social-hot-topics.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/spare-parts.ts","frontend/src/api/modules/store-performance.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supplier-management.ts","frontend/src/api/modules/swot-analyses.ts","frontend/src/api/modules/system-events.ts","frontend/src/api/modules/ticket-workflows.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/tob-toc-gateway.ts","frontend/src/api/modules/unified-campaign.ts","frontend/src/api/modules/web-tracking.ts","frontend/src/api/modules/workflow-generator.ts","frontend/src/api/response-normalizer.ts","frontend/src/components/business/ActivityTimeline.vue","frontend/src/components/business/EventStreamPanel.vue","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/DataTable.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/mobile/MobileFilter.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/types/ai-agent.ts","frontend/src/utils/echarts.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/abm-marketing/Index.vue","frontend/src/views/acquisition/Index.vue","frontend/src/views/ad-accounts/Form.vue","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-analytics/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-placement/ABTests.vue","frontend/src/views/ad-placement/AudiencePacks.vue","frontend/src/views/ad-placement/BudgetAlerts.vue","frontend/src/views/ad-placement/Creatives.vue","frontend/src/views/ad-placement/Index.vue","frontend/src/views/ad-placement/RoiAnalysis.vue","frontend/src/views/alliance-agreements/Index.vue","frontend/src/views/alliance-campaigns/Index.vue","frontend/src/views/alliance-coupons/Index.vue","frontend/src/views/alliance-packages/Index.vue","frontend/src/views/alliance-partners/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/analytics/roi/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Form.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/attribution/Index.vue","frontend/src/views/auth/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-analytics/Index.vue","frontend/src/views/campaign-library/Index.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaign-tools/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/ToolConfigDialog.vue","frontend/src/views/campaigns/wizard/Step3Tools.vue","frontend/src/views/campaigns/wizard/Step4BasicInfo.vue","frontend/src/views/campaigns/wizard/Step7Review.vue","frontend/src/views/campaigns/wizard/components/ToolConfigForms.vue","frontend/src/views/channel-analytics/Index.vue","frontend/src/views/community-bots/Index.vue","frontend/src/views/community-fission/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/community-tasks/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Detail.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/contracts/Form.vue","frontend/src/views/conversion-paths/Index.vue","frontend/src/views/cost-allocation/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Detail.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Form.vue","frontend/src/views/departments/Detail.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Alerts.vue","frontend/src/views/devices/Form.vue","frontend/src/views/diagnosis/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-templates/Form.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/geo-pois/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-inventory/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-platforms/Index.vue","frontend/src/views/groupbuy-pricing/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-promotions/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/hr/attendance/components/AttendanceTab.vue","frontend/src/views/hr/attendance/components/HolidaysTab.vue","frontend/src/views/hr/attendance/components/LeavesTab.vue","frontend/src/views/hr/attendance/components/OvertimeTab.vue","frontend/src/views/hr/attendance/components/ShiftsTab.vue","frontend/src/views/hr/training/components/CertificatesTab.vue","frontend/src/views/hr/training/components/CompetencyTab.vue","frontend/src/views/hr/training/components/CoursesTab.vue","frontend/src/views/hr/training/components/ExamsTab.vue","frontend/src/views/hr/training/components/PlansTab.vue","frontend/src/views/hr/training/components/SessionsTab.vue","frontend/src/views/inventory/Counts.vue","frontend/src/views/inventory/Index.vue","frontend/src/views/inventory/Snapshots.vue","frontend/src/views/journey-orchestration/Form.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/lead-assignment/Form.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/lead-qualification/Form.vue","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/Index.vue","frontend/src/views/livestream-gifts/Index.vue","frontend/src/views/livestream-groupbuy-conversion/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/maintenance/Index.vue","frontend/src/views/maintenance/TaskDetail.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Detail.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/marketing/budget-alerts/Index.vue","frontend/src/views/mdm/Index.vue","frontend/src/views/member-benefits/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/menus/Index.vue","frontend/src/views/notification-configs/Index.vue","frontend/src/views/notifications/Index.vue","frontend/src/views/omnichannel-dashboard/Index.vue","frontend/src/views/omnichannel-data-hub/Index.vue","frontend/src/views/opportunities/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/orders/Index.vue","frontend/src/views/org-chart/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/predictive-analytics/Form.vue","frontend/src/views/process-designer/Designer.vue","frontend/src/views/product-analytics/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/qr-codes/Index.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/realtime-trigger/Form.vue","frontend/src/views/renewal-tasks/Index.vue","frontend/src/views/rfm-analysis/Detail.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/scheduled-jobs/Index.vue","frontend/src/views/segments/Index.vue","frontend/src/views/service-monitor/Index.vue","frontend/src/views/settings/Index.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-matrix/Index.vue","frontend/src/views/social-posts/Detail.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/spare-parts/components/TransactionHistory.vue","frontend/src/views/stage-knowledge/Index.vue","frontend/src/views/store-configs/Index.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/suppliers/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/system-monitor/Index.vue","frontend/src/views/system/AuditLogs.vue","frontend/src/views/tenant-configs/Index.vue","frontend/src/views/tickets/Form.vue","frontend/src/views/tickets/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-publishing/Index.vue","frontend/src/views/web-tracking/Index.vue"]}],"total_commits":0,"head_commit":{"id":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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-24T10:14:13+08:00","added":["backend/src/shared/constants/events/common.ts","backend/src/shared/constants/events/finance.ts","backend/src/shared/constants/events/hr.ts","backend/src/shared/constants/events/im.ts","backend/src/shared/constants/events/index.ts","backend/src/shared/constants/events/knowledge.ts","backend/src/shared/constants/events/lifecycle.ts","backend/src/shared/constants/events/marketing.ts","backend/src/shared/constants/events/sales.ts","backend/src/shared/constants/events/service.ts","backend/src/shared/constants/events/store.ts","backend/src/shared/constants/events/supply_chain.ts","backend/src/shared/constants/events/system.ts","backend/src/shared/services/list-cache.service.ts","backend/src/shared/utils/cache-utils.ts"],"removed":[],"modified":["backend/src/consumers/attribution.consumer.ts","backend/src/consumers/campaign-effectiveness.consumer.ts","backend/src/consumers/marketing-workflow-executor.consumer.ts","backend/src/consumers/scheduled-jobs.consumer.ts","backend/src/modules/ai-agents/services/knowledge-vector-enhanced.service.ts","backend/src/modules/alliance-settlements/alliance-settlement.service.test.ts","backend/src/modules/campaign-analytics/campaign-analytics.controller.ts","backend/src/modules/contract-templates/contract-template.service.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.service.test.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/leads/lead-ai-scoring.service.ts","backend/src/modules/leads/lead-sla.service.ts","backend/src/modules/leads/lead-smart-assignment.service.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-interactions/livestream-realtime.service.ts","backend/src/modules/marketing-automation/workflow-trigger.service.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.controller.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.routes.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.service.ts","backend/src/modules/notifications/notification.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/payments/payment.service.test.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/segments/segment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-interactions/social-interactions.service.ts","backend/src/modules/store-staff/store-staff.service.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/shared/constants/events.ts","backend/src/shared/services/partition-maintenance.service.ts","backend/src/shared/state-machines/machines/contract.machine.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/types.ts","backend/src/shared/state-machines/utils/transitions/sales.transitions.ts","backend/src/shared/utils/biz-code.ts","frontend/src/api/adapters.ts","frontend/src/api/im-binding.ts","frontend/src/api/modules/ad-accounts.ts","frontend/src/api/modules/ad-audiences.ts","frontend/src/api/modules/ad-creatives.ts","frontend/src/api/modules/ad-placement.ts","frontend/src/api/modules/ad-reports.ts","frontend/src/api/modules/agent-group.ts","frontend/src/api/modules/ai-agent.ts","frontend/src/api/modules/alliance-analytics.ts","frontend/src/api/modules/alliance-merchants.ts","frontend/src/api/modules/alliance-products.ts","frontend/src/api/modules/alliance-promotions.ts","frontend/src/api/modules/alliance-referrals.ts","frontend/src/api/modules/analytics.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/assets.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/audit-logs.ts","frontend/src/api/modules/campaign-drafts.ts","frontend/src/api/modules/campaign-library.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/campaign-tools.ts","frontend/src/api/modules/campaign-use-case-templates.ts","frontend/src/api/modules/campaign-wizard.ts","frontend/src/api/modules/campaigns.ts","frontend/src/api/modules/cohort-analysis.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-activities.ts","frontend/src/api/modules/community-analytics.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-groups.ts","frontend/src/api/modules/community-levels.ts","frontend/src/api/modules/community-members.ts","frontend/src/api/modules/community-messages.ts","frontend/src/api/modules/community-points.ts","frontend/src/api/modules/consumer-behavior-analytics.ts","frontend/src/api/modules/content-categories.ts","frontend/src/api/modules/content-copyright.ts","frontend/src/api/modules/content-creation.ts","frontend/src/api/modules/content-distribution.ts","frontend/src/api/modules/content-library.ts","frontend/src/api/modules/content-templates.ts","frontend/src/api/modules/contract-templates.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/cross-domain-funnel.ts","frontend/src/api/modules/customer-analytics.ts","frontend/src/api/modules/customer-health.ts","frontend/src/api/modules/customer-journey.ts","frontend/src/api/modules/customer-ltv.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customer-segmentation.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/dictionaries.ts","frontend/src/api/modules/dimension-transform.ts","frontend/src/api/modules/email-marketing.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/event-logs.ts","frontend/src/api/modules/events.ts","frontend/src/api/modules/expense.ts","frontend/src/api/modules/financial-reports.ts","frontend/src/api/modules/fulfillment.ts","frontend/src/api/modules/geo-fences.ts","frontend/src/api/modules/geo-pois.ts","frontend/src/api/modules/groupbuy-analytics.ts","frontend/src/api/modules/groupbuy-campaigns.ts","frontend/src/api/modules/groupbuy-platforms.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-products.ts","frontend/src/api/modules/groupbuy-settlements.ts","frontend/src/api/modules/hr-benefits.ts","frontend/src/api/modules/hr-payroll.ts","frontend/src/api/modules/im-channels.ts","frontend/src/api/modules/im.ts","frontend/src/api/modules/integration-services.ts","frontend/src/api/modules/intent-analyzer.ts","frontend/src/api/modules/journey-orchestration.ts","frontend/src/api/modules/knowledge-candidates.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-groupbuy-conversion.ts","frontend/src/api/modules/livestream-groupbuy.ts","frontend/src/api/modules/livestream-interactions.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/location-assessments.ts","frontend/src/api/modules/login-logs.ts","frontend/src/api/modules/maintenance.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-calendar.ts","frontend/src/api/modules/marketing-chatbot.ts","frontend/src/api/modules/marketing-content.ts","frontend/src/api/modules/marketing-forms.ts","frontend/src/api/modules/marketing-matrix.ts","frontend/src/api/modules/marketing-north-star.ts","frontend/src/api/modules/marketing-timeslots.ts","frontend/src/api/modules/marketing.ts","frontend/src/api/modules/omnichannel-dashboard.ts","frontend/src/api/modules/omnichannel-data-hub.ts","frontend/src/api/modules/omnichannel-touchpoints.ts","frontend/src/api/modules/operation-logs.ts","frontend/src/api/modules/opportunities.ts","frontend/src/api/modules/predictive-analytics.ts","frontend/src/api/modules/process-designer.ts","frontend/src/api/modules/process.ts","frontend/src/api/modules/products.ts","frontend/src/api/modules/realtime-trigger.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/resource-requests.ts","frontend/src/api/modules/revenue.ts","frontend/src/api/modules/rfm-analysis.ts","frontend/src/api/modules/rma.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/scheduled-jobs.ts","frontend/src/api/modules/search.ts","frontend/src/api/modules/segments.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/api/modules/sms-marketing.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/api/modules/social-auto-replies.ts","frontend/src/api/modules/social-competitors.ts","frontend/src/api/modules/social-hot-topics.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/spare-parts.ts","frontend/src/api/modules/store-performance.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supplier-management.ts","frontend/src/api/modules/swot-analyses.ts","frontend/src/api/modules/system-events.ts","frontend/src/api/modules/ticket-workflows.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/tob-toc-gateway.ts","frontend/src/api/modules/unified-campaign.ts","frontend/src/api/modules/web-tracking.ts","frontend/src/api/modules/workflow-generator.ts","frontend/src/api/response-normalizer.ts","frontend/src/components/business/ActivityTimeline.vue","frontend/src/components/business/EventStreamPanel.vue","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/DataTable.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/mobile/MobileFilter.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/types/ai-agent.ts","frontend/src/utils/echarts.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/abm-marketing/Index.vue","frontend/src/views/acquisition/Index.vue","frontend/src/views/ad-accounts/Form.vue","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-analytics/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-placement/ABTests.vue","frontend/src/views/ad-placement/AudiencePacks.vue","frontend/src/views/ad-placement/BudgetAlerts.vue","frontend/src/views/ad-placement/Creatives.vue","frontend/src/views/ad-placement/Index.vue","frontend/src/views/ad-placement/RoiAnalysis.vue","frontend/src/views/alliance-agreements/Index.vue","frontend/src/views/alliance-campaigns/Index.vue","frontend/src/views/alliance-coupons/Index.vue","frontend/src/views/alliance-packages/Index.vue","frontend/src/views/alliance-partners/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/analytics/roi/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Form.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/attribution/Index.vue","frontend/src/views/auth/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-analytics/Index.vue","frontend/src/views/campaign-library/Index.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaign-tools/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/ToolConfigDialog.vue","frontend/src/views/campaigns/wizard/Step3Tools.vue","frontend/src/views/campaigns/wizard/Step4BasicInfo.vue","frontend/src/views/campaigns/wizard/Step7Review.vue","frontend/src/views/campaigns/wizard/components/ToolConfigForms.vue","frontend/src/views/channel-analytics/Index.vue","frontend/src/views/community-bots/Index.vue","frontend/src/views/community-fission/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/community-tasks/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Detail.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/contracts/Form.vue","frontend/src/views/conversion-paths/Index.vue","frontend/src/views/cost-allocation/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Detail.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Form.vue","frontend/src/views/departments/Detail.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Alerts.vue","frontend/src/views/devices/Form.vue","frontend/src/views/diagnosis/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-templates/Form.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/geo-pois/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-inventory/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-platforms/Index.vue","frontend/src/views/groupbuy-pricing/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-promotions/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/hr/attendance/components/AttendanceTab.vue","frontend/src/views/hr/attendance/components/HolidaysTab.vue","frontend/src/views/hr/attendance/components/LeavesTab.vue","frontend/src/views/hr/attendance/components/OvertimeTab.vue","frontend/src/views/hr/attendance/components/ShiftsTab.vue","frontend/src/views/hr/training/components/CertificatesTab.vue","frontend/src/views/hr/training/components/CompetencyTab.vue","frontend/src/views/hr/training/components/CoursesTab.vue","frontend/src/views/hr/training/components/ExamsTab.vue","frontend/src/views/hr/training/components/PlansTab.vue","frontend/src/views/hr/training/components/SessionsTab.vue","frontend/src/views/inventory/Counts.vue","frontend/src/views/inventory/Index.vue","frontend/src/views/inventory/Snapshots.vue","frontend/src/views/journey-orchestration/Form.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/lead-assignment/Form.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/lead-qualification/Form.vue","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/Index.vue","frontend/src/views/livestream-gifts/Index.vue","frontend/src/views/livestream-groupbuy-conversion/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/maintenance/Index.vue","frontend/src/views/maintenance/TaskDetail.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Detail.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/marketing/budget-alerts/Index.vue","frontend/src/views/mdm/Index.vue","frontend/src/views/member-benefits/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/menus/Index.vue","frontend/src/views/notification-configs/Index.vue","frontend/src/views/notifications/Index.vue","frontend/src/views/omnichannel-dashboard/Index.vue","frontend/src/views/omnichannel-data-hub/Index.vue","frontend/src/views/opportunities/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/orders/Index.vue","frontend/src/views/org-chart/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/predictive-analytics/Form.vue","frontend/src/views/process-designer/Designer.vue","frontend/src/views/product-analytics/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/qr-codes/Index.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/realtime-trigger/Form.vue","frontend/src/views/renewal-tasks/Index.vue","frontend/src/views/rfm-analysis/Detail.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/scheduled-jobs/Index.vue","frontend/src/views/segments/Index.vue","frontend/src/views/service-monitor/Index.vue","frontend/src/views/settings/Index.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-matrix/Index.vue","frontend/src/views/social-posts/Detail.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/spare-parts/components/TransactionHistory.vue","frontend/src/views/stage-knowledge/Index.vue","frontend/src/views/store-configs/Index.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/suppliers/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/system-monitor/Index.vue","frontend/src/views/system/AuditLogs.vue","frontend/src/views/tenant-configs/Index.vue","frontend/src/views/tickets/Form.vue","frontend/src/views/tickets/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-publishing/Index.vue","frontend/src/views/web-tracking/Index.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/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":1956552,"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":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-03-24T09:45:16+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
|
1774319040
|
1774319041
|
0
|
1774318840
|
1774319041
|
|
|
0
|
Edit
Delete
|
|
7653
|
feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理...
|
6
|
5
|
test-report.yml
|
7578
|
5
|
0
|
refs/heads/main
|
dbf34b08bbb60650d15b0c55262dbfe8d0a3a655
|
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-24T10:14:13+08:00","updated_at":"2026-03-24T10:14:13+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":7649,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/7649","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/7649","display_title":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理","path":"e2e-tests.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":7574,"head_sha":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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":1958148,"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":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-03-24T10:14:22+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-24T10:14:22+08:00","completed_at":"2026-03-24T10:23:25+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":1958148,"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":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-03-24T10:14:22+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
|
1774319046
|
1774319049
|
0
|
1774319005
|
1774319065
|
|
|
0
|
Edit
Delete
|
|
7654
|
feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理...
|
6
|
5
|
deploy.yml
|
7579
|
5
|
0
|
refs/heads/main
|
dbf34b08bbb60650d15b0c55262dbfe8d0a3a655
|
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-24T10:14:13+08:00","updated_at":"2026-03-24T10:14:13+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":7650,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/7650","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/7650","display_title":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":7575,"head_sha":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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":1958148,"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":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-03-24T10:14:22+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-24T10:23:26+08:00","completed_at":"2026-03-24T10:23:58+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":1958148,"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":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-03-24T10:14:22+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
|
1774319050
|
1774319102
|
0
|
1774319038
|
1774319102
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "false"
...
|
deploy-refs/heads/main
|
0
|
Edit
Delete
|
|
7655
|
feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理...
|
6
|
5
|
test-report.yml
|
7580
|
5
|
0
|
refs/heads/main
|
dbf34b08bbb60650d15b0c55262dbfe8d0a3a655
|
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-24T10:14:13+08:00","updated_at":"2026-03-24T10:14:13+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":7649,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/7649","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/7649","display_title":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理","path":"e2e-tests.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":7574,"head_sha":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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":1958148,"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":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-03-24T10:14:22+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-24T10:14:22+08:00","completed_at":"2026-03-24T10:23:25+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":1958148,"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":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-03-24T10:14:22+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
|
1774319060
|
1774319062
|
0
|
1774319045
|
1774319097
|
|
|
0
|
Edit
Delete
|
|
7656
|
feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理...
|
6
|
5
|
deploy.yml
|
7581
|
5
|
0
|
refs/heads/main
|
dbf34b08bbb60650d15b0c55262dbfe8d0a3a655
|
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-24T10:14:13+08:00","updated_at":"2026-03-24T10:14:13+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":7650,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/7650","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/7650","display_title":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":7575,"head_sha":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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":1958148,"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":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-03-24T10:14:22+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-24T10:23:26+08:00","completed_at":"2026-03-24T10:23:58+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":1958148,"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":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-03-24T10:14:22+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
workflow_run
|
3
|
17
|
1774319103
|
1774319281
|
0
|
1774319102
|
1774319281
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "false"
...
|
deploy-refs/heads/main
|
0
|
Edit
Delete
|
|
7657
|
feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理...
|
6
|
5
|
health-check.yml
|
7582
|
-2
|
130
|
refs/heads/main
|
dbf34b08bbb60650d15b0c55262dbfe8d0a3a655
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"8c39619c9cdb0d888d10942bf50533c8238021df","after":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/8c39619c9cdb0d888d10942bf50533c8238021df...dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","commits":[{"id":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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-24T10:14:13+08:00","added":["backend/src/shared/constants/events/common.ts","backend/src/shared/constants/events/finance.ts","backend/src/shared/constants/events/hr.ts","backend/src/shared/constants/events/im.ts","backend/src/shared/constants/events/index.ts","backend/src/shared/constants/events/knowledge.ts","backend/src/shared/constants/events/lifecycle.ts","backend/src/shared/constants/events/marketing.ts","backend/src/shared/constants/events/sales.ts","backend/src/shared/constants/events/service.ts","backend/src/shared/constants/events/store.ts","backend/src/shared/constants/events/supply_chain.ts","backend/src/shared/constants/events/system.ts","backend/src/shared/services/list-cache.service.ts","backend/src/shared/utils/cache-utils.ts"],"removed":[],"modified":["backend/src/consumers/attribution.consumer.ts","backend/src/consumers/campaign-effectiveness.consumer.ts","backend/src/consumers/marketing-workflow-executor.consumer.ts","backend/src/consumers/scheduled-jobs.consumer.ts","backend/src/modules/ai-agents/services/knowledge-vector-enhanced.service.ts","backend/src/modules/alliance-settlements/alliance-settlement.service.test.ts","backend/src/modules/campaign-analytics/campaign-analytics.controller.ts","backend/src/modules/contract-templates/contract-template.service.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.service.test.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/leads/lead-ai-scoring.service.ts","backend/src/modules/leads/lead-sla.service.ts","backend/src/modules/leads/lead-smart-assignment.service.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-interactions/livestream-realtime.service.ts","backend/src/modules/marketing-automation/workflow-trigger.service.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.controller.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.routes.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.service.ts","backend/src/modules/notifications/notification.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/payments/payment.service.test.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/segments/segment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-interactions/social-interactions.service.ts","backend/src/modules/store-staff/store-staff.service.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/shared/constants/events.ts","backend/src/shared/services/partition-maintenance.service.ts","backend/src/shared/state-machines/machines/contract.machine.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/types.ts","backend/src/shared/state-machines/utils/transitions/sales.transitions.ts","backend/src/shared/utils/biz-code.ts","frontend/src/api/adapters.ts","frontend/src/api/im-binding.ts","frontend/src/api/modules/ad-accounts.ts","frontend/src/api/modules/ad-audiences.ts","frontend/src/api/modules/ad-creatives.ts","frontend/src/api/modules/ad-placement.ts","frontend/src/api/modules/ad-reports.ts","frontend/src/api/modules/agent-group.ts","frontend/src/api/modules/ai-agent.ts","frontend/src/api/modules/alliance-analytics.ts","frontend/src/api/modules/alliance-merchants.ts","frontend/src/api/modules/alliance-products.ts","frontend/src/api/modules/alliance-promotions.ts","frontend/src/api/modules/alliance-referrals.ts","frontend/src/api/modules/analytics.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/assets.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/audit-logs.ts","frontend/src/api/modules/campaign-drafts.ts","frontend/src/api/modules/campaign-library.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/campaign-tools.ts","frontend/src/api/modules/campaign-use-case-templates.ts","frontend/src/api/modules/campaign-wizard.ts","frontend/src/api/modules/campaigns.ts","frontend/src/api/modules/cohort-analysis.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-activities.ts","frontend/src/api/modules/community-analytics.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-groups.ts","frontend/src/api/modules/community-levels.ts","frontend/src/api/modules/community-members.ts","frontend/src/api/modules/community-messages.ts","frontend/src/api/modules/community-points.ts","frontend/src/api/modules/consumer-behavior-analytics.ts","frontend/src/api/modules/content-categories.ts","frontend/src/api/modules/content-copyright.ts","frontend/src/api/modules/content-creation.ts","frontend/src/api/modules/content-distribution.ts","frontend/src/api/modules/content-library.ts","frontend/src/api/modules/content-templates.ts","frontend/src/api/modules/contract-templates.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/cross-domain-funnel.ts","frontend/src/api/modules/customer-analytics.ts","frontend/src/api/modules/customer-health.ts","frontend/src/api/modules/customer-journey.ts","frontend/src/api/modules/customer-ltv.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customer-segmentation.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/dictionaries.ts","frontend/src/api/modules/dimension-transform.ts","frontend/src/api/modules/email-marketing.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/event-logs.ts","frontend/src/api/modules/events.ts","frontend/src/api/modules/expense.ts","frontend/src/api/modules/financial-reports.ts","frontend/src/api/modules/fulfillment.ts","frontend/src/api/modules/geo-fences.ts","frontend/src/api/modules/geo-pois.ts","frontend/src/api/modules/groupbuy-analytics.ts","frontend/src/api/modules/groupbuy-campaigns.ts","frontend/src/api/modules/groupbuy-platforms.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-products.ts","frontend/src/api/modules/groupbuy-settlements.ts","frontend/src/api/modules/hr-benefits.ts","frontend/src/api/modules/hr-payroll.ts","frontend/src/api/modules/im-channels.ts","frontend/src/api/modules/im.ts","frontend/src/api/modules/integration-services.ts","frontend/src/api/modules/intent-analyzer.ts","frontend/src/api/modules/journey-orchestration.ts","frontend/src/api/modules/knowledge-candidates.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-groupbuy-conversion.ts","frontend/src/api/modules/livestream-groupbuy.ts","frontend/src/api/modules/livestream-interactions.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/location-assessments.ts","frontend/src/api/modules/login-logs.ts","frontend/src/api/modules/maintenance.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-calendar.ts","frontend/src/api/modules/marketing-chatbot.ts","frontend/src/api/modules/marketing-content.ts","frontend/src/api/modules/marketing-forms.ts","frontend/src/api/modules/marketing-matrix.ts","frontend/src/api/modules/marketing-north-star.ts","frontend/src/api/modules/marketing-timeslots.ts","frontend/src/api/modules/marketing.ts","frontend/src/api/modules/omnichannel-dashboard.ts","frontend/src/api/modules/omnichannel-data-hub.ts","frontend/src/api/modules/omnichannel-touchpoints.ts","frontend/src/api/modules/operation-logs.ts","frontend/src/api/modules/opportunities.ts","frontend/src/api/modules/predictive-analytics.ts","frontend/src/api/modules/process-designer.ts","frontend/src/api/modules/process.ts","frontend/src/api/modules/products.ts","frontend/src/api/modules/realtime-trigger.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/resource-requests.ts","frontend/src/api/modules/revenue.ts","frontend/src/api/modules/rfm-analysis.ts","frontend/src/api/modules/rma.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/scheduled-jobs.ts","frontend/src/api/modules/search.ts","frontend/src/api/modules/segments.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/api/modules/sms-marketing.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/api/modules/social-auto-replies.ts","frontend/src/api/modules/social-competitors.ts","frontend/src/api/modules/social-hot-topics.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/spare-parts.ts","frontend/src/api/modules/store-performance.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supplier-management.ts","frontend/src/api/modules/swot-analyses.ts","frontend/src/api/modules/system-events.ts","frontend/src/api/modules/ticket-workflows.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/tob-toc-gateway.ts","frontend/src/api/modules/unified-campaign.ts","frontend/src/api/modules/web-tracking.ts","frontend/src/api/modules/workflow-generator.ts","frontend/src/api/response-normalizer.ts","frontend/src/components/business/ActivityTimeline.vue","frontend/src/components/business/EventStreamPanel.vue","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/DataTable.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/mobile/MobileFilter.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/types/ai-agent.ts","frontend/src/utils/echarts.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/abm-marketing/Index.vue","frontend/src/views/acquisition/Index.vue","frontend/src/views/ad-accounts/Form.vue","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-analytics/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-placement/ABTests.vue","frontend/src/views/ad-placement/AudiencePacks.vue","frontend/src/views/ad-placement/BudgetAlerts.vue","frontend/src/views/ad-placement/Creatives.vue","frontend/src/views/ad-placement/Index.vue","frontend/src/views/ad-placement/RoiAnalysis.vue","frontend/src/views/alliance-agreements/Index.vue","frontend/src/views/alliance-campaigns/Index.vue","frontend/src/views/alliance-coupons/Index.vue","frontend/src/views/alliance-packages/Index.vue","frontend/src/views/alliance-partners/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/analytics/roi/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Form.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/attribution/Index.vue","frontend/src/views/auth/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-analytics/Index.vue","frontend/src/views/campaign-library/Index.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaign-tools/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/ToolConfigDialog.vue","frontend/src/views/campaigns/wizard/Step3Tools.vue","frontend/src/views/campaigns/wizard/Step4BasicInfo.vue","frontend/src/views/campaigns/wizard/Step7Review.vue","frontend/src/views/campaigns/wizard/components/ToolConfigForms.vue","frontend/src/views/channel-analytics/Index.vue","frontend/src/views/community-bots/Index.vue","frontend/src/views/community-fission/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/community-tasks/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Detail.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/contracts/Form.vue","frontend/src/views/conversion-paths/Index.vue","frontend/src/views/cost-allocation/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Detail.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Form.vue","frontend/src/views/departments/Detail.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Alerts.vue","frontend/src/views/devices/Form.vue","frontend/src/views/diagnosis/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-templates/Form.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/geo-pois/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-inventory/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-platforms/Index.vue","frontend/src/views/groupbuy-pricing/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-promotions/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/hr/attendance/components/AttendanceTab.vue","frontend/src/views/hr/attendance/components/HolidaysTab.vue","frontend/src/views/hr/attendance/components/LeavesTab.vue","frontend/src/views/hr/attendance/components/OvertimeTab.vue","frontend/src/views/hr/attendance/components/ShiftsTab.vue","frontend/src/views/hr/training/components/CertificatesTab.vue","frontend/src/views/hr/training/components/CompetencyTab.vue","frontend/src/views/hr/training/components/CoursesTab.vue","frontend/src/views/hr/training/components/ExamsTab.vue","frontend/src/views/hr/training/components/PlansTab.vue","frontend/src/views/hr/training/components/SessionsTab.vue","frontend/src/views/inventory/Counts.vue","frontend/src/views/inventory/Index.vue","frontend/src/views/inventory/Snapshots.vue","frontend/src/views/journey-orchestration/Form.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/lead-assignment/Form.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/lead-qualification/Form.vue","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/Index.vue","frontend/src/views/livestream-gifts/Index.vue","frontend/src/views/livestream-groupbuy-conversion/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/maintenance/Index.vue","frontend/src/views/maintenance/TaskDetail.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Detail.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/marketing/budget-alerts/Index.vue","frontend/src/views/mdm/Index.vue","frontend/src/views/member-benefits/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/menus/Index.vue","frontend/src/views/notification-configs/Index.vue","frontend/src/views/notifications/Index.vue","frontend/src/views/omnichannel-dashboard/Index.vue","frontend/src/views/omnichannel-data-hub/Index.vue","frontend/src/views/opportunities/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/orders/Index.vue","frontend/src/views/org-chart/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/predictive-analytics/Form.vue","frontend/src/views/process-designer/Designer.vue","frontend/src/views/product-analytics/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/qr-codes/Index.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/realtime-trigger/Form.vue","frontend/src/views/renewal-tasks/Index.vue","frontend/src/views/rfm-analysis/Detail.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/scheduled-jobs/Index.vue","frontend/src/views/segments/Index.vue","frontend/src/views/service-monitor/Index.vue","frontend/src/views/settings/Index.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-matrix/Index.vue","frontend/src/views/social-posts/Detail.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/spare-parts/components/TransactionHistory.vue","frontend/src/views/stage-knowledge/Index.vue","frontend/src/views/store-configs/Index.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/suppliers/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/system-monitor/Index.vue","frontend/src/views/system/AuditLogs.vue","frontend/src/views/tenant-configs/Index.vue","frontend/src/views/tickets/Form.vue","frontend/src/views/tickets/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-publishing/Index.vue","frontend/src/views/web-tracking/Index.vue"]}],"total_commits":0,"head_commit":{"id":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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-24T10:14:13+08:00","added":["backend/src/shared/constants/events/common.ts","backend/src/shared/constants/events/finance.ts","backend/src/shared/constants/events/hr.ts","backend/src/shared/constants/events/im.ts","backend/src/shared/constants/events/index.ts","backend/src/shared/constants/events/knowledge.ts","backend/src/shared/constants/events/lifecycle.ts","backend/src/shared/constants/events/marketing.ts","backend/src/shared/constants/events/sales.ts","backend/src/shared/constants/events/service.ts","backend/src/shared/constants/events/store.ts","backend/src/shared/constants/events/supply_chain.ts","backend/src/shared/constants/events/system.ts","backend/src/shared/services/list-cache.service.ts","backend/src/shared/utils/cache-utils.ts"],"removed":[],"modified":["backend/src/consumers/attribution.consumer.ts","backend/src/consumers/campaign-effectiveness.consumer.ts","backend/src/consumers/marketing-workflow-executor.consumer.ts","backend/src/consumers/scheduled-jobs.consumer.ts","backend/src/modules/ai-agents/services/knowledge-vector-enhanced.service.ts","backend/src/modules/alliance-settlements/alliance-settlement.service.test.ts","backend/src/modules/campaign-analytics/campaign-analytics.controller.ts","backend/src/modules/contract-templates/contract-template.service.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.service.test.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/leads/lead-ai-scoring.service.ts","backend/src/modules/leads/lead-sla.service.ts","backend/src/modules/leads/lead-smart-assignment.service.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-interactions/livestream-realtime.service.ts","backend/src/modules/marketing-automation/workflow-trigger.service.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.controller.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.routes.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.service.ts","backend/src/modules/notifications/notification.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/payments/payment.service.test.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/segments/segment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-interactions/social-interactions.service.ts","backend/src/modules/store-staff/store-staff.service.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/shared/constants/events.ts","backend/src/shared/services/partition-maintenance.service.ts","backend/src/shared/state-machines/machines/contract.machine.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/types.ts","backend/src/shared/state-machines/utils/transitions/sales.transitions.ts","backend/src/shared/utils/biz-code.ts","frontend/src/api/adapters.ts","frontend/src/api/im-binding.ts","frontend/src/api/modules/ad-accounts.ts","frontend/src/api/modules/ad-audiences.ts","frontend/src/api/modules/ad-creatives.ts","frontend/src/api/modules/ad-placement.ts","frontend/src/api/modules/ad-reports.ts","frontend/src/api/modules/agent-group.ts","frontend/src/api/modules/ai-agent.ts","frontend/src/api/modules/alliance-analytics.ts","frontend/src/api/modules/alliance-merchants.ts","frontend/src/api/modules/alliance-products.ts","frontend/src/api/modules/alliance-promotions.ts","frontend/src/api/modules/alliance-referrals.ts","frontend/src/api/modules/analytics.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/assets.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/audit-logs.ts","frontend/src/api/modules/campaign-drafts.ts","frontend/src/api/modules/campaign-library.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/campaign-tools.ts","frontend/src/api/modules/campaign-use-case-templates.ts","frontend/src/api/modules/campaign-wizard.ts","frontend/src/api/modules/campaigns.ts","frontend/src/api/modules/cohort-analysis.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-activities.ts","frontend/src/api/modules/community-analytics.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-groups.ts","frontend/src/api/modules/community-levels.ts","frontend/src/api/modules/community-members.ts","frontend/src/api/modules/community-messages.ts","frontend/src/api/modules/community-points.ts","frontend/src/api/modules/consumer-behavior-analytics.ts","frontend/src/api/modules/content-categories.ts","frontend/src/api/modules/content-copyright.ts","frontend/src/api/modules/content-creation.ts","frontend/src/api/modules/content-distribution.ts","frontend/src/api/modules/content-library.ts","frontend/src/api/modules/content-templates.ts","frontend/src/api/modules/contract-templates.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/cross-domain-funnel.ts","frontend/src/api/modules/customer-analytics.ts","frontend/src/api/modules/customer-health.ts","frontend/src/api/modules/customer-journey.ts","frontend/src/api/modules/customer-ltv.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customer-segmentation.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/dictionaries.ts","frontend/src/api/modules/dimension-transform.ts","frontend/src/api/modules/email-marketing.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/event-logs.ts","frontend/src/api/modules/events.ts","frontend/src/api/modules/expense.ts","frontend/src/api/modules/financial-reports.ts","frontend/src/api/modules/fulfillment.ts","frontend/src/api/modules/geo-fences.ts","frontend/src/api/modules/geo-pois.ts","frontend/src/api/modules/groupbuy-analytics.ts","frontend/src/api/modules/groupbuy-campaigns.ts","frontend/src/api/modules/groupbuy-platforms.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-products.ts","frontend/src/api/modules/groupbuy-settlements.ts","frontend/src/api/modules/hr-benefits.ts","frontend/src/api/modules/hr-payroll.ts","frontend/src/api/modules/im-channels.ts","frontend/src/api/modules/im.ts","frontend/src/api/modules/integration-services.ts","frontend/src/api/modules/intent-analyzer.ts","frontend/src/api/modules/journey-orchestration.ts","frontend/src/api/modules/knowledge-candidates.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-groupbuy-conversion.ts","frontend/src/api/modules/livestream-groupbuy.ts","frontend/src/api/modules/livestream-interactions.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/location-assessments.ts","frontend/src/api/modules/login-logs.ts","frontend/src/api/modules/maintenance.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-calendar.ts","frontend/src/api/modules/marketing-chatbot.ts","frontend/src/api/modules/marketing-content.ts","frontend/src/api/modules/marketing-forms.ts","frontend/src/api/modules/marketing-matrix.ts","frontend/src/api/modules/marketing-north-star.ts","frontend/src/api/modules/marketing-timeslots.ts","frontend/src/api/modules/marketing.ts","frontend/src/api/modules/omnichannel-dashboard.ts","frontend/src/api/modules/omnichannel-data-hub.ts","frontend/src/api/modules/omnichannel-touchpoints.ts","frontend/src/api/modules/operation-logs.ts","frontend/src/api/modules/opportunities.ts","frontend/src/api/modules/predictive-analytics.ts","frontend/src/api/modules/process-designer.ts","frontend/src/api/modules/process.ts","frontend/src/api/modules/products.ts","frontend/src/api/modules/realtime-trigger.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/resource-requests.ts","frontend/src/api/modules/revenue.ts","frontend/src/api/modules/rfm-analysis.ts","frontend/src/api/modules/rma.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/scheduled-jobs.ts","frontend/src/api/modules/search.ts","frontend/src/api/modules/segments.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/api/modules/sms-marketing.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/api/modules/social-auto-replies.ts","frontend/src/api/modules/social-competitors.ts","frontend/src/api/modules/social-hot-topics.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/spare-parts.ts","frontend/src/api/modules/store-performance.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supplier-management.ts","frontend/src/api/modules/swot-analyses.ts","frontend/src/api/modules/system-events.ts","frontend/src/api/modules/ticket-workflows.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/tob-toc-gateway.ts","frontend/src/api/modules/unified-campaign.ts","frontend/src/api/modules/web-tracking.ts","frontend/src/api/modules/workflow-generator.ts","frontend/src/api/response-normalizer.ts","frontend/src/components/business/ActivityTimeline.vue","frontend/src/components/business/EventStreamPanel.vue","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/DataTable.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/mobile/MobileFilter.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/types/ai-agent.ts","frontend/src/utils/echarts.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/abm-marketing/Index.vue","frontend/src/views/acquisition/Index.vue","frontend/src/views/ad-accounts/Form.vue","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-analytics/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-placement/ABTests.vue","frontend/src/views/ad-placement/AudiencePacks.vue","frontend/src/views/ad-placement/BudgetAlerts.vue","frontend/src/views/ad-placement/Creatives.vue","frontend/src/views/ad-placement/Index.vue","frontend/src/views/ad-placement/RoiAnalysis.vue","frontend/src/views/alliance-agreements/Index.vue","frontend/src/views/alliance-campaigns/Index.vue","frontend/src/views/alliance-coupons/Index.vue","frontend/src/views/alliance-packages/Index.vue","frontend/src/views/alliance-partners/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/analytics/roi/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Form.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/attribution/Index.vue","frontend/src/views/auth/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-analytics/Index.vue","frontend/src/views/campaign-library/Index.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaign-tools/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/ToolConfigDialog.vue","frontend/src/views/campaigns/wizard/Step3Tools.vue","frontend/src/views/campaigns/wizard/Step4BasicInfo.vue","frontend/src/views/campaigns/wizard/Step7Review.vue","frontend/src/views/campaigns/wizard/components/ToolConfigForms.vue","frontend/src/views/channel-analytics/Index.vue","frontend/src/views/community-bots/Index.vue","frontend/src/views/community-fission/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/community-tasks/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Detail.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/contracts/Form.vue","frontend/src/views/conversion-paths/Index.vue","frontend/src/views/cost-allocation/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Detail.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Form.vue","frontend/src/views/departments/Detail.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Alerts.vue","frontend/src/views/devices/Form.vue","frontend/src/views/diagnosis/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-templates/Form.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/geo-pois/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-inventory/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-platforms/Index.vue","frontend/src/views/groupbuy-pricing/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-promotions/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/hr/attendance/components/AttendanceTab.vue","frontend/src/views/hr/attendance/components/HolidaysTab.vue","frontend/src/views/hr/attendance/components/LeavesTab.vue","frontend/src/views/hr/attendance/components/OvertimeTab.vue","frontend/src/views/hr/attendance/components/ShiftsTab.vue","frontend/src/views/hr/training/components/CertificatesTab.vue","frontend/src/views/hr/training/components/CompetencyTab.vue","frontend/src/views/hr/training/components/CoursesTab.vue","frontend/src/views/hr/training/components/ExamsTab.vue","frontend/src/views/hr/training/components/PlansTab.vue","frontend/src/views/hr/training/components/SessionsTab.vue","frontend/src/views/inventory/Counts.vue","frontend/src/views/inventory/Index.vue","frontend/src/views/inventory/Snapshots.vue","frontend/src/views/journey-orchestration/Form.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/lead-assignment/Form.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/lead-qualification/Form.vue","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/Index.vue","frontend/src/views/livestream-gifts/Index.vue","frontend/src/views/livestream-groupbuy-conversion/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/maintenance/Index.vue","frontend/src/views/maintenance/TaskDetail.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Detail.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/marketing/budget-alerts/Index.vue","frontend/src/views/mdm/Index.vue","frontend/src/views/member-benefits/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/menus/Index.vue","frontend/src/views/notification-configs/Index.vue","frontend/src/views/notifications/Index.vue","frontend/src/views/omnichannel-dashboard/Index.vue","frontend/src/views/omnichannel-data-hub/Index.vue","frontend/src/views/opportunities/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/orders/Index.vue","frontend/src/views/org-chart/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/predictive-analytics/Form.vue","frontend/src/views/process-designer/Designer.vue","frontend/src/views/product-analytics/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/qr-codes/Index.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/realtime-trigger/Form.vue","frontend/src/views/renewal-tasks/Index.vue","frontend/src/views/rfm-analysis/Detail.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/scheduled-jobs/Index.vue","frontend/src/views/segments/Index.vue","frontend/src/views/service-monitor/Index.vue","frontend/src/views/settings/Index.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-matrix/Index.vue","frontend/src/views/social-posts/Detail.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/spare-parts/components/TransactionHistory.vue","frontend/src/views/stage-knowledge/Index.vue","frontend/src/views/store-configs/Index.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/suppliers/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/system-monitor/Index.vue","frontend/src/views/system/AuditLogs.vue","frontend/src/views/tenant-configs/Index.vue","frontend/src/views/tickets/Form.vue","frontend/src/views/tickets/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-publishing/Index.vue","frontend/src/views/web-tracking/Index.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/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":1956552,"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":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-03-24T09:45:16+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
|
1774319281
|
1774319282
|
0
|
1774319140
|
1774319282
|
|
|
0
|
Edit
Delete
|
|
7658
|
feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理...
|
6
|
5
|
deploy.yml
|
7583
|
5
|
0
|
refs/heads/main
|
dbf34b08bbb60650d15b0c55262dbfe8d0a3a655
|
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-24T10:14:13+08:00","updated_at":"2026-03-24T10:14:13+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":7650,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/7650","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/7650","display_title":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":7575,"head_sha":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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":1958148,"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":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-03-24T10:14:22+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-24T10:23:26+08:00","completed_at":"2026-03-24T10:23:58+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":1958148,"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":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-03-24T10:14:22+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
workflow_run
|
1
|
40
|
1774319283
|
1774319305
|
0
|
1774319281
|
1774319305
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "false"
...
|
deploy-refs/heads/main
|
0
|
Edit
Delete
|
|
7659
|
feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理...
|
6
|
5
|
health-check.yml
|
7584
|
-2
|
130
|
refs/heads/main
|
dbf34b08bbb60650d15b0c55262dbfe8d0a3a655
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"8c39619c9cdb0d888d10942bf50533c8238021df","after":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/8c39619c9cdb0d888d10942bf50533c8238021df...dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","commits":[{"id":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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-24T10:14:13+08:00","added":["backend/src/shared/constants/events/common.ts","backend/src/shared/constants/events/finance.ts","backend/src/shared/constants/events/hr.ts","backend/src/shared/constants/events/im.ts","backend/src/shared/constants/events/index.ts","backend/src/shared/constants/events/knowledge.ts","backend/src/shared/constants/events/lifecycle.ts","backend/src/shared/constants/events/marketing.ts","backend/src/shared/constants/events/sales.ts","backend/src/shared/constants/events/service.ts","backend/src/shared/constants/events/store.ts","backend/src/shared/constants/events/supply_chain.ts","backend/src/shared/constants/events/system.ts","backend/src/shared/services/list-cache.service.ts","backend/src/shared/utils/cache-utils.ts"],"removed":[],"modified":["backend/src/consumers/attribution.consumer.ts","backend/src/consumers/campaign-effectiveness.consumer.ts","backend/src/consumers/marketing-workflow-executor.consumer.ts","backend/src/consumers/scheduled-jobs.consumer.ts","backend/src/modules/ai-agents/services/knowledge-vector-enhanced.service.ts","backend/src/modules/alliance-settlements/alliance-settlement.service.test.ts","backend/src/modules/campaign-analytics/campaign-analytics.controller.ts","backend/src/modules/contract-templates/contract-template.service.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.service.test.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/leads/lead-ai-scoring.service.ts","backend/src/modules/leads/lead-sla.service.ts","backend/src/modules/leads/lead-smart-assignment.service.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-interactions/livestream-realtime.service.ts","backend/src/modules/marketing-automation/workflow-trigger.service.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.controller.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.routes.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.service.ts","backend/src/modules/notifications/notification.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/payments/payment.service.test.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/segments/segment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-interactions/social-interactions.service.ts","backend/src/modules/store-staff/store-staff.service.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/shared/constants/events.ts","backend/src/shared/services/partition-maintenance.service.ts","backend/src/shared/state-machines/machines/contract.machine.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/types.ts","backend/src/shared/state-machines/utils/transitions/sales.transitions.ts","backend/src/shared/utils/biz-code.ts","frontend/src/api/adapters.ts","frontend/src/api/im-binding.ts","frontend/src/api/modules/ad-accounts.ts","frontend/src/api/modules/ad-audiences.ts","frontend/src/api/modules/ad-creatives.ts","frontend/src/api/modules/ad-placement.ts","frontend/src/api/modules/ad-reports.ts","frontend/src/api/modules/agent-group.ts","frontend/src/api/modules/ai-agent.ts","frontend/src/api/modules/alliance-analytics.ts","frontend/src/api/modules/alliance-merchants.ts","frontend/src/api/modules/alliance-products.ts","frontend/src/api/modules/alliance-promotions.ts","frontend/src/api/modules/alliance-referrals.ts","frontend/src/api/modules/analytics.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/assets.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/audit-logs.ts","frontend/src/api/modules/campaign-drafts.ts","frontend/src/api/modules/campaign-library.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/campaign-tools.ts","frontend/src/api/modules/campaign-use-case-templates.ts","frontend/src/api/modules/campaign-wizard.ts","frontend/src/api/modules/campaigns.ts","frontend/src/api/modules/cohort-analysis.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-activities.ts","frontend/src/api/modules/community-analytics.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-groups.ts","frontend/src/api/modules/community-levels.ts","frontend/src/api/modules/community-members.ts","frontend/src/api/modules/community-messages.ts","frontend/src/api/modules/community-points.ts","frontend/src/api/modules/consumer-behavior-analytics.ts","frontend/src/api/modules/content-categories.ts","frontend/src/api/modules/content-copyright.ts","frontend/src/api/modules/content-creation.ts","frontend/src/api/modules/content-distribution.ts","frontend/src/api/modules/content-library.ts","frontend/src/api/modules/content-templates.ts","frontend/src/api/modules/contract-templates.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/cross-domain-funnel.ts","frontend/src/api/modules/customer-analytics.ts","frontend/src/api/modules/customer-health.ts","frontend/src/api/modules/customer-journey.ts","frontend/src/api/modules/customer-ltv.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customer-segmentation.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/dictionaries.ts","frontend/src/api/modules/dimension-transform.ts","frontend/src/api/modules/email-marketing.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/event-logs.ts","frontend/src/api/modules/events.ts","frontend/src/api/modules/expense.ts","frontend/src/api/modules/financial-reports.ts","frontend/src/api/modules/fulfillment.ts","frontend/src/api/modules/geo-fences.ts","frontend/src/api/modules/geo-pois.ts","frontend/src/api/modules/groupbuy-analytics.ts","frontend/src/api/modules/groupbuy-campaigns.ts","frontend/src/api/modules/groupbuy-platforms.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-products.ts","frontend/src/api/modules/groupbuy-settlements.ts","frontend/src/api/modules/hr-benefits.ts","frontend/src/api/modules/hr-payroll.ts","frontend/src/api/modules/im-channels.ts","frontend/src/api/modules/im.ts","frontend/src/api/modules/integration-services.ts","frontend/src/api/modules/intent-analyzer.ts","frontend/src/api/modules/journey-orchestration.ts","frontend/src/api/modules/knowledge-candidates.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-groupbuy-conversion.ts","frontend/src/api/modules/livestream-groupbuy.ts","frontend/src/api/modules/livestream-interactions.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/location-assessments.ts","frontend/src/api/modules/login-logs.ts","frontend/src/api/modules/maintenance.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-calendar.ts","frontend/src/api/modules/marketing-chatbot.ts","frontend/src/api/modules/marketing-content.ts","frontend/src/api/modules/marketing-forms.ts","frontend/src/api/modules/marketing-matrix.ts","frontend/src/api/modules/marketing-north-star.ts","frontend/src/api/modules/marketing-timeslots.ts","frontend/src/api/modules/marketing.ts","frontend/src/api/modules/omnichannel-dashboard.ts","frontend/src/api/modules/omnichannel-data-hub.ts","frontend/src/api/modules/omnichannel-touchpoints.ts","frontend/src/api/modules/operation-logs.ts","frontend/src/api/modules/opportunities.ts","frontend/src/api/modules/predictive-analytics.ts","frontend/src/api/modules/process-designer.ts","frontend/src/api/modules/process.ts","frontend/src/api/modules/products.ts","frontend/src/api/modules/realtime-trigger.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/resource-requests.ts","frontend/src/api/modules/revenue.ts","frontend/src/api/modules/rfm-analysis.ts","frontend/src/api/modules/rma.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/scheduled-jobs.ts","frontend/src/api/modules/search.ts","frontend/src/api/modules/segments.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/api/modules/sms-marketing.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/api/modules/social-auto-replies.ts","frontend/src/api/modules/social-competitors.ts","frontend/src/api/modules/social-hot-topics.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/spare-parts.ts","frontend/src/api/modules/store-performance.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supplier-management.ts","frontend/src/api/modules/swot-analyses.ts","frontend/src/api/modules/system-events.ts","frontend/src/api/modules/ticket-workflows.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/tob-toc-gateway.ts","frontend/src/api/modules/unified-campaign.ts","frontend/src/api/modules/web-tracking.ts","frontend/src/api/modules/workflow-generator.ts","frontend/src/api/response-normalizer.ts","frontend/src/components/business/ActivityTimeline.vue","frontend/src/components/business/EventStreamPanel.vue","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/DataTable.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/mobile/MobileFilter.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/types/ai-agent.ts","frontend/src/utils/echarts.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/abm-marketing/Index.vue","frontend/src/views/acquisition/Index.vue","frontend/src/views/ad-accounts/Form.vue","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-analytics/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-placement/ABTests.vue","frontend/src/views/ad-placement/AudiencePacks.vue","frontend/src/views/ad-placement/BudgetAlerts.vue","frontend/src/views/ad-placement/Creatives.vue","frontend/src/views/ad-placement/Index.vue","frontend/src/views/ad-placement/RoiAnalysis.vue","frontend/src/views/alliance-agreements/Index.vue","frontend/src/views/alliance-campaigns/Index.vue","frontend/src/views/alliance-coupons/Index.vue","frontend/src/views/alliance-packages/Index.vue","frontend/src/views/alliance-partners/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/analytics/roi/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Form.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/attribution/Index.vue","frontend/src/views/auth/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-analytics/Index.vue","frontend/src/views/campaign-library/Index.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaign-tools/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/ToolConfigDialog.vue","frontend/src/views/campaigns/wizard/Step3Tools.vue","frontend/src/views/campaigns/wizard/Step4BasicInfo.vue","frontend/src/views/campaigns/wizard/Step7Review.vue","frontend/src/views/campaigns/wizard/components/ToolConfigForms.vue","frontend/src/views/channel-analytics/Index.vue","frontend/src/views/community-bots/Index.vue","frontend/src/views/community-fission/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/community-tasks/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Detail.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/contracts/Form.vue","frontend/src/views/conversion-paths/Index.vue","frontend/src/views/cost-allocation/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Detail.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Form.vue","frontend/src/views/departments/Detail.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Alerts.vue","frontend/src/views/devices/Form.vue","frontend/src/views/diagnosis/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-templates/Form.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/geo-pois/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-inventory/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-platforms/Index.vue","frontend/src/views/groupbuy-pricing/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-promotions/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/hr/attendance/components/AttendanceTab.vue","frontend/src/views/hr/attendance/components/HolidaysTab.vue","frontend/src/views/hr/attendance/components/LeavesTab.vue","frontend/src/views/hr/attendance/components/OvertimeTab.vue","frontend/src/views/hr/attendance/components/ShiftsTab.vue","frontend/src/views/hr/training/components/CertificatesTab.vue","frontend/src/views/hr/training/components/CompetencyTab.vue","frontend/src/views/hr/training/components/CoursesTab.vue","frontend/src/views/hr/training/components/ExamsTab.vue","frontend/src/views/hr/training/components/PlansTab.vue","frontend/src/views/hr/training/components/SessionsTab.vue","frontend/src/views/inventory/Counts.vue","frontend/src/views/inventory/Index.vue","frontend/src/views/inventory/Snapshots.vue","frontend/src/views/journey-orchestration/Form.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/lead-assignment/Form.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/lead-qualification/Form.vue","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/Index.vue","frontend/src/views/livestream-gifts/Index.vue","frontend/src/views/livestream-groupbuy-conversion/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/maintenance/Index.vue","frontend/src/views/maintenance/TaskDetail.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Detail.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/marketing/budget-alerts/Index.vue","frontend/src/views/mdm/Index.vue","frontend/src/views/member-benefits/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/menus/Index.vue","frontend/src/views/notification-configs/Index.vue","frontend/src/views/notifications/Index.vue","frontend/src/views/omnichannel-dashboard/Index.vue","frontend/src/views/omnichannel-data-hub/Index.vue","frontend/src/views/opportunities/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/orders/Index.vue","frontend/src/views/org-chart/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/predictive-analytics/Form.vue","frontend/src/views/process-designer/Designer.vue","frontend/src/views/product-analytics/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/qr-codes/Index.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/realtime-trigger/Form.vue","frontend/src/views/renewal-tasks/Index.vue","frontend/src/views/rfm-analysis/Detail.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/scheduled-jobs/Index.vue","frontend/src/views/segments/Index.vue","frontend/src/views/service-monitor/Index.vue","frontend/src/views/settings/Index.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-matrix/Index.vue","frontend/src/views/social-posts/Detail.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/spare-parts/components/TransactionHistory.vue","frontend/src/views/stage-knowledge/Index.vue","frontend/src/views/store-configs/Index.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/suppliers/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/system-monitor/Index.vue","frontend/src/views/system/AuditLogs.vue","frontend/src/views/tenant-configs/Index.vue","frontend/src/views/tickets/Form.vue","frontend/src/views/tickets/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-publishing/Index.vue","frontend/src/views/web-tracking/Index.vue"]}],"total_commits":0,"head_commit":{"id":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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-24T10:14:13+08:00","added":["backend/src/shared/constants/events/common.ts","backend/src/shared/constants/events/finance.ts","backend/src/shared/constants/events/hr.ts","backend/src/shared/constants/events/im.ts","backend/src/shared/constants/events/index.ts","backend/src/shared/constants/events/knowledge.ts","backend/src/shared/constants/events/lifecycle.ts","backend/src/shared/constants/events/marketing.ts","backend/src/shared/constants/events/sales.ts","backend/src/shared/constants/events/service.ts","backend/src/shared/constants/events/store.ts","backend/src/shared/constants/events/supply_chain.ts","backend/src/shared/constants/events/system.ts","backend/src/shared/services/list-cache.service.ts","backend/src/shared/utils/cache-utils.ts"],"removed":[],"modified":["backend/src/consumers/attribution.consumer.ts","backend/src/consumers/campaign-effectiveness.consumer.ts","backend/src/consumers/marketing-workflow-executor.consumer.ts","backend/src/consumers/scheduled-jobs.consumer.ts","backend/src/modules/ai-agents/services/knowledge-vector-enhanced.service.ts","backend/src/modules/alliance-settlements/alliance-settlement.service.test.ts","backend/src/modules/campaign-analytics/campaign-analytics.controller.ts","backend/src/modules/contract-templates/contract-template.service.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.service.test.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/leads/lead-ai-scoring.service.ts","backend/src/modules/leads/lead-sla.service.ts","backend/src/modules/leads/lead-smart-assignment.service.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-interactions/livestream-realtime.service.ts","backend/src/modules/marketing-automation/workflow-trigger.service.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.controller.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.routes.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.service.ts","backend/src/modules/notifications/notification.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/payments/payment.service.test.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/segments/segment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-interactions/social-interactions.service.ts","backend/src/modules/store-staff/store-staff.service.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/shared/constants/events.ts","backend/src/shared/services/partition-maintenance.service.ts","backend/src/shared/state-machines/machines/contract.machine.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/types.ts","backend/src/shared/state-machines/utils/transitions/sales.transitions.ts","backend/src/shared/utils/biz-code.ts","frontend/src/api/adapters.ts","frontend/src/api/im-binding.ts","frontend/src/api/modules/ad-accounts.ts","frontend/src/api/modules/ad-audiences.ts","frontend/src/api/modules/ad-creatives.ts","frontend/src/api/modules/ad-placement.ts","frontend/src/api/modules/ad-reports.ts","frontend/src/api/modules/agent-group.ts","frontend/src/api/modules/ai-agent.ts","frontend/src/api/modules/alliance-analytics.ts","frontend/src/api/modules/alliance-merchants.ts","frontend/src/api/modules/alliance-products.ts","frontend/src/api/modules/alliance-promotions.ts","frontend/src/api/modules/alliance-referrals.ts","frontend/src/api/modules/analytics.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/assets.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/audit-logs.ts","frontend/src/api/modules/campaign-drafts.ts","frontend/src/api/modules/campaign-library.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/campaign-tools.ts","frontend/src/api/modules/campaign-use-case-templates.ts","frontend/src/api/modules/campaign-wizard.ts","frontend/src/api/modules/campaigns.ts","frontend/src/api/modules/cohort-analysis.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-activities.ts","frontend/src/api/modules/community-analytics.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-groups.ts","frontend/src/api/modules/community-levels.ts","frontend/src/api/modules/community-members.ts","frontend/src/api/modules/community-messages.ts","frontend/src/api/modules/community-points.ts","frontend/src/api/modules/consumer-behavior-analytics.ts","frontend/src/api/modules/content-categories.ts","frontend/src/api/modules/content-copyright.ts","frontend/src/api/modules/content-creation.ts","frontend/src/api/modules/content-distribution.ts","frontend/src/api/modules/content-library.ts","frontend/src/api/modules/content-templates.ts","frontend/src/api/modules/contract-templates.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/cross-domain-funnel.ts","frontend/src/api/modules/customer-analytics.ts","frontend/src/api/modules/customer-health.ts","frontend/src/api/modules/customer-journey.ts","frontend/src/api/modules/customer-ltv.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customer-segmentation.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/dictionaries.ts","frontend/src/api/modules/dimension-transform.ts","frontend/src/api/modules/email-marketing.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/event-logs.ts","frontend/src/api/modules/events.ts","frontend/src/api/modules/expense.ts","frontend/src/api/modules/financial-reports.ts","frontend/src/api/modules/fulfillment.ts","frontend/src/api/modules/geo-fences.ts","frontend/src/api/modules/geo-pois.ts","frontend/src/api/modules/groupbuy-analytics.ts","frontend/src/api/modules/groupbuy-campaigns.ts","frontend/src/api/modules/groupbuy-platforms.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-products.ts","frontend/src/api/modules/groupbuy-settlements.ts","frontend/src/api/modules/hr-benefits.ts","frontend/src/api/modules/hr-payroll.ts","frontend/src/api/modules/im-channels.ts","frontend/src/api/modules/im.ts","frontend/src/api/modules/integration-services.ts","frontend/src/api/modules/intent-analyzer.ts","frontend/src/api/modules/journey-orchestration.ts","frontend/src/api/modules/knowledge-candidates.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-groupbuy-conversion.ts","frontend/src/api/modules/livestream-groupbuy.ts","frontend/src/api/modules/livestream-interactions.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/location-assessments.ts","frontend/src/api/modules/login-logs.ts","frontend/src/api/modules/maintenance.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-calendar.ts","frontend/src/api/modules/marketing-chatbot.ts","frontend/src/api/modules/marketing-content.ts","frontend/src/api/modules/marketing-forms.ts","frontend/src/api/modules/marketing-matrix.ts","frontend/src/api/modules/marketing-north-star.ts","frontend/src/api/modules/marketing-timeslots.ts","frontend/src/api/modules/marketing.ts","frontend/src/api/modules/omnichannel-dashboard.ts","frontend/src/api/modules/omnichannel-data-hub.ts","frontend/src/api/modules/omnichannel-touchpoints.ts","frontend/src/api/modules/operation-logs.ts","frontend/src/api/modules/opportunities.ts","frontend/src/api/modules/predictive-analytics.ts","frontend/src/api/modules/process-designer.ts","frontend/src/api/modules/process.ts","frontend/src/api/modules/products.ts","frontend/src/api/modules/realtime-trigger.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/resource-requests.ts","frontend/src/api/modules/revenue.ts","frontend/src/api/modules/rfm-analysis.ts","frontend/src/api/modules/rma.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/scheduled-jobs.ts","frontend/src/api/modules/search.ts","frontend/src/api/modules/segments.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/api/modules/sms-marketing.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/api/modules/social-auto-replies.ts","frontend/src/api/modules/social-competitors.ts","frontend/src/api/modules/social-hot-topics.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/spare-parts.ts","frontend/src/api/modules/store-performance.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supplier-management.ts","frontend/src/api/modules/swot-analyses.ts","frontend/src/api/modules/system-events.ts","frontend/src/api/modules/ticket-workflows.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/tob-toc-gateway.ts","frontend/src/api/modules/unified-campaign.ts","frontend/src/api/modules/web-tracking.ts","frontend/src/api/modules/workflow-generator.ts","frontend/src/api/response-normalizer.ts","frontend/src/components/business/ActivityTimeline.vue","frontend/src/components/business/EventStreamPanel.vue","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/DataTable.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/mobile/MobileFilter.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/types/ai-agent.ts","frontend/src/utils/echarts.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/abm-marketing/Index.vue","frontend/src/views/acquisition/Index.vue","frontend/src/views/ad-accounts/Form.vue","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-analytics/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-placement/ABTests.vue","frontend/src/views/ad-placement/AudiencePacks.vue","frontend/src/views/ad-placement/BudgetAlerts.vue","frontend/src/views/ad-placement/Creatives.vue","frontend/src/views/ad-placement/Index.vue","frontend/src/views/ad-placement/RoiAnalysis.vue","frontend/src/views/alliance-agreements/Index.vue","frontend/src/views/alliance-campaigns/Index.vue","frontend/src/views/alliance-coupons/Index.vue","frontend/src/views/alliance-packages/Index.vue","frontend/src/views/alliance-partners/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/analytics/roi/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Form.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/attribution/Index.vue","frontend/src/views/auth/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-analytics/Index.vue","frontend/src/views/campaign-library/Index.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaign-tools/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/ToolConfigDialog.vue","frontend/src/views/campaigns/wizard/Step3Tools.vue","frontend/src/views/campaigns/wizard/Step4BasicInfo.vue","frontend/src/views/campaigns/wizard/Step7Review.vue","frontend/src/views/campaigns/wizard/components/ToolConfigForms.vue","frontend/src/views/channel-analytics/Index.vue","frontend/src/views/community-bots/Index.vue","frontend/src/views/community-fission/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/community-tasks/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Detail.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/contracts/Form.vue","frontend/src/views/conversion-paths/Index.vue","frontend/src/views/cost-allocation/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Detail.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Form.vue","frontend/src/views/departments/Detail.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Alerts.vue","frontend/src/views/devices/Form.vue","frontend/src/views/diagnosis/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-templates/Form.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/geo-pois/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-inventory/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-platforms/Index.vue","frontend/src/views/groupbuy-pricing/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-promotions/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/hr/attendance/components/AttendanceTab.vue","frontend/src/views/hr/attendance/components/HolidaysTab.vue","frontend/src/views/hr/attendance/components/LeavesTab.vue","frontend/src/views/hr/attendance/components/OvertimeTab.vue","frontend/src/views/hr/attendance/components/ShiftsTab.vue","frontend/src/views/hr/training/components/CertificatesTab.vue","frontend/src/views/hr/training/components/CompetencyTab.vue","frontend/src/views/hr/training/components/CoursesTab.vue","frontend/src/views/hr/training/components/ExamsTab.vue","frontend/src/views/hr/training/components/PlansTab.vue","frontend/src/views/hr/training/components/SessionsTab.vue","frontend/src/views/inventory/Counts.vue","frontend/src/views/inventory/Index.vue","frontend/src/views/inventory/Snapshots.vue","frontend/src/views/journey-orchestration/Form.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/lead-assignment/Form.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/lead-qualification/Form.vue","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/Index.vue","frontend/src/views/livestream-gifts/Index.vue","frontend/src/views/livestream-groupbuy-conversion/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/maintenance/Index.vue","frontend/src/views/maintenance/TaskDetail.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Detail.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/marketing/budget-alerts/Index.vue","frontend/src/views/mdm/Index.vue","frontend/src/views/member-benefits/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/menus/Index.vue","frontend/src/views/notification-configs/Index.vue","frontend/src/views/notifications/Index.vue","frontend/src/views/omnichannel-dashboard/Index.vue","frontend/src/views/omnichannel-data-hub/Index.vue","frontend/src/views/opportunities/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/orders/Index.vue","frontend/src/views/org-chart/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/predictive-analytics/Form.vue","frontend/src/views/process-designer/Designer.vue","frontend/src/views/product-analytics/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/qr-codes/Index.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/realtime-trigger/Form.vue","frontend/src/views/renewal-tasks/Index.vue","frontend/src/views/rfm-analysis/Detail.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/scheduled-jobs/Index.vue","frontend/src/views/segments/Index.vue","frontend/src/views/service-monitor/Index.vue","frontend/src/views/settings/Index.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-matrix/Index.vue","frontend/src/views/social-posts/Detail.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/spare-parts/components/TransactionHistory.vue","frontend/src/views/stage-knowledge/Index.vue","frontend/src/views/store-configs/Index.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/suppliers/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/system-monitor/Index.vue","frontend/src/views/system/AuditLogs.vue","frontend/src/views/tenant-configs/Index.vue","frontend/src/views/tickets/Form.vue","frontend/src/views/tickets/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-publishing/Index.vue","frontend/src/views/web-tracking/Index.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/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":1956552,"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":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-03-24T09:45:16+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
|
1774319441
|
1774319442
|
0
|
1774319440
|
1774319442
|
|
|
0
|
Edit
Delete
|
|
7660
|
feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理...
|
6
|
5
|
health-check.yml
|
7585
|
-2
|
130
|
refs/heads/main
|
dbf34b08bbb60650d15b0c55262dbfe8d0a3a655
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"8c39619c9cdb0d888d10942bf50533c8238021df","after":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/8c39619c9cdb0d888d10942bf50533c8238021df...dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","commits":[{"id":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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-24T10:14:13+08:00","added":["backend/src/shared/constants/events/common.ts","backend/src/shared/constants/events/finance.ts","backend/src/shared/constants/events/hr.ts","backend/src/shared/constants/events/im.ts","backend/src/shared/constants/events/index.ts","backend/src/shared/constants/events/knowledge.ts","backend/src/shared/constants/events/lifecycle.ts","backend/src/shared/constants/events/marketing.ts","backend/src/shared/constants/events/sales.ts","backend/src/shared/constants/events/service.ts","backend/src/shared/constants/events/store.ts","backend/src/shared/constants/events/supply_chain.ts","backend/src/shared/constants/events/system.ts","backend/src/shared/services/list-cache.service.ts","backend/src/shared/utils/cache-utils.ts"],"removed":[],"modified":["backend/src/consumers/attribution.consumer.ts","backend/src/consumers/campaign-effectiveness.consumer.ts","backend/src/consumers/marketing-workflow-executor.consumer.ts","backend/src/consumers/scheduled-jobs.consumer.ts","backend/src/modules/ai-agents/services/knowledge-vector-enhanced.service.ts","backend/src/modules/alliance-settlements/alliance-settlement.service.test.ts","backend/src/modules/campaign-analytics/campaign-analytics.controller.ts","backend/src/modules/contract-templates/contract-template.service.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.service.test.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/leads/lead-ai-scoring.service.ts","backend/src/modules/leads/lead-sla.service.ts","backend/src/modules/leads/lead-smart-assignment.service.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-interactions/livestream-realtime.service.ts","backend/src/modules/marketing-automation/workflow-trigger.service.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.controller.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.routes.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.service.ts","backend/src/modules/notifications/notification.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/payments/payment.service.test.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/segments/segment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-interactions/social-interactions.service.ts","backend/src/modules/store-staff/store-staff.service.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/shared/constants/events.ts","backend/src/shared/services/partition-maintenance.service.ts","backend/src/shared/state-machines/machines/contract.machine.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/types.ts","backend/src/shared/state-machines/utils/transitions/sales.transitions.ts","backend/src/shared/utils/biz-code.ts","frontend/src/api/adapters.ts","frontend/src/api/im-binding.ts","frontend/src/api/modules/ad-accounts.ts","frontend/src/api/modules/ad-audiences.ts","frontend/src/api/modules/ad-creatives.ts","frontend/src/api/modules/ad-placement.ts","frontend/src/api/modules/ad-reports.ts","frontend/src/api/modules/agent-group.ts","frontend/src/api/modules/ai-agent.ts","frontend/src/api/modules/alliance-analytics.ts","frontend/src/api/modules/alliance-merchants.ts","frontend/src/api/modules/alliance-products.ts","frontend/src/api/modules/alliance-promotions.ts","frontend/src/api/modules/alliance-referrals.ts","frontend/src/api/modules/analytics.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/assets.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/audit-logs.ts","frontend/src/api/modules/campaign-drafts.ts","frontend/src/api/modules/campaign-library.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/campaign-tools.ts","frontend/src/api/modules/campaign-use-case-templates.ts","frontend/src/api/modules/campaign-wizard.ts","frontend/src/api/modules/campaigns.ts","frontend/src/api/modules/cohort-analysis.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-activities.ts","frontend/src/api/modules/community-analytics.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-groups.ts","frontend/src/api/modules/community-levels.ts","frontend/src/api/modules/community-members.ts","frontend/src/api/modules/community-messages.ts","frontend/src/api/modules/community-points.ts","frontend/src/api/modules/consumer-behavior-analytics.ts","frontend/src/api/modules/content-categories.ts","frontend/src/api/modules/content-copyright.ts","frontend/src/api/modules/content-creation.ts","frontend/src/api/modules/content-distribution.ts","frontend/src/api/modules/content-library.ts","frontend/src/api/modules/content-templates.ts","frontend/src/api/modules/contract-templates.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/cross-domain-funnel.ts","frontend/src/api/modules/customer-analytics.ts","frontend/src/api/modules/customer-health.ts","frontend/src/api/modules/customer-journey.ts","frontend/src/api/modules/customer-ltv.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customer-segmentation.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/dictionaries.ts","frontend/src/api/modules/dimension-transform.ts","frontend/src/api/modules/email-marketing.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/event-logs.ts","frontend/src/api/modules/events.ts","frontend/src/api/modules/expense.ts","frontend/src/api/modules/financial-reports.ts","frontend/src/api/modules/fulfillment.ts","frontend/src/api/modules/geo-fences.ts","frontend/src/api/modules/geo-pois.ts","frontend/src/api/modules/groupbuy-analytics.ts","frontend/src/api/modules/groupbuy-campaigns.ts","frontend/src/api/modules/groupbuy-platforms.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-products.ts","frontend/src/api/modules/groupbuy-settlements.ts","frontend/src/api/modules/hr-benefits.ts","frontend/src/api/modules/hr-payroll.ts","frontend/src/api/modules/im-channels.ts","frontend/src/api/modules/im.ts","frontend/src/api/modules/integration-services.ts","frontend/src/api/modules/intent-analyzer.ts","frontend/src/api/modules/journey-orchestration.ts","frontend/src/api/modules/knowledge-candidates.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-groupbuy-conversion.ts","frontend/src/api/modules/livestream-groupbuy.ts","frontend/src/api/modules/livestream-interactions.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/location-assessments.ts","frontend/src/api/modules/login-logs.ts","frontend/src/api/modules/maintenance.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-calendar.ts","frontend/src/api/modules/marketing-chatbot.ts","frontend/src/api/modules/marketing-content.ts","frontend/src/api/modules/marketing-forms.ts","frontend/src/api/modules/marketing-matrix.ts","frontend/src/api/modules/marketing-north-star.ts","frontend/src/api/modules/marketing-timeslots.ts","frontend/src/api/modules/marketing.ts","frontend/src/api/modules/omnichannel-dashboard.ts","frontend/src/api/modules/omnichannel-data-hub.ts","frontend/src/api/modules/omnichannel-touchpoints.ts","frontend/src/api/modules/operation-logs.ts","frontend/src/api/modules/opportunities.ts","frontend/src/api/modules/predictive-analytics.ts","frontend/src/api/modules/process-designer.ts","frontend/src/api/modules/process.ts","frontend/src/api/modules/products.ts","frontend/src/api/modules/realtime-trigger.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/resource-requests.ts","frontend/src/api/modules/revenue.ts","frontend/src/api/modules/rfm-analysis.ts","frontend/src/api/modules/rma.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/scheduled-jobs.ts","frontend/src/api/modules/search.ts","frontend/src/api/modules/segments.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/api/modules/sms-marketing.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/api/modules/social-auto-replies.ts","frontend/src/api/modules/social-competitors.ts","frontend/src/api/modules/social-hot-topics.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/spare-parts.ts","frontend/src/api/modules/store-performance.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supplier-management.ts","frontend/src/api/modules/swot-analyses.ts","frontend/src/api/modules/system-events.ts","frontend/src/api/modules/ticket-workflows.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/tob-toc-gateway.ts","frontend/src/api/modules/unified-campaign.ts","frontend/src/api/modules/web-tracking.ts","frontend/src/api/modules/workflow-generator.ts","frontend/src/api/response-normalizer.ts","frontend/src/components/business/ActivityTimeline.vue","frontend/src/components/business/EventStreamPanel.vue","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/DataTable.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/mobile/MobileFilter.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/types/ai-agent.ts","frontend/src/utils/echarts.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/abm-marketing/Index.vue","frontend/src/views/acquisition/Index.vue","frontend/src/views/ad-accounts/Form.vue","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-analytics/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-placement/ABTests.vue","frontend/src/views/ad-placement/AudiencePacks.vue","frontend/src/views/ad-placement/BudgetAlerts.vue","frontend/src/views/ad-placement/Creatives.vue","frontend/src/views/ad-placement/Index.vue","frontend/src/views/ad-placement/RoiAnalysis.vue","frontend/src/views/alliance-agreements/Index.vue","frontend/src/views/alliance-campaigns/Index.vue","frontend/src/views/alliance-coupons/Index.vue","frontend/src/views/alliance-packages/Index.vue","frontend/src/views/alliance-partners/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/analytics/roi/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Form.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/attribution/Index.vue","frontend/src/views/auth/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-analytics/Index.vue","frontend/src/views/campaign-library/Index.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaign-tools/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/ToolConfigDialog.vue","frontend/src/views/campaigns/wizard/Step3Tools.vue","frontend/src/views/campaigns/wizard/Step4BasicInfo.vue","frontend/src/views/campaigns/wizard/Step7Review.vue","frontend/src/views/campaigns/wizard/components/ToolConfigForms.vue","frontend/src/views/channel-analytics/Index.vue","frontend/src/views/community-bots/Index.vue","frontend/src/views/community-fission/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/community-tasks/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Detail.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/contracts/Form.vue","frontend/src/views/conversion-paths/Index.vue","frontend/src/views/cost-allocation/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Detail.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Form.vue","frontend/src/views/departments/Detail.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Alerts.vue","frontend/src/views/devices/Form.vue","frontend/src/views/diagnosis/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-templates/Form.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/geo-pois/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-inventory/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-platforms/Index.vue","frontend/src/views/groupbuy-pricing/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-promotions/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/hr/attendance/components/AttendanceTab.vue","frontend/src/views/hr/attendance/components/HolidaysTab.vue","frontend/src/views/hr/attendance/components/LeavesTab.vue","frontend/src/views/hr/attendance/components/OvertimeTab.vue","frontend/src/views/hr/attendance/components/ShiftsTab.vue","frontend/src/views/hr/training/components/CertificatesTab.vue","frontend/src/views/hr/training/components/CompetencyTab.vue","frontend/src/views/hr/training/components/CoursesTab.vue","frontend/src/views/hr/training/components/ExamsTab.vue","frontend/src/views/hr/training/components/PlansTab.vue","frontend/src/views/hr/training/components/SessionsTab.vue","frontend/src/views/inventory/Counts.vue","frontend/src/views/inventory/Index.vue","frontend/src/views/inventory/Snapshots.vue","frontend/src/views/journey-orchestration/Form.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/lead-assignment/Form.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/lead-qualification/Form.vue","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/Index.vue","frontend/src/views/livestream-gifts/Index.vue","frontend/src/views/livestream-groupbuy-conversion/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/maintenance/Index.vue","frontend/src/views/maintenance/TaskDetail.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Detail.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/marketing/budget-alerts/Index.vue","frontend/src/views/mdm/Index.vue","frontend/src/views/member-benefits/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/menus/Index.vue","frontend/src/views/notification-configs/Index.vue","frontend/src/views/notifications/Index.vue","frontend/src/views/omnichannel-dashboard/Index.vue","frontend/src/views/omnichannel-data-hub/Index.vue","frontend/src/views/opportunities/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/orders/Index.vue","frontend/src/views/org-chart/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/predictive-analytics/Form.vue","frontend/src/views/process-designer/Designer.vue","frontend/src/views/product-analytics/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/qr-codes/Index.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/realtime-trigger/Form.vue","frontend/src/views/renewal-tasks/Index.vue","frontend/src/views/rfm-analysis/Detail.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/scheduled-jobs/Index.vue","frontend/src/views/segments/Index.vue","frontend/src/views/service-monitor/Index.vue","frontend/src/views/settings/Index.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-matrix/Index.vue","frontend/src/views/social-posts/Detail.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/spare-parts/components/TransactionHistory.vue","frontend/src/views/stage-knowledge/Index.vue","frontend/src/views/store-configs/Index.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/suppliers/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/system-monitor/Index.vue","frontend/src/views/system/AuditLogs.vue","frontend/src/views/tenant-configs/Index.vue","frontend/src/views/tickets/Form.vue","frontend/src/views/tickets/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-publishing/Index.vue","frontend/src/views/web-tracking/Index.vue"]}],"total_commits":0,"head_commit":{"id":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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-24T10:14:13+08:00","added":["backend/src/shared/constants/events/common.ts","backend/src/shared/constants/events/finance.ts","backend/src/shared/constants/events/hr.ts","backend/src/shared/constants/events/im.ts","backend/src/shared/constants/events/index.ts","backend/src/shared/constants/events/knowledge.ts","backend/src/shared/constants/events/lifecycle.ts","backend/src/shared/constants/events/marketing.ts","backend/src/shared/constants/events/sales.ts","backend/src/shared/constants/events/service.ts","backend/src/shared/constants/events/store.ts","backend/src/shared/constants/events/supply_chain.ts","backend/src/shared/constants/events/system.ts","backend/src/shared/services/list-cache.service.ts","backend/src/shared/utils/cache-utils.ts"],"removed":[],"modified":["backend/src/consumers/attribution.consumer.ts","backend/src/consumers/campaign-effectiveness.consumer.ts","backend/src/consumers/marketing-workflow-executor.consumer.ts","backend/src/consumers/scheduled-jobs.consumer.ts","backend/src/modules/ai-agents/services/knowledge-vector-enhanced.service.ts","backend/src/modules/alliance-settlements/alliance-settlement.service.test.ts","backend/src/modules/campaign-analytics/campaign-analytics.controller.ts","backend/src/modules/contract-templates/contract-template.service.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.service.test.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/leads/lead-ai-scoring.service.ts","backend/src/modules/leads/lead-sla.service.ts","backend/src/modules/leads/lead-smart-assignment.service.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-interactions/livestream-realtime.service.ts","backend/src/modules/marketing-automation/workflow-trigger.service.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.controller.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.routes.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.service.ts","backend/src/modules/notifications/notification.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/payments/payment.service.test.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/segments/segment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-interactions/social-interactions.service.ts","backend/src/modules/store-staff/store-staff.service.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/shared/constants/events.ts","backend/src/shared/services/partition-maintenance.service.ts","backend/src/shared/state-machines/machines/contract.machine.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/types.ts","backend/src/shared/state-machines/utils/transitions/sales.transitions.ts","backend/src/shared/utils/biz-code.ts","frontend/src/api/adapters.ts","frontend/src/api/im-binding.ts","frontend/src/api/modules/ad-accounts.ts","frontend/src/api/modules/ad-audiences.ts","frontend/src/api/modules/ad-creatives.ts","frontend/src/api/modules/ad-placement.ts","frontend/src/api/modules/ad-reports.ts","frontend/src/api/modules/agent-group.ts","frontend/src/api/modules/ai-agent.ts","frontend/src/api/modules/alliance-analytics.ts","frontend/src/api/modules/alliance-merchants.ts","frontend/src/api/modules/alliance-products.ts","frontend/src/api/modules/alliance-promotions.ts","frontend/src/api/modules/alliance-referrals.ts","frontend/src/api/modules/analytics.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/assets.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/audit-logs.ts","frontend/src/api/modules/campaign-drafts.ts","frontend/src/api/modules/campaign-library.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/campaign-tools.ts","frontend/src/api/modules/campaign-use-case-templates.ts","frontend/src/api/modules/campaign-wizard.ts","frontend/src/api/modules/campaigns.ts","frontend/src/api/modules/cohort-analysis.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-activities.ts","frontend/src/api/modules/community-analytics.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-groups.ts","frontend/src/api/modules/community-levels.ts","frontend/src/api/modules/community-members.ts","frontend/src/api/modules/community-messages.ts","frontend/src/api/modules/community-points.ts","frontend/src/api/modules/consumer-behavior-analytics.ts","frontend/src/api/modules/content-categories.ts","frontend/src/api/modules/content-copyright.ts","frontend/src/api/modules/content-creation.ts","frontend/src/api/modules/content-distribution.ts","frontend/src/api/modules/content-library.ts","frontend/src/api/modules/content-templates.ts","frontend/src/api/modules/contract-templates.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/cross-domain-funnel.ts","frontend/src/api/modules/customer-analytics.ts","frontend/src/api/modules/customer-health.ts","frontend/src/api/modules/customer-journey.ts","frontend/src/api/modules/customer-ltv.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customer-segmentation.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/dictionaries.ts","frontend/src/api/modules/dimension-transform.ts","frontend/src/api/modules/email-marketing.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/event-logs.ts","frontend/src/api/modules/events.ts","frontend/src/api/modules/expense.ts","frontend/src/api/modules/financial-reports.ts","frontend/src/api/modules/fulfillment.ts","frontend/src/api/modules/geo-fences.ts","frontend/src/api/modules/geo-pois.ts","frontend/src/api/modules/groupbuy-analytics.ts","frontend/src/api/modules/groupbuy-campaigns.ts","frontend/src/api/modules/groupbuy-platforms.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-products.ts","frontend/src/api/modules/groupbuy-settlements.ts","frontend/src/api/modules/hr-benefits.ts","frontend/src/api/modules/hr-payroll.ts","frontend/src/api/modules/im-channels.ts","frontend/src/api/modules/im.ts","frontend/src/api/modules/integration-services.ts","frontend/src/api/modules/intent-analyzer.ts","frontend/src/api/modules/journey-orchestration.ts","frontend/src/api/modules/knowledge-candidates.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-groupbuy-conversion.ts","frontend/src/api/modules/livestream-groupbuy.ts","frontend/src/api/modules/livestream-interactions.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/location-assessments.ts","frontend/src/api/modules/login-logs.ts","frontend/src/api/modules/maintenance.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-calendar.ts","frontend/src/api/modules/marketing-chatbot.ts","frontend/src/api/modules/marketing-content.ts","frontend/src/api/modules/marketing-forms.ts","frontend/src/api/modules/marketing-matrix.ts","frontend/src/api/modules/marketing-north-star.ts","frontend/src/api/modules/marketing-timeslots.ts","frontend/src/api/modules/marketing.ts","frontend/src/api/modules/omnichannel-dashboard.ts","frontend/src/api/modules/omnichannel-data-hub.ts","frontend/src/api/modules/omnichannel-touchpoints.ts","frontend/src/api/modules/operation-logs.ts","frontend/src/api/modules/opportunities.ts","frontend/src/api/modules/predictive-analytics.ts","frontend/src/api/modules/process-designer.ts","frontend/src/api/modules/process.ts","frontend/src/api/modules/products.ts","frontend/src/api/modules/realtime-trigger.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/resource-requests.ts","frontend/src/api/modules/revenue.ts","frontend/src/api/modules/rfm-analysis.ts","frontend/src/api/modules/rma.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/scheduled-jobs.ts","frontend/src/api/modules/search.ts","frontend/src/api/modules/segments.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/api/modules/sms-marketing.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/api/modules/social-auto-replies.ts","frontend/src/api/modules/social-competitors.ts","frontend/src/api/modules/social-hot-topics.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/spare-parts.ts","frontend/src/api/modules/store-performance.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supplier-management.ts","frontend/src/api/modules/swot-analyses.ts","frontend/src/api/modules/system-events.ts","frontend/src/api/modules/ticket-workflows.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/tob-toc-gateway.ts","frontend/src/api/modules/unified-campaign.ts","frontend/src/api/modules/web-tracking.ts","frontend/src/api/modules/workflow-generator.ts","frontend/src/api/response-normalizer.ts","frontend/src/components/business/ActivityTimeline.vue","frontend/src/components/business/EventStreamPanel.vue","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/DataTable.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/mobile/MobileFilter.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/types/ai-agent.ts","frontend/src/utils/echarts.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/abm-marketing/Index.vue","frontend/src/views/acquisition/Index.vue","frontend/src/views/ad-accounts/Form.vue","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-analytics/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-placement/ABTests.vue","frontend/src/views/ad-placement/AudiencePacks.vue","frontend/src/views/ad-placement/BudgetAlerts.vue","frontend/src/views/ad-placement/Creatives.vue","frontend/src/views/ad-placement/Index.vue","frontend/src/views/ad-placement/RoiAnalysis.vue","frontend/src/views/alliance-agreements/Index.vue","frontend/src/views/alliance-campaigns/Index.vue","frontend/src/views/alliance-coupons/Index.vue","frontend/src/views/alliance-packages/Index.vue","frontend/src/views/alliance-partners/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/analytics/roi/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Form.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/attribution/Index.vue","frontend/src/views/auth/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-analytics/Index.vue","frontend/src/views/campaign-library/Index.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaign-tools/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/ToolConfigDialog.vue","frontend/src/views/campaigns/wizard/Step3Tools.vue","frontend/src/views/campaigns/wizard/Step4BasicInfo.vue","frontend/src/views/campaigns/wizard/Step7Review.vue","frontend/src/views/campaigns/wizard/components/ToolConfigForms.vue","frontend/src/views/channel-analytics/Index.vue","frontend/src/views/community-bots/Index.vue","frontend/src/views/community-fission/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/community-tasks/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Detail.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/contracts/Form.vue","frontend/src/views/conversion-paths/Index.vue","frontend/src/views/cost-allocation/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Detail.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Form.vue","frontend/src/views/departments/Detail.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Alerts.vue","frontend/src/views/devices/Form.vue","frontend/src/views/diagnosis/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-templates/Form.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/geo-pois/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-inventory/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-platforms/Index.vue","frontend/src/views/groupbuy-pricing/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-promotions/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/hr/attendance/components/AttendanceTab.vue","frontend/src/views/hr/attendance/components/HolidaysTab.vue","frontend/src/views/hr/attendance/components/LeavesTab.vue","frontend/src/views/hr/attendance/components/OvertimeTab.vue","frontend/src/views/hr/attendance/components/ShiftsTab.vue","frontend/src/views/hr/training/components/CertificatesTab.vue","frontend/src/views/hr/training/components/CompetencyTab.vue","frontend/src/views/hr/training/components/CoursesTab.vue","frontend/src/views/hr/training/components/ExamsTab.vue","frontend/src/views/hr/training/components/PlansTab.vue","frontend/src/views/hr/training/components/SessionsTab.vue","frontend/src/views/inventory/Counts.vue","frontend/src/views/inventory/Index.vue","frontend/src/views/inventory/Snapshots.vue","frontend/src/views/journey-orchestration/Form.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/lead-assignment/Form.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/lead-qualification/Form.vue","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/Index.vue","frontend/src/views/livestream-gifts/Index.vue","frontend/src/views/livestream-groupbuy-conversion/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/maintenance/Index.vue","frontend/src/views/maintenance/TaskDetail.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Detail.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/marketing/budget-alerts/Index.vue","frontend/src/views/mdm/Index.vue","frontend/src/views/member-benefits/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/menus/Index.vue","frontend/src/views/notification-configs/Index.vue","frontend/src/views/notifications/Index.vue","frontend/src/views/omnichannel-dashboard/Index.vue","frontend/src/views/omnichannel-data-hub/Index.vue","frontend/src/views/opportunities/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/orders/Index.vue","frontend/src/views/org-chart/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/predictive-analytics/Form.vue","frontend/src/views/process-designer/Designer.vue","frontend/src/views/product-analytics/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/qr-codes/Index.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/realtime-trigger/Form.vue","frontend/src/views/renewal-tasks/Index.vue","frontend/src/views/rfm-analysis/Detail.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/scheduled-jobs/Index.vue","frontend/src/views/segments/Index.vue","frontend/src/views/service-monitor/Index.vue","frontend/src/views/settings/Index.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-matrix/Index.vue","frontend/src/views/social-posts/Detail.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/spare-parts/components/TransactionHistory.vue","frontend/src/views/stage-knowledge/Index.vue","frontend/src/views/store-configs/Index.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/suppliers/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/system-monitor/Index.vue","frontend/src/views/system/AuditLogs.vue","frontend/src/views/tenant-configs/Index.vue","frontend/src/views/tickets/Form.vue","frontend/src/views/tickets/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-publishing/Index.vue","frontend/src/views/web-tracking/Index.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/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":1956552,"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":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-03-24T09:45:16+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
|
1774319741
|
1774319742
|
0
|
1774319740
|
1774319742
|
|
|
0
|
Edit
Delete
|
|
7661
|
feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理...
|
6
|
5
|
health-check.yml
|
7586
|
-2
|
130
|
refs/heads/main
|
dbf34b08bbb60650d15b0c55262dbfe8d0a3a655
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"8c39619c9cdb0d888d10942bf50533c8238021df","after":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/8c39619c9cdb0d888d10942bf50533c8238021df...dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","commits":[{"id":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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-24T10:14:13+08:00","added":["backend/src/shared/constants/events/common.ts","backend/src/shared/constants/events/finance.ts","backend/src/shared/constants/events/hr.ts","backend/src/shared/constants/events/im.ts","backend/src/shared/constants/events/index.ts","backend/src/shared/constants/events/knowledge.ts","backend/src/shared/constants/events/lifecycle.ts","backend/src/shared/constants/events/marketing.ts","backend/src/shared/constants/events/sales.ts","backend/src/shared/constants/events/service.ts","backend/src/shared/constants/events/store.ts","backend/src/shared/constants/events/supply_chain.ts","backend/src/shared/constants/events/system.ts","backend/src/shared/services/list-cache.service.ts","backend/src/shared/utils/cache-utils.ts"],"removed":[],"modified":["backend/src/consumers/attribution.consumer.ts","backend/src/consumers/campaign-effectiveness.consumer.ts","backend/src/consumers/marketing-workflow-executor.consumer.ts","backend/src/consumers/scheduled-jobs.consumer.ts","backend/src/modules/ai-agents/services/knowledge-vector-enhanced.service.ts","backend/src/modules/alliance-settlements/alliance-settlement.service.test.ts","backend/src/modules/campaign-analytics/campaign-analytics.controller.ts","backend/src/modules/contract-templates/contract-template.service.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.service.test.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/leads/lead-ai-scoring.service.ts","backend/src/modules/leads/lead-sla.service.ts","backend/src/modules/leads/lead-smart-assignment.service.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-interactions/livestream-realtime.service.ts","backend/src/modules/marketing-automation/workflow-trigger.service.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.controller.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.routes.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.service.ts","backend/src/modules/notifications/notification.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/payments/payment.service.test.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/segments/segment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-interactions/social-interactions.service.ts","backend/src/modules/store-staff/store-staff.service.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/shared/constants/events.ts","backend/src/shared/services/partition-maintenance.service.ts","backend/src/shared/state-machines/machines/contract.machine.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/types.ts","backend/src/shared/state-machines/utils/transitions/sales.transitions.ts","backend/src/shared/utils/biz-code.ts","frontend/src/api/adapters.ts","frontend/src/api/im-binding.ts","frontend/src/api/modules/ad-accounts.ts","frontend/src/api/modules/ad-audiences.ts","frontend/src/api/modules/ad-creatives.ts","frontend/src/api/modules/ad-placement.ts","frontend/src/api/modules/ad-reports.ts","frontend/src/api/modules/agent-group.ts","frontend/src/api/modules/ai-agent.ts","frontend/src/api/modules/alliance-analytics.ts","frontend/src/api/modules/alliance-merchants.ts","frontend/src/api/modules/alliance-products.ts","frontend/src/api/modules/alliance-promotions.ts","frontend/src/api/modules/alliance-referrals.ts","frontend/src/api/modules/analytics.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/assets.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/audit-logs.ts","frontend/src/api/modules/campaign-drafts.ts","frontend/src/api/modules/campaign-library.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/campaign-tools.ts","frontend/src/api/modules/campaign-use-case-templates.ts","frontend/src/api/modules/campaign-wizard.ts","frontend/src/api/modules/campaigns.ts","frontend/src/api/modules/cohort-analysis.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-activities.ts","frontend/src/api/modules/community-analytics.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-groups.ts","frontend/src/api/modules/community-levels.ts","frontend/src/api/modules/community-members.ts","frontend/src/api/modules/community-messages.ts","frontend/src/api/modules/community-points.ts","frontend/src/api/modules/consumer-behavior-analytics.ts","frontend/src/api/modules/content-categories.ts","frontend/src/api/modules/content-copyright.ts","frontend/src/api/modules/content-creation.ts","frontend/src/api/modules/content-distribution.ts","frontend/src/api/modules/content-library.ts","frontend/src/api/modules/content-templates.ts","frontend/src/api/modules/contract-templates.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/cross-domain-funnel.ts","frontend/src/api/modules/customer-analytics.ts","frontend/src/api/modules/customer-health.ts","frontend/src/api/modules/customer-journey.ts","frontend/src/api/modules/customer-ltv.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customer-segmentation.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/dictionaries.ts","frontend/src/api/modules/dimension-transform.ts","frontend/src/api/modules/email-marketing.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/event-logs.ts","frontend/src/api/modules/events.ts","frontend/src/api/modules/expense.ts","frontend/src/api/modules/financial-reports.ts","frontend/src/api/modules/fulfillment.ts","frontend/src/api/modules/geo-fences.ts","frontend/src/api/modules/geo-pois.ts","frontend/src/api/modules/groupbuy-analytics.ts","frontend/src/api/modules/groupbuy-campaigns.ts","frontend/src/api/modules/groupbuy-platforms.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-products.ts","frontend/src/api/modules/groupbuy-settlements.ts","frontend/src/api/modules/hr-benefits.ts","frontend/src/api/modules/hr-payroll.ts","frontend/src/api/modules/im-channels.ts","frontend/src/api/modules/im.ts","frontend/src/api/modules/integration-services.ts","frontend/src/api/modules/intent-analyzer.ts","frontend/src/api/modules/journey-orchestration.ts","frontend/src/api/modules/knowledge-candidates.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-groupbuy-conversion.ts","frontend/src/api/modules/livestream-groupbuy.ts","frontend/src/api/modules/livestream-interactions.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/location-assessments.ts","frontend/src/api/modules/login-logs.ts","frontend/src/api/modules/maintenance.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-calendar.ts","frontend/src/api/modules/marketing-chatbot.ts","frontend/src/api/modules/marketing-content.ts","frontend/src/api/modules/marketing-forms.ts","frontend/src/api/modules/marketing-matrix.ts","frontend/src/api/modules/marketing-north-star.ts","frontend/src/api/modules/marketing-timeslots.ts","frontend/src/api/modules/marketing.ts","frontend/src/api/modules/omnichannel-dashboard.ts","frontend/src/api/modules/omnichannel-data-hub.ts","frontend/src/api/modules/omnichannel-touchpoints.ts","frontend/src/api/modules/operation-logs.ts","frontend/src/api/modules/opportunities.ts","frontend/src/api/modules/predictive-analytics.ts","frontend/src/api/modules/process-designer.ts","frontend/src/api/modules/process.ts","frontend/src/api/modules/products.ts","frontend/src/api/modules/realtime-trigger.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/resource-requests.ts","frontend/src/api/modules/revenue.ts","frontend/src/api/modules/rfm-analysis.ts","frontend/src/api/modules/rma.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/scheduled-jobs.ts","frontend/src/api/modules/search.ts","frontend/src/api/modules/segments.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/api/modules/sms-marketing.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/api/modules/social-auto-replies.ts","frontend/src/api/modules/social-competitors.ts","frontend/src/api/modules/social-hot-topics.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/spare-parts.ts","frontend/src/api/modules/store-performance.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supplier-management.ts","frontend/src/api/modules/swot-analyses.ts","frontend/src/api/modules/system-events.ts","frontend/src/api/modules/ticket-workflows.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/tob-toc-gateway.ts","frontend/src/api/modules/unified-campaign.ts","frontend/src/api/modules/web-tracking.ts","frontend/src/api/modules/workflow-generator.ts","frontend/src/api/response-normalizer.ts","frontend/src/components/business/ActivityTimeline.vue","frontend/src/components/business/EventStreamPanel.vue","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/DataTable.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/mobile/MobileFilter.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/types/ai-agent.ts","frontend/src/utils/echarts.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/abm-marketing/Index.vue","frontend/src/views/acquisition/Index.vue","frontend/src/views/ad-accounts/Form.vue","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-analytics/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-placement/ABTests.vue","frontend/src/views/ad-placement/AudiencePacks.vue","frontend/src/views/ad-placement/BudgetAlerts.vue","frontend/src/views/ad-placement/Creatives.vue","frontend/src/views/ad-placement/Index.vue","frontend/src/views/ad-placement/RoiAnalysis.vue","frontend/src/views/alliance-agreements/Index.vue","frontend/src/views/alliance-campaigns/Index.vue","frontend/src/views/alliance-coupons/Index.vue","frontend/src/views/alliance-packages/Index.vue","frontend/src/views/alliance-partners/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/analytics/roi/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Form.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/attribution/Index.vue","frontend/src/views/auth/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-analytics/Index.vue","frontend/src/views/campaign-library/Index.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaign-tools/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/ToolConfigDialog.vue","frontend/src/views/campaigns/wizard/Step3Tools.vue","frontend/src/views/campaigns/wizard/Step4BasicInfo.vue","frontend/src/views/campaigns/wizard/Step7Review.vue","frontend/src/views/campaigns/wizard/components/ToolConfigForms.vue","frontend/src/views/channel-analytics/Index.vue","frontend/src/views/community-bots/Index.vue","frontend/src/views/community-fission/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/community-tasks/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Detail.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/contracts/Form.vue","frontend/src/views/conversion-paths/Index.vue","frontend/src/views/cost-allocation/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Detail.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Form.vue","frontend/src/views/departments/Detail.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Alerts.vue","frontend/src/views/devices/Form.vue","frontend/src/views/diagnosis/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-templates/Form.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/geo-pois/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-inventory/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-platforms/Index.vue","frontend/src/views/groupbuy-pricing/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-promotions/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/hr/attendance/components/AttendanceTab.vue","frontend/src/views/hr/attendance/components/HolidaysTab.vue","frontend/src/views/hr/attendance/components/LeavesTab.vue","frontend/src/views/hr/attendance/components/OvertimeTab.vue","frontend/src/views/hr/attendance/components/ShiftsTab.vue","frontend/src/views/hr/training/components/CertificatesTab.vue","frontend/src/views/hr/training/components/CompetencyTab.vue","frontend/src/views/hr/training/components/CoursesTab.vue","frontend/src/views/hr/training/components/ExamsTab.vue","frontend/src/views/hr/training/components/PlansTab.vue","frontend/src/views/hr/training/components/SessionsTab.vue","frontend/src/views/inventory/Counts.vue","frontend/src/views/inventory/Index.vue","frontend/src/views/inventory/Snapshots.vue","frontend/src/views/journey-orchestration/Form.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/lead-assignment/Form.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/lead-qualification/Form.vue","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/Index.vue","frontend/src/views/livestream-gifts/Index.vue","frontend/src/views/livestream-groupbuy-conversion/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/maintenance/Index.vue","frontend/src/views/maintenance/TaskDetail.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Detail.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/marketing/budget-alerts/Index.vue","frontend/src/views/mdm/Index.vue","frontend/src/views/member-benefits/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/menus/Index.vue","frontend/src/views/notification-configs/Index.vue","frontend/src/views/notifications/Index.vue","frontend/src/views/omnichannel-dashboard/Index.vue","frontend/src/views/omnichannel-data-hub/Index.vue","frontend/src/views/opportunities/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/orders/Index.vue","frontend/src/views/org-chart/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/predictive-analytics/Form.vue","frontend/src/views/process-designer/Designer.vue","frontend/src/views/product-analytics/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/qr-codes/Index.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/realtime-trigger/Form.vue","frontend/src/views/renewal-tasks/Index.vue","frontend/src/views/rfm-analysis/Detail.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/scheduled-jobs/Index.vue","frontend/src/views/segments/Index.vue","frontend/src/views/service-monitor/Index.vue","frontend/src/views/settings/Index.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-matrix/Index.vue","frontend/src/views/social-posts/Detail.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/spare-parts/components/TransactionHistory.vue","frontend/src/views/stage-knowledge/Index.vue","frontend/src/views/store-configs/Index.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/suppliers/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/system-monitor/Index.vue","frontend/src/views/system/AuditLogs.vue","frontend/src/views/tenant-configs/Index.vue","frontend/src/views/tickets/Form.vue","frontend/src/views/tickets/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-publishing/Index.vue","frontend/src/views/web-tracking/Index.vue"]}],"total_commits":0,"head_commit":{"id":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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-24T10:14:13+08:00","added":["backend/src/shared/constants/events/common.ts","backend/src/shared/constants/events/finance.ts","backend/src/shared/constants/events/hr.ts","backend/src/shared/constants/events/im.ts","backend/src/shared/constants/events/index.ts","backend/src/shared/constants/events/knowledge.ts","backend/src/shared/constants/events/lifecycle.ts","backend/src/shared/constants/events/marketing.ts","backend/src/shared/constants/events/sales.ts","backend/src/shared/constants/events/service.ts","backend/src/shared/constants/events/store.ts","backend/src/shared/constants/events/supply_chain.ts","backend/src/shared/constants/events/system.ts","backend/src/shared/services/list-cache.service.ts","backend/src/shared/utils/cache-utils.ts"],"removed":[],"modified":["backend/src/consumers/attribution.consumer.ts","backend/src/consumers/campaign-effectiveness.consumer.ts","backend/src/consumers/marketing-workflow-executor.consumer.ts","backend/src/consumers/scheduled-jobs.consumer.ts","backend/src/modules/ai-agents/services/knowledge-vector-enhanced.service.ts","backend/src/modules/alliance-settlements/alliance-settlement.service.test.ts","backend/src/modules/campaign-analytics/campaign-analytics.controller.ts","backend/src/modules/contract-templates/contract-template.service.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.service.test.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/leads/lead-ai-scoring.service.ts","backend/src/modules/leads/lead-sla.service.ts","backend/src/modules/leads/lead-smart-assignment.service.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-interactions/livestream-realtime.service.ts","backend/src/modules/marketing-automation/workflow-trigger.service.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.controller.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.routes.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.service.ts","backend/src/modules/notifications/notification.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/payments/payment.service.test.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/segments/segment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-interactions/social-interactions.service.ts","backend/src/modules/store-staff/store-staff.service.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/shared/constants/events.ts","backend/src/shared/services/partition-maintenance.service.ts","backend/src/shared/state-machines/machines/contract.machine.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/types.ts","backend/src/shared/state-machines/utils/transitions/sales.transitions.ts","backend/src/shared/utils/biz-code.ts","frontend/src/api/adapters.ts","frontend/src/api/im-binding.ts","frontend/src/api/modules/ad-accounts.ts","frontend/src/api/modules/ad-audiences.ts","frontend/src/api/modules/ad-creatives.ts","frontend/src/api/modules/ad-placement.ts","frontend/src/api/modules/ad-reports.ts","frontend/src/api/modules/agent-group.ts","frontend/src/api/modules/ai-agent.ts","frontend/src/api/modules/alliance-analytics.ts","frontend/src/api/modules/alliance-merchants.ts","frontend/src/api/modules/alliance-products.ts","frontend/src/api/modules/alliance-promotions.ts","frontend/src/api/modules/alliance-referrals.ts","frontend/src/api/modules/analytics.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/assets.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/audit-logs.ts","frontend/src/api/modules/campaign-drafts.ts","frontend/src/api/modules/campaign-library.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/campaign-tools.ts","frontend/src/api/modules/campaign-use-case-templates.ts","frontend/src/api/modules/campaign-wizard.ts","frontend/src/api/modules/campaigns.ts","frontend/src/api/modules/cohort-analysis.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-activities.ts","frontend/src/api/modules/community-analytics.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-groups.ts","frontend/src/api/modules/community-levels.ts","frontend/src/api/modules/community-members.ts","frontend/src/api/modules/community-messages.ts","frontend/src/api/modules/community-points.ts","frontend/src/api/modules/consumer-behavior-analytics.ts","frontend/src/api/modules/content-categories.ts","frontend/src/api/modules/content-copyright.ts","frontend/src/api/modules/content-creation.ts","frontend/src/api/modules/content-distribution.ts","frontend/src/api/modules/content-library.ts","frontend/src/api/modules/content-templates.ts","frontend/src/api/modules/contract-templates.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/cross-domain-funnel.ts","frontend/src/api/modules/customer-analytics.ts","frontend/src/api/modules/customer-health.ts","frontend/src/api/modules/customer-journey.ts","frontend/src/api/modules/customer-ltv.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customer-segmentation.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/dictionaries.ts","frontend/src/api/modules/dimension-transform.ts","frontend/src/api/modules/email-marketing.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/event-logs.ts","frontend/src/api/modules/events.ts","frontend/src/api/modules/expense.ts","frontend/src/api/modules/financial-reports.ts","frontend/src/api/modules/fulfillment.ts","frontend/src/api/modules/geo-fences.ts","frontend/src/api/modules/geo-pois.ts","frontend/src/api/modules/groupbuy-analytics.ts","frontend/src/api/modules/groupbuy-campaigns.ts","frontend/src/api/modules/groupbuy-platforms.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-products.ts","frontend/src/api/modules/groupbuy-settlements.ts","frontend/src/api/modules/hr-benefits.ts","frontend/src/api/modules/hr-payroll.ts","frontend/src/api/modules/im-channels.ts","frontend/src/api/modules/im.ts","frontend/src/api/modules/integration-services.ts","frontend/src/api/modules/intent-analyzer.ts","frontend/src/api/modules/journey-orchestration.ts","frontend/src/api/modules/knowledge-candidates.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-groupbuy-conversion.ts","frontend/src/api/modules/livestream-groupbuy.ts","frontend/src/api/modules/livestream-interactions.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/location-assessments.ts","frontend/src/api/modules/login-logs.ts","frontend/src/api/modules/maintenance.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-calendar.ts","frontend/src/api/modules/marketing-chatbot.ts","frontend/src/api/modules/marketing-content.ts","frontend/src/api/modules/marketing-forms.ts","frontend/src/api/modules/marketing-matrix.ts","frontend/src/api/modules/marketing-north-star.ts","frontend/src/api/modules/marketing-timeslots.ts","frontend/src/api/modules/marketing.ts","frontend/src/api/modules/omnichannel-dashboard.ts","frontend/src/api/modules/omnichannel-data-hub.ts","frontend/src/api/modules/omnichannel-touchpoints.ts","frontend/src/api/modules/operation-logs.ts","frontend/src/api/modules/opportunities.ts","frontend/src/api/modules/predictive-analytics.ts","frontend/src/api/modules/process-designer.ts","frontend/src/api/modules/process.ts","frontend/src/api/modules/products.ts","frontend/src/api/modules/realtime-trigger.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/resource-requests.ts","frontend/src/api/modules/revenue.ts","frontend/src/api/modules/rfm-analysis.ts","frontend/src/api/modules/rma.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/scheduled-jobs.ts","frontend/src/api/modules/search.ts","frontend/src/api/modules/segments.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/api/modules/sms-marketing.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/api/modules/social-auto-replies.ts","frontend/src/api/modules/social-competitors.ts","frontend/src/api/modules/social-hot-topics.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/spare-parts.ts","frontend/src/api/modules/store-performance.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supplier-management.ts","frontend/src/api/modules/swot-analyses.ts","frontend/src/api/modules/system-events.ts","frontend/src/api/modules/ticket-workflows.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/tob-toc-gateway.ts","frontend/src/api/modules/unified-campaign.ts","frontend/src/api/modules/web-tracking.ts","frontend/src/api/modules/workflow-generator.ts","frontend/src/api/response-normalizer.ts","frontend/src/components/business/ActivityTimeline.vue","frontend/src/components/business/EventStreamPanel.vue","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/DataTable.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/mobile/MobileFilter.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/types/ai-agent.ts","frontend/src/utils/echarts.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/abm-marketing/Index.vue","frontend/src/views/acquisition/Index.vue","frontend/src/views/ad-accounts/Form.vue","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-analytics/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-placement/ABTests.vue","frontend/src/views/ad-placement/AudiencePacks.vue","frontend/src/views/ad-placement/BudgetAlerts.vue","frontend/src/views/ad-placement/Creatives.vue","frontend/src/views/ad-placement/Index.vue","frontend/src/views/ad-placement/RoiAnalysis.vue","frontend/src/views/alliance-agreements/Index.vue","frontend/src/views/alliance-campaigns/Index.vue","frontend/src/views/alliance-coupons/Index.vue","frontend/src/views/alliance-packages/Index.vue","frontend/src/views/alliance-partners/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/analytics/roi/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Form.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/attribution/Index.vue","frontend/src/views/auth/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-analytics/Index.vue","frontend/src/views/campaign-library/Index.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaign-tools/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/ToolConfigDialog.vue","frontend/src/views/campaigns/wizard/Step3Tools.vue","frontend/src/views/campaigns/wizard/Step4BasicInfo.vue","frontend/src/views/campaigns/wizard/Step7Review.vue","frontend/src/views/campaigns/wizard/components/ToolConfigForms.vue","frontend/src/views/channel-analytics/Index.vue","frontend/src/views/community-bots/Index.vue","frontend/src/views/community-fission/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/community-tasks/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Detail.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/contracts/Form.vue","frontend/src/views/conversion-paths/Index.vue","frontend/src/views/cost-allocation/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Detail.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Form.vue","frontend/src/views/departments/Detail.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Alerts.vue","frontend/src/views/devices/Form.vue","frontend/src/views/diagnosis/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-templates/Form.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/geo-pois/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-inventory/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-platforms/Index.vue","frontend/src/views/groupbuy-pricing/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-promotions/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/hr/attendance/components/AttendanceTab.vue","frontend/src/views/hr/attendance/components/HolidaysTab.vue","frontend/src/views/hr/attendance/components/LeavesTab.vue","frontend/src/views/hr/attendance/components/OvertimeTab.vue","frontend/src/views/hr/attendance/components/ShiftsTab.vue","frontend/src/views/hr/training/components/CertificatesTab.vue","frontend/src/views/hr/training/components/CompetencyTab.vue","frontend/src/views/hr/training/components/CoursesTab.vue","frontend/src/views/hr/training/components/ExamsTab.vue","frontend/src/views/hr/training/components/PlansTab.vue","frontend/src/views/hr/training/components/SessionsTab.vue","frontend/src/views/inventory/Counts.vue","frontend/src/views/inventory/Index.vue","frontend/src/views/inventory/Snapshots.vue","frontend/src/views/journey-orchestration/Form.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/lead-assignment/Form.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/lead-qualification/Form.vue","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/Index.vue","frontend/src/views/livestream-gifts/Index.vue","frontend/src/views/livestream-groupbuy-conversion/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/maintenance/Index.vue","frontend/src/views/maintenance/TaskDetail.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Detail.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/marketing/budget-alerts/Index.vue","frontend/src/views/mdm/Index.vue","frontend/src/views/member-benefits/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/menus/Index.vue","frontend/src/views/notification-configs/Index.vue","frontend/src/views/notifications/Index.vue","frontend/src/views/omnichannel-dashboard/Index.vue","frontend/src/views/omnichannel-data-hub/Index.vue","frontend/src/views/opportunities/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/orders/Index.vue","frontend/src/views/org-chart/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/predictive-analytics/Form.vue","frontend/src/views/process-designer/Designer.vue","frontend/src/views/product-analytics/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/qr-codes/Index.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/realtime-trigger/Form.vue","frontend/src/views/renewal-tasks/Index.vue","frontend/src/views/rfm-analysis/Detail.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/scheduled-jobs/Index.vue","frontend/src/views/segments/Index.vue","frontend/src/views/service-monitor/Index.vue","frontend/src/views/settings/Index.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-matrix/Index.vue","frontend/src/views/social-posts/Detail.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/spare-parts/components/TransactionHistory.vue","frontend/src/views/stage-knowledge/Index.vue","frontend/src/views/store-configs/Index.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/suppliers/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/system-monitor/Index.vue","frontend/src/views/system/AuditLogs.vue","frontend/src/views/tenant-configs/Index.vue","frontend/src/views/tickets/Form.vue","frontend/src/views/tickets/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-publishing/Index.vue","frontend/src/views/web-tracking/Index.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/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":1956552,"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":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-03-24T09:45:16+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
|
1774320041
|
1774320042
|
0
|
1774320040
|
1774320042
|
|
|
0
|
Edit
Delete
|
|
7662
|
feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理...
|
6
|
5
|
health-check.yml
|
7587
|
-2
|
130
|
refs/heads/main
|
dbf34b08bbb60650d15b0c55262dbfe8d0a3a655
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"8c39619c9cdb0d888d10942bf50533c8238021df","after":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/8c39619c9cdb0d888d10942bf50533c8238021df...dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","commits":[{"id":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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-24T10:14:13+08:00","added":["backend/src/shared/constants/events/common.ts","backend/src/shared/constants/events/finance.ts","backend/src/shared/constants/events/hr.ts","backend/src/shared/constants/events/im.ts","backend/src/shared/constants/events/index.ts","backend/src/shared/constants/events/knowledge.ts","backend/src/shared/constants/events/lifecycle.ts","backend/src/shared/constants/events/marketing.ts","backend/src/shared/constants/events/sales.ts","backend/src/shared/constants/events/service.ts","backend/src/shared/constants/events/store.ts","backend/src/shared/constants/events/supply_chain.ts","backend/src/shared/constants/events/system.ts","backend/src/shared/services/list-cache.service.ts","backend/src/shared/utils/cache-utils.ts"],"removed":[],"modified":["backend/src/consumers/attribution.consumer.ts","backend/src/consumers/campaign-effectiveness.consumer.ts","backend/src/consumers/marketing-workflow-executor.consumer.ts","backend/src/consumers/scheduled-jobs.consumer.ts","backend/src/modules/ai-agents/services/knowledge-vector-enhanced.service.ts","backend/src/modules/alliance-settlements/alliance-settlement.service.test.ts","backend/src/modules/campaign-analytics/campaign-analytics.controller.ts","backend/src/modules/contract-templates/contract-template.service.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.service.test.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/leads/lead-ai-scoring.service.ts","backend/src/modules/leads/lead-sla.service.ts","backend/src/modules/leads/lead-smart-assignment.service.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-interactions/livestream-realtime.service.ts","backend/src/modules/marketing-automation/workflow-trigger.service.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.controller.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.routes.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.service.ts","backend/src/modules/notifications/notification.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/payments/payment.service.test.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/segments/segment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-interactions/social-interactions.service.ts","backend/src/modules/store-staff/store-staff.service.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/shared/constants/events.ts","backend/src/shared/services/partition-maintenance.service.ts","backend/src/shared/state-machines/machines/contract.machine.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/types.ts","backend/src/shared/state-machines/utils/transitions/sales.transitions.ts","backend/src/shared/utils/biz-code.ts","frontend/src/api/adapters.ts","frontend/src/api/im-binding.ts","frontend/src/api/modules/ad-accounts.ts","frontend/src/api/modules/ad-audiences.ts","frontend/src/api/modules/ad-creatives.ts","frontend/src/api/modules/ad-placement.ts","frontend/src/api/modules/ad-reports.ts","frontend/src/api/modules/agent-group.ts","frontend/src/api/modules/ai-agent.ts","frontend/src/api/modules/alliance-analytics.ts","frontend/src/api/modules/alliance-merchants.ts","frontend/src/api/modules/alliance-products.ts","frontend/src/api/modules/alliance-promotions.ts","frontend/src/api/modules/alliance-referrals.ts","frontend/src/api/modules/analytics.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/assets.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/audit-logs.ts","frontend/src/api/modules/campaign-drafts.ts","frontend/src/api/modules/campaign-library.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/campaign-tools.ts","frontend/src/api/modules/campaign-use-case-templates.ts","frontend/src/api/modules/campaign-wizard.ts","frontend/src/api/modules/campaigns.ts","frontend/src/api/modules/cohort-analysis.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-activities.ts","frontend/src/api/modules/community-analytics.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-groups.ts","frontend/src/api/modules/community-levels.ts","frontend/src/api/modules/community-members.ts","frontend/src/api/modules/community-messages.ts","frontend/src/api/modules/community-points.ts","frontend/src/api/modules/consumer-behavior-analytics.ts","frontend/src/api/modules/content-categories.ts","frontend/src/api/modules/content-copyright.ts","frontend/src/api/modules/content-creation.ts","frontend/src/api/modules/content-distribution.ts","frontend/src/api/modules/content-library.ts","frontend/src/api/modules/content-templates.ts","frontend/src/api/modules/contract-templates.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/cross-domain-funnel.ts","frontend/src/api/modules/customer-analytics.ts","frontend/src/api/modules/customer-health.ts","frontend/src/api/modules/customer-journey.ts","frontend/src/api/modules/customer-ltv.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customer-segmentation.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/dictionaries.ts","frontend/src/api/modules/dimension-transform.ts","frontend/src/api/modules/email-marketing.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/event-logs.ts","frontend/src/api/modules/events.ts","frontend/src/api/modules/expense.ts","frontend/src/api/modules/financial-reports.ts","frontend/src/api/modules/fulfillment.ts","frontend/src/api/modules/geo-fences.ts","frontend/src/api/modules/geo-pois.ts","frontend/src/api/modules/groupbuy-analytics.ts","frontend/src/api/modules/groupbuy-campaigns.ts","frontend/src/api/modules/groupbuy-platforms.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-products.ts","frontend/src/api/modules/groupbuy-settlements.ts","frontend/src/api/modules/hr-benefits.ts","frontend/src/api/modules/hr-payroll.ts","frontend/src/api/modules/im-channels.ts","frontend/src/api/modules/im.ts","frontend/src/api/modules/integration-services.ts","frontend/src/api/modules/intent-analyzer.ts","frontend/src/api/modules/journey-orchestration.ts","frontend/src/api/modules/knowledge-candidates.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-groupbuy-conversion.ts","frontend/src/api/modules/livestream-groupbuy.ts","frontend/src/api/modules/livestream-interactions.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/location-assessments.ts","frontend/src/api/modules/login-logs.ts","frontend/src/api/modules/maintenance.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-calendar.ts","frontend/src/api/modules/marketing-chatbot.ts","frontend/src/api/modules/marketing-content.ts","frontend/src/api/modules/marketing-forms.ts","frontend/src/api/modules/marketing-matrix.ts","frontend/src/api/modules/marketing-north-star.ts","frontend/src/api/modules/marketing-timeslots.ts","frontend/src/api/modules/marketing.ts","frontend/src/api/modules/omnichannel-dashboard.ts","frontend/src/api/modules/omnichannel-data-hub.ts","frontend/src/api/modules/omnichannel-touchpoints.ts","frontend/src/api/modules/operation-logs.ts","frontend/src/api/modules/opportunities.ts","frontend/src/api/modules/predictive-analytics.ts","frontend/src/api/modules/process-designer.ts","frontend/src/api/modules/process.ts","frontend/src/api/modules/products.ts","frontend/src/api/modules/realtime-trigger.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/resource-requests.ts","frontend/src/api/modules/revenue.ts","frontend/src/api/modules/rfm-analysis.ts","frontend/src/api/modules/rma.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/scheduled-jobs.ts","frontend/src/api/modules/search.ts","frontend/src/api/modules/segments.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/api/modules/sms-marketing.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/api/modules/social-auto-replies.ts","frontend/src/api/modules/social-competitors.ts","frontend/src/api/modules/social-hot-topics.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/spare-parts.ts","frontend/src/api/modules/store-performance.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supplier-management.ts","frontend/src/api/modules/swot-analyses.ts","frontend/src/api/modules/system-events.ts","frontend/src/api/modules/ticket-workflows.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/tob-toc-gateway.ts","frontend/src/api/modules/unified-campaign.ts","frontend/src/api/modules/web-tracking.ts","frontend/src/api/modules/workflow-generator.ts","frontend/src/api/response-normalizer.ts","frontend/src/components/business/ActivityTimeline.vue","frontend/src/components/business/EventStreamPanel.vue","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/DataTable.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/mobile/MobileFilter.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/types/ai-agent.ts","frontend/src/utils/echarts.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/abm-marketing/Index.vue","frontend/src/views/acquisition/Index.vue","frontend/src/views/ad-accounts/Form.vue","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-analytics/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-placement/ABTests.vue","frontend/src/views/ad-placement/AudiencePacks.vue","frontend/src/views/ad-placement/BudgetAlerts.vue","frontend/src/views/ad-placement/Creatives.vue","frontend/src/views/ad-placement/Index.vue","frontend/src/views/ad-placement/RoiAnalysis.vue","frontend/src/views/alliance-agreements/Index.vue","frontend/src/views/alliance-campaigns/Index.vue","frontend/src/views/alliance-coupons/Index.vue","frontend/src/views/alliance-packages/Index.vue","frontend/src/views/alliance-partners/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/analytics/roi/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Form.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/attribution/Index.vue","frontend/src/views/auth/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-analytics/Index.vue","frontend/src/views/campaign-library/Index.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaign-tools/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/ToolConfigDialog.vue","frontend/src/views/campaigns/wizard/Step3Tools.vue","frontend/src/views/campaigns/wizard/Step4BasicInfo.vue","frontend/src/views/campaigns/wizard/Step7Review.vue","frontend/src/views/campaigns/wizard/components/ToolConfigForms.vue","frontend/src/views/channel-analytics/Index.vue","frontend/src/views/community-bots/Index.vue","frontend/src/views/community-fission/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/community-tasks/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Detail.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/contracts/Form.vue","frontend/src/views/conversion-paths/Index.vue","frontend/src/views/cost-allocation/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Detail.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Form.vue","frontend/src/views/departments/Detail.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Alerts.vue","frontend/src/views/devices/Form.vue","frontend/src/views/diagnosis/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-templates/Form.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/geo-pois/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-inventory/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-platforms/Index.vue","frontend/src/views/groupbuy-pricing/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-promotions/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/hr/attendance/components/AttendanceTab.vue","frontend/src/views/hr/attendance/components/HolidaysTab.vue","frontend/src/views/hr/attendance/components/LeavesTab.vue","frontend/src/views/hr/attendance/components/OvertimeTab.vue","frontend/src/views/hr/attendance/components/ShiftsTab.vue","frontend/src/views/hr/training/components/CertificatesTab.vue","frontend/src/views/hr/training/components/CompetencyTab.vue","frontend/src/views/hr/training/components/CoursesTab.vue","frontend/src/views/hr/training/components/ExamsTab.vue","frontend/src/views/hr/training/components/PlansTab.vue","frontend/src/views/hr/training/components/SessionsTab.vue","frontend/src/views/inventory/Counts.vue","frontend/src/views/inventory/Index.vue","frontend/src/views/inventory/Snapshots.vue","frontend/src/views/journey-orchestration/Form.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/lead-assignment/Form.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/lead-qualification/Form.vue","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/Index.vue","frontend/src/views/livestream-gifts/Index.vue","frontend/src/views/livestream-groupbuy-conversion/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/maintenance/Index.vue","frontend/src/views/maintenance/TaskDetail.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Detail.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/marketing/budget-alerts/Index.vue","frontend/src/views/mdm/Index.vue","frontend/src/views/member-benefits/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/menus/Index.vue","frontend/src/views/notification-configs/Index.vue","frontend/src/views/notifications/Index.vue","frontend/src/views/omnichannel-dashboard/Index.vue","frontend/src/views/omnichannel-data-hub/Index.vue","frontend/src/views/opportunities/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/orders/Index.vue","frontend/src/views/org-chart/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/predictive-analytics/Form.vue","frontend/src/views/process-designer/Designer.vue","frontend/src/views/product-analytics/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/qr-codes/Index.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/realtime-trigger/Form.vue","frontend/src/views/renewal-tasks/Index.vue","frontend/src/views/rfm-analysis/Detail.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/scheduled-jobs/Index.vue","frontend/src/views/segments/Index.vue","frontend/src/views/service-monitor/Index.vue","frontend/src/views/settings/Index.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-matrix/Index.vue","frontend/src/views/social-posts/Detail.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/spare-parts/components/TransactionHistory.vue","frontend/src/views/stage-knowledge/Index.vue","frontend/src/views/store-configs/Index.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/suppliers/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/system-monitor/Index.vue","frontend/src/views/system/AuditLogs.vue","frontend/src/views/tenant-configs/Index.vue","frontend/src/views/tickets/Form.vue","frontend/src/views/tickets/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-publishing/Index.vue","frontend/src/views/web-tracking/Index.vue"]}],"total_commits":0,"head_commit":{"id":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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-24T10:14:13+08:00","added":["backend/src/shared/constants/events/common.ts","backend/src/shared/constants/events/finance.ts","backend/src/shared/constants/events/hr.ts","backend/src/shared/constants/events/im.ts","backend/src/shared/constants/events/index.ts","backend/src/shared/constants/events/knowledge.ts","backend/src/shared/constants/events/lifecycle.ts","backend/src/shared/constants/events/marketing.ts","backend/src/shared/constants/events/sales.ts","backend/src/shared/constants/events/service.ts","backend/src/shared/constants/events/store.ts","backend/src/shared/constants/events/supply_chain.ts","backend/src/shared/constants/events/system.ts","backend/src/shared/services/list-cache.service.ts","backend/src/shared/utils/cache-utils.ts"],"removed":[],"modified":["backend/src/consumers/attribution.consumer.ts","backend/src/consumers/campaign-effectiveness.consumer.ts","backend/src/consumers/marketing-workflow-executor.consumer.ts","backend/src/consumers/scheduled-jobs.consumer.ts","backend/src/modules/ai-agents/services/knowledge-vector-enhanced.service.ts","backend/src/modules/alliance-settlements/alliance-settlement.service.test.ts","backend/src/modules/campaign-analytics/campaign-analytics.controller.ts","backend/src/modules/contract-templates/contract-template.service.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.service.test.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/leads/lead-ai-scoring.service.ts","backend/src/modules/leads/lead-sla.service.ts","backend/src/modules/leads/lead-smart-assignment.service.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-interactions/livestream-realtime.service.ts","backend/src/modules/marketing-automation/workflow-trigger.service.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.controller.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.routes.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.service.ts","backend/src/modules/notifications/notification.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/payments/payment.service.test.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/segments/segment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-interactions/social-interactions.service.ts","backend/src/modules/store-staff/store-staff.service.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/shared/constants/events.ts","backend/src/shared/services/partition-maintenance.service.ts","backend/src/shared/state-machines/machines/contract.machine.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/types.ts","backend/src/shared/state-machines/utils/transitions/sales.transitions.ts","backend/src/shared/utils/biz-code.ts","frontend/src/api/adapters.ts","frontend/src/api/im-binding.ts","frontend/src/api/modules/ad-accounts.ts","frontend/src/api/modules/ad-audiences.ts","frontend/src/api/modules/ad-creatives.ts","frontend/src/api/modules/ad-placement.ts","frontend/src/api/modules/ad-reports.ts","frontend/src/api/modules/agent-group.ts","frontend/src/api/modules/ai-agent.ts","frontend/src/api/modules/alliance-analytics.ts","frontend/src/api/modules/alliance-merchants.ts","frontend/src/api/modules/alliance-products.ts","frontend/src/api/modules/alliance-promotions.ts","frontend/src/api/modules/alliance-referrals.ts","frontend/src/api/modules/analytics.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/assets.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/audit-logs.ts","frontend/src/api/modules/campaign-drafts.ts","frontend/src/api/modules/campaign-library.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/campaign-tools.ts","frontend/src/api/modules/campaign-use-case-templates.ts","frontend/src/api/modules/campaign-wizard.ts","frontend/src/api/modules/campaigns.ts","frontend/src/api/modules/cohort-analysis.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-activities.ts","frontend/src/api/modules/community-analytics.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-groups.ts","frontend/src/api/modules/community-levels.ts","frontend/src/api/modules/community-members.ts","frontend/src/api/modules/community-messages.ts","frontend/src/api/modules/community-points.ts","frontend/src/api/modules/consumer-behavior-analytics.ts","frontend/src/api/modules/content-categories.ts","frontend/src/api/modules/content-copyright.ts","frontend/src/api/modules/content-creation.ts","frontend/src/api/modules/content-distribution.ts","frontend/src/api/modules/content-library.ts","frontend/src/api/modules/content-templates.ts","frontend/src/api/modules/contract-templates.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/cross-domain-funnel.ts","frontend/src/api/modules/customer-analytics.ts","frontend/src/api/modules/customer-health.ts","frontend/src/api/modules/customer-journey.ts","frontend/src/api/modules/customer-ltv.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customer-segmentation.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/dictionaries.ts","frontend/src/api/modules/dimension-transform.ts","frontend/src/api/modules/email-marketing.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/event-logs.ts","frontend/src/api/modules/events.ts","frontend/src/api/modules/expense.ts","frontend/src/api/modules/financial-reports.ts","frontend/src/api/modules/fulfillment.ts","frontend/src/api/modules/geo-fences.ts","frontend/src/api/modules/geo-pois.ts","frontend/src/api/modules/groupbuy-analytics.ts","frontend/src/api/modules/groupbuy-campaigns.ts","frontend/src/api/modules/groupbuy-platforms.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-products.ts","frontend/src/api/modules/groupbuy-settlements.ts","frontend/src/api/modules/hr-benefits.ts","frontend/src/api/modules/hr-payroll.ts","frontend/src/api/modules/im-channels.ts","frontend/src/api/modules/im.ts","frontend/src/api/modules/integration-services.ts","frontend/src/api/modules/intent-analyzer.ts","frontend/src/api/modules/journey-orchestration.ts","frontend/src/api/modules/knowledge-candidates.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-groupbuy-conversion.ts","frontend/src/api/modules/livestream-groupbuy.ts","frontend/src/api/modules/livestream-interactions.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/location-assessments.ts","frontend/src/api/modules/login-logs.ts","frontend/src/api/modules/maintenance.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-calendar.ts","frontend/src/api/modules/marketing-chatbot.ts","frontend/src/api/modules/marketing-content.ts","frontend/src/api/modules/marketing-forms.ts","frontend/src/api/modules/marketing-matrix.ts","frontend/src/api/modules/marketing-north-star.ts","frontend/src/api/modules/marketing-timeslots.ts","frontend/src/api/modules/marketing.ts","frontend/src/api/modules/omnichannel-dashboard.ts","frontend/src/api/modules/omnichannel-data-hub.ts","frontend/src/api/modules/omnichannel-touchpoints.ts","frontend/src/api/modules/operation-logs.ts","frontend/src/api/modules/opportunities.ts","frontend/src/api/modules/predictive-analytics.ts","frontend/src/api/modules/process-designer.ts","frontend/src/api/modules/process.ts","frontend/src/api/modules/products.ts","frontend/src/api/modules/realtime-trigger.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/resource-requests.ts","frontend/src/api/modules/revenue.ts","frontend/src/api/modules/rfm-analysis.ts","frontend/src/api/modules/rma.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/scheduled-jobs.ts","frontend/src/api/modules/search.ts","frontend/src/api/modules/segments.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/api/modules/sms-marketing.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/api/modules/social-auto-replies.ts","frontend/src/api/modules/social-competitors.ts","frontend/src/api/modules/social-hot-topics.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/spare-parts.ts","frontend/src/api/modules/store-performance.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supplier-management.ts","frontend/src/api/modules/swot-analyses.ts","frontend/src/api/modules/system-events.ts","frontend/src/api/modules/ticket-workflows.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/tob-toc-gateway.ts","frontend/src/api/modules/unified-campaign.ts","frontend/src/api/modules/web-tracking.ts","frontend/src/api/modules/workflow-generator.ts","frontend/src/api/response-normalizer.ts","frontend/src/components/business/ActivityTimeline.vue","frontend/src/components/business/EventStreamPanel.vue","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/DataTable.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/mobile/MobileFilter.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/types/ai-agent.ts","frontend/src/utils/echarts.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/abm-marketing/Index.vue","frontend/src/views/acquisition/Index.vue","frontend/src/views/ad-accounts/Form.vue","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-analytics/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-placement/ABTests.vue","frontend/src/views/ad-placement/AudiencePacks.vue","frontend/src/views/ad-placement/BudgetAlerts.vue","frontend/src/views/ad-placement/Creatives.vue","frontend/src/views/ad-placement/Index.vue","frontend/src/views/ad-placement/RoiAnalysis.vue","frontend/src/views/alliance-agreements/Index.vue","frontend/src/views/alliance-campaigns/Index.vue","frontend/src/views/alliance-coupons/Index.vue","frontend/src/views/alliance-packages/Index.vue","frontend/src/views/alliance-partners/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/analytics/roi/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Form.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/attribution/Index.vue","frontend/src/views/auth/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-analytics/Index.vue","frontend/src/views/campaign-library/Index.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaign-tools/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/ToolConfigDialog.vue","frontend/src/views/campaigns/wizard/Step3Tools.vue","frontend/src/views/campaigns/wizard/Step4BasicInfo.vue","frontend/src/views/campaigns/wizard/Step7Review.vue","frontend/src/views/campaigns/wizard/components/ToolConfigForms.vue","frontend/src/views/channel-analytics/Index.vue","frontend/src/views/community-bots/Index.vue","frontend/src/views/community-fission/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/community-tasks/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Detail.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/contracts/Form.vue","frontend/src/views/conversion-paths/Index.vue","frontend/src/views/cost-allocation/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Detail.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Form.vue","frontend/src/views/departments/Detail.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Alerts.vue","frontend/src/views/devices/Form.vue","frontend/src/views/diagnosis/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-templates/Form.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/geo-pois/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-inventory/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-platforms/Index.vue","frontend/src/views/groupbuy-pricing/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-promotions/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/hr/attendance/components/AttendanceTab.vue","frontend/src/views/hr/attendance/components/HolidaysTab.vue","frontend/src/views/hr/attendance/components/LeavesTab.vue","frontend/src/views/hr/attendance/components/OvertimeTab.vue","frontend/src/views/hr/attendance/components/ShiftsTab.vue","frontend/src/views/hr/training/components/CertificatesTab.vue","frontend/src/views/hr/training/components/CompetencyTab.vue","frontend/src/views/hr/training/components/CoursesTab.vue","frontend/src/views/hr/training/components/ExamsTab.vue","frontend/src/views/hr/training/components/PlansTab.vue","frontend/src/views/hr/training/components/SessionsTab.vue","frontend/src/views/inventory/Counts.vue","frontend/src/views/inventory/Index.vue","frontend/src/views/inventory/Snapshots.vue","frontend/src/views/journey-orchestration/Form.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/lead-assignment/Form.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/lead-qualification/Form.vue","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/Index.vue","frontend/src/views/livestream-gifts/Index.vue","frontend/src/views/livestream-groupbuy-conversion/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/maintenance/Index.vue","frontend/src/views/maintenance/TaskDetail.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Detail.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/marketing/budget-alerts/Index.vue","frontend/src/views/mdm/Index.vue","frontend/src/views/member-benefits/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/menus/Index.vue","frontend/src/views/notification-configs/Index.vue","frontend/src/views/notifications/Index.vue","frontend/src/views/omnichannel-dashboard/Index.vue","frontend/src/views/omnichannel-data-hub/Index.vue","frontend/src/views/opportunities/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/orders/Index.vue","frontend/src/views/org-chart/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/predictive-analytics/Form.vue","frontend/src/views/process-designer/Designer.vue","frontend/src/views/product-analytics/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/qr-codes/Index.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/realtime-trigger/Form.vue","frontend/src/views/renewal-tasks/Index.vue","frontend/src/views/rfm-analysis/Detail.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/scheduled-jobs/Index.vue","frontend/src/views/segments/Index.vue","frontend/src/views/service-monitor/Index.vue","frontend/src/views/settings/Index.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-matrix/Index.vue","frontend/src/views/social-posts/Detail.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/spare-parts/components/TransactionHistory.vue","frontend/src/views/stage-knowledge/Index.vue","frontend/src/views/store-configs/Index.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/suppliers/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/system-monitor/Index.vue","frontend/src/views/system/AuditLogs.vue","frontend/src/views/tenant-configs/Index.vue","frontend/src/views/tickets/Form.vue","frontend/src/views/tickets/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-publishing/Index.vue","frontend/src/views/web-tracking/Index.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/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":1956552,"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":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-03-24T09:45:16+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
|
1774320341
|
1774320342
|
0
|
1774320340
|
1774320342
|
|
|
0
|
Edit
Delete
|
|
7663
|
feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理...
|
6
|
5
|
health-check.yml
|
7588
|
-2
|
130
|
refs/heads/main
|
dbf34b08bbb60650d15b0c55262dbfe8d0a3a655
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"8c39619c9cdb0d888d10942bf50533c8238021df","after":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/8c39619c9cdb0d888d10942bf50533c8238021df...dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","commits":[{"id":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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-24T10:14:13+08:00","added":["backend/src/shared/constants/events/common.ts","backend/src/shared/constants/events/finance.ts","backend/src/shared/constants/events/hr.ts","backend/src/shared/constants/events/im.ts","backend/src/shared/constants/events/index.ts","backend/src/shared/constants/events/knowledge.ts","backend/src/shared/constants/events/lifecycle.ts","backend/src/shared/constants/events/marketing.ts","backend/src/shared/constants/events/sales.ts","backend/src/shared/constants/events/service.ts","backend/src/shared/constants/events/store.ts","backend/src/shared/constants/events/supply_chain.ts","backend/src/shared/constants/events/system.ts","backend/src/shared/services/list-cache.service.ts","backend/src/shared/utils/cache-utils.ts"],"removed":[],"modified":["backend/src/consumers/attribution.consumer.ts","backend/src/consumers/campaign-effectiveness.consumer.ts","backend/src/consumers/marketing-workflow-executor.consumer.ts","backend/src/consumers/scheduled-jobs.consumer.ts","backend/src/modules/ai-agents/services/knowledge-vector-enhanced.service.ts","backend/src/modules/alliance-settlements/alliance-settlement.service.test.ts","backend/src/modules/campaign-analytics/campaign-analytics.controller.ts","backend/src/modules/contract-templates/contract-template.service.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.service.test.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/leads/lead-ai-scoring.service.ts","backend/src/modules/leads/lead-sla.service.ts","backend/src/modules/leads/lead-smart-assignment.service.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-interactions/livestream-realtime.service.ts","backend/src/modules/marketing-automation/workflow-trigger.service.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.controller.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.routes.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.service.ts","backend/src/modules/notifications/notification.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/payments/payment.service.test.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/segments/segment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-interactions/social-interactions.service.ts","backend/src/modules/store-staff/store-staff.service.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/shared/constants/events.ts","backend/src/shared/services/partition-maintenance.service.ts","backend/src/shared/state-machines/machines/contract.machine.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/types.ts","backend/src/shared/state-machines/utils/transitions/sales.transitions.ts","backend/src/shared/utils/biz-code.ts","frontend/src/api/adapters.ts","frontend/src/api/im-binding.ts","frontend/src/api/modules/ad-accounts.ts","frontend/src/api/modules/ad-audiences.ts","frontend/src/api/modules/ad-creatives.ts","frontend/src/api/modules/ad-placement.ts","frontend/src/api/modules/ad-reports.ts","frontend/src/api/modules/agent-group.ts","frontend/src/api/modules/ai-agent.ts","frontend/src/api/modules/alliance-analytics.ts","frontend/src/api/modules/alliance-merchants.ts","frontend/src/api/modules/alliance-products.ts","frontend/src/api/modules/alliance-promotions.ts","frontend/src/api/modules/alliance-referrals.ts","frontend/src/api/modules/analytics.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/assets.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/audit-logs.ts","frontend/src/api/modules/campaign-drafts.ts","frontend/src/api/modules/campaign-library.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/campaign-tools.ts","frontend/src/api/modules/campaign-use-case-templates.ts","frontend/src/api/modules/campaign-wizard.ts","frontend/src/api/modules/campaigns.ts","frontend/src/api/modules/cohort-analysis.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-activities.ts","frontend/src/api/modules/community-analytics.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-groups.ts","frontend/src/api/modules/community-levels.ts","frontend/src/api/modules/community-members.ts","frontend/src/api/modules/community-messages.ts","frontend/src/api/modules/community-points.ts","frontend/src/api/modules/consumer-behavior-analytics.ts","frontend/src/api/modules/content-categories.ts","frontend/src/api/modules/content-copyright.ts","frontend/src/api/modules/content-creation.ts","frontend/src/api/modules/content-distribution.ts","frontend/src/api/modules/content-library.ts","frontend/src/api/modules/content-templates.ts","frontend/src/api/modules/contract-templates.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/cross-domain-funnel.ts","frontend/src/api/modules/customer-analytics.ts","frontend/src/api/modules/customer-health.ts","frontend/src/api/modules/customer-journey.ts","frontend/src/api/modules/customer-ltv.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customer-segmentation.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/dictionaries.ts","frontend/src/api/modules/dimension-transform.ts","frontend/src/api/modules/email-marketing.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/event-logs.ts","frontend/src/api/modules/events.ts","frontend/src/api/modules/expense.ts","frontend/src/api/modules/financial-reports.ts","frontend/src/api/modules/fulfillment.ts","frontend/src/api/modules/geo-fences.ts","frontend/src/api/modules/geo-pois.ts","frontend/src/api/modules/groupbuy-analytics.ts","frontend/src/api/modules/groupbuy-campaigns.ts","frontend/src/api/modules/groupbuy-platforms.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-products.ts","frontend/src/api/modules/groupbuy-settlements.ts","frontend/src/api/modules/hr-benefits.ts","frontend/src/api/modules/hr-payroll.ts","frontend/src/api/modules/im-channels.ts","frontend/src/api/modules/im.ts","frontend/src/api/modules/integration-services.ts","frontend/src/api/modules/intent-analyzer.ts","frontend/src/api/modules/journey-orchestration.ts","frontend/src/api/modules/knowledge-candidates.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-groupbuy-conversion.ts","frontend/src/api/modules/livestream-groupbuy.ts","frontend/src/api/modules/livestream-interactions.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/location-assessments.ts","frontend/src/api/modules/login-logs.ts","frontend/src/api/modules/maintenance.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-calendar.ts","frontend/src/api/modules/marketing-chatbot.ts","frontend/src/api/modules/marketing-content.ts","frontend/src/api/modules/marketing-forms.ts","frontend/src/api/modules/marketing-matrix.ts","frontend/src/api/modules/marketing-north-star.ts","frontend/src/api/modules/marketing-timeslots.ts","frontend/src/api/modules/marketing.ts","frontend/src/api/modules/omnichannel-dashboard.ts","frontend/src/api/modules/omnichannel-data-hub.ts","frontend/src/api/modules/omnichannel-touchpoints.ts","frontend/src/api/modules/operation-logs.ts","frontend/src/api/modules/opportunities.ts","frontend/src/api/modules/predictive-analytics.ts","frontend/src/api/modules/process-designer.ts","frontend/src/api/modules/process.ts","frontend/src/api/modules/products.ts","frontend/src/api/modules/realtime-trigger.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/resource-requests.ts","frontend/src/api/modules/revenue.ts","frontend/src/api/modules/rfm-analysis.ts","frontend/src/api/modules/rma.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/scheduled-jobs.ts","frontend/src/api/modules/search.ts","frontend/src/api/modules/segments.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/api/modules/sms-marketing.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/api/modules/social-auto-replies.ts","frontend/src/api/modules/social-competitors.ts","frontend/src/api/modules/social-hot-topics.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/spare-parts.ts","frontend/src/api/modules/store-performance.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supplier-management.ts","frontend/src/api/modules/swot-analyses.ts","frontend/src/api/modules/system-events.ts","frontend/src/api/modules/ticket-workflows.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/tob-toc-gateway.ts","frontend/src/api/modules/unified-campaign.ts","frontend/src/api/modules/web-tracking.ts","frontend/src/api/modules/workflow-generator.ts","frontend/src/api/response-normalizer.ts","frontend/src/components/business/ActivityTimeline.vue","frontend/src/components/business/EventStreamPanel.vue","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/DataTable.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/mobile/MobileFilter.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/types/ai-agent.ts","frontend/src/utils/echarts.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/abm-marketing/Index.vue","frontend/src/views/acquisition/Index.vue","frontend/src/views/ad-accounts/Form.vue","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-analytics/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-placement/ABTests.vue","frontend/src/views/ad-placement/AudiencePacks.vue","frontend/src/views/ad-placement/BudgetAlerts.vue","frontend/src/views/ad-placement/Creatives.vue","frontend/src/views/ad-placement/Index.vue","frontend/src/views/ad-placement/RoiAnalysis.vue","frontend/src/views/alliance-agreements/Index.vue","frontend/src/views/alliance-campaigns/Index.vue","frontend/src/views/alliance-coupons/Index.vue","frontend/src/views/alliance-packages/Index.vue","frontend/src/views/alliance-partners/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/analytics/roi/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Form.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/attribution/Index.vue","frontend/src/views/auth/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-analytics/Index.vue","frontend/src/views/campaign-library/Index.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaign-tools/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/ToolConfigDialog.vue","frontend/src/views/campaigns/wizard/Step3Tools.vue","frontend/src/views/campaigns/wizard/Step4BasicInfo.vue","frontend/src/views/campaigns/wizard/Step7Review.vue","frontend/src/views/campaigns/wizard/components/ToolConfigForms.vue","frontend/src/views/channel-analytics/Index.vue","frontend/src/views/community-bots/Index.vue","frontend/src/views/community-fission/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/community-tasks/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Detail.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/contracts/Form.vue","frontend/src/views/conversion-paths/Index.vue","frontend/src/views/cost-allocation/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Detail.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Form.vue","frontend/src/views/departments/Detail.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Alerts.vue","frontend/src/views/devices/Form.vue","frontend/src/views/diagnosis/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-templates/Form.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/geo-pois/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-inventory/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-platforms/Index.vue","frontend/src/views/groupbuy-pricing/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-promotions/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/hr/attendance/components/AttendanceTab.vue","frontend/src/views/hr/attendance/components/HolidaysTab.vue","frontend/src/views/hr/attendance/components/LeavesTab.vue","frontend/src/views/hr/attendance/components/OvertimeTab.vue","frontend/src/views/hr/attendance/components/ShiftsTab.vue","frontend/src/views/hr/training/components/CertificatesTab.vue","frontend/src/views/hr/training/components/CompetencyTab.vue","frontend/src/views/hr/training/components/CoursesTab.vue","frontend/src/views/hr/training/components/ExamsTab.vue","frontend/src/views/hr/training/components/PlansTab.vue","frontend/src/views/hr/training/components/SessionsTab.vue","frontend/src/views/inventory/Counts.vue","frontend/src/views/inventory/Index.vue","frontend/src/views/inventory/Snapshots.vue","frontend/src/views/journey-orchestration/Form.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/lead-assignment/Form.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/lead-qualification/Form.vue","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/Index.vue","frontend/src/views/livestream-gifts/Index.vue","frontend/src/views/livestream-groupbuy-conversion/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/maintenance/Index.vue","frontend/src/views/maintenance/TaskDetail.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Detail.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/marketing/budget-alerts/Index.vue","frontend/src/views/mdm/Index.vue","frontend/src/views/member-benefits/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/menus/Index.vue","frontend/src/views/notification-configs/Index.vue","frontend/src/views/notifications/Index.vue","frontend/src/views/omnichannel-dashboard/Index.vue","frontend/src/views/omnichannel-data-hub/Index.vue","frontend/src/views/opportunities/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/orders/Index.vue","frontend/src/views/org-chart/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/predictive-analytics/Form.vue","frontend/src/views/process-designer/Designer.vue","frontend/src/views/product-analytics/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/qr-codes/Index.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/realtime-trigger/Form.vue","frontend/src/views/renewal-tasks/Index.vue","frontend/src/views/rfm-analysis/Detail.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/scheduled-jobs/Index.vue","frontend/src/views/segments/Index.vue","frontend/src/views/service-monitor/Index.vue","frontend/src/views/settings/Index.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-matrix/Index.vue","frontend/src/views/social-posts/Detail.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/spare-parts/components/TransactionHistory.vue","frontend/src/views/stage-knowledge/Index.vue","frontend/src/views/store-configs/Index.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/suppliers/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/system-monitor/Index.vue","frontend/src/views/system/AuditLogs.vue","frontend/src/views/tenant-configs/Index.vue","frontend/src/views/tickets/Form.vue","frontend/src/views/tickets/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-publishing/Index.vue","frontend/src/views/web-tracking/Index.vue"]}],"total_commits":0,"head_commit":{"id":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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-24T10:14:13+08:00","added":["backend/src/shared/constants/events/common.ts","backend/src/shared/constants/events/finance.ts","backend/src/shared/constants/events/hr.ts","backend/src/shared/constants/events/im.ts","backend/src/shared/constants/events/index.ts","backend/src/shared/constants/events/knowledge.ts","backend/src/shared/constants/events/lifecycle.ts","backend/src/shared/constants/events/marketing.ts","backend/src/shared/constants/events/sales.ts","backend/src/shared/constants/events/service.ts","backend/src/shared/constants/events/store.ts","backend/src/shared/constants/events/supply_chain.ts","backend/src/shared/constants/events/system.ts","backend/src/shared/services/list-cache.service.ts","backend/src/shared/utils/cache-utils.ts"],"removed":[],"modified":["backend/src/consumers/attribution.consumer.ts","backend/src/consumers/campaign-effectiveness.consumer.ts","backend/src/consumers/marketing-workflow-executor.consumer.ts","backend/src/consumers/scheduled-jobs.consumer.ts","backend/src/modules/ai-agents/services/knowledge-vector-enhanced.service.ts","backend/src/modules/alliance-settlements/alliance-settlement.service.test.ts","backend/src/modules/campaign-analytics/campaign-analytics.controller.ts","backend/src/modules/contract-templates/contract-template.service.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.service.test.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/leads/lead-ai-scoring.service.ts","backend/src/modules/leads/lead-sla.service.ts","backend/src/modules/leads/lead-smart-assignment.service.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-interactions/livestream-realtime.service.ts","backend/src/modules/marketing-automation/workflow-trigger.service.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.controller.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.routes.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.service.ts","backend/src/modules/notifications/notification.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/payments/payment.service.test.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/segments/segment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-interactions/social-interactions.service.ts","backend/src/modules/store-staff/store-staff.service.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/shared/constants/events.ts","backend/src/shared/services/partition-maintenance.service.ts","backend/src/shared/state-machines/machines/contract.machine.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/types.ts","backend/src/shared/state-machines/utils/transitions/sales.transitions.ts","backend/src/shared/utils/biz-code.ts","frontend/src/api/adapters.ts","frontend/src/api/im-binding.ts","frontend/src/api/modules/ad-accounts.ts","frontend/src/api/modules/ad-audiences.ts","frontend/src/api/modules/ad-creatives.ts","frontend/src/api/modules/ad-placement.ts","frontend/src/api/modules/ad-reports.ts","frontend/src/api/modules/agent-group.ts","frontend/src/api/modules/ai-agent.ts","frontend/src/api/modules/alliance-analytics.ts","frontend/src/api/modules/alliance-merchants.ts","frontend/src/api/modules/alliance-products.ts","frontend/src/api/modules/alliance-promotions.ts","frontend/src/api/modules/alliance-referrals.ts","frontend/src/api/modules/analytics.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/assets.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/audit-logs.ts","frontend/src/api/modules/campaign-drafts.ts","frontend/src/api/modules/campaign-library.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/campaign-tools.ts","frontend/src/api/modules/campaign-use-case-templates.ts","frontend/src/api/modules/campaign-wizard.ts","frontend/src/api/modules/campaigns.ts","frontend/src/api/modules/cohort-analysis.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-activities.ts","frontend/src/api/modules/community-analytics.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-groups.ts","frontend/src/api/modules/community-levels.ts","frontend/src/api/modules/community-members.ts","frontend/src/api/modules/community-messages.ts","frontend/src/api/modules/community-points.ts","frontend/src/api/modules/consumer-behavior-analytics.ts","frontend/src/api/modules/content-categories.ts","frontend/src/api/modules/content-copyright.ts","frontend/src/api/modules/content-creation.ts","frontend/src/api/modules/content-distribution.ts","frontend/src/api/modules/content-library.ts","frontend/src/api/modules/content-templates.ts","frontend/src/api/modules/contract-templates.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/cross-domain-funnel.ts","frontend/src/api/modules/customer-analytics.ts","frontend/src/api/modules/customer-health.ts","frontend/src/api/modules/customer-journey.ts","frontend/src/api/modules/customer-ltv.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customer-segmentation.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/dictionaries.ts","frontend/src/api/modules/dimension-transform.ts","frontend/src/api/modules/email-marketing.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/event-logs.ts","frontend/src/api/modules/events.ts","frontend/src/api/modules/expense.ts","frontend/src/api/modules/financial-reports.ts","frontend/src/api/modules/fulfillment.ts","frontend/src/api/modules/geo-fences.ts","frontend/src/api/modules/geo-pois.ts","frontend/src/api/modules/groupbuy-analytics.ts","frontend/src/api/modules/groupbuy-campaigns.ts","frontend/src/api/modules/groupbuy-platforms.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-products.ts","frontend/src/api/modules/groupbuy-settlements.ts","frontend/src/api/modules/hr-benefits.ts","frontend/src/api/modules/hr-payroll.ts","frontend/src/api/modules/im-channels.ts","frontend/src/api/modules/im.ts","frontend/src/api/modules/integration-services.ts","frontend/src/api/modules/intent-analyzer.ts","frontend/src/api/modules/journey-orchestration.ts","frontend/src/api/modules/knowledge-candidates.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-groupbuy-conversion.ts","frontend/src/api/modules/livestream-groupbuy.ts","frontend/src/api/modules/livestream-interactions.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/location-assessments.ts","frontend/src/api/modules/login-logs.ts","frontend/src/api/modules/maintenance.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-calendar.ts","frontend/src/api/modules/marketing-chatbot.ts","frontend/src/api/modules/marketing-content.ts","frontend/src/api/modules/marketing-forms.ts","frontend/src/api/modules/marketing-matrix.ts","frontend/src/api/modules/marketing-north-star.ts","frontend/src/api/modules/marketing-timeslots.ts","frontend/src/api/modules/marketing.ts","frontend/src/api/modules/omnichannel-dashboard.ts","frontend/src/api/modules/omnichannel-data-hub.ts","frontend/src/api/modules/omnichannel-touchpoints.ts","frontend/src/api/modules/operation-logs.ts","frontend/src/api/modules/opportunities.ts","frontend/src/api/modules/predictive-analytics.ts","frontend/src/api/modules/process-designer.ts","frontend/src/api/modules/process.ts","frontend/src/api/modules/products.ts","frontend/src/api/modules/realtime-trigger.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/resource-requests.ts","frontend/src/api/modules/revenue.ts","frontend/src/api/modules/rfm-analysis.ts","frontend/src/api/modules/rma.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/scheduled-jobs.ts","frontend/src/api/modules/search.ts","frontend/src/api/modules/segments.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/api/modules/sms-marketing.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/api/modules/social-auto-replies.ts","frontend/src/api/modules/social-competitors.ts","frontend/src/api/modules/social-hot-topics.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/spare-parts.ts","frontend/src/api/modules/store-performance.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supplier-management.ts","frontend/src/api/modules/swot-analyses.ts","frontend/src/api/modules/system-events.ts","frontend/src/api/modules/ticket-workflows.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/tob-toc-gateway.ts","frontend/src/api/modules/unified-campaign.ts","frontend/src/api/modules/web-tracking.ts","frontend/src/api/modules/workflow-generator.ts","frontend/src/api/response-normalizer.ts","frontend/src/components/business/ActivityTimeline.vue","frontend/src/components/business/EventStreamPanel.vue","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/DataTable.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/mobile/MobileFilter.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/types/ai-agent.ts","frontend/src/utils/echarts.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/abm-marketing/Index.vue","frontend/src/views/acquisition/Index.vue","frontend/src/views/ad-accounts/Form.vue","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-analytics/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-placement/ABTests.vue","frontend/src/views/ad-placement/AudiencePacks.vue","frontend/src/views/ad-placement/BudgetAlerts.vue","frontend/src/views/ad-placement/Creatives.vue","frontend/src/views/ad-placement/Index.vue","frontend/src/views/ad-placement/RoiAnalysis.vue","frontend/src/views/alliance-agreements/Index.vue","frontend/src/views/alliance-campaigns/Index.vue","frontend/src/views/alliance-coupons/Index.vue","frontend/src/views/alliance-packages/Index.vue","frontend/src/views/alliance-partners/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/analytics/roi/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Form.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/attribution/Index.vue","frontend/src/views/auth/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-analytics/Index.vue","frontend/src/views/campaign-library/Index.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaign-tools/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/ToolConfigDialog.vue","frontend/src/views/campaigns/wizard/Step3Tools.vue","frontend/src/views/campaigns/wizard/Step4BasicInfo.vue","frontend/src/views/campaigns/wizard/Step7Review.vue","frontend/src/views/campaigns/wizard/components/ToolConfigForms.vue","frontend/src/views/channel-analytics/Index.vue","frontend/src/views/community-bots/Index.vue","frontend/src/views/community-fission/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/community-tasks/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Detail.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/contracts/Form.vue","frontend/src/views/conversion-paths/Index.vue","frontend/src/views/cost-allocation/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Detail.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Form.vue","frontend/src/views/departments/Detail.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Alerts.vue","frontend/src/views/devices/Form.vue","frontend/src/views/diagnosis/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-templates/Form.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/geo-pois/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-inventory/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-platforms/Index.vue","frontend/src/views/groupbuy-pricing/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-promotions/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/hr/attendance/components/AttendanceTab.vue","frontend/src/views/hr/attendance/components/HolidaysTab.vue","frontend/src/views/hr/attendance/components/LeavesTab.vue","frontend/src/views/hr/attendance/components/OvertimeTab.vue","frontend/src/views/hr/attendance/components/ShiftsTab.vue","frontend/src/views/hr/training/components/CertificatesTab.vue","frontend/src/views/hr/training/components/CompetencyTab.vue","frontend/src/views/hr/training/components/CoursesTab.vue","frontend/src/views/hr/training/components/ExamsTab.vue","frontend/src/views/hr/training/components/PlansTab.vue","frontend/src/views/hr/training/components/SessionsTab.vue","frontend/src/views/inventory/Counts.vue","frontend/src/views/inventory/Index.vue","frontend/src/views/inventory/Snapshots.vue","frontend/src/views/journey-orchestration/Form.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/lead-assignment/Form.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/lead-qualification/Form.vue","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/Index.vue","frontend/src/views/livestream-gifts/Index.vue","frontend/src/views/livestream-groupbuy-conversion/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/maintenance/Index.vue","frontend/src/views/maintenance/TaskDetail.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Detail.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/marketing/budget-alerts/Index.vue","frontend/src/views/mdm/Index.vue","frontend/src/views/member-benefits/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/menus/Index.vue","frontend/src/views/notification-configs/Index.vue","frontend/src/views/notifications/Index.vue","frontend/src/views/omnichannel-dashboard/Index.vue","frontend/src/views/omnichannel-data-hub/Index.vue","frontend/src/views/opportunities/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/orders/Index.vue","frontend/src/views/org-chart/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/predictive-analytics/Form.vue","frontend/src/views/process-designer/Designer.vue","frontend/src/views/product-analytics/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/qr-codes/Index.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/realtime-trigger/Form.vue","frontend/src/views/renewal-tasks/Index.vue","frontend/src/views/rfm-analysis/Detail.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/scheduled-jobs/Index.vue","frontend/src/views/segments/Index.vue","frontend/src/views/service-monitor/Index.vue","frontend/src/views/settings/Index.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-matrix/Index.vue","frontend/src/views/social-posts/Detail.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/spare-parts/components/TransactionHistory.vue","frontend/src/views/stage-knowledge/Index.vue","frontend/src/views/store-configs/Index.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/suppliers/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/system-monitor/Index.vue","frontend/src/views/system/AuditLogs.vue","frontend/src/views/tenant-configs/Index.vue","frontend/src/views/tickets/Form.vue","frontend/src/views/tickets/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-publishing/Index.vue","frontend/src/views/web-tracking/Index.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/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":1956552,"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":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-03-24T09:45:16+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
|
1774320641
|
1774320642
|
0
|
1774320640
|
1774320642
|
|
|
0
|
Edit
Delete
|
|
7664
|
feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理...
|
6
|
5
|
health-check.yml
|
7589
|
-2
|
130
|
refs/heads/main
|
dbf34b08bbb60650d15b0c55262dbfe8d0a3a655
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"8c39619c9cdb0d888d10942bf50533c8238021df","after":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/8c39619c9cdb0d888d10942bf50533c8238021df...dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","commits":[{"id":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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-24T10:14:13+08:00","added":["backend/src/shared/constants/events/common.ts","backend/src/shared/constants/events/finance.ts","backend/src/shared/constants/events/hr.ts","backend/src/shared/constants/events/im.ts","backend/src/shared/constants/events/index.ts","backend/src/shared/constants/events/knowledge.ts","backend/src/shared/constants/events/lifecycle.ts","backend/src/shared/constants/events/marketing.ts","backend/src/shared/constants/events/sales.ts","backend/src/shared/constants/events/service.ts","backend/src/shared/constants/events/store.ts","backend/src/shared/constants/events/supply_chain.ts","backend/src/shared/constants/events/system.ts","backend/src/shared/services/list-cache.service.ts","backend/src/shared/utils/cache-utils.ts"],"removed":[],"modified":["backend/src/consumers/attribution.consumer.ts","backend/src/consumers/campaign-effectiveness.consumer.ts","backend/src/consumers/marketing-workflow-executor.consumer.ts","backend/src/consumers/scheduled-jobs.consumer.ts","backend/src/modules/ai-agents/services/knowledge-vector-enhanced.service.ts","backend/src/modules/alliance-settlements/alliance-settlement.service.test.ts","backend/src/modules/campaign-analytics/campaign-analytics.controller.ts","backend/src/modules/contract-templates/contract-template.service.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.service.test.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/leads/lead-ai-scoring.service.ts","backend/src/modules/leads/lead-sla.service.ts","backend/src/modules/leads/lead-smart-assignment.service.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-interactions/livestream-realtime.service.ts","backend/src/modules/marketing-automation/workflow-trigger.service.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.controller.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.routes.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.service.ts","backend/src/modules/notifications/notification.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/payments/payment.service.test.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/segments/segment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-interactions/social-interactions.service.ts","backend/src/modules/store-staff/store-staff.service.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/shared/constants/events.ts","backend/src/shared/services/partition-maintenance.service.ts","backend/src/shared/state-machines/machines/contract.machine.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/types.ts","backend/src/shared/state-machines/utils/transitions/sales.transitions.ts","backend/src/shared/utils/biz-code.ts","frontend/src/api/adapters.ts","frontend/src/api/im-binding.ts","frontend/src/api/modules/ad-accounts.ts","frontend/src/api/modules/ad-audiences.ts","frontend/src/api/modules/ad-creatives.ts","frontend/src/api/modules/ad-placement.ts","frontend/src/api/modules/ad-reports.ts","frontend/src/api/modules/agent-group.ts","frontend/src/api/modules/ai-agent.ts","frontend/src/api/modules/alliance-analytics.ts","frontend/src/api/modules/alliance-merchants.ts","frontend/src/api/modules/alliance-products.ts","frontend/src/api/modules/alliance-promotions.ts","frontend/src/api/modules/alliance-referrals.ts","frontend/src/api/modules/analytics.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/assets.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/audit-logs.ts","frontend/src/api/modules/campaign-drafts.ts","frontend/src/api/modules/campaign-library.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/campaign-tools.ts","frontend/src/api/modules/campaign-use-case-templates.ts","frontend/src/api/modules/campaign-wizard.ts","frontend/src/api/modules/campaigns.ts","frontend/src/api/modules/cohort-analysis.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-activities.ts","frontend/src/api/modules/community-analytics.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-groups.ts","frontend/src/api/modules/community-levels.ts","frontend/src/api/modules/community-members.ts","frontend/src/api/modules/community-messages.ts","frontend/src/api/modules/community-points.ts","frontend/src/api/modules/consumer-behavior-analytics.ts","frontend/src/api/modules/content-categories.ts","frontend/src/api/modules/content-copyright.ts","frontend/src/api/modules/content-creation.ts","frontend/src/api/modules/content-distribution.ts","frontend/src/api/modules/content-library.ts","frontend/src/api/modules/content-templates.ts","frontend/src/api/modules/contract-templates.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/cross-domain-funnel.ts","frontend/src/api/modules/customer-analytics.ts","frontend/src/api/modules/customer-health.ts","frontend/src/api/modules/customer-journey.ts","frontend/src/api/modules/customer-ltv.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customer-segmentation.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/dictionaries.ts","frontend/src/api/modules/dimension-transform.ts","frontend/src/api/modules/email-marketing.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/event-logs.ts","frontend/src/api/modules/events.ts","frontend/src/api/modules/expense.ts","frontend/src/api/modules/financial-reports.ts","frontend/src/api/modules/fulfillment.ts","frontend/src/api/modules/geo-fences.ts","frontend/src/api/modules/geo-pois.ts","frontend/src/api/modules/groupbuy-analytics.ts","frontend/src/api/modules/groupbuy-campaigns.ts","frontend/src/api/modules/groupbuy-platforms.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-products.ts","frontend/src/api/modules/groupbuy-settlements.ts","frontend/src/api/modules/hr-benefits.ts","frontend/src/api/modules/hr-payroll.ts","frontend/src/api/modules/im-channels.ts","frontend/src/api/modules/im.ts","frontend/src/api/modules/integration-services.ts","frontend/src/api/modules/intent-analyzer.ts","frontend/src/api/modules/journey-orchestration.ts","frontend/src/api/modules/knowledge-candidates.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-groupbuy-conversion.ts","frontend/src/api/modules/livestream-groupbuy.ts","frontend/src/api/modules/livestream-interactions.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/location-assessments.ts","frontend/src/api/modules/login-logs.ts","frontend/src/api/modules/maintenance.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-calendar.ts","frontend/src/api/modules/marketing-chatbot.ts","frontend/src/api/modules/marketing-content.ts","frontend/src/api/modules/marketing-forms.ts","frontend/src/api/modules/marketing-matrix.ts","frontend/src/api/modules/marketing-north-star.ts","frontend/src/api/modules/marketing-timeslots.ts","frontend/src/api/modules/marketing.ts","frontend/src/api/modules/omnichannel-dashboard.ts","frontend/src/api/modules/omnichannel-data-hub.ts","frontend/src/api/modules/omnichannel-touchpoints.ts","frontend/src/api/modules/operation-logs.ts","frontend/src/api/modules/opportunities.ts","frontend/src/api/modules/predictive-analytics.ts","frontend/src/api/modules/process-designer.ts","frontend/src/api/modules/process.ts","frontend/src/api/modules/products.ts","frontend/src/api/modules/realtime-trigger.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/resource-requests.ts","frontend/src/api/modules/revenue.ts","frontend/src/api/modules/rfm-analysis.ts","frontend/src/api/modules/rma.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/scheduled-jobs.ts","frontend/src/api/modules/search.ts","frontend/src/api/modules/segments.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/api/modules/sms-marketing.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/api/modules/social-auto-replies.ts","frontend/src/api/modules/social-competitors.ts","frontend/src/api/modules/social-hot-topics.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/spare-parts.ts","frontend/src/api/modules/store-performance.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supplier-management.ts","frontend/src/api/modules/swot-analyses.ts","frontend/src/api/modules/system-events.ts","frontend/src/api/modules/ticket-workflows.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/tob-toc-gateway.ts","frontend/src/api/modules/unified-campaign.ts","frontend/src/api/modules/web-tracking.ts","frontend/src/api/modules/workflow-generator.ts","frontend/src/api/response-normalizer.ts","frontend/src/components/business/ActivityTimeline.vue","frontend/src/components/business/EventStreamPanel.vue","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/DataTable.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/mobile/MobileFilter.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/types/ai-agent.ts","frontend/src/utils/echarts.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/abm-marketing/Index.vue","frontend/src/views/acquisition/Index.vue","frontend/src/views/ad-accounts/Form.vue","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-analytics/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-placement/ABTests.vue","frontend/src/views/ad-placement/AudiencePacks.vue","frontend/src/views/ad-placement/BudgetAlerts.vue","frontend/src/views/ad-placement/Creatives.vue","frontend/src/views/ad-placement/Index.vue","frontend/src/views/ad-placement/RoiAnalysis.vue","frontend/src/views/alliance-agreements/Index.vue","frontend/src/views/alliance-campaigns/Index.vue","frontend/src/views/alliance-coupons/Index.vue","frontend/src/views/alliance-packages/Index.vue","frontend/src/views/alliance-partners/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/analytics/roi/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Form.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/attribution/Index.vue","frontend/src/views/auth/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-analytics/Index.vue","frontend/src/views/campaign-library/Index.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaign-tools/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/ToolConfigDialog.vue","frontend/src/views/campaigns/wizard/Step3Tools.vue","frontend/src/views/campaigns/wizard/Step4BasicInfo.vue","frontend/src/views/campaigns/wizard/Step7Review.vue","frontend/src/views/campaigns/wizard/components/ToolConfigForms.vue","frontend/src/views/channel-analytics/Index.vue","frontend/src/views/community-bots/Index.vue","frontend/src/views/community-fission/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/community-tasks/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Detail.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/contracts/Form.vue","frontend/src/views/conversion-paths/Index.vue","frontend/src/views/cost-allocation/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Detail.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Form.vue","frontend/src/views/departments/Detail.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Alerts.vue","frontend/src/views/devices/Form.vue","frontend/src/views/diagnosis/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-templates/Form.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/geo-pois/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-inventory/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-platforms/Index.vue","frontend/src/views/groupbuy-pricing/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-promotions/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/hr/attendance/components/AttendanceTab.vue","frontend/src/views/hr/attendance/components/HolidaysTab.vue","frontend/src/views/hr/attendance/components/LeavesTab.vue","frontend/src/views/hr/attendance/components/OvertimeTab.vue","frontend/src/views/hr/attendance/components/ShiftsTab.vue","frontend/src/views/hr/training/components/CertificatesTab.vue","frontend/src/views/hr/training/components/CompetencyTab.vue","frontend/src/views/hr/training/components/CoursesTab.vue","frontend/src/views/hr/training/components/ExamsTab.vue","frontend/src/views/hr/training/components/PlansTab.vue","frontend/src/views/hr/training/components/SessionsTab.vue","frontend/src/views/inventory/Counts.vue","frontend/src/views/inventory/Index.vue","frontend/src/views/inventory/Snapshots.vue","frontend/src/views/journey-orchestration/Form.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/lead-assignment/Form.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/lead-qualification/Form.vue","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/Index.vue","frontend/src/views/livestream-gifts/Index.vue","frontend/src/views/livestream-groupbuy-conversion/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/maintenance/Index.vue","frontend/src/views/maintenance/TaskDetail.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Detail.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/marketing/budget-alerts/Index.vue","frontend/src/views/mdm/Index.vue","frontend/src/views/member-benefits/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/menus/Index.vue","frontend/src/views/notification-configs/Index.vue","frontend/src/views/notifications/Index.vue","frontend/src/views/omnichannel-dashboard/Index.vue","frontend/src/views/omnichannel-data-hub/Index.vue","frontend/src/views/opportunities/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/orders/Index.vue","frontend/src/views/org-chart/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/predictive-analytics/Form.vue","frontend/src/views/process-designer/Designer.vue","frontend/src/views/product-analytics/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/qr-codes/Index.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/realtime-trigger/Form.vue","frontend/src/views/renewal-tasks/Index.vue","frontend/src/views/rfm-analysis/Detail.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/scheduled-jobs/Index.vue","frontend/src/views/segments/Index.vue","frontend/src/views/service-monitor/Index.vue","frontend/src/views/settings/Index.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-matrix/Index.vue","frontend/src/views/social-posts/Detail.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/spare-parts/components/TransactionHistory.vue","frontend/src/views/stage-knowledge/Index.vue","frontend/src/views/store-configs/Index.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/suppliers/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/system-monitor/Index.vue","frontend/src/views/system/AuditLogs.vue","frontend/src/views/tenant-configs/Index.vue","frontend/src/views/tickets/Form.vue","frontend/src/views/tickets/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-publishing/Index.vue","frontend/src/views/web-tracking/Index.vue"]}],"total_commits":0,"head_commit":{"id":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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-24T10:14:13+08:00","added":["backend/src/shared/constants/events/common.ts","backend/src/shared/constants/events/finance.ts","backend/src/shared/constants/events/hr.ts","backend/src/shared/constants/events/im.ts","backend/src/shared/constants/events/index.ts","backend/src/shared/constants/events/knowledge.ts","backend/src/shared/constants/events/lifecycle.ts","backend/src/shared/constants/events/marketing.ts","backend/src/shared/constants/events/sales.ts","backend/src/shared/constants/events/service.ts","backend/src/shared/constants/events/store.ts","backend/src/shared/constants/events/supply_chain.ts","backend/src/shared/constants/events/system.ts","backend/src/shared/services/list-cache.service.ts","backend/src/shared/utils/cache-utils.ts"],"removed":[],"modified":["backend/src/consumers/attribution.consumer.ts","backend/src/consumers/campaign-effectiveness.consumer.ts","backend/src/consumers/marketing-workflow-executor.consumer.ts","backend/src/consumers/scheduled-jobs.consumer.ts","backend/src/modules/ai-agents/services/knowledge-vector-enhanced.service.ts","backend/src/modules/alliance-settlements/alliance-settlement.service.test.ts","backend/src/modules/campaign-analytics/campaign-analytics.controller.ts","backend/src/modules/contract-templates/contract-template.service.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.service.test.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/leads/lead-ai-scoring.service.ts","backend/src/modules/leads/lead-sla.service.ts","backend/src/modules/leads/lead-smart-assignment.service.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-interactions/livestream-realtime.service.ts","backend/src/modules/marketing-automation/workflow-trigger.service.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.controller.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.routes.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.service.ts","backend/src/modules/notifications/notification.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/payments/payment.service.test.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/segments/segment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-interactions/social-interactions.service.ts","backend/src/modules/store-staff/store-staff.service.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/shared/constants/events.ts","backend/src/shared/services/partition-maintenance.service.ts","backend/src/shared/state-machines/machines/contract.machine.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/types.ts","backend/src/shared/state-machines/utils/transitions/sales.transitions.ts","backend/src/shared/utils/biz-code.ts","frontend/src/api/adapters.ts","frontend/src/api/im-binding.ts","frontend/src/api/modules/ad-accounts.ts","frontend/src/api/modules/ad-audiences.ts","frontend/src/api/modules/ad-creatives.ts","frontend/src/api/modules/ad-placement.ts","frontend/src/api/modules/ad-reports.ts","frontend/src/api/modules/agent-group.ts","frontend/src/api/modules/ai-agent.ts","frontend/src/api/modules/alliance-analytics.ts","frontend/src/api/modules/alliance-merchants.ts","frontend/src/api/modules/alliance-products.ts","frontend/src/api/modules/alliance-promotions.ts","frontend/src/api/modules/alliance-referrals.ts","frontend/src/api/modules/analytics.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/assets.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/audit-logs.ts","frontend/src/api/modules/campaign-drafts.ts","frontend/src/api/modules/campaign-library.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/campaign-tools.ts","frontend/src/api/modules/campaign-use-case-templates.ts","frontend/src/api/modules/campaign-wizard.ts","frontend/src/api/modules/campaigns.ts","frontend/src/api/modules/cohort-analysis.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-activities.ts","frontend/src/api/modules/community-analytics.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-groups.ts","frontend/src/api/modules/community-levels.ts","frontend/src/api/modules/community-members.ts","frontend/src/api/modules/community-messages.ts","frontend/src/api/modules/community-points.ts","frontend/src/api/modules/consumer-behavior-analytics.ts","frontend/src/api/modules/content-categories.ts","frontend/src/api/modules/content-copyright.ts","frontend/src/api/modules/content-creation.ts","frontend/src/api/modules/content-distribution.ts","frontend/src/api/modules/content-library.ts","frontend/src/api/modules/content-templates.ts","frontend/src/api/modules/contract-templates.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/cross-domain-funnel.ts","frontend/src/api/modules/customer-analytics.ts","frontend/src/api/modules/customer-health.ts","frontend/src/api/modules/customer-journey.ts","frontend/src/api/modules/customer-ltv.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customer-segmentation.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/dictionaries.ts","frontend/src/api/modules/dimension-transform.ts","frontend/src/api/modules/email-marketing.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/event-logs.ts","frontend/src/api/modules/events.ts","frontend/src/api/modules/expense.ts","frontend/src/api/modules/financial-reports.ts","frontend/src/api/modules/fulfillment.ts","frontend/src/api/modules/geo-fences.ts","frontend/src/api/modules/geo-pois.ts","frontend/src/api/modules/groupbuy-analytics.ts","frontend/src/api/modules/groupbuy-campaigns.ts","frontend/src/api/modules/groupbuy-platforms.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-products.ts","frontend/src/api/modules/groupbuy-settlements.ts","frontend/src/api/modules/hr-benefits.ts","frontend/src/api/modules/hr-payroll.ts","frontend/src/api/modules/im-channels.ts","frontend/src/api/modules/im.ts","frontend/src/api/modules/integration-services.ts","frontend/src/api/modules/intent-analyzer.ts","frontend/src/api/modules/journey-orchestration.ts","frontend/src/api/modules/knowledge-candidates.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-groupbuy-conversion.ts","frontend/src/api/modules/livestream-groupbuy.ts","frontend/src/api/modules/livestream-interactions.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/location-assessments.ts","frontend/src/api/modules/login-logs.ts","frontend/src/api/modules/maintenance.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-calendar.ts","frontend/src/api/modules/marketing-chatbot.ts","frontend/src/api/modules/marketing-content.ts","frontend/src/api/modules/marketing-forms.ts","frontend/src/api/modules/marketing-matrix.ts","frontend/src/api/modules/marketing-north-star.ts","frontend/src/api/modules/marketing-timeslots.ts","frontend/src/api/modules/marketing.ts","frontend/src/api/modules/omnichannel-dashboard.ts","frontend/src/api/modules/omnichannel-data-hub.ts","frontend/src/api/modules/omnichannel-touchpoints.ts","frontend/src/api/modules/operation-logs.ts","frontend/src/api/modules/opportunities.ts","frontend/src/api/modules/predictive-analytics.ts","frontend/src/api/modules/process-designer.ts","frontend/src/api/modules/process.ts","frontend/src/api/modules/products.ts","frontend/src/api/modules/realtime-trigger.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/resource-requests.ts","frontend/src/api/modules/revenue.ts","frontend/src/api/modules/rfm-analysis.ts","frontend/src/api/modules/rma.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/scheduled-jobs.ts","frontend/src/api/modules/search.ts","frontend/src/api/modules/segments.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/api/modules/sms-marketing.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/api/modules/social-auto-replies.ts","frontend/src/api/modules/social-competitors.ts","frontend/src/api/modules/social-hot-topics.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/spare-parts.ts","frontend/src/api/modules/store-performance.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supplier-management.ts","frontend/src/api/modules/swot-analyses.ts","frontend/src/api/modules/system-events.ts","frontend/src/api/modules/ticket-workflows.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/tob-toc-gateway.ts","frontend/src/api/modules/unified-campaign.ts","frontend/src/api/modules/web-tracking.ts","frontend/src/api/modules/workflow-generator.ts","frontend/src/api/response-normalizer.ts","frontend/src/components/business/ActivityTimeline.vue","frontend/src/components/business/EventStreamPanel.vue","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/DataTable.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/mobile/MobileFilter.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/types/ai-agent.ts","frontend/src/utils/echarts.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/abm-marketing/Index.vue","frontend/src/views/acquisition/Index.vue","frontend/src/views/ad-accounts/Form.vue","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-analytics/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-placement/ABTests.vue","frontend/src/views/ad-placement/AudiencePacks.vue","frontend/src/views/ad-placement/BudgetAlerts.vue","frontend/src/views/ad-placement/Creatives.vue","frontend/src/views/ad-placement/Index.vue","frontend/src/views/ad-placement/RoiAnalysis.vue","frontend/src/views/alliance-agreements/Index.vue","frontend/src/views/alliance-campaigns/Index.vue","frontend/src/views/alliance-coupons/Index.vue","frontend/src/views/alliance-packages/Index.vue","frontend/src/views/alliance-partners/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/analytics/roi/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Form.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/attribution/Index.vue","frontend/src/views/auth/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-analytics/Index.vue","frontend/src/views/campaign-library/Index.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaign-tools/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/ToolConfigDialog.vue","frontend/src/views/campaigns/wizard/Step3Tools.vue","frontend/src/views/campaigns/wizard/Step4BasicInfo.vue","frontend/src/views/campaigns/wizard/Step7Review.vue","frontend/src/views/campaigns/wizard/components/ToolConfigForms.vue","frontend/src/views/channel-analytics/Index.vue","frontend/src/views/community-bots/Index.vue","frontend/src/views/community-fission/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/community-tasks/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Detail.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/contracts/Form.vue","frontend/src/views/conversion-paths/Index.vue","frontend/src/views/cost-allocation/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Detail.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Form.vue","frontend/src/views/departments/Detail.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Alerts.vue","frontend/src/views/devices/Form.vue","frontend/src/views/diagnosis/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-templates/Form.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/geo-pois/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-inventory/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-platforms/Index.vue","frontend/src/views/groupbuy-pricing/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-promotions/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/hr/attendance/components/AttendanceTab.vue","frontend/src/views/hr/attendance/components/HolidaysTab.vue","frontend/src/views/hr/attendance/components/LeavesTab.vue","frontend/src/views/hr/attendance/components/OvertimeTab.vue","frontend/src/views/hr/attendance/components/ShiftsTab.vue","frontend/src/views/hr/training/components/CertificatesTab.vue","frontend/src/views/hr/training/components/CompetencyTab.vue","frontend/src/views/hr/training/components/CoursesTab.vue","frontend/src/views/hr/training/components/ExamsTab.vue","frontend/src/views/hr/training/components/PlansTab.vue","frontend/src/views/hr/training/components/SessionsTab.vue","frontend/src/views/inventory/Counts.vue","frontend/src/views/inventory/Index.vue","frontend/src/views/inventory/Snapshots.vue","frontend/src/views/journey-orchestration/Form.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/lead-assignment/Form.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/lead-qualification/Form.vue","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/Index.vue","frontend/src/views/livestream-gifts/Index.vue","frontend/src/views/livestream-groupbuy-conversion/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/maintenance/Index.vue","frontend/src/views/maintenance/TaskDetail.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Detail.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/marketing/budget-alerts/Index.vue","frontend/src/views/mdm/Index.vue","frontend/src/views/member-benefits/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/menus/Index.vue","frontend/src/views/notification-configs/Index.vue","frontend/src/views/notifications/Index.vue","frontend/src/views/omnichannel-dashboard/Index.vue","frontend/src/views/omnichannel-data-hub/Index.vue","frontend/src/views/opportunities/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/orders/Index.vue","frontend/src/views/org-chart/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/predictive-analytics/Form.vue","frontend/src/views/process-designer/Designer.vue","frontend/src/views/product-analytics/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/qr-codes/Index.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/realtime-trigger/Form.vue","frontend/src/views/renewal-tasks/Index.vue","frontend/src/views/rfm-analysis/Detail.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/scheduled-jobs/Index.vue","frontend/src/views/segments/Index.vue","frontend/src/views/service-monitor/Index.vue","frontend/src/views/settings/Index.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-matrix/Index.vue","frontend/src/views/social-posts/Detail.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/spare-parts/components/TransactionHistory.vue","frontend/src/views/stage-knowledge/Index.vue","frontend/src/views/store-configs/Index.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/suppliers/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/system-monitor/Index.vue","frontend/src/views/system/AuditLogs.vue","frontend/src/views/tenant-configs/Index.vue","frontend/src/views/tickets/Form.vue","frontend/src/views/tickets/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-publishing/Index.vue","frontend/src/views/web-tracking/Index.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/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":1956552,"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":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-03-24T09:45:16+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
|
1774320941
|
1774320942
|
0
|
1774320940
|
1774320942
|
|
|
0
|
Edit
Delete
|
|
7665
|
feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理...
|
6
|
5
|
health-check.yml
|
7590
|
-2
|
130
|
refs/heads/main
|
dbf34b08bbb60650d15b0c55262dbfe8d0a3a655
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"8c39619c9cdb0d888d10942bf50533c8238021df","after":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/8c39619c9cdb0d888d10942bf50533c8238021df...dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","commits":[{"id":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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-24T10:14:13+08:00","added":["backend/src/shared/constants/events/common.ts","backend/src/shared/constants/events/finance.ts","backend/src/shared/constants/events/hr.ts","backend/src/shared/constants/events/im.ts","backend/src/shared/constants/events/index.ts","backend/src/shared/constants/events/knowledge.ts","backend/src/shared/constants/events/lifecycle.ts","backend/src/shared/constants/events/marketing.ts","backend/src/shared/constants/events/sales.ts","backend/src/shared/constants/events/service.ts","backend/src/shared/constants/events/store.ts","backend/src/shared/constants/events/supply_chain.ts","backend/src/shared/constants/events/system.ts","backend/src/shared/services/list-cache.service.ts","backend/src/shared/utils/cache-utils.ts"],"removed":[],"modified":["backend/src/consumers/attribution.consumer.ts","backend/src/consumers/campaign-effectiveness.consumer.ts","backend/src/consumers/marketing-workflow-executor.consumer.ts","backend/src/consumers/scheduled-jobs.consumer.ts","backend/src/modules/ai-agents/services/knowledge-vector-enhanced.service.ts","backend/src/modules/alliance-settlements/alliance-settlement.service.test.ts","backend/src/modules/campaign-analytics/campaign-analytics.controller.ts","backend/src/modules/contract-templates/contract-template.service.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.service.test.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/leads/lead-ai-scoring.service.ts","backend/src/modules/leads/lead-sla.service.ts","backend/src/modules/leads/lead-smart-assignment.service.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-interactions/livestream-realtime.service.ts","backend/src/modules/marketing-automation/workflow-trigger.service.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.controller.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.routes.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.service.ts","backend/src/modules/notifications/notification.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/payments/payment.service.test.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/segments/segment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-interactions/social-interactions.service.ts","backend/src/modules/store-staff/store-staff.service.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/shared/constants/events.ts","backend/src/shared/services/partition-maintenance.service.ts","backend/src/shared/state-machines/machines/contract.machine.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/types.ts","backend/src/shared/state-machines/utils/transitions/sales.transitions.ts","backend/src/shared/utils/biz-code.ts","frontend/src/api/adapters.ts","frontend/src/api/im-binding.ts","frontend/src/api/modules/ad-accounts.ts","frontend/src/api/modules/ad-audiences.ts","frontend/src/api/modules/ad-creatives.ts","frontend/src/api/modules/ad-placement.ts","frontend/src/api/modules/ad-reports.ts","frontend/src/api/modules/agent-group.ts","frontend/src/api/modules/ai-agent.ts","frontend/src/api/modules/alliance-analytics.ts","frontend/src/api/modules/alliance-merchants.ts","frontend/src/api/modules/alliance-products.ts","frontend/src/api/modules/alliance-promotions.ts","frontend/src/api/modules/alliance-referrals.ts","frontend/src/api/modules/analytics.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/assets.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/audit-logs.ts","frontend/src/api/modules/campaign-drafts.ts","frontend/src/api/modules/campaign-library.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/campaign-tools.ts","frontend/src/api/modules/campaign-use-case-templates.ts","frontend/src/api/modules/campaign-wizard.ts","frontend/src/api/modules/campaigns.ts","frontend/src/api/modules/cohort-analysis.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-activities.ts","frontend/src/api/modules/community-analytics.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-groups.ts","frontend/src/api/modules/community-levels.ts","frontend/src/api/modules/community-members.ts","frontend/src/api/modules/community-messages.ts","frontend/src/api/modules/community-points.ts","frontend/src/api/modules/consumer-behavior-analytics.ts","frontend/src/api/modules/content-categories.ts","frontend/src/api/modules/content-copyright.ts","frontend/src/api/modules/content-creation.ts","frontend/src/api/modules/content-distribution.ts","frontend/src/api/modules/content-library.ts","frontend/src/api/modules/content-templates.ts","frontend/src/api/modules/contract-templates.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/cross-domain-funnel.ts","frontend/src/api/modules/customer-analytics.ts","frontend/src/api/modules/customer-health.ts","frontend/src/api/modules/customer-journey.ts","frontend/src/api/modules/customer-ltv.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customer-segmentation.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/dictionaries.ts","frontend/src/api/modules/dimension-transform.ts","frontend/src/api/modules/email-marketing.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/event-logs.ts","frontend/src/api/modules/events.ts","frontend/src/api/modules/expense.ts","frontend/src/api/modules/financial-reports.ts","frontend/src/api/modules/fulfillment.ts","frontend/src/api/modules/geo-fences.ts","frontend/src/api/modules/geo-pois.ts","frontend/src/api/modules/groupbuy-analytics.ts","frontend/src/api/modules/groupbuy-campaigns.ts","frontend/src/api/modules/groupbuy-platforms.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-products.ts","frontend/src/api/modules/groupbuy-settlements.ts","frontend/src/api/modules/hr-benefits.ts","frontend/src/api/modules/hr-payroll.ts","frontend/src/api/modules/im-channels.ts","frontend/src/api/modules/im.ts","frontend/src/api/modules/integration-services.ts","frontend/src/api/modules/intent-analyzer.ts","frontend/src/api/modules/journey-orchestration.ts","frontend/src/api/modules/knowledge-candidates.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-groupbuy-conversion.ts","frontend/src/api/modules/livestream-groupbuy.ts","frontend/src/api/modules/livestream-interactions.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/location-assessments.ts","frontend/src/api/modules/login-logs.ts","frontend/src/api/modules/maintenance.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-calendar.ts","frontend/src/api/modules/marketing-chatbot.ts","frontend/src/api/modules/marketing-content.ts","frontend/src/api/modules/marketing-forms.ts","frontend/src/api/modules/marketing-matrix.ts","frontend/src/api/modules/marketing-north-star.ts","frontend/src/api/modules/marketing-timeslots.ts","frontend/src/api/modules/marketing.ts","frontend/src/api/modules/omnichannel-dashboard.ts","frontend/src/api/modules/omnichannel-data-hub.ts","frontend/src/api/modules/omnichannel-touchpoints.ts","frontend/src/api/modules/operation-logs.ts","frontend/src/api/modules/opportunities.ts","frontend/src/api/modules/predictive-analytics.ts","frontend/src/api/modules/process-designer.ts","frontend/src/api/modules/process.ts","frontend/src/api/modules/products.ts","frontend/src/api/modules/realtime-trigger.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/resource-requests.ts","frontend/src/api/modules/revenue.ts","frontend/src/api/modules/rfm-analysis.ts","frontend/src/api/modules/rma.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/scheduled-jobs.ts","frontend/src/api/modules/search.ts","frontend/src/api/modules/segments.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/api/modules/sms-marketing.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/api/modules/social-auto-replies.ts","frontend/src/api/modules/social-competitors.ts","frontend/src/api/modules/social-hot-topics.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/spare-parts.ts","frontend/src/api/modules/store-performance.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supplier-management.ts","frontend/src/api/modules/swot-analyses.ts","frontend/src/api/modules/system-events.ts","frontend/src/api/modules/ticket-workflows.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/tob-toc-gateway.ts","frontend/src/api/modules/unified-campaign.ts","frontend/src/api/modules/web-tracking.ts","frontend/src/api/modules/workflow-generator.ts","frontend/src/api/response-normalizer.ts","frontend/src/components/business/ActivityTimeline.vue","frontend/src/components/business/EventStreamPanel.vue","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/DataTable.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/mobile/MobileFilter.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/types/ai-agent.ts","frontend/src/utils/echarts.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/abm-marketing/Index.vue","frontend/src/views/acquisition/Index.vue","frontend/src/views/ad-accounts/Form.vue","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-analytics/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-placement/ABTests.vue","frontend/src/views/ad-placement/AudiencePacks.vue","frontend/src/views/ad-placement/BudgetAlerts.vue","frontend/src/views/ad-placement/Creatives.vue","frontend/src/views/ad-placement/Index.vue","frontend/src/views/ad-placement/RoiAnalysis.vue","frontend/src/views/alliance-agreements/Index.vue","frontend/src/views/alliance-campaigns/Index.vue","frontend/src/views/alliance-coupons/Index.vue","frontend/src/views/alliance-packages/Index.vue","frontend/src/views/alliance-partners/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/analytics/roi/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Form.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/attribution/Index.vue","frontend/src/views/auth/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-analytics/Index.vue","frontend/src/views/campaign-library/Index.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaign-tools/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/ToolConfigDialog.vue","frontend/src/views/campaigns/wizard/Step3Tools.vue","frontend/src/views/campaigns/wizard/Step4BasicInfo.vue","frontend/src/views/campaigns/wizard/Step7Review.vue","frontend/src/views/campaigns/wizard/components/ToolConfigForms.vue","frontend/src/views/channel-analytics/Index.vue","frontend/src/views/community-bots/Index.vue","frontend/src/views/community-fission/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/community-tasks/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Detail.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/contracts/Form.vue","frontend/src/views/conversion-paths/Index.vue","frontend/src/views/cost-allocation/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Detail.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Form.vue","frontend/src/views/departments/Detail.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Alerts.vue","frontend/src/views/devices/Form.vue","frontend/src/views/diagnosis/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-templates/Form.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/geo-pois/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-inventory/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-platforms/Index.vue","frontend/src/views/groupbuy-pricing/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-promotions/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/hr/attendance/components/AttendanceTab.vue","frontend/src/views/hr/attendance/components/HolidaysTab.vue","frontend/src/views/hr/attendance/components/LeavesTab.vue","frontend/src/views/hr/attendance/components/OvertimeTab.vue","frontend/src/views/hr/attendance/components/ShiftsTab.vue","frontend/src/views/hr/training/components/CertificatesTab.vue","frontend/src/views/hr/training/components/CompetencyTab.vue","frontend/src/views/hr/training/components/CoursesTab.vue","frontend/src/views/hr/training/components/ExamsTab.vue","frontend/src/views/hr/training/components/PlansTab.vue","frontend/src/views/hr/training/components/SessionsTab.vue","frontend/src/views/inventory/Counts.vue","frontend/src/views/inventory/Index.vue","frontend/src/views/inventory/Snapshots.vue","frontend/src/views/journey-orchestration/Form.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/lead-assignment/Form.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/lead-qualification/Form.vue","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/Index.vue","frontend/src/views/livestream-gifts/Index.vue","frontend/src/views/livestream-groupbuy-conversion/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/maintenance/Index.vue","frontend/src/views/maintenance/TaskDetail.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Detail.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/marketing/budget-alerts/Index.vue","frontend/src/views/mdm/Index.vue","frontend/src/views/member-benefits/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/menus/Index.vue","frontend/src/views/notification-configs/Index.vue","frontend/src/views/notifications/Index.vue","frontend/src/views/omnichannel-dashboard/Index.vue","frontend/src/views/omnichannel-data-hub/Index.vue","frontend/src/views/opportunities/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/orders/Index.vue","frontend/src/views/org-chart/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/predictive-analytics/Form.vue","frontend/src/views/process-designer/Designer.vue","frontend/src/views/product-analytics/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/qr-codes/Index.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/realtime-trigger/Form.vue","frontend/src/views/renewal-tasks/Index.vue","frontend/src/views/rfm-analysis/Detail.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/scheduled-jobs/Index.vue","frontend/src/views/segments/Index.vue","frontend/src/views/service-monitor/Index.vue","frontend/src/views/settings/Index.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-matrix/Index.vue","frontend/src/views/social-posts/Detail.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/spare-parts/components/TransactionHistory.vue","frontend/src/views/stage-knowledge/Index.vue","frontend/src/views/store-configs/Index.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/suppliers/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/system-monitor/Index.vue","frontend/src/views/system/AuditLogs.vue","frontend/src/views/tenant-configs/Index.vue","frontend/src/views/tickets/Form.vue","frontend/src/views/tickets/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-publishing/Index.vue","frontend/src/views/web-tracking/Index.vue"]}],"total_commits":0,"head_commit":{"id":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","message":"feat: 四线并行治理 — Record清零+v-permission扩展+Redis缓存+as any清理\n\n## Line 1: Record\u003cstring,any\u003e 全前端清零 (637→0)\n- 262 个文件批量替换 Record\u003cstring, any\u003e → Record\u003cstring, unknown\u003e\n- 覆盖 API 模块层 137 文件 + 视图/stores/composables 100 文件\n\n## Line 2: v-permission 全面覆盖 (53→104 个视图文件)\n- 新增 51 个视图的 v-permission 指令\n- 覆盖: products/departments/contract-templates/spare-parts/pm/\n stage-knowledge/email-templates/approval-templates/ad-campaigns/\n groupbuy-*/community-*/alliance-*/livestream-*/social-*/content-*/\n geo-*/segments/lead-pools/bom/expense-claims/ap-ledger 等\n\n## Line 3: Redis 缓存扩展 (5→14 个缓存点, 10 个模块)\n- 新建 cache-utils.ts 统一缓存工具层 (withCache + invalidation)\n- 高优: tenant-configs(300s) + roles(1800s) + products(600s) +\n departments(600s) + sla(1800s) + contract-templates(600s)\n- 中优: price-books(600s) + notifications(300s)\n- 写后失效: 所有 create/update/delete 自动清除缓存\n\n## Line 4: as any 清理 (25处)\n- campaign-analytics.controller: 8→0 (精确查询类型)\n- social-interactions.service: 9→0 (Prisma UncheckedCreateInput)\n- store-staff.service: 6→0 (prismaModel 代理)\n- scheduled-jobs.consumer: 2→0 (直接使用已有类型)\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","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-24T10:14:13+08:00","added":["backend/src/shared/constants/events/common.ts","backend/src/shared/constants/events/finance.ts","backend/src/shared/constants/events/hr.ts","backend/src/shared/constants/events/im.ts","backend/src/shared/constants/events/index.ts","backend/src/shared/constants/events/knowledge.ts","backend/src/shared/constants/events/lifecycle.ts","backend/src/shared/constants/events/marketing.ts","backend/src/shared/constants/events/sales.ts","backend/src/shared/constants/events/service.ts","backend/src/shared/constants/events/store.ts","backend/src/shared/constants/events/supply_chain.ts","backend/src/shared/constants/events/system.ts","backend/src/shared/services/list-cache.service.ts","backend/src/shared/utils/cache-utils.ts"],"removed":[],"modified":["backend/src/consumers/attribution.consumer.ts","backend/src/consumers/campaign-effectiveness.consumer.ts","backend/src/consumers/marketing-workflow-executor.consumer.ts","backend/src/consumers/scheduled-jobs.consumer.ts","backend/src/modules/ai-agents/services/knowledge-vector-enhanced.service.ts","backend/src/modules/alliance-settlements/alliance-settlement.service.test.ts","backend/src/modules/campaign-analytics/campaign-analytics.controller.ts","backend/src/modules/contract-templates/contract-template.service.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.service.test.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/leads/lead-ai-scoring.service.ts","backend/src/modules/leads/lead-sla.service.ts","backend/src/modules/leads/lead-smart-assignment.service.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-interactions/livestream-realtime.service.ts","backend/src/modules/marketing-automation/workflow-trigger.service.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.controller.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.routes.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.service.ts","backend/src/modules/notifications/notification.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/payments/payment.service.test.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/segments/segment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-interactions/social-interactions.service.ts","backend/src/modules/store-staff/store-staff.service.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/shared/constants/events.ts","backend/src/shared/services/partition-maintenance.service.ts","backend/src/shared/state-machines/machines/contract.machine.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/types.ts","backend/src/shared/state-machines/utils/transitions/sales.transitions.ts","backend/src/shared/utils/biz-code.ts","frontend/src/api/adapters.ts","frontend/src/api/im-binding.ts","frontend/src/api/modules/ad-accounts.ts","frontend/src/api/modules/ad-audiences.ts","frontend/src/api/modules/ad-creatives.ts","frontend/src/api/modules/ad-placement.ts","frontend/src/api/modules/ad-reports.ts","frontend/src/api/modules/agent-group.ts","frontend/src/api/modules/ai-agent.ts","frontend/src/api/modules/alliance-analytics.ts","frontend/src/api/modules/alliance-merchants.ts","frontend/src/api/modules/alliance-products.ts","frontend/src/api/modules/alliance-promotions.ts","frontend/src/api/modules/alliance-referrals.ts","frontend/src/api/modules/analytics.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/assets.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/audit-logs.ts","frontend/src/api/modules/campaign-drafts.ts","frontend/src/api/modules/campaign-library.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/campaign-tools.ts","frontend/src/api/modules/campaign-use-case-templates.ts","frontend/src/api/modules/campaign-wizard.ts","frontend/src/api/modules/campaigns.ts","frontend/src/api/modules/cohort-analysis.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-activities.ts","frontend/src/api/modules/community-analytics.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-groups.ts","frontend/src/api/modules/community-levels.ts","frontend/src/api/modules/community-members.ts","frontend/src/api/modules/community-messages.ts","frontend/src/api/modules/community-points.ts","frontend/src/api/modules/consumer-behavior-analytics.ts","frontend/src/api/modules/content-categories.ts","frontend/src/api/modules/content-copyright.ts","frontend/src/api/modules/content-creation.ts","frontend/src/api/modules/content-distribution.ts","frontend/src/api/modules/content-library.ts","frontend/src/api/modules/content-templates.ts","frontend/src/api/modules/contract-templates.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/cross-domain-funnel.ts","frontend/src/api/modules/customer-analytics.ts","frontend/src/api/modules/customer-health.ts","frontend/src/api/modules/customer-journey.ts","frontend/src/api/modules/customer-ltv.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customer-segmentation.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/dictionaries.ts","frontend/src/api/modules/dimension-transform.ts","frontend/src/api/modules/email-marketing.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/event-logs.ts","frontend/src/api/modules/events.ts","frontend/src/api/modules/expense.ts","frontend/src/api/modules/financial-reports.ts","frontend/src/api/modules/fulfillment.ts","frontend/src/api/modules/geo-fences.ts","frontend/src/api/modules/geo-pois.ts","frontend/src/api/modules/groupbuy-analytics.ts","frontend/src/api/modules/groupbuy-campaigns.ts","frontend/src/api/modules/groupbuy-platforms.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-products.ts","frontend/src/api/modules/groupbuy-settlements.ts","frontend/src/api/modules/hr-benefits.ts","frontend/src/api/modules/hr-payroll.ts","frontend/src/api/modules/im-channels.ts","frontend/src/api/modules/im.ts","frontend/src/api/modules/integration-services.ts","frontend/src/api/modules/intent-analyzer.ts","frontend/src/api/modules/journey-orchestration.ts","frontend/src/api/modules/knowledge-candidates.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-groupbuy-conversion.ts","frontend/src/api/modules/livestream-groupbuy.ts","frontend/src/api/modules/livestream-interactions.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/location-assessments.ts","frontend/src/api/modules/login-logs.ts","frontend/src/api/modules/maintenance.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-calendar.ts","frontend/src/api/modules/marketing-chatbot.ts","frontend/src/api/modules/marketing-content.ts","frontend/src/api/modules/marketing-forms.ts","frontend/src/api/modules/marketing-matrix.ts","frontend/src/api/modules/marketing-north-star.ts","frontend/src/api/modules/marketing-timeslots.ts","frontend/src/api/modules/marketing.ts","frontend/src/api/modules/omnichannel-dashboard.ts","frontend/src/api/modules/omnichannel-data-hub.ts","frontend/src/api/modules/omnichannel-touchpoints.ts","frontend/src/api/modules/operation-logs.ts","frontend/src/api/modules/opportunities.ts","frontend/src/api/modules/predictive-analytics.ts","frontend/src/api/modules/process-designer.ts","frontend/src/api/modules/process.ts","frontend/src/api/modules/products.ts","frontend/src/api/modules/realtime-trigger.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/resource-requests.ts","frontend/src/api/modules/revenue.ts","frontend/src/api/modules/rfm-analysis.ts","frontend/src/api/modules/rma.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/scheduled-jobs.ts","frontend/src/api/modules/search.ts","frontend/src/api/modules/segments.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/api/modules/sms-marketing.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/api/modules/social-auto-replies.ts","frontend/src/api/modules/social-competitors.ts","frontend/src/api/modules/social-hot-topics.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/spare-parts.ts","frontend/src/api/modules/store-performance.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supplier-management.ts","frontend/src/api/modules/swot-analyses.ts","frontend/src/api/modules/system-events.ts","frontend/src/api/modules/ticket-workflows.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/tob-toc-gateway.ts","frontend/src/api/modules/unified-campaign.ts","frontend/src/api/modules/web-tracking.ts","frontend/src/api/modules/workflow-generator.ts","frontend/src/api/response-normalizer.ts","frontend/src/components/business/ActivityTimeline.vue","frontend/src/components/business/EventStreamPanel.vue","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/DataTable.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/mobile/MobileFilter.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/types/ai-agent.ts","frontend/src/utils/echarts.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/abm-marketing/Index.vue","frontend/src/views/acquisition/Index.vue","frontend/src/views/ad-accounts/Form.vue","frontend/src/views/ad-accounts/Index.vue","frontend/src/views/ad-analytics/Index.vue","frontend/src/views/ad-campaigns/Index.vue","frontend/src/views/ad-creatives/Index.vue","frontend/src/views/ad-placement/ABTests.vue","frontend/src/views/ad-placement/AudiencePacks.vue","frontend/src/views/ad-placement/BudgetAlerts.vue","frontend/src/views/ad-placement/Creatives.vue","frontend/src/views/ad-placement/Index.vue","frontend/src/views/ad-placement/RoiAnalysis.vue","frontend/src/views/alliance-agreements/Index.vue","frontend/src/views/alliance-campaigns/Index.vue","frontend/src/views/alliance-coupons/Index.vue","frontend/src/views/alliance-packages/Index.vue","frontend/src/views/alliance-partners/Index.vue","frontend/src/views/alliance-products/Index.vue","frontend/src/views/analytics/roi/Index.vue","frontend/src/views/ap-ledger/Index.vue","frontend/src/views/approval-configs/Form.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/approval-templates/Index.vue","frontend/src/views/attribution/Index.vue","frontend/src/views/auth/Index.vue","frontend/src/views/bom/Index.vue","frontend/src/views/campaign-analytics/Index.vue","frontend/src/views/campaign-library/Index.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaign-tools/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/ToolConfigDialog.vue","frontend/src/views/campaigns/wizard/Step3Tools.vue","frontend/src/views/campaigns/wizard/Step4BasicInfo.vue","frontend/src/views/campaigns/wizard/Step7Review.vue","frontend/src/views/campaigns/wizard/components/ToolConfigForms.vue","frontend/src/views/channel-analytics/Index.vue","frontend/src/views/community-bots/Index.vue","frontend/src/views/community-fission/Index.vue","frontend/src/views/community-groups/Index.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/community-members/Index.vue","frontend/src/views/community-messages/Index.vue","frontend/src/views/community-points/Index.vue","frontend/src/views/community-tasks/Index.vue","frontend/src/views/consumer-behavior-analytics/Index.vue","frontend/src/views/content-creation/Index.vue","frontend/src/views/content-distribution/Index.vue","frontend/src/views/content-library/Detail.vue","frontend/src/views/content-templates/Index.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/contracts/Form.vue","frontend/src/views/conversion-paths/Index.vue","frontend/src/views/cost-allocation/Index.vue","frontend/src/views/cpq/Index.vue","frontend/src/views/cross-domain-funnel/Index.vue","frontend/src/views/customer-health/Index.vue","frontend/src/views/customer-journey/Detail.vue","frontend/src/views/customer-marketing/Index.vue","frontend/src/views/customer-segmentation/Form.vue","frontend/src/views/departments/Detail.vue","frontend/src/views/departments/Index.vue","frontend/src/views/devices/Alerts.vue","frontend/src/views/devices/Form.vue","frontend/src/views/diagnosis/Index.vue","frontend/src/views/dimension-transform/Index.vue","frontend/src/views/email-templates/Form.vue","frontend/src/views/email-templates/Index.vue","frontend/src/views/event-logs/Index.vue","frontend/src/views/expense-claims/Index.vue","frontend/src/views/geo-keywords/Index.vue","frontend/src/views/geo-pois/Index.vue","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-inventory/Index.vue","frontend/src/views/groupbuy-orders/Index.vue","frontend/src/views/groupbuy-platforms/Index.vue","frontend/src/views/groupbuy-pricing/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-promotions/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/hr/attendance/components/AttendanceTab.vue","frontend/src/views/hr/attendance/components/HolidaysTab.vue","frontend/src/views/hr/attendance/components/LeavesTab.vue","frontend/src/views/hr/attendance/components/OvertimeTab.vue","frontend/src/views/hr/attendance/components/ShiftsTab.vue","frontend/src/views/hr/training/components/CertificatesTab.vue","frontend/src/views/hr/training/components/CompetencyTab.vue","frontend/src/views/hr/training/components/CoursesTab.vue","frontend/src/views/hr/training/components/ExamsTab.vue","frontend/src/views/hr/training/components/PlansTab.vue","frontend/src/views/hr/training/components/SessionsTab.vue","frontend/src/views/inventory/Counts.vue","frontend/src/views/inventory/Index.vue","frontend/src/views/inventory/Snapshots.vue","frontend/src/views/journey-orchestration/Form.vue","frontend/src/views/knowledge-feedback/Index.vue","frontend/src/views/lead-assignment/Form.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/lead-qualification/Form.vue","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/Index.vue","frontend/src/views/livestream-gifts/Index.vue","frontend/src/views/livestream-groupbuy-conversion/Index.vue","frontend/src/views/livestream-schedules/Index.vue","frontend/src/views/livestream-scripts/Index.vue","frontend/src/views/local-events/Index.vue","frontend/src/views/local-promotion/Index.vue","frontend/src/views/maintenance/Index.vue","frontend/src/views/maintenance/TaskDetail.vue","frontend/src/views/marketing-automation/Index.vue","frontend/src/views/marketing-effectiveness/Index.vue","frontend/src/views/marketing-north-star/Index.vue","frontend/src/views/marketing-tools/Detail.vue","frontend/src/views/marketing-tools/Index.vue","frontend/src/views/marketing/budget-alerts/Index.vue","frontend/src/views/mdm/Index.vue","frontend/src/views/member-benefits/Index.vue","frontend/src/views/member-levels/Index.vue","frontend/src/views/member-points/Index.vue","frontend/src/views/members/Index.vue","frontend/src/views/menus/Index.vue","frontend/src/views/notification-configs/Index.vue","frontend/src/views/notifications/Index.vue","frontend/src/views/omnichannel-dashboard/Index.vue","frontend/src/views/omnichannel-data-hub/Index.vue","frontend/src/views/opportunities/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/orders/Index.vue","frontend/src/views/org-chart/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/Index.vue","frontend/src/views/predictive-analytics/Form.vue","frontend/src/views/process-designer/Designer.vue","frontend/src/views/product-analytics/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/qr-codes/Index.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/realtime-trigger/Form.vue","frontend/src/views/renewal-tasks/Index.vue","frontend/src/views/rfm-analysis/Detail.vue","frontend/src/views/rfm-analysis/Index.vue","frontend/src/views/roles/Index.vue","frontend/src/views/scheduled-jobs/Index.vue","frontend/src/views/segments/Index.vue","frontend/src/views/service-monitor/Index.vue","frontend/src/views/settings/Index.vue","frontend/src/views/social-accounts/Index.vue","frontend/src/views/social-auto-replies/Index.vue","frontend/src/views/social-competitors/Index.vue","frontend/src/views/social-matrix/Index.vue","frontend/src/views/social-posts/Detail.vue","frontend/src/views/social-posts/Index.vue","frontend/src/views/spare-parts/Index.vue","frontend/src/views/spare-parts/components/TransactionHistory.vue","frontend/src/views/stage-knowledge/Index.vue","frontend/src/views/store-configs/Index.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/supplier-payments/Index.vue","frontend/src/views/suppliers/Index.vue","frontend/src/views/system-events/Index.vue","frontend/src/views/system-monitor/Index.vue","frontend/src/views/system/AuditLogs.vue","frontend/src/views/tenant-configs/Index.vue","frontend/src/views/tickets/Form.vue","frontend/src/views/tickets/Index.vue","frontend/src/views/users/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-publishing/Index.vue","frontend/src/views/web-tracking/Index.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/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":1956552,"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":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-03-24T09:45:16+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
|
1774321241
|
1774321242
|
0
|
1774321240
|
1774321242
|
|
|
0
|
Edit
Delete
|
|
31
|
t2228
|
2
|
2
|
hello-world.yaml
|
30
|
1
|
0
|
refs/heads/main
|
db8eda4b4696ee119fdb6d2f03804ccdf33ebcbb
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"c00cc2f80acf2f84906f0fc4dd7ec19e4d3016ab","after":"db8eda4b4696ee119fdb6d2f03804ccdf33ebcbb","compare_url":"https://gitea.g-hi.com/juhai/testpc/compare/c00cc2f80acf2f84906f0fc4dd7ec19e4d3016ab...db8eda4b4696ee119fdb6d2f03804ccdf33ebcbb","commits":[{"id":"db8eda4b4696ee119fdb6d2f03804ccdf33ebcbb","message":"t2228\n","url":"https://gitea.g-hi.com/juhai/testpc/commit/db8eda4b4696ee119fdb6d2f03804ccdf33ebcbb","author":{"name":"zhangjunnan","email":"121158035@qq.com","username":"zhangjunnan"},"committer":{"name":"zhangjunnan","email":"121158035@qq.com","username":"zhangjunnan"},"verification":null,"timestamp":"2026-02-12T17:07:59+08:00","added":[],"removed":[],"modified":[".gitea/workflows/hello-world.yaml"]}],"total_commits":0,"head_commit":{"id":"db8eda4b4696ee119fdb6d2f03804ccdf33ebcbb","message":"t2228\n","url":"https://gitea.g-hi.com/juhai/testpc/commit/db8eda4b4696ee119fdb6d2f03804ccdf33ebcbb","author":{"name":"zhangjunnan","email":"121158035@qq.com","username":"zhangjunnan"},"committer":{"name":"zhangjunnan","email":"121158035@qq.com","username":"zhangjunnan"},"verification":null,"timestamp":"2026-02-12T17:07:59+08:00","added":[],"removed":[],"modified":[".gitea/workflows/hello-world.yaml"]},"repository":{"id":2,"owner":{"id":2,"login":"juhai","login_name":"","source_id":0,"full_name":"","email":"","avatar_url":"https://gitea.g-hi.com/avatars/8edeea9a6ada1d3d48db9231e9328f15","html_url":"https://gitea.g-hi.com/juhai","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T15:37:00+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"private","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"juhai"},"name":"testpc","full_name":"juhai/testpc","description":"pc测试环境","empty":false,"private":false,"fork":false,"template":false,"parent":null,"mirror":false,"size":17741,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/juhai/testpc/languages","html_url":"https://gitea.g-hi.com/juhai/testpc","url":"https://gitea.g-hi.com/api/v1/repos/juhai/testpc","link":"","ssh_url":"git@gitea.g-hi.com:juhai/testpc.git","clone_url":"https://gitea.g-hi.com/juhai/testpc.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-06T13:52:11+08:00","updated_at":"2026-02-12T17:06:42+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":true,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","repo_transfer":null},"pusher":{"id":1,"login":"zhangjunnan","login_name":"","source_id":0,"full_name":"","email":"zhangjunnan@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatars/db7dcb12d6f370df9341167b55583f8b","html_url":"https://gitea.g-hi.com/zhangjunnan","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T15:36:25+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"zhangjunnan"},"sender":{"id":1,"login":"zhangjunnan","login_name":"","source_id":0,"full_name":"","email":"zhangjunnan@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatars/db7dcb12d6f370df9341167b55583f8b","html_url":"https://gitea.g-hi.com/zhangjunnan","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T15:36:25+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"zhangjunnan"}}...
|
push
|
2
|
3
|
1770887288
|
1770887291
|
0
|
1770887286
|
1770887291
|
NULL
|
|
0
|
Edit
Delete
|
|
7666
|
fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复
|
6
|
5
|
e2e-tests.yml
|
7591
|
5
|
0
|
refs/heads/main
|
db7f39e63151b9c065646855287b8be73e13649b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","after":"db7f39e63151b9c065646855287b8be73e13649b","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655...db7f39e63151b9c065646855287b8be73e13649b","commits":[{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]}],"total_commits":0,"head_commit":{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]},"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":1958148,"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":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-03-24T10:14:22+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
|
1774321432
|
1774321586
|
0
|
1774321430
|
1774321631
|
|
|
0
|
Edit
Delete
|
|
7667
|
fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复
|
6
|
5
|
test-pipeline.yml
|
7592
|
5
|
0
|
refs/heads/main
|
db7f39e63151b9c065646855287b8be73e13649b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","after":"db7f39e63151b9c065646855287b8be73e13649b","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655...db7f39e63151b9c065646855287b8be73e13649b","commits":[{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]}],"total_commits":0,"head_commit":{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]},"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":1958148,"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":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-03-24T10:14:22+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
|
1774321586
|
1774321621
|
0
|
1774321431
|
1774321882
|
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
|
|
7668
|
fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复
|
6
|
5
|
health-check.yml
|
7593
|
-2
|
133
|
refs/heads/main
|
db7f39e63151b9c065646855287b8be73e13649b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","after":"db7f39e63151b9c065646855287b8be73e13649b","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655...db7f39e63151b9c065646855287b8be73e13649b","commits":[{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]}],"total_commits":0,"head_commit":{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]},"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":1958148,"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":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-03-24T10:14:22+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
|
1774321622
|
1774321623
|
0
|
1774321541
|
1774321623
|
|
|
0
|
Edit
Delete
|
|
7669
|
fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复
|
6
|
5
|
test-report.yml
|
7594
|
5
|
0
|
refs/heads/main
|
db7f39e63151b9c065646855287b8be73e13649b
|
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-24T11:01:20+08:00","updated_at":"2026-03-24T11:01:20+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":7666,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/7666","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/7666","display_title":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复","path":"e2e-tests.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":7591,"head_sha":"db7f39e63151b9c065646855287b8be73e13649b","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":1845515,"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":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-03-24T11:03:52+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-24T11:03:52+08:00","completed_at":"2026-03-24T11:06:26+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":1845515,"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":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-03-24T11:03:52+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
|
1774321624
|
1774321628
|
0
|
1774321586
|
1774321644
|
|
|
0
|
Edit
Delete
|
|
7670
|
fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复
|
6
|
5
|
deploy.yml
|
7595
|
5
|
0
|
refs/heads/main
|
db7f39e63151b9c065646855287b8be73e13649b
|
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-24T11:01:20+08:00","updated_at":"2026-03-24T11:01:20+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":7667,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/7667","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/7667","display_title":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":7592,"head_sha":"db7f39e63151b9c065646855287b8be73e13649b","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":1845515,"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":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-03-24T11:03:52+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-24T11:06:26+08:00","completed_at":"2026-03-24T11:07:01+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":1845515,"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":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-03-24T11:03:52+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
|
21
|
1774321639
|
1774321784
|
0
|
1774321621
|
1774321785
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "false"
...
|
deploy-refs/heads/main
|
0
|
Edit
Delete
|
|
7671
|
fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复
|
6
|
5
|
test-report.yml
|
7596
|
5
|
0
|
refs/heads/main
|
db7f39e63151b9c065646855287b8be73e13649b
|
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-24T11:01:20+08:00","updated_at":"2026-03-24T11:01:20+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":7666,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/7666","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/7666","display_title":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复","path":"e2e-tests.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":7591,"head_sha":"db7f39e63151b9c065646855287b8be73e13649b","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":1845515,"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":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-03-24T11:03:52+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-24T11:03:52+08:00","completed_at":"2026-03-24T11:06:26+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":1845515,"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":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-03-24T11:03:52+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
|
1774321645
|
1774321648
|
0
|
1774321631
|
1774321788
|
|
|
0
|
Edit
Delete
|
|
7672
|
fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复
|
6
|
5
|
deploy.yml
|
7597
|
5
|
0
|
refs/heads/main
|
db7f39e63151b9c065646855287b8be73e13649b
|
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-24T11:01:20+08:00","updated_at":"2026-03-24T11:01:20+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":7667,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/7667","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/7667","display_title":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":7592,"head_sha":"db7f39e63151b9c065646855287b8be73e13649b","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":1845515,"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":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-03-24T11:03:52+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-24T11:06:26+08:00","completed_at":"2026-03-24T11:07:01+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":1845515,"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":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-03-24T11:03:52+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
workflow_run
|
3
|
17
|
1774321790
|
1774321882
|
0
|
1774321785
|
1774321883
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "false"
...
|
deploy-refs/heads/main
|
0
|
Edit
Delete
|
|
7673
|
fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复
|
6
|
5
|
health-check.yml
|
7598
|
-2
|
133
|
refs/heads/main
|
db7f39e63151b9c065646855287b8be73e13649b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","after":"db7f39e63151b9c065646855287b8be73e13649b","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655...db7f39e63151b9c065646855287b8be73e13649b","commits":[{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]}],"total_commits":0,"head_commit":{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]},"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":1958148,"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":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-03-24T10:14:22+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
|
1774321883
|
1774321884
|
0
|
1774321840
|
1774321884
|
|
|
0
|
Edit
Delete
|
|
7674
|
fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复
|
6
|
5
|
deploy.yml
|
7599
|
5
|
0
|
refs/heads/main
|
db7f39e63151b9c065646855287b8be73e13649b
|
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-24T11:01:20+08:00","updated_at":"2026-03-24T11:01:20+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":7667,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/7667","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/7667","display_title":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":7592,"head_sha":"db7f39e63151b9c065646855287b8be73e13649b","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":1845515,"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":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-03-24T11:03:52+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-24T11:06:26+08:00","completed_at":"2026-03-24T11:07:01+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":1845515,"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":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-03-24T11:03:52+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
|
1774321885
|
1774321936
|
0
|
1774321883
|
1774321936
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "false"
...
|
deploy-refs/heads/main
|
0
|
Edit
Delete
|
|
7675
|
fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复
|
6
|
5
|
health-check.yml
|
7600
|
-2
|
133
|
refs/heads/main
|
db7f39e63151b9c065646855287b8be73e13649b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","after":"db7f39e63151b9c065646855287b8be73e13649b","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655...db7f39e63151b9c065646855287b8be73e13649b","commits":[{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]}],"total_commits":0,"head_commit":{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]},"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":1958148,"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":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-03-24T10:14:22+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
|
1774322140
|
1774322140
|
0
|
1774322140
|
1774322140
|
|
|
0
|
Edit
Delete
|
|
7676
|
fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复
|
6
|
5
|
health-check.yml
|
7601
|
-2
|
133
|
refs/heads/main
|
db7f39e63151b9c065646855287b8be73e13649b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","after":"db7f39e63151b9c065646855287b8be73e13649b","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655...db7f39e63151b9c065646855287b8be73e13649b","commits":[{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]}],"total_commits":0,"head_commit":{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]},"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":1958148,"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":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-03-24T10:14:22+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
|
1774322440
|
1774322440
|
0
|
1774322440
|
1774322440
|
|
|
0
|
Edit
Delete
|
|
7677
|
fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复
|
6
|
5
|
health-check.yml
|
7602
|
-2
|
133
|
refs/heads/main
|
db7f39e63151b9c065646855287b8be73e13649b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","after":"db7f39e63151b9c065646855287b8be73e13649b","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655...db7f39e63151b9c065646855287b8be73e13649b","commits":[{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]}],"total_commits":0,"head_commit":{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]},"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":1958148,"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":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-03-24T10:14:22+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
|
1774322740
|
1774322740
|
0
|
1774322740
|
1774322740
|
|
|
0
|
Edit
Delete
|
|
7678
|
fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复
|
6
|
5
|
health-check.yml
|
7603
|
-2
|
133
|
refs/heads/main
|
db7f39e63151b9c065646855287b8be73e13649b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","after":"db7f39e63151b9c065646855287b8be73e13649b","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655...db7f39e63151b9c065646855287b8be73e13649b","commits":[{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]}],"total_commits":0,"head_commit":{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]},"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":1958148,"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":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-03-24T10:14:22+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
|
1774323040
|
1774323040
|
0
|
1774323040
|
1774323040
|
|
|
0
|
Edit
Delete
|
|
7679
|
fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复
|
6
|
5
|
health-check.yml
|
7604
|
-2
|
133
|
refs/heads/main
|
db7f39e63151b9c065646855287b8be73e13649b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","after":"db7f39e63151b9c065646855287b8be73e13649b","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655...db7f39e63151b9c065646855287b8be73e13649b","commits":[{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]}],"total_commits":0,"head_commit":{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]},"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":1958148,"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":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-03-24T10:14:22+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
|
1774323340
|
1774323340
|
0
|
1774323340
|
1774323340
|
|
|
0
|
Edit
Delete
|
|
7680
|
fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复
|
6
|
5
|
health-check.yml
|
7605
|
-2
|
133
|
refs/heads/main
|
db7f39e63151b9c065646855287b8be73e13649b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","after":"db7f39e63151b9c065646855287b8be73e13649b","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655...db7f39e63151b9c065646855287b8be73e13649b","commits":[{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]}],"total_commits":0,"head_commit":{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]},"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":1958148,"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":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-03-24T10:14:22+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
|
1774323640
|
1774323640
|
0
|
1774323640
|
1774323640
|
|
|
0
|
Edit
Delete
|
|
7681
|
fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复
|
6
|
5
|
health-check.yml
|
7606
|
-2
|
133
|
refs/heads/main
|
db7f39e63151b9c065646855287b8be73e13649b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","after":"db7f39e63151b9c065646855287b8be73e13649b","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655...db7f39e63151b9c065646855287b8be73e13649b","commits":[{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]}],"total_commits":0,"head_commit":{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]},"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":1958148,"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":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-03-24T10:14:22+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
|
1774323940
|
1774323940
|
0
|
1774323940
|
1774323940
|
|
|
0
|
Edit
Delete
|
|
7682
|
fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复
|
6
|
5
|
health-check.yml
|
7607
|
-2
|
133
|
refs/heads/main
|
db7f39e63151b9c065646855287b8be73e13649b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","after":"db7f39e63151b9c065646855287b8be73e13649b","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655...db7f39e63151b9c065646855287b8be73e13649b","commits":[{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]}],"total_commits":0,"head_commit":{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]},"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":1958148,"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":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-03-24T10:14:22+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
|
1774324240
|
1774324240
|
0
|
1774324240
|
1774324240
|
|
|
0
|
Edit
Delete
|
|
7683
|
fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复
|
6
|
5
|
health-check.yml
|
7608
|
-2
|
133
|
refs/heads/main
|
db7f39e63151b9c065646855287b8be73e13649b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","after":"db7f39e63151b9c065646855287b8be73e13649b","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655...db7f39e63151b9c065646855287b8be73e13649b","commits":[{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]}],"total_commits":0,"head_commit":{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]},"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":1958148,"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":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-03-24T10:14:22+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
|
1774324540
|
1774324540
|
0
|
1774324540
|
1774324540
|
|
|
0
|
Edit
Delete
|
|
7684
|
fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复
|
6
|
5
|
health-check.yml
|
7609
|
-2
|
133
|
refs/heads/main
|
db7f39e63151b9c065646855287b8be73e13649b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"dbf34b08bbb60650d15b0c55262dbfe8d0a3a655","after":"db7f39e63151b9c065646855287b8be73e13649b","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/dbf34b08bbb60650d15b0c55262dbfe8d0a3a655...db7f39e63151b9c065646855287b8be73e13649b","commits":[{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]}],"total_commits":0,"head_commit":{"id":"db7f39e63151b9c065646855287b8be73e13649b","message":"fix: Phase 1-3 全面治理 — 26项安全+性能+架构+类型+测试修复\n\nPhase 1 (P0 紧急修复):\n- BizCodePrefix 去重: LVS→LSC(话术), AST→ALS(联盟结算)\n- ORDER_TRANSITIONS 对齐 XState: 移除4个非法转换路径\n- 路由契约审计脚本修复: 正则支持模板字符串+排除函数调用 (0%→99.23%)\n- Kafka 消费者 DLQ+retry: attribution/campaign-effectiveness/marketing-workflow\n\nPhase 2 (P1 核心治理):\n- 高频表索引补充: 5表9条复合索引 (lead_events/lead_score_history/payment_plans等)\n- CI 覆盖率门禁: vitest --coverage 65%阈值 + GitHub Summary\n- v-permission 核心链路: 10文件22处按钮级权限新增\n- marketing-effectiveness 5层重构: 406行路由→36行标准分层\n\nPhase 3 (P2 质量提升):\n- vue-tsc 类型修复: 592→417 (175个错误清除, ECharts/TagType/FlexRecord)\n- Quote convertToOrder 双层防重: 幂等检查+乐观锁条件更新\n- Contract pending_sign 超时机制: RECALL撤回+EXPIRE过期状态\n- $queryRawUnsafe→Prisma.sql: 消除SQL注入面+DDL三重防护\n- payments 测试: 6→49用例 (228→839行, 含状态机边界/多租户/金额)\n- Redis pipeline 优化: 3文件5处循环get→mget/pipeline批量\n\n验证: 后端 tsc 0错误 | Prisma validate通过 | 75/75测试全通过 | 路由审计99.23%\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/db7f39e63151b9c065646855287b8be73e13649b","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-24T11:01:20+08:00","added":[],"removed":[],"modified":[".github/workflows/pr-validation.yml","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/sales.prisma","backend/scripts/audit-route-contract.ts","backend/src/modules/quotes/quote.service.test.ts","backend/vitest.config.ts","frontend/src/api/modules/ai-autopilot.ts","frontend/src/api/modules/attribution.ts","frontend/src/api/modules/livestream-groupbuy-conversion.ts","frontend/src/api/modules/location-assessments.ts","frontend/src/api/modules/multi-touch-attribution.ts","frontend/src/api/modules/quotes.ts","frontend/src/components/business/IMPanel.vue","frontend/src/components/common/ResponsiveDataTable.vue","frontend/src/components/responsive/ResponsiveFilterBar.vue","frontend/src/components/responsive/ResponsiveTabs.vue","frontend/src/composables/useDashboardRealtime.ts","frontend/src/composables/useQuickCreateCampaign.ts","frontend/src/i18n/menu-map.ts","frontend/src/utils/echarts.ts","frontend/src/utils/object-guard.ts","frontend/src/views/ai-agents/IMConversations.vue","frontend/src/views/ai-agents/IMIntegrationSettings.vue","frontend/src/views/approval-templates/Form.vue","frontend/src/views/community-materials/Index.vue","frontend/src/views/customers/Form.vue","frontend/src/views/customers/Index.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/leads/Form.vue","frontend/src/views/local-events/Form.vue","frontend/src/views/local-promotion/Form.vue","frontend/src/views/member-benefits/Form.vue","frontend/src/views/member-levels/Form.vue","frontend/src/views/members/Form.vue","frontend/src/views/orders/Form.vue","frontend/src/views/purchase-orders/Form.vue","frontend/src/views/quotes/Editor.vue","frontend/src/views/quotes/Form.vue","frontend/src/views/supply-chain/Index.vue","frontend/src/views/utm-tracking/Form.vue","frontend/src/views/video-content/Form.vue","frontend/src/views/video-publishing/Form.vue","frontend/src/views/video-publishing/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md"]},"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":1958148,"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":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-03-24T10:14:22+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
|
1774324840
|
1774324840
|
0
|
1774324840
|
1774324840
|
|
|
0
|
Edit
Delete
|