|
2098
|
docs: 新增数据库 Schema 文档 (docs/database/README.md)
|
6
|
5
|
health-check.yml
|
2044
|
-2
|
45
|
refs/heads/main
|
bf252f4083bdceceec242d821c3d37825d51f29f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"faa1dadd6c2449b7b63ad5f3a6878cebeb5f08f2","after":"bf252f4083bdceceec242d821c3d37825d51f29f","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/faa1dadd6c2449b7b63ad5f3a6878cebeb5f08f2...bf252f4083bdceceec242d821c3d37825d51f29f","commits":[{"id":"bf252f4083bdceceec242d821c3d37825d51f29f","message":"docs: 新增数据库 Schema 文档 (docs/database/README.md)\n\n- 创建 docs/database/README.md:完整说明 full_schema.sql 的统计数据、\n 生成方式、文件结构、使用场景、更新流程及多租户架构\n- 更新 README.md:在项目结构和文档章节中添加数据库文档引用\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/bf252f4083bdceceec242d821c3d37825d51f29f","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-02-28T10:53:27+08:00","added":["docs/database/README.md"],"removed":[],"modified":["README.md"]}],"total_commits":0,"head_commit":{"id":"bf252f4083bdceceec242d821c3d37825d51f29f","message":"docs: 新增数据库 Schema 文档 (docs/database/README.md)\n\n- 创建 docs/database/README.md:完整说明 full_schema.sql 的统计数据、\n 生成方式、文件结构、使用场景、更新流程及多租户架构\n- 更新 README.md:在项目结构和文档章节中添加数据库文档引用\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/bf252f4083bdceceec242d821c3d37825d51f29f","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-02-28T10:53:27+08:00","added":["docs/database/README.md"],"removed":[],"modified":["README.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/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"parent":null,"mirror":false,"size":682082,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-02-28T10:50:14+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","repo_transfer":null},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
1
|
3
|
1772462112
|
1772462113
|
0
|
1772462112
|
1772462113
|
NULL
|
|
0
|
Edit
Delete
|
|
2099
|
docs: 新增数据库 Schema 文档 (docs/database/README.md)
|
6
|
5
|
health-check.yml
|
2045
|
-2
|
45
|
refs/heads/main
|
bf252f4083bdceceec242d821c3d37825d51f29f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"faa1dadd6c2449b7b63ad5f3a6878cebeb5f08f2","after":"bf252f4083bdceceec242d821c3d37825d51f29f","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/faa1dadd6c2449b7b63ad5f3a6878cebeb5f08f2...bf252f4083bdceceec242d821c3d37825d51f29f","commits":[{"id":"bf252f4083bdceceec242d821c3d37825d51f29f","message":"docs: 新增数据库 Schema 文档 (docs/database/README.md)\n\n- 创建 docs/database/README.md:完整说明 full_schema.sql 的统计数据、\n 生成方式、文件结构、使用场景、更新流程及多租户架构\n- 更新 README.md:在项目结构和文档章节中添加数据库文档引用\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/bf252f4083bdceceec242d821c3d37825d51f29f","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-02-28T10:53:27+08:00","added":["docs/database/README.md"],"removed":[],"modified":["README.md"]}],"total_commits":0,"head_commit":{"id":"bf252f4083bdceceec242d821c3d37825d51f29f","message":"docs: 新增数据库 Schema 文档 (docs/database/README.md)\n\n- 创建 docs/database/README.md:完整说明 full_schema.sql 的统计数据、\n 生成方式、文件结构、使用场景、更新流程及多租户架构\n- 更新 README.md:在项目结构和文档章节中添加数据库文档引用\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/bf252f4083bdceceec242d821c3d37825d51f29f","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-02-28T10:53:27+08:00","added":["docs/database/README.md"],"removed":[],"modified":["README.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/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"parent":null,"mirror":false,"size":682082,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-02-28T10:50:14+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","repo_transfer":null},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
1
|
3
|
1772462412
|
1772462413
|
0
|
1772462412
|
1772462413
|
NULL
|
|
0
|
Edit
Delete
|
|
2100
|
docs: 新增数据库 Schema 文档 (docs/database/README.md)
|
6
|
5
|
health-check.yml
|
2046
|
-2
|
45
|
refs/heads/main
|
bf252f4083bdceceec242d821c3d37825d51f29f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"faa1dadd6c2449b7b63ad5f3a6878cebeb5f08f2","after":"bf252f4083bdceceec242d821c3d37825d51f29f","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/faa1dadd6c2449b7b63ad5f3a6878cebeb5f08f2...bf252f4083bdceceec242d821c3d37825d51f29f","commits":[{"id":"bf252f4083bdceceec242d821c3d37825d51f29f","message":"docs: 新增数据库 Schema 文档 (docs/database/README.md)\n\n- 创建 docs/database/README.md:完整说明 full_schema.sql 的统计数据、\n 生成方式、文件结构、使用场景、更新流程及多租户架构\n- 更新 README.md:在项目结构和文档章节中添加数据库文档引用\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/bf252f4083bdceceec242d821c3d37825d51f29f","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-02-28T10:53:27+08:00","added":["docs/database/README.md"],"removed":[],"modified":["README.md"]}],"total_commits":0,"head_commit":{"id":"bf252f4083bdceceec242d821c3d37825d51f29f","message":"docs: 新增数据库 Schema 文档 (docs/database/README.md)\n\n- 创建 docs/database/README.md:完整说明 full_schema.sql 的统计数据、\n 生成方式、文件结构、使用场景、更新流程及多租户架构\n- 更新 README.md:在项目结构和文档章节中添加数据库文档引用\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/bf252f4083bdceceec242d821c3d37825d51f29f","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-02-28T10:53:27+08:00","added":["docs/database/README.md"],"removed":[],"modified":["README.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/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"parent":null,"mirror":false,"size":682082,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-02-28T10:50:14+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","repo_transfer":null},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
1
|
3
|
1772462712
|
1772462713
|
0
|
1772462712
|
1772462713
|
NULL
|
|
0
|
Edit
Delete
|
|
2101
|
docs: 新增数据库 Schema 文档 (docs/database/README.md)
|
6
|
5
|
health-check.yml
|
2047
|
-2
|
45
|
refs/heads/main
|
bf252f4083bdceceec242d821c3d37825d51f29f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"faa1dadd6c2449b7b63ad5f3a6878cebeb5f08f2","after":"bf252f4083bdceceec242d821c3d37825d51f29f","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/faa1dadd6c2449b7b63ad5f3a6878cebeb5f08f2...bf252f4083bdceceec242d821c3d37825d51f29f","commits":[{"id":"bf252f4083bdceceec242d821c3d37825d51f29f","message":"docs: 新增数据库 Schema 文档 (docs/database/README.md)\n\n- 创建 docs/database/README.md:完整说明 full_schema.sql 的统计数据、\n 生成方式、文件结构、使用场景、更新流程及多租户架构\n- 更新 README.md:在项目结构和文档章节中添加数据库文档引用\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/bf252f4083bdceceec242d821c3d37825d51f29f","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-02-28T10:53:27+08:00","added":["docs/database/README.md"],"removed":[],"modified":["README.md"]}],"total_commits":0,"head_commit":{"id":"bf252f4083bdceceec242d821c3d37825d51f29f","message":"docs: 新增数据库 Schema 文档 (docs/database/README.md)\n\n- 创建 docs/database/README.md:完整说明 full_schema.sql 的统计数据、\n 生成方式、文件结构、使用场景、更新流程及多租户架构\n- 更新 README.md:在项目结构和文档章节中添加数据库文档引用\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/bf252f4083bdceceec242d821c3d37825d51f29f","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-02-28T10:53:27+08:00","added":["docs/database/README.md"],"removed":[],"modified":["README.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/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"parent":null,"mirror":false,"size":682082,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-02-28T10:50:14+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","repo_transfer":null},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
1
|
3
|
1772463012
|
1772463013
|
0
|
1772463012
|
1772463013
|
NULL
|
|
0
|
Edit
Delete
|
|
9913
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
e2e-tests.yml
|
9837
|
5
|
0
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
20
|
1774923481
|
1774924033
|
0
|
1774923479
|
1774926173
|
|
|
0
|
Edit
Delete
|
|
9914
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
test-pipeline.yml
|
9838
|
5
|
0
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
push
|
2
|
68
|
1774924034
|
1774925150
|
0
|
1774923480
|
1774927462
|
group: test-pipeline-${{ github.ref }}
cancel-in-p group: test-pipeline-${{ github.ref }}
cancel-in-progress: "true"
...
|
test-pipeline-refs/heads/main
|
1
|
Edit
Delete
|
|
9915
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9839
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774925151
|
1774925151
|
0
|
1774923618
|
1774925151
|
|
|
0
|
Edit
Delete
|
|
9916
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9840
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774925153
|
1774925153
|
0
|
1774923918
|
1774925153
|
|
|
0
|
Edit
Delete
|
|
9918
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9842
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774926265
|
1774926265
|
0
|
1774924218
|
1774926265
|
|
|
0
|
Edit
Delete
|
|
9919
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9843
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774926267
|
1774926267
|
0
|
1774924518
|
1774926267
|
|
|
0
|
Edit
Delete
|
|
9920
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9844
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774926269
|
1774926269
|
0
|
1774924818
|
1774926269
|
|
|
0
|
Edit
Delete
|
|
9921
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9845
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774926271
|
1774926271
|
0
|
1774925118
|
1774926271
|
|
|
0
|
Edit
Delete
|
|
9923
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9847
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774926283
|
1774926283
|
0
|
1774925418
|
1774926283
|
|
|
0
|
Edit
Delete
|
|
9924
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9848
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774926285
|
1774926285
|
0
|
1774925718
|
1774926285
|
|
|
0
|
Edit
Delete
|
|
9925
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9849
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774926287
|
1774926287
|
0
|
1774926018
|
1774926287
|
|
|
0
|
Edit
Delete
|
|
9927
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9851
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774927415
|
1774927415
|
0
|
1774926318
|
1774927415
|
|
|
0
|
Edit
Delete
|
|
9928
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9852
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774927417
|
1774927417
|
0
|
1774926618
|
1774927417
|
|
|
0
|
Edit
Delete
|
|
9929
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9853
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774927419
|
1774927419
|
0
|
1774926918
|
1774927419
|
|
|
0
|
Edit
Delete
|
|
9930
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9854
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774927421
|
1774927421
|
0
|
1774927218
|
1774927421
|
|
|
0
|
Edit
Delete
|
|
9933
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9857
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774927518
|
1774927519
|
0
|
1774927518
|
1774927519
|
|
|
0
|
Edit
Delete
|
|
9934
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9858
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774927818
|
1774927819
|
0
|
1774927818
|
1774927819
|
|
|
0
|
Edit
Delete
|
|
9935
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9859
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774928118
|
1774928119
|
0
|
1774928118
|
1774928119
|
|
|
0
|
Edit
Delete
|
|
9936
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9860
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774928418
|
1774928419
|
0
|
1774928418
|
1774928419
|
|
|
0
|
Edit
Delete
|
|
9937
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9861
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774928718
|
1774928719
|
0
|
1774928718
|
1774928719
|
|
|
0
|
Edit
Delete
|
|
9938
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9862
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774929018
|
1774929019
|
0
|
1774929018
|
1774929019
|
|
|
0
|
Edit
Delete
|
|
9939
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9863
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774929318
|
1774929319
|
0
|
1774929318
|
1774929319
|
|
|
0
|
Edit
Delete
|
|
9940
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9864
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774929618
|
1774929619
|
0
|
1774929618
|
1774929619
|
|
|
0
|
Edit
Delete
|
|
9941
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9865
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774929918
|
1774929919
|
0
|
1774929918
|
1774929919
|
|
|
0
|
Edit
Delete
|
|
9942
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9866
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774930218
|
1774930219
|
0
|
1774930218
|
1774930219
|
|
|
0
|
Edit
Delete
|
|
9943
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9867
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774930518
|
1774930519
|
0
|
1774930518
|
1774930519
|
|
|
0
|
Edit
Delete
|
|
9944
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9868
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774930818
|
1774930819
|
0
|
1774930818
|
1774930819
|
|
|
0
|
Edit
Delete
|
|
9945
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9869
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774931118
|
1774931119
|
0
|
1774931118
|
1774931119
|
|
|
0
|
Edit
Delete
|
|
9946
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9870
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774931418
|
1774931419
|
0
|
1774931418
|
1774931419
|
|
|
0
|
Edit
Delete
|
|
9947
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9871
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774931718
|
1774931719
|
0
|
1774931718
|
1774931719
|
|
|
0
|
Edit
Delete
|
|
9948
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9872
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774932018
|
1774932019
|
0
|
1774932018
|
1774932019
|
|
|
0
|
Edit
Delete
|
|
9949
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9873
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774932318
|
1774932319
|
0
|
1774932318
|
1774932319
|
|
|
0
|
Edit
Delete
|
|
9950
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9874
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774932618
|
1774932619
|
0
|
1774932618
|
1774932619
|
|
|
0
|
Edit
Delete
|
|
9951
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9875
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774932918
|
1774932919
|
0
|
1774932918
|
1774932919
|
|
|
0
|
Edit
Delete
|
|
9952
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9876
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774933218
|
1774933219
|
0
|
1774933218
|
1774933219
|
|
|
0
|
Edit
Delete
|
|
9953
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9877
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774933518
|
1774933519
|
0
|
1774933518
|
1774933519
|
|
|
0
|
Edit
Delete
|
|
9954
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9878
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774933818
|
1774933819
|
0
|
1774933818
|
1774933819
|
|
|
0
|
Edit
Delete
|
|
9955
|
feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施...
|
6
|
5
|
health-check.yml
|
9879
|
-2
|
241
|
refs/heads/main
|
9901c454467cf62d4e127620f218a97bcca01629
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fb960500246fc412cf02a20cc0b316e9100eeb7f","after":"9901c454467cf62d4e127620f218a97bcca01629","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fb960500246fc412cf02a20cc0b316e9100eeb7f...9901c454467cf62d4e127620f218a97bcca01629","commits":[{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},{"id":"17eeeeca6840d3d7f84c9a6a381db62de7119483","message":"feat(harness): add Harness Engineering v2.0 assets\n\nAdd 5 audit scripts (field-payload, enum-consistency, formrules-zod,\nresponse-columns, module-coverage), P0 chain E2E tests (53 cases),\nSLO monitoring configs, health check service, and vitest workspace\nunified configuration.\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/17eeeeca6840d3d7f84c9a6a381db62de7119483","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:07:36+08:00","added":[".claude/commands/juhi/harness.md",".claude/skills/juhi/harness.md","backend/src/shared/services/health-check.service.ts","backend/vitest.workspace.ts","deploy/monitoring/alerting-rules.yml","deploy/monitoring/grafana-dashboard-slo.json","docs/operations/slo-definitions.md","e2e/helpers/p0-chain.helper.ts","e2e/tests/p0-chain/boundary-guards.spec.ts","e2e/tests/p0-chain/lead-to-cash.spec.ts","e2e/tests/p0-chain/state-transitions.spec.ts","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/response-columns-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-field-payload.ts","scripts/audit-formrules-zod.ts","scripts/audit-module-coverage.ts","scripts/audit-response-columns.ts"],"removed":[],"modified":[]},{"id":"89e359306a90610d4d24002ab2f8eacc70ee3cb6","message":"feat(ai-agents): 完善模块全栈对齐 + 修复多租户隔离漏洞\n\n- fix(CRITICAL): multi-agent-collaboration 两处跨租户写入漏洞\n - updateSessionStatus 缺失 tenant_id 导致可跨租户篡改 session\n - addGroupMember 缺失 tenant_id 导致可跨租户修改 agent 协作标记\n- fix(Prisma↔Zod): workflow description .max(500)→.max(2000) 对齐 VarChar(2000)\n- fix(Zod): inputData 从 z.any() 改为 z.record(z.unknown()) (2处)\n- feat(statuses.ts): 补充 AI Agent/Task/Workflow 三组状态枚举+配置+转换规则\n- feat(types): 消除 7 处 any 类型,补充完整接口定义\n - AIAgentTrainingData/AIAgentMetrics/ListTrainingDataParams 等\n - CreateWorkflowInput steps/triggerConfig/errorHandling\n - IM 接口索引签名 any→unknown\n- feat(types): 新增 AITaskType(18值)/AITaskPriority(4值) 严格枚举\n- feat(types): AI_TASK_TYPE_OPTIONS 从 2 个补全到 18 个\n- feat(types): AI_TASK_STATUS_OPTIONS 补充 recovering 状态\n- feat(types): AI_AGENT_TYPE_OPTIONS 补充 ai_lead_collector\n- fix(types): CreateAIAgentInput.modelConfig 必填→可选对齐 Zod\n- fix(types): CreateTrainingDataInput.title 必填→可选对齐 Zod\n- fix(types): ListAITasksParams 补充 reviewStatus 字段\n- fix(types): WorkflowStepDefinition 字段名对齐 Zod (stepId/stepType/nextSteps)\n- refactor(router): 清理 458 行注释路由代码\n- feat(store): 补充 fetchOverviewStats/batchAssignTasks 方法\n- feat(llm-analyzer): 扩展为统一导出视觉/语义/转换三类 LLM 能力\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89e359306a90610d4d24002ab2f8eacc70ee3cb6","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T09:57:09+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/ai-agent.schema.ts","backend/src/modules/ai-agents/services/llm-analyzer.ts","backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/shared/constants/statuses.ts","frontend/src/router/modules/ai-agents.ts","frontend/src/stores/ai-agent.ts","frontend/src/types/ai-agent.ts"]}],"total_commits":0,"head_commit":{"id":"9901c454467cf62d4e127620f218a97bcca01629","message":"feat(harness): Harness Engineering v2.0 — 字段对齐四维清零 + 三层门禁 + 基础设施\n\n- 字段对齐四维清零: field-payload / enum-consistency / formrules-zod / response-columns 全部 0 ERROR\n- pre-commit 三层门禁: Fast(\u003c8s) / Smart(条件触发) / Deep(CI)\n- env Zod 校验: ~70 变量 fail-fast,生产环境加严\n- vitest workspace 统一: 5 套配置 → 1 套 (unit/api/integration)\n- process-adapter 类型修复: unknown → string 安全转换\n- shared/package.json: 新增 types/* 通配符导出\n- 152 文件变更,2642 插入 / 724 删除\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9901c454467cf62d4e127620f218a97bcca01629","author":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"committer":{"name":"laoluojuhai","email":"laoluojuhai@users.noreply.github.com","username":""},"verification":null,"timestamp":"2026-03-31T10:08:45+08:00","added":[],"removed":[".claude/worktrees/crazy-pasteur",".claude/worktrees/dazzling-ramanujan",".claude/worktrees/exciting-mahavira",".claude/worktrees/nice-bassi",".claude/worktrees/vibrant-mestorf",".claude/worktrees/wonderful-darwin","e2e/playwright-report/data/5987d960550c1a694ee41c269f956510f82699ea.png","e2e/playwright-report/data/e6031c958be626746b5d7288737726de75f57e58.md"],"modified":[".claude/settings.json",".husky/pre-commit","AGENTS.md","CLAUDE.md","Makefile","backend/.env.example","backend/package.json","backend/scripts/run-api-suite.ts","backend/src/config/env.ts","backend/src/modules/ad-audiences/ad-audience.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-merchants/alliance-merchant.schema.ts","backend/src/modules/alliance-referrals/alliance-referral.schema.ts","backend/src/modules/audit-logs/audit-log.schema.ts","backend/src/modules/community-members/community-member.schema.ts","backend/src/modules/community-messages/community-message.schema.ts","backend/src/modules/content-copyright/content-copyright.schema.ts","backend/src/modules/content-review/content-review.schema.ts","backend/src/modules/content-templates/content-template.schema.ts","backend/src/modules/crm-activities/crm-activity.schema.ts","backend/src/modules/devices/asset-activation.schema.ts","backend/src/modules/event-logs/event-logs.schema.ts","backend/src/modules/faults/fault.schema.ts","backend/src/modules/geo-fences/geo-fences.schema.ts","backend/src/modules/geo-keywords/geo-keyword.schema.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-products/groupbuy-product.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-products/livestream-product.schema.ts","backend/src/modules/livestream-rooms/livestream-room.schema.ts","backend/src/modules/livestream-schedules/livestream-schedule.schema.ts","backend/src/modules/marketing-workflows/marketing-workflow.schema.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/products/services/product.schema.ts","backend/src/modules/renewals/renewal.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/social-accounts/social-account.schema.ts","backend/src/modules/social-auto-replies/social-auto-reply.schema.ts","backend/src/modules/store-inventory/store-inventory.schema.ts","backend/src/shared/process-core/process-adapter.ts","backend/vitest.api.config.ts","backend/vitest.config.api.ts","backend/vitest.config.ts","backend/vitest.integration.config.ts","backend/vitest.unit.config.ts","docs/governance/baseline-and-experience.md","e2e/package.json","e2e/playwright-report/index.html","e2e/test-results/results.json","frontend/src/api/modules/admin-settings.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-coupons.ts","frontend/src/api/modules/alliance-packages.ts","frontend/src/api/modules/alliance-partners.ts","frontend/src/api/modules/approvals.ts","frontend/src/api/modules/auth.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/commissions.ts","frontend/src/api/modules/community-bots.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/contracts.ts","frontend/src/api/modules/cpq.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/devices.ts","frontend/src/api/modules/email-templates.ts","frontend/src/api/modules/faults.ts","frontend/src/api/modules/geo-reviews.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-pricing.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/knowledge-capture.ts","frontend/src/api/modules/landing-pages.ts","frontend/src/api/modules/lead-scoring-ai.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/livestream-rooms.ts","frontend/src/api/modules/livestream-schedules.ts","frontend/src/api/modules/livestream.ts","frontend/src/api/modules/marketing-automation.ts","frontend/src/api/modules/marketing-workflows.ts","frontend/src/api/modules/menus.ts","frontend/src/api/modules/partners.ts","frontend/src/api/modules/price-books.ts","frontend/src/api/modules/renewal-tasks.ts","frontend/src/api/modules/reports.ts","frontend/src/api/modules/satisfaction.ts","frontend/src/api/modules/social-interactions.ts","frontend/src/api/modules/store-inventory.ts","frontend/src/api/modules/stores.ts","frontend/src/api/modules/supply-chain.ts","frontend/src/api/modules/tickets.ts","frontend/src/api/modules/users.ts","frontend/src/stores/orders.ts","frontend/src/types/enums.ts","frontend/src/views/ad-biddings/Form.vue","frontend/src/views/ad-campaigns/Form.vue","frontend/src/views/alliance-partners/Form.vue","frontend/src/views/assembly/BomForm.vue","frontend/src/views/campaign-targets/Index.vue","frontend/src/views/campaigns/Detail.vue","frontend/src/views/campaigns/Index.vue","frontend/src/views/campaigns/components/StoreSelectionDialog.vue","frontend/src/views/campaigns/wizard/Step4Stores.vue","frontend/src/views/commissions/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/contract-templates/Index.vue","frontend/src/views/devices/Form.vue","frontend/src/views/disbursements/components/DisbursementFormDialog.vue","frontend/src/views/disbursements/components/ExpenseCategoryFormDialog.vue","frontend/src/views/disbursements/components/ExpenseClaimFormDialog.vue","frontend/src/views/email-marketing/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-assignment/Index.vue","frontend/src/views/lead-scoring/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Form.vue","frontend/src/views/leads/ScoringRules.vue","frontend/src/views/livestream-rooms/Form.vue","frontend/src/views/livestream-rooms/Index.vue","frontend/src/views/livestream/Index.vue","frontend/src/views/livestream/Schedules.vue","frontend/src/views/marketing-content/ContentForm.vue","frontend/src/views/orders/Index.vue","frontend/src/views/partners/Detail.vue","frontend/src/views/partners/Form.vue","frontend/src/views/payment-plans/Index.vue","frontend/src/views/pm/PlanForm.vue","frontend/src/views/projects/Tasks.vue","frontend/src/views/projects/components/gantt/ProjectGanttToolbar.vue","frontend/src/views/rma/Index.vue","frontend/src/views/search/Index.vue","frontend/src/views/sla/Index.vue","frontend/src/views/social-posts/Form.vue","frontend/src/views/stores/Detail.vue","frontend/src/views/stores/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","frontend/src/views/supplier-management/Applications.vue","frontend/src/views/supplier-management/Contracts.vue","frontend/src/views/supplier-management/JBPs.vue","frontend/src/views/supplier-management/Rejections.vue","frontend/src/views/supplier-management/Risks.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/supply-chain/Index.vue","package.json","reports/commander-workset.latest.json","scripts/lib/governance-commander.ts","shared/package.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1906045,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-03-30T21:11:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
schedule
|
4
|
4
|
1774934118
|
1774934119
|
0
|
1774934118
|
1774934119
|
|
|
0
|
Edit
Delete
|
|
19
|
test11188889
|
2
|
2
|
hello-world.yaml
|
18
|
1
|
0
|
refs/heads/main
|
b277cb95b0e9e11aded5a72555e5bfe6066bd7b5
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fbac0054c597227db514fa1c6581f5e9002a4c84","after":"b277cb95b0e9e11aded5a72555e5bfe6066bd7b5","compare_url":"https://gitea.g-hi.com/juhai/testpc/compare/fbac0054c597227db514fa1c6581f5e9002a4c84...b277cb95b0e9e11aded5a72555e5bfe6066bd7b5","commits":[{"id":"b277cb95b0e9e11aded5a72555e5bfe6066bd7b5","message":"test11188889\n","url":"https://gitea.g-hi.com/juhai/testpc/commit/b277cb95b0e9e11aded5a72555e5bfe6066bd7b5","author":{"name":"zhangjunnan","email":"121158035@qq.com","username":"zhangjunnan"},"committer":{"name":"zhangjunnan","email":"121158035@qq.com","username":"zhangjunnan"},"verification":null,"timestamp":"2026-02-12T14:36:28+08:00","added":[],"removed":[],"modified":["pc/kg.php"]}],"total_commits":0,"head_commit":{"id":"b277cb95b0e9e11aded5a72555e5bfe6066bd7b5","message":"test11188889\n","url":"https://gitea.g-hi.com/juhai/testpc/commit/b277cb95b0e9e11aded5a72555e5bfe6066bd7b5","author":{"name":"zhangjunnan","email":"121158035@qq.com","username":"zhangjunnan"},"committer":{"name":"zhangjunnan","email":"121158035@qq.com","username":"zhangjunnan"},"verification":null,"timestamp":"2026-02-12T14:36:28+08:00","added":[],"removed":[],"modified":["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":17723,"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-12T14:36:13+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
|
2
|
0
|
1770878314
|
0
|
1770878195
|
1770878314
|
NULL
|
|
0
|
Edit
Delete
|
|
7600
|
fix: v-permission第二批5模块覆盖 + 三表多租户索引优化
|
6
|
5
|
e2e-tests.yml
|
7525
|
5
|
0
|
refs/heads/main
|
2ec5b7d8079ffd911c7b27a395d5aba3ceafe372
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"ff3149170c6b0deb6d8151cb962592199b95bdd8","after":"2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/ff3149170c6b0deb6d8151cb962592199b95bdd8...2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","commits":[{"id":"2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","message":"fix: v-permission第二批5模块覆盖 + 三表多租户索引优化\n\n## v-permission 第二批覆盖 (17 个指令)\n- customers: create/import/export/update/delete (5个)\n- campaigns: create/update (3个)\n- partners: create/update/delete (3个)\n- shipments: create/update/delete (4个)\n- renewals: update/quote:create (4个,含JS+指令双重防线)\n\n## 多租户索引优化\n- opportunities: 清理6个重复/缺失tenant_id索引 → 8个多租户复合索引\n- orders: fulfillment_status/payment_status 补充 tenant_id 前缀\n- service_tickets: priority 补充 tenant_id+status 复合索引\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","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-24T08:29:44+08:00","added":[],"removed":[],"modified":["backend/prisma/schema.prisma","backend/prisma/schema/orders.prisma","backend/prisma/schema/sales.prisma","backend/prisma/schema/service.prisma","frontend/src/views/campaigns/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/partners/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/shipments/Index.vue"]}],"total_commits":0,"head_commit":{"id":"2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","message":"fix: v-permission第二批5模块覆盖 + 三表多租户索引优化\n\n## v-permission 第二批覆盖 (17 个指令)\n- customers: create/import/export/update/delete (5个)\n- campaigns: create/update (3个)\n- partners: create/update/delete (3个)\n- shipments: create/update/delete (4个)\n- renewals: update/quote:create (4个,含JS+指令双重防线)\n\n## 多租户索引优化\n- opportunities: 清理6个重复/缺失tenant_id索引 → 8个多租户复合索引\n- orders: fulfillment_status/payment_status 补充 tenant_id 前缀\n- service_tickets: priority 补充 tenant_id+status 复合索引\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","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-24T08:29:44+08:00","added":[],"removed":[],"modified":["backend/prisma/schema.prisma","backend/prisma/schema/orders.prisma","backend/prisma/schema/sales.prisma","backend/prisma/schema/service.prisma","frontend/src/views/campaigns/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/partners/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/shipments/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":1956120,"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-24T01:13:28+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
|
1774312190
|
1774312403
|
0
|
1774312189
|
1774312450
|
|
|
0
|
Edit
Delete
|
|
7601
|
fix: v-permission第二批5模块覆盖 + 三表多租户索引优化
|
6
|
5
|
test-pipeline.yml
|
7526
|
5
|
0
|
refs/heads/main
|
2ec5b7d8079ffd911c7b27a395d5aba3ceafe372
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"ff3149170c6b0deb6d8151cb962592199b95bdd8","after":"2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/ff3149170c6b0deb6d8151cb962592199b95bdd8...2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","commits":[{"id":"2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","message":"fix: v-permission第二批5模块覆盖 + 三表多租户索引优化\n\n## v-permission 第二批覆盖 (17 个指令)\n- customers: create/import/export/update/delete (5个)\n- campaigns: create/update (3个)\n- partners: create/update/delete (3个)\n- shipments: create/update/delete (4个)\n- renewals: update/quote:create (4个,含JS+指令双重防线)\n\n## 多租户索引优化\n- opportunities: 清理6个重复/缺失tenant_id索引 → 8个多租户复合索引\n- orders: fulfillment_status/payment_status 补充 tenant_id 前缀\n- service_tickets: priority 补充 tenant_id+status 复合索引\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","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-24T08:29:44+08:00","added":[],"removed":[],"modified":["backend/prisma/schema.prisma","backend/prisma/schema/orders.prisma","backend/prisma/schema/sales.prisma","backend/prisma/schema/service.prisma","frontend/src/views/campaigns/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/partners/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/shipments/Index.vue"]}],"total_commits":0,"head_commit":{"id":"2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","message":"fix: v-permission第二批5模块覆盖 + 三表多租户索引优化\n\n## v-permission 第二批覆盖 (17 个指令)\n- customers: create/import/export/update/delete (5个)\n- campaigns: create/update (3个)\n- partners: create/update/delete (3个)\n- shipments: create/update/delete (4个)\n- renewals: update/quote:create (4个,含JS+指令双重防线)\n\n## 多租户索引优化\n- opportunities: 清理6个重复/缺失tenant_id索引 → 8个多租户复合索引\n- orders: fulfillment_status/payment_status 补充 tenant_id 前缀\n- service_tickets: priority 补充 tenant_id+status 复合索引\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","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-24T08:29:44+08:00","added":[],"removed":[],"modified":["backend/prisma/schema.prisma","backend/prisma/schema/orders.prisma","backend/prisma/schema/sales.prisma","backend/prisma/schema/service.prisma","frontend/src/views/campaigns/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/partners/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/shipments/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":1956120,"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-24T01:13:28+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
|
1774312404
|
1774312440
|
0
|
1774312190
|
1774312508
|
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
|
|
7602
|
fix: v-permission第二批5模块覆盖 + 三表多租户索引优化
|
6
|
5
|
health-check.yml
|
7527
|
-2
|
118
|
refs/heads/main
|
2ec5b7d8079ffd911c7b27a395d5aba3ceafe372
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"ff3149170c6b0deb6d8151cb962592199b95bdd8","after":"2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/ff3149170c6b0deb6d8151cb962592199b95bdd8...2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","commits":[{"id":"2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","message":"fix: v-permission第二批5模块覆盖 + 三表多租户索引优化\n\n## v-permission 第二批覆盖 (17 个指令)\n- customers: create/import/export/update/delete (5个)\n- campaigns: create/update (3个)\n- partners: create/update/delete (3个)\n- shipments: create/update/delete (4个)\n- renewals: update/quote:create (4个,含JS+指令双重防线)\n\n## 多租户索引优化\n- opportunities: 清理6个重复/缺失tenant_id索引 → 8个多租户复合索引\n- orders: fulfillment_status/payment_status 补充 tenant_id 前缀\n- service_tickets: priority 补充 tenant_id+status 复合索引\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","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-24T08:29:44+08:00","added":[],"removed":[],"modified":["backend/prisma/schema.prisma","backend/prisma/schema/orders.prisma","backend/prisma/schema/sales.prisma","backend/prisma/schema/service.prisma","frontend/src/views/campaigns/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/partners/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/shipments/Index.vue"]}],"total_commits":0,"head_commit":{"id":"2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","message":"fix: v-permission第二批5模块覆盖 + 三表多租户索引优化\n\n## v-permission 第二批覆盖 (17 个指令)\n- customers: create/import/export/update/delete (5个)\n- campaigns: create/update (3个)\n- partners: create/update/delete (3个)\n- shipments: create/update/delete (4个)\n- renewals: update/quote:create (4个,含JS+指令双重防线)\n\n## 多租户索引优化\n- opportunities: 清理6个重复/缺失tenant_id索引 → 8个多租户复合索引\n- orders: fulfillment_status/payment_status 补充 tenant_id 前缀\n- service_tickets: priority 补充 tenant_id+status 复合索引\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","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-24T08:29:44+08:00","added":[],"removed":[],"modified":["backend/prisma/schema.prisma","backend/prisma/schema/orders.prisma","backend/prisma/schema/sales.prisma","backend/prisma/schema/service.prisma","frontend/src/views/campaigns/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/partners/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/shipments/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":1956120,"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-24T01:13:28+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
|
1774312441
|
1774312442
|
0
|
1774312240
|
1774312442
|
|
|
0
|
Edit
Delete
|
|
7608
|
fix: v-permission第二批5模块覆盖 + 三表多租户索引优化
|
6
|
5
|
health-check.yml
|
7533
|
-2
|
118
|
refs/heads/main
|
2ec5b7d8079ffd911c7b27a395d5aba3ceafe372
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"ff3149170c6b0deb6d8151cb962592199b95bdd8","after":"2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/ff3149170c6b0deb6d8151cb962592199b95bdd8...2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","commits":[{"id":"2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","message":"fix: v-permission第二批5模块覆盖 + 三表多租户索引优化\n\n## v-permission 第二批覆盖 (17 个指令)\n- customers: create/import/export/update/delete (5个)\n- campaigns: create/update (3个)\n- partners: create/update/delete (3个)\n- shipments: create/update/delete (4个)\n- renewals: update/quote:create (4个,含JS+指令双重防线)\n\n## 多租户索引优化\n- opportunities: 清理6个重复/缺失tenant_id索引 → 8个多租户复合索引\n- orders: fulfillment_status/payment_status 补充 tenant_id 前缀\n- service_tickets: priority 补充 tenant_id+status 复合索引\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","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-24T08:29:44+08:00","added":[],"removed":[],"modified":["backend/prisma/schema.prisma","backend/prisma/schema/orders.prisma","backend/prisma/schema/sales.prisma","backend/prisma/schema/service.prisma","frontend/src/views/campaigns/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/partners/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/shipments/Index.vue"]}],"total_commits":0,"head_commit":{"id":"2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","message":"fix: v-permission第二批5模块覆盖 + 三表多租户索引优化\n\n## v-permission 第二批覆盖 (17 个指令)\n- customers: create/import/export/update/delete (5个)\n- campaigns: create/update (3个)\n- partners: create/update/delete (3个)\n- shipments: create/update/delete (4个)\n- renewals: update/quote:create (4个,含JS+指令双重防线)\n\n## 多租户索引优化\n- opportunities: 清理6个重复/缺失tenant_id索引 → 8个多租户复合索引\n- orders: fulfillment_status/payment_status 补充 tenant_id 前缀\n- service_tickets: priority 补充 tenant_id+status 复合索引\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","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-24T08:29:44+08:00","added":[],"removed":[],"modified":["backend/prisma/schema.prisma","backend/prisma/schema/orders.prisma","backend/prisma/schema/sales.prisma","backend/prisma/schema/service.prisma","frontend/src/views/campaigns/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/partners/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/shipments/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":1956120,"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-24T01:13:28+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
|
1774312541
|
1774312542
|
0
|
1774312540
|
1774312542
|
|
|
0
|
Edit
Delete
|
|
7609
|
fix: v-permission第二批5模块覆盖 + 三表多租户索引优化
|
6
|
5
|
health-check.yml
|
7534
|
-2
|
118
|
refs/heads/main
|
2ec5b7d8079ffd911c7b27a395d5aba3ceafe372
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"ff3149170c6b0deb6d8151cb962592199b95bdd8","after":"2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/ff3149170c6b0deb6d8151cb962592199b95bdd8...2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","commits":[{"id":"2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","message":"fix: v-permission第二批5模块覆盖 + 三表多租户索引优化\n\n## v-permission 第二批覆盖 (17 个指令)\n- customers: create/import/export/update/delete (5个)\n- campaigns: create/update (3个)\n- partners: create/update/delete (3个)\n- shipments: create/update/delete (4个)\n- renewals: update/quote:create (4个,含JS+指令双重防线)\n\n## 多租户索引优化\n- opportunities: 清理6个重复/缺失tenant_id索引 → 8个多租户复合索引\n- orders: fulfillment_status/payment_status 补充 tenant_id 前缀\n- service_tickets: priority 补充 tenant_id+status 复合索引\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","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-24T08:29:44+08:00","added":[],"removed":[],"modified":["backend/prisma/schema.prisma","backend/prisma/schema/orders.prisma","backend/prisma/schema/sales.prisma","backend/prisma/schema/service.prisma","frontend/src/views/campaigns/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/partners/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/shipments/Index.vue"]}],"total_commits":0,"head_commit":{"id":"2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","message":"fix: v-permission第二批5模块覆盖 + 三表多租户索引优化\n\n## v-permission 第二批覆盖 (17 个指令)\n- customers: create/import/export/update/delete (5个)\n- campaigns: create/update (3个)\n- partners: create/update/delete (3个)\n- shipments: create/update/delete (4个)\n- renewals: update/quote:create (4个,含JS+指令双重防线)\n\n## 多租户索引优化\n- opportunities: 清理6个重复/缺失tenant_id索引 → 8个多租户复合索引\n- orders: fulfillment_status/payment_status 补充 tenant_id 前缀\n- service_tickets: priority 补充 tenant_id+status 复合索引\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","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-24T08:29:44+08:00","added":[],"removed":[],"modified":["backend/prisma/schema.prisma","backend/prisma/schema/orders.prisma","backend/prisma/schema/sales.prisma","backend/prisma/schema/service.prisma","frontend/src/views/campaigns/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/partners/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/shipments/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":1956120,"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-24T01:13:28+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
|
1774312841
|
1774312842
|
0
|
1774312840
|
1774312842
|
|
|
0
|
Edit
Delete
|
|
7610
|
fix: v-permission第二批5模块覆盖 + 三表多租户索引优化
|
6
|
5
|
health-check.yml
|
7535
|
-2
|
118
|
refs/heads/main
|
2ec5b7d8079ffd911c7b27a395d5aba3ceafe372
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"ff3149170c6b0deb6d8151cb962592199b95bdd8","after":"2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/ff3149170c6b0deb6d8151cb962592199b95bdd8...2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","commits":[{"id":"2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","message":"fix: v-permission第二批5模块覆盖 + 三表多租户索引优化\n\n## v-permission 第二批覆盖 (17 个指令)\n- customers: create/import/export/update/delete (5个)\n- campaigns: create/update (3个)\n- partners: create/update/delete (3个)\n- shipments: create/update/delete (4个)\n- renewals: update/quote:create (4个,含JS+指令双重防线)\n\n## 多租户索引优化\n- opportunities: 清理6个重复/缺失tenant_id索引 → 8个多租户复合索引\n- orders: fulfillment_status/payment_status 补充 tenant_id 前缀\n- service_tickets: priority 补充 tenant_id+status 复合索引\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","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-24T08:29:44+08:00","added":[],"removed":[],"modified":["backend/prisma/schema.prisma","backend/prisma/schema/orders.prisma","backend/prisma/schema/sales.prisma","backend/prisma/schema/service.prisma","frontend/src/views/campaigns/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/partners/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/shipments/Index.vue"]}],"total_commits":0,"head_commit":{"id":"2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","message":"fix: v-permission第二批5模块覆盖 + 三表多租户索引优化\n\n## v-permission 第二批覆盖 (17 个指令)\n- customers: create/import/export/update/delete (5个)\n- campaigns: create/update (3个)\n- partners: create/update/delete (3个)\n- shipments: create/update/delete (4个)\n- renewals: update/quote:create (4个,含JS+指令双重防线)\n\n## 多租户索引优化\n- opportunities: 清理6个重复/缺失tenant_id索引 → 8个多租户复合索引\n- orders: fulfillment_status/payment_status 补充 tenant_id 前缀\n- service_tickets: priority 补充 tenant_id+status 复合索引\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","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-24T08:29:44+08:00","added":[],"removed":[],"modified":["backend/prisma/schema.prisma","backend/prisma/schema/orders.prisma","backend/prisma/schema/sales.prisma","backend/prisma/schema/service.prisma","frontend/src/views/campaigns/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/partners/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/shipments/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":1956120,"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-24T01:13:28+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
|
1774313141
|
1774313142
|
0
|
1774313140
|
1774313142
|
|
|
0
|
Edit
Delete
|
|
7611
|
fix: v-permission第二批5模块覆盖 + 三表多租户索引优化
|
6
|
5
|
health-check.yml
|
7536
|
-2
|
118
|
refs/heads/main
|
2ec5b7d8079ffd911c7b27a395d5aba3ceafe372
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"ff3149170c6b0deb6d8151cb962592199b95bdd8","after":"2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/ff3149170c6b0deb6d8151cb962592199b95bdd8...2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","commits":[{"id":"2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","message":"fix: v-permission第二批5模块覆盖 + 三表多租户索引优化\n\n## v-permission 第二批覆盖 (17 个指令)\n- customers: create/import/export/update/delete (5个)\n- campaigns: create/update (3个)\n- partners: create/update/delete (3个)\n- shipments: create/update/delete (4个)\n- renewals: update/quote:create (4个,含JS+指令双重防线)\n\n## 多租户索引优化\n- opportunities: 清理6个重复/缺失tenant_id索引 → 8个多租户复合索引\n- orders: fulfillment_status/payment_status 补充 tenant_id 前缀\n- service_tickets: priority 补充 tenant_id+status 复合索引\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","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-24T08:29:44+08:00","added":[],"removed":[],"modified":["backend/prisma/schema.prisma","backend/prisma/schema/orders.prisma","backend/prisma/schema/sales.prisma","backend/prisma/schema/service.prisma","frontend/src/views/campaigns/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/partners/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/shipments/Index.vue"]}],"total_commits":0,"head_commit":{"id":"2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","message":"fix: v-permission第二批5模块覆盖 + 三表多租户索引优化\n\n## v-permission 第二批覆盖 (17 个指令)\n- customers: create/import/export/update/delete (5个)\n- campaigns: create/update (3个)\n- partners: create/update/delete (3个)\n- shipments: create/update/delete (4个)\n- renewals: update/quote:create (4个,含JS+指令双重防线)\n\n## 多租户索引优化\n- opportunities: 清理6个重复/缺失tenant_id索引 → 8个多租户复合索引\n- orders: fulfillment_status/payment_status 补充 tenant_id 前缀\n- service_tickets: priority 补充 tenant_id+status 复合索引\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/2ec5b7d8079ffd911c7b27a395d5aba3ceafe372","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-24T08:29:44+08:00","added":[],"removed":[],"modified":["backend/prisma/schema.prisma","backend/prisma/schema/orders.prisma","backend/prisma/schema/sales.prisma","backend/prisma/schema/service.prisma","frontend/src/views/campaigns/Index.vue","frontend/src/views/customers/Index.vue","frontend/src/views/partners/Index.vue","frontend/src/views/renewals/Index.vue","frontend/src/views/shipments/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":1956120,"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-24T01:13:28+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
|
1774313441
|
1774313442
|
0
|
1774313440
|
1774313442
|
|
|
0
|
Edit
Delete
|