|
93
|
Fix login expiration throttling
|
6
|
5
|
health-check.yml
|
54
|
-2
|
38
|
refs/heads/main
|
c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"57dde43e9eb1e72e9797fd342f9d920b9afb6ab5","after":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/57dde43e9eb1e72e9797fd342f9d920b9afb6ab5...c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","commits":[{"id":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","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-24T00:24:02+08:00","added":[],"removed":[],"modified":["backend/src/modules/projects/project.controller.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/finance/Index.vue","frontend/src/views/projects/Index.vue"]},{"id":"53914cf9a2af18dfe3fd1bdd68865d0629979b9f","message":"Fix auth expiry handling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/53914cf9a2af18dfe3fd1bdd68865d0629979b9f","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-24T00:10:03+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/product.service.ts","backend/src/shared/constants/index.ts","frontend/src/views/products/Index.vue","mobile/src/api/modules/leads.ts","mobile/src/views/Leads.vue"]},{"id":"2757965438fd9e2796643999b4dc70fd9a29ea62","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/2757965438fd9e2796643999b4dc70fd9a29ea62","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-23T23:51:25+08:00","added":["backend/prisma/migrations/20260223000001_add_cost_allocation_supplier_payment_permissions/migration.sql"],"removed":[],"modified":["backend/prisma/seed.ts","backend/src/modules/inventory/inventory.controller.ts","backend/src/modules/knowledge-feedback/knowledge-feedback.schema.ts","backend/src/modules/knowledge-feedback/knowledge-feedback.service.ts","backend/src/modules/products/services/sku.service.ts","backend/src/modules/shipments/shipment.routes.ts","frontend/src/api/response-normalizer.ts","frontend/src/views/inventory/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/projects/Index.vue"]},{"id":"97441ae42649a48470bbc978b3ad77061a1703e4","message":"Fix auth expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/97441ae42649a48470bbc978b3ad77061a1703e4","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-23T22:57:44+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/category.service.ts","backend/src/modules/products/services/product.service.ts","frontend/src/views/products/Index.vue"]},{"id":"aca608e90896b9e61e7348d82e300954c1b34f0f","message":"Fix 登录过期节流处理」} PMID??? Wait string\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/aca608e90896b9e61e7348d82e300954c1b34f0f","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-23T22:46:26+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/category.service.ts","frontend/src/api/modules/ar-ledger.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/ar-ledger/Index.vue","frontend/src/views/ar-ledger/components/CollectionManager.vue","frontend/src/views/ar-ledger/components/StatementGenerator.vue","frontend/src/views/products/Index.vue","frontend/src/views/social-accounts/Index.vue"]}],"total_commits":0,"head_commit":{"id":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","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-24T00:24:02+08:00","added":[],"removed":[],"modified":["backend/src/modules/projects/project.controller.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/finance/Index.vue","frontend/src/views/projects/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/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":true,"fork":false,"template":false,"parent":null,"mirror":false,"size":478163,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-02-24T00:29:41+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
|
1771867210
|
1771867211
|
0
|
1771867210
|
1771867211
|
NULL
|
|
0
|
Edit
Delete
|
|
92
|
Fix login expiration throttling
|
6
|
5
|
health-check.yml
|
53
|
-2
|
38
|
refs/heads/main
|
c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"57dde43e9eb1e72e9797fd342f9d920b9afb6ab5","after":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/57dde43e9eb1e72e9797fd342f9d920b9afb6ab5...c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","commits":[{"id":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","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-24T00:24:02+08:00","added":[],"removed":[],"modified":["backend/src/modules/projects/project.controller.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/finance/Index.vue","frontend/src/views/projects/Index.vue"]},{"id":"53914cf9a2af18dfe3fd1bdd68865d0629979b9f","message":"Fix auth expiry handling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/53914cf9a2af18dfe3fd1bdd68865d0629979b9f","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-24T00:10:03+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/product.service.ts","backend/src/shared/constants/index.ts","frontend/src/views/products/Index.vue","mobile/src/api/modules/leads.ts","mobile/src/views/Leads.vue"]},{"id":"2757965438fd9e2796643999b4dc70fd9a29ea62","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/2757965438fd9e2796643999b4dc70fd9a29ea62","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-23T23:51:25+08:00","added":["backend/prisma/migrations/20260223000001_add_cost_allocation_supplier_payment_permissions/migration.sql"],"removed":[],"modified":["backend/prisma/seed.ts","backend/src/modules/inventory/inventory.controller.ts","backend/src/modules/knowledge-feedback/knowledge-feedback.schema.ts","backend/src/modules/knowledge-feedback/knowledge-feedback.service.ts","backend/src/modules/products/services/sku.service.ts","backend/src/modules/shipments/shipment.routes.ts","frontend/src/api/response-normalizer.ts","frontend/src/views/inventory/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/projects/Index.vue"]},{"id":"97441ae42649a48470bbc978b3ad77061a1703e4","message":"Fix auth expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/97441ae42649a48470bbc978b3ad77061a1703e4","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-23T22:57:44+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/category.service.ts","backend/src/modules/products/services/product.service.ts","frontend/src/views/products/Index.vue"]},{"id":"aca608e90896b9e61e7348d82e300954c1b34f0f","message":"Fix 登录过期节流处理」} PMID??? Wait string\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/aca608e90896b9e61e7348d82e300954c1b34f0f","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-23T22:46:26+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/category.service.ts","frontend/src/api/modules/ar-ledger.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/ar-ledger/Index.vue","frontend/src/views/ar-ledger/components/CollectionManager.vue","frontend/src/views/ar-ledger/components/StatementGenerator.vue","frontend/src/views/products/Index.vue","frontend/src/views/social-accounts/Index.vue"]}],"total_commits":0,"head_commit":{"id":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","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-24T00:24:02+08:00","added":[],"removed":[],"modified":["backend/src/modules/projects/project.controller.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/finance/Index.vue","frontend/src/views/projects/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/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":true,"fork":false,"template":false,"parent":null,"mirror":false,"size":478163,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-02-24T00:29:41+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
|
1771866910
|
1771866911
|
0
|
1771866910
|
1771866911
|
NULL
|
|
0
|
Edit
Delete
|
|
91
|
Fix login expiration throttling
|
6
|
5
|
health-check.yml
|
52
|
-2
|
38
|
refs/heads/main
|
c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"57dde43e9eb1e72e9797fd342f9d920b9afb6ab5","after":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/57dde43e9eb1e72e9797fd342f9d920b9afb6ab5...c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","commits":[{"id":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","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-24T00:24:02+08:00","added":[],"removed":[],"modified":["backend/src/modules/projects/project.controller.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/finance/Index.vue","frontend/src/views/projects/Index.vue"]},{"id":"53914cf9a2af18dfe3fd1bdd68865d0629979b9f","message":"Fix auth expiry handling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/53914cf9a2af18dfe3fd1bdd68865d0629979b9f","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-24T00:10:03+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/product.service.ts","backend/src/shared/constants/index.ts","frontend/src/views/products/Index.vue","mobile/src/api/modules/leads.ts","mobile/src/views/Leads.vue"]},{"id":"2757965438fd9e2796643999b4dc70fd9a29ea62","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/2757965438fd9e2796643999b4dc70fd9a29ea62","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-23T23:51:25+08:00","added":["backend/prisma/migrations/20260223000001_add_cost_allocation_supplier_payment_permissions/migration.sql"],"removed":[],"modified":["backend/prisma/seed.ts","backend/src/modules/inventory/inventory.controller.ts","backend/src/modules/knowledge-feedback/knowledge-feedback.schema.ts","backend/src/modules/knowledge-feedback/knowledge-feedback.service.ts","backend/src/modules/products/services/sku.service.ts","backend/src/modules/shipments/shipment.routes.ts","frontend/src/api/response-normalizer.ts","frontend/src/views/inventory/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/projects/Index.vue"]},{"id":"97441ae42649a48470bbc978b3ad77061a1703e4","message":"Fix auth expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/97441ae42649a48470bbc978b3ad77061a1703e4","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-23T22:57:44+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/category.service.ts","backend/src/modules/products/services/product.service.ts","frontend/src/views/products/Index.vue"]},{"id":"aca608e90896b9e61e7348d82e300954c1b34f0f","message":"Fix 登录过期节流处理」} PMID??? Wait string\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/aca608e90896b9e61e7348d82e300954c1b34f0f","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-23T22:46:26+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/category.service.ts","frontend/src/api/modules/ar-ledger.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/ar-ledger/Index.vue","frontend/src/views/ar-ledger/components/CollectionManager.vue","frontend/src/views/ar-ledger/components/StatementGenerator.vue","frontend/src/views/products/Index.vue","frontend/src/views/social-accounts/Index.vue"]}],"total_commits":0,"head_commit":{"id":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","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-24T00:24:02+08:00","added":[],"removed":[],"modified":["backend/src/modules/projects/project.controller.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/finance/Index.vue","frontend/src/views/projects/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/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":true,"fork":false,"template":false,"parent":null,"mirror":false,"size":478163,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-02-24T00:29:41+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
|
1771866610
|
1771866611
|
0
|
1771866610
|
1771866611
|
NULL
|
|
0
|
Edit
Delete
|
|
90
|
Fix login expiration throttling
|
6
|
5
|
health-check.yml
|
51
|
-2
|
38
|
refs/heads/main
|
c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"57dde43e9eb1e72e9797fd342f9d920b9afb6ab5","after":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/57dde43e9eb1e72e9797fd342f9d920b9afb6ab5...c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","commits":[{"id":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","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-24T00:24:02+08:00","added":[],"removed":[],"modified":["backend/src/modules/projects/project.controller.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/finance/Index.vue","frontend/src/views/projects/Index.vue"]},{"id":"53914cf9a2af18dfe3fd1bdd68865d0629979b9f","message":"Fix auth expiry handling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/53914cf9a2af18dfe3fd1bdd68865d0629979b9f","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-24T00:10:03+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/product.service.ts","backend/src/shared/constants/index.ts","frontend/src/views/products/Index.vue","mobile/src/api/modules/leads.ts","mobile/src/views/Leads.vue"]},{"id":"2757965438fd9e2796643999b4dc70fd9a29ea62","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/2757965438fd9e2796643999b4dc70fd9a29ea62","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-23T23:51:25+08:00","added":["backend/prisma/migrations/20260223000001_add_cost_allocation_supplier_payment_permissions/migration.sql"],"removed":[],"modified":["backend/prisma/seed.ts","backend/src/modules/inventory/inventory.controller.ts","backend/src/modules/knowledge-feedback/knowledge-feedback.schema.ts","backend/src/modules/knowledge-feedback/knowledge-feedback.service.ts","backend/src/modules/products/services/sku.service.ts","backend/src/modules/shipments/shipment.routes.ts","frontend/src/api/response-normalizer.ts","frontend/src/views/inventory/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/projects/Index.vue"]},{"id":"97441ae42649a48470bbc978b3ad77061a1703e4","message":"Fix auth expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/97441ae42649a48470bbc978b3ad77061a1703e4","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-23T22:57:44+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/category.service.ts","backend/src/modules/products/services/product.service.ts","frontend/src/views/products/Index.vue"]},{"id":"aca608e90896b9e61e7348d82e300954c1b34f0f","message":"Fix 登录过期节流处理」} PMID??? Wait string\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/aca608e90896b9e61e7348d82e300954c1b34f0f","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-23T22:46:26+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/category.service.ts","frontend/src/api/modules/ar-ledger.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/ar-ledger/Index.vue","frontend/src/views/ar-ledger/components/CollectionManager.vue","frontend/src/views/ar-ledger/components/StatementGenerator.vue","frontend/src/views/products/Index.vue","frontend/src/views/social-accounts/Index.vue"]}],"total_commits":0,"head_commit":{"id":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","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-24T00:24:02+08:00","added":[],"removed":[],"modified":["backend/src/modules/projects/project.controller.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/finance/Index.vue","frontend/src/views/projects/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/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":true,"fork":false,"template":false,"parent":null,"mirror":false,"size":478163,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-02-24T00:29:41+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
|
1771866310
|
1771866311
|
0
|
1771866310
|
1771866311
|
NULL
|
|
0
|
Edit
Delete
|
|
89
|
Fix login expiration throttling
|
6
|
5
|
health-check.yml
|
50
|
-2
|
38
|
refs/heads/main
|
c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"57dde43e9eb1e72e9797fd342f9d920b9afb6ab5","after":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/57dde43e9eb1e72e9797fd342f9d920b9afb6ab5...c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","commits":[{"id":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","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-24T00:24:02+08:00","added":[],"removed":[],"modified":["backend/src/modules/projects/project.controller.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/finance/Index.vue","frontend/src/views/projects/Index.vue"]},{"id":"53914cf9a2af18dfe3fd1bdd68865d0629979b9f","message":"Fix auth expiry handling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/53914cf9a2af18dfe3fd1bdd68865d0629979b9f","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-24T00:10:03+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/product.service.ts","backend/src/shared/constants/index.ts","frontend/src/views/products/Index.vue","mobile/src/api/modules/leads.ts","mobile/src/views/Leads.vue"]},{"id":"2757965438fd9e2796643999b4dc70fd9a29ea62","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/2757965438fd9e2796643999b4dc70fd9a29ea62","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-23T23:51:25+08:00","added":["backend/prisma/migrations/20260223000001_add_cost_allocation_supplier_payment_permissions/migration.sql"],"removed":[],"modified":["backend/prisma/seed.ts","backend/src/modules/inventory/inventory.controller.ts","backend/src/modules/knowledge-feedback/knowledge-feedback.schema.ts","backend/src/modules/knowledge-feedback/knowledge-feedback.service.ts","backend/src/modules/products/services/sku.service.ts","backend/src/modules/shipments/shipment.routes.ts","frontend/src/api/response-normalizer.ts","frontend/src/views/inventory/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/projects/Index.vue"]},{"id":"97441ae42649a48470bbc978b3ad77061a1703e4","message":"Fix auth expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/97441ae42649a48470bbc978b3ad77061a1703e4","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-23T22:57:44+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/category.service.ts","backend/src/modules/products/services/product.service.ts","frontend/src/views/products/Index.vue"]},{"id":"aca608e90896b9e61e7348d82e300954c1b34f0f","message":"Fix 登录过期节流处理」} PMID??? Wait string\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/aca608e90896b9e61e7348d82e300954c1b34f0f","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-23T22:46:26+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/category.service.ts","frontend/src/api/modules/ar-ledger.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/ar-ledger/Index.vue","frontend/src/views/ar-ledger/components/CollectionManager.vue","frontend/src/views/ar-ledger/components/StatementGenerator.vue","frontend/src/views/products/Index.vue","frontend/src/views/social-accounts/Index.vue"]}],"total_commits":0,"head_commit":{"id":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","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-24T00:24:02+08:00","added":[],"removed":[],"modified":["backend/src/modules/projects/project.controller.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/finance/Index.vue","frontend/src/views/projects/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/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":true,"fork":false,"template":false,"parent":null,"mirror":false,"size":478163,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-02-24T00:29:41+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
|
1771866278
|
1771866279
|
0
|
1771866010
|
1771866279
|
NULL
|
|
0
|
Edit
Delete
|
|
88
|
Fix login expiration throttling
|
6
|
5
|
health-check.yml
|
49
|
-2
|
38
|
refs/heads/main
|
c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"57dde43e9eb1e72e9797fd342f9d920b9afb6ab5","after":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/57dde43e9eb1e72e9797fd342f9d920b9afb6ab5...c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","commits":[{"id":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","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-24T00:24:02+08:00","added":[],"removed":[],"modified":["backend/src/modules/projects/project.controller.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/finance/Index.vue","frontend/src/views/projects/Index.vue"]},{"id":"53914cf9a2af18dfe3fd1bdd68865d0629979b9f","message":"Fix auth expiry handling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/53914cf9a2af18dfe3fd1bdd68865d0629979b9f","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-24T00:10:03+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/product.service.ts","backend/src/shared/constants/index.ts","frontend/src/views/products/Index.vue","mobile/src/api/modules/leads.ts","mobile/src/views/Leads.vue"]},{"id":"2757965438fd9e2796643999b4dc70fd9a29ea62","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/2757965438fd9e2796643999b4dc70fd9a29ea62","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-23T23:51:25+08:00","added":["backend/prisma/migrations/20260223000001_add_cost_allocation_supplier_payment_permissions/migration.sql"],"removed":[],"modified":["backend/prisma/seed.ts","backend/src/modules/inventory/inventory.controller.ts","backend/src/modules/knowledge-feedback/knowledge-feedback.schema.ts","backend/src/modules/knowledge-feedback/knowledge-feedback.service.ts","backend/src/modules/products/services/sku.service.ts","backend/src/modules/shipments/shipment.routes.ts","frontend/src/api/response-normalizer.ts","frontend/src/views/inventory/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/projects/Index.vue"]},{"id":"97441ae42649a48470bbc978b3ad77061a1703e4","message":"Fix auth expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/97441ae42649a48470bbc978b3ad77061a1703e4","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-23T22:57:44+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/category.service.ts","backend/src/modules/products/services/product.service.ts","frontend/src/views/products/Index.vue"]},{"id":"aca608e90896b9e61e7348d82e300954c1b34f0f","message":"Fix 登录过期节流处理」} PMID??? Wait string\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/aca608e90896b9e61e7348d82e300954c1b34f0f","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-23T22:46:26+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/category.service.ts","frontend/src/api/modules/ar-ledger.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/ar-ledger/Index.vue","frontend/src/views/ar-ledger/components/CollectionManager.vue","frontend/src/views/ar-ledger/components/StatementGenerator.vue","frontend/src/views/products/Index.vue","frontend/src/views/social-accounts/Index.vue"]}],"total_commits":0,"head_commit":{"id":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","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-24T00:24:02+08:00","added":[],"removed":[],"modified":["backend/src/modules/projects/project.controller.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/finance/Index.vue","frontend/src/views/projects/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/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":true,"fork":false,"template":false,"parent":null,"mirror":false,"size":478163,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-02-24T00:29:41+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
|
2
|
2
|
0
|
1771866010
|
0
|
1771865710
|
1771866010
|
NULL
|
|
0
|
Edit
Delete
|
|
87
|
Fix login expiration throttling
|
6
|
5
|
health-check.yml
|
48
|
-2
|
38
|
refs/heads/main
|
c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"57dde43e9eb1e72e9797fd342f9d920b9afb6ab5","after":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/57dde43e9eb1e72e9797fd342f9d920b9afb6ab5...c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","commits":[{"id":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","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-24T00:24:02+08:00","added":[],"removed":[],"modified":["backend/src/modules/projects/project.controller.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/finance/Index.vue","frontend/src/views/projects/Index.vue"]},{"id":"53914cf9a2af18dfe3fd1bdd68865d0629979b9f","message":"Fix auth expiry handling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/53914cf9a2af18dfe3fd1bdd68865d0629979b9f","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-24T00:10:03+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/product.service.ts","backend/src/shared/constants/index.ts","frontend/src/views/products/Index.vue","mobile/src/api/modules/leads.ts","mobile/src/views/Leads.vue"]},{"id":"2757965438fd9e2796643999b4dc70fd9a29ea62","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/2757965438fd9e2796643999b4dc70fd9a29ea62","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-23T23:51:25+08:00","added":["backend/prisma/migrations/20260223000001_add_cost_allocation_supplier_payment_permissions/migration.sql"],"removed":[],"modified":["backend/prisma/seed.ts","backend/src/modules/inventory/inventory.controller.ts","backend/src/modules/knowledge-feedback/knowledge-feedback.schema.ts","backend/src/modules/knowledge-feedback/knowledge-feedback.service.ts","backend/src/modules/products/services/sku.service.ts","backend/src/modules/shipments/shipment.routes.ts","frontend/src/api/response-normalizer.ts","frontend/src/views/inventory/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/projects/Index.vue"]},{"id":"97441ae42649a48470bbc978b3ad77061a1703e4","message":"Fix auth expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/97441ae42649a48470bbc978b3ad77061a1703e4","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-23T22:57:44+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/category.service.ts","backend/src/modules/products/services/product.service.ts","frontend/src/views/products/Index.vue"]},{"id":"aca608e90896b9e61e7348d82e300954c1b34f0f","message":"Fix 登录过期节流处理」} PMID??? Wait string\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/aca608e90896b9e61e7348d82e300954c1b34f0f","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-23T22:46:26+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/category.service.ts","frontend/src/api/modules/ar-ledger.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/ar-ledger/Index.vue","frontend/src/views/ar-ledger/components/CollectionManager.vue","frontend/src/views/ar-ledger/components/StatementGenerator.vue","frontend/src/views/products/Index.vue","frontend/src/views/social-accounts/Index.vue"]}],"total_commits":0,"head_commit":{"id":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","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-24T00:24:02+08:00","added":[],"removed":[],"modified":["backend/src/modules/projects/project.controller.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/finance/Index.vue","frontend/src/views/projects/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/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":true,"fork":false,"template":false,"parent":null,"mirror":false,"size":478163,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-02-24T00:29:41+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
|
2
|
2
|
0
|
1771865710
|
0
|
1771865410
|
1771865710
|
NULL
|
|
0
|
Edit
Delete
|
|
86
|
Fix login expiration throttling
|
6
|
5
|
health-check.yml
|
47
|
-2
|
38
|
refs/heads/main
|
c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"57dde43e9eb1e72e9797fd342f9d920b9afb6ab5","after":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/57dde43e9eb1e72e9797fd342f9d920b9afb6ab5...c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","commits":[{"id":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","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-24T00:24:02+08:00","added":[],"removed":[],"modified":["backend/src/modules/projects/project.controller.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/finance/Index.vue","frontend/src/views/projects/Index.vue"]},{"id":"53914cf9a2af18dfe3fd1bdd68865d0629979b9f","message":"Fix auth expiry handling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/53914cf9a2af18dfe3fd1bdd68865d0629979b9f","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-24T00:10:03+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/product.service.ts","backend/src/shared/constants/index.ts","frontend/src/views/products/Index.vue","mobile/src/api/modules/leads.ts","mobile/src/views/Leads.vue"]},{"id":"2757965438fd9e2796643999b4dc70fd9a29ea62","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/2757965438fd9e2796643999b4dc70fd9a29ea62","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-23T23:51:25+08:00","added":["backend/prisma/migrations/20260223000001_add_cost_allocation_supplier_payment_permissions/migration.sql"],"removed":[],"modified":["backend/prisma/seed.ts","backend/src/modules/inventory/inventory.controller.ts","backend/src/modules/knowledge-feedback/knowledge-feedback.schema.ts","backend/src/modules/knowledge-feedback/knowledge-feedback.service.ts","backend/src/modules/products/services/sku.service.ts","backend/src/modules/shipments/shipment.routes.ts","frontend/src/api/response-normalizer.ts","frontend/src/views/inventory/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/projects/Index.vue"]},{"id":"97441ae42649a48470bbc978b3ad77061a1703e4","message":"Fix auth expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/97441ae42649a48470bbc978b3ad77061a1703e4","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-23T22:57:44+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/category.service.ts","backend/src/modules/products/services/product.service.ts","frontend/src/views/products/Index.vue"]},{"id":"aca608e90896b9e61e7348d82e300954c1b34f0f","message":"Fix 登录过期节流处理」} PMID??? Wait string\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/aca608e90896b9e61e7348d82e300954c1b34f0f","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-23T22:46:26+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/category.service.ts","frontend/src/api/modules/ar-ledger.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/ar-ledger/Index.vue","frontend/src/views/ar-ledger/components/CollectionManager.vue","frontend/src/views/ar-ledger/components/StatementGenerator.vue","frontend/src/views/products/Index.vue","frontend/src/views/social-accounts/Index.vue"]}],"total_commits":0,"head_commit":{"id":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","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-24T00:24:02+08:00","added":[],"removed":[],"modified":["backend/src/modules/projects/project.controller.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/finance/Index.vue","frontend/src/views/projects/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/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":true,"fork":false,"template":false,"parent":null,"mirror":false,"size":478163,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-02-24T00:29:41+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
|
2
|
2
|
0
|
1771865410
|
0
|
1771865110
|
1771865410
|
NULL
|
|
0
|
Edit
Delete
|
|
85
|
Fix login expiration throttling
|
6
|
5
|
health-check.yml
|
46
|
-2
|
38
|
refs/heads/main
|
c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"57dde43e9eb1e72e9797fd342f9d920b9afb6ab5","after":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/57dde43e9eb1e72e9797fd342f9d920b9afb6ab5...c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","commits":[{"id":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","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-24T00:24:02+08:00","added":[],"removed":[],"modified":["backend/src/modules/projects/project.controller.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/finance/Index.vue","frontend/src/views/projects/Index.vue"]},{"id":"53914cf9a2af18dfe3fd1bdd68865d0629979b9f","message":"Fix auth expiry handling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/53914cf9a2af18dfe3fd1bdd68865d0629979b9f","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-24T00:10:03+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/product.service.ts","backend/src/shared/constants/index.ts","frontend/src/views/products/Index.vue","mobile/src/api/modules/leads.ts","mobile/src/views/Leads.vue"]},{"id":"2757965438fd9e2796643999b4dc70fd9a29ea62","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/2757965438fd9e2796643999b4dc70fd9a29ea62","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-23T23:51:25+08:00","added":["backend/prisma/migrations/20260223000001_add_cost_allocation_supplier_payment_permissions/migration.sql"],"removed":[],"modified":["backend/prisma/seed.ts","backend/src/modules/inventory/inventory.controller.ts","backend/src/modules/knowledge-feedback/knowledge-feedback.schema.ts","backend/src/modules/knowledge-feedback/knowledge-feedback.service.ts","backend/src/modules/products/services/sku.service.ts","backend/src/modules/shipments/shipment.routes.ts","frontend/src/api/response-normalizer.ts","frontend/src/views/inventory/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/projects/Index.vue"]},{"id":"97441ae42649a48470bbc978b3ad77061a1703e4","message":"Fix auth expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/97441ae42649a48470bbc978b3ad77061a1703e4","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-23T22:57:44+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/category.service.ts","backend/src/modules/products/services/product.service.ts","frontend/src/views/products/Index.vue"]},{"id":"aca608e90896b9e61e7348d82e300954c1b34f0f","message":"Fix 登录过期节流处理」} PMID??? Wait string\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/aca608e90896b9e61e7348d82e300954c1b34f0f","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-23T22:46:26+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/category.service.ts","frontend/src/api/modules/ar-ledger.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/ar-ledger/Index.vue","frontend/src/views/ar-ledger/components/CollectionManager.vue","frontend/src/views/ar-ledger/components/StatementGenerator.vue","frontend/src/views/products/Index.vue","frontend/src/views/social-accounts/Index.vue"]}],"total_commits":0,"head_commit":{"id":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","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-24T00:24:02+08:00","added":[],"removed":[],"modified":["backend/src/modules/projects/project.controller.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/finance/Index.vue","frontend/src/views/projects/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/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":true,"fork":false,"template":false,"parent":null,"mirror":false,"size":478163,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-02-24T00:29:41+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
|
2
|
2
|
0
|
1771865110
|
0
|
1771864810
|
1771865110
|
NULL
|
|
0
|
Edit
Delete
|
|
84
|
Fix login expiration throttling
|
6
|
5
|
health-check.yml
|
45
|
-2
|
38
|
refs/heads/main
|
c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"57dde43e9eb1e72e9797fd342f9d920b9afb6ab5","after":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/57dde43e9eb1e72e9797fd342f9d920b9afb6ab5...c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","commits":[{"id":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","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-24T00:24:02+08:00","added":[],"removed":[],"modified":["backend/src/modules/projects/project.controller.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/finance/Index.vue","frontend/src/views/projects/Index.vue"]},{"id":"53914cf9a2af18dfe3fd1bdd68865d0629979b9f","message":"Fix auth expiry handling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/53914cf9a2af18dfe3fd1bdd68865d0629979b9f","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-24T00:10:03+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/product.service.ts","backend/src/shared/constants/index.ts","frontend/src/views/products/Index.vue","mobile/src/api/modules/leads.ts","mobile/src/views/Leads.vue"]},{"id":"2757965438fd9e2796643999b4dc70fd9a29ea62","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/2757965438fd9e2796643999b4dc70fd9a29ea62","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-23T23:51:25+08:00","added":["backend/prisma/migrations/20260223000001_add_cost_allocation_supplier_payment_permissions/migration.sql"],"removed":[],"modified":["backend/prisma/seed.ts","backend/src/modules/inventory/inventory.controller.ts","backend/src/modules/knowledge-feedback/knowledge-feedback.schema.ts","backend/src/modules/knowledge-feedback/knowledge-feedback.service.ts","backend/src/modules/products/services/sku.service.ts","backend/src/modules/shipments/shipment.routes.ts","frontend/src/api/response-normalizer.ts","frontend/src/views/inventory/Index.vue","frontend/src/views/products/Index.vue","frontend/src/views/projects/Index.vue"]},{"id":"97441ae42649a48470bbc978b3ad77061a1703e4","message":"Fix auth expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/97441ae42649a48470bbc978b3ad77061a1703e4","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-23T22:57:44+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/category.service.ts","backend/src/modules/products/services/product.service.ts","frontend/src/views/products/Index.vue"]},{"id":"aca608e90896b9e61e7348d82e300954c1b34f0f","message":"Fix 登录过期节流处理」} PMID??? Wait string\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/aca608e90896b9e61e7348d82e300954c1b34f0f","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-23T22:46:26+08:00","added":[],"removed":[],"modified":["backend/src/modules/products/services/category.service.ts","frontend/src/api/modules/ar-ledger.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/ar-ledger/Index.vue","frontend/src/views/ar-ledger/components/CollectionManager.vue","frontend/src/views/ar-ledger/components/StatementGenerator.vue","frontend/src/views/products/Index.vue","frontend/src/views/social-accounts/Index.vue"]}],"total_commits":0,"head_commit":{"id":"c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","message":"Fix login expiration throttling\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c75a655fbcae4e4a5f0f675e72c422c5c3ff5a72","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-24T00:24:02+08:00","added":[],"removed":[],"modified":["backend/src/modules/projects/project.controller.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/views/finance/Index.vue","frontend/src/views/projects/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/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":true,"fork":false,"template":false,"parent":null,"mirror":false,"size":478163,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-02-24T00:29:41+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
|
2
|
2
|
0
|
1771864810
|
0
|
1771864510
|
1771864810
|
NULL
|
|
0
|
Edit
Delete
|
|
77
|
Fix frontend revenue recognition any
|
6
|
5
|
health-check.yml
|
38
|
-2
|
32
|
refs/heads/main
|
4d8152400e0edaa95ca297b53f8ad4da2f49bf7f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"5dda81cc1d924bf1978062ca3fb162236ae8c57f","after":"4d8152400e0edaa95ca297b53f8ad4da2f49bf7f","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/5dda81cc1d924bf1978062ca3fb162236ae8c57f...4d8152400e0edaa95ca297b53f8ad4da2f49bf7f","commits":[{"id":"4d8152400e0edaa95ca297b53f8ad4da2f49bf7f","message":"Fix frontend revenue recognition any\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/4d8152400e0edaa95ca297b53f8ad4da2f49bf7f","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-17T14:24:28+08:00","added":["REFACTOR_TASKS.md","backend/build.js","backend/scripts/audit-permissions.ts","backend/scripts/benchmark-stats.ts","backend/scripts/fix-build-errors.ts","backend/scripts/fix-permissions.ts","backend/scripts/reset-tenant-data.ts","backend/src/modules/assets/index.ts","backend/src/modules/cost-allocation/cost-allocation.service.test.ts","backend/src/modules/knowledge/knowledge.mapper.ts","backend/src/modules/marketing-matrix/matrix.mapper.ts","backend/src/modules/orders/order.mapper.ts","backend/src/modules/revenue/revenue.mapper.ts","backend/src/modules/supplier-payments/supplier-payments.service.test.ts","backend/src/modules/targets/target.mapper.ts","docs/BASESERVICE_REFACTOR_ANALYSIS.md","docs/ORDERS_REFACTOR_COMPLETE.md","docs/P0_HOTFIX_COMPLETE.md","docs/P0_HOTFIX_PLAN.md","docs/REFACTOR_COMPLETE_REPORT.md","docs/REFACTOR_EXECUTION_PLAN.md","docs/REFACTOR_STATUS_CORRECTION.md","docs/REVENUE_REFACTOR_PLAN.md","docs/reports/PROJECT_STATUS_2026-02-16.md","e2e/test-results/.last-run.json","e2e/test-results/results.json","reports/refactor-acceptance.backend-typecheck.summary.json","reports/refactor-acceptance.rescan.backend-errors.pass2.tsv","reports/refactor-acceptance.rescan.backend-errors.tsv","reports/refactor-acceptance.rescan.static.latest.json","reports/refactor-acceptance.rescan.summary.latest.json","reports/refactor-acceptance.static.latest.json"],"removed":["backend/src/modules/renewals/renewal.service.new.ts","backend/src/modules/shipments/shipments.service.ts","e2e/playwright-report/data/00432be148278a654597c3830a7e219a7e74c948.json","e2e/playwright-report/data/09e7eab8182c1766bab432b7d35679a56e590d6d.json","e2e/playwright-report/data/13b4efad4c879a56fa794893945161cacbec39b8.json","e2e/playwright-report/data/4c274e01c876c5b132ba0a7514ac6274d8bed8a7.json","e2e/playwright-report/data/531ca7bebbe75f6259f24b9b58a1349f692d584e.json","e2e/playwright-report/data/53d1de4e90c5847d891c321397f970a61795d21f.json","e2e/playwright-report/data/5be2a28255d48bdaedb3a67814a39faa9563e19c.json","e2e/playwright-report/data/72a97ccd7dcef53ef3c14502005370e347ffea71.json","e2e/playwright-report/data/7ecd6c6d4859e683d376ae0b1b487f139df79870.json","e2e/playwright-report/data/a56a40d92b92fb255414c08a3540971a77e76d19.json","e2e/playwright-report/data/a9a2339b0db5be963e681086219c18ca111c3c56.json","e2e/playwright-report/data/ac1afff941a40582896f847e63fed2cff6f298f9.json","e2e/playwright-report/data/ba7af977e55409348cae4d335d83b0a2f96f5241.json","e2e/playwright-report/data/bb3c20ff64f9f19e603d1f8c9d13922391282ef0.json","e2e/playwright-report/data/ca554707b28752dcd942b674c8e796179b48c4ad.json","e2e/playwright-report/data/d7a8d4a2a30a5c2858d099554966d586cd96069d.json","e2e/playwright-report/data/e03cf8298428dd6a25a9256aca551fa0f4b05d9d.json","e2e/playwright-report/data/f3d0321eb421843b4f90b757526068a89b201e54.json","e2e/playwright-report/data/fb514a72017343d2ac3376cca4d0e9db2d5bd947.json"],"modified":["GEMINI.md","backend/package.json","backend/prisma/seeds/01-base.ts","backend/src/modules/ad-audiences/ad-audience.compat.routes.ts","backend/src/modules/ad-audiences/ad-audience.controller.ts","backend/src/modules/ad-audiences/ad-audience.service.ts","backend/src/modules/ad-campaigns/ad-campaigns.compat.routes.ts","backend/src/modules/ad-campaigns/ad-campaigns.controller.ts","backend/src/modules/ad-campaigns/ad-campaigns.service.ts","backend/src/modules/ai-agents/ai-agent.controller.ts","backend/src/modules/ai-agents/ai-agent.service.ts","backend/src/modules/alliance-merchants/alliance-merchant.controller.ts","backend/src/modules/alliance-merchants/alliance-merchant.service.ts","backend/src/modules/alliance-partners/alliance-partner.controller.ts","backend/src/modules/alliance-partners/alliance-partner.routes.ts","backend/src/modules/alliance-partners/alliance-partner.service.ts","backend/src/modules/alliance-products/alliance-product.compat.routes.ts","backend/src/modules/alliance-products/alliance-product.controller.ts","backend/src/modules/alliance-products/alliance-product.service.ts","backend/src/modules/ar-ledger/ar-ledger.controller.ts","backend/src/modules/ar-ledger/ar-ledger.service.ts","backend/src/modules/campaigns/campaign.routes.ts","backend/src/modules/cash-flow/cash-flow-forecast.service.ts","backend/src/modules/channel-analytics/channel-analytics.routes.ts","backend/src/modules/channels/channel.controller.ts","backend/src/modules/channels/channel.routes.ts","backend/src/modules/channels/channel.service.ts","backend/src/modules/commissions/commission.controller.ts","backend/src/modules/commissions/commission.service.ts","backend/src/modules/community-groups/community-group.compat.routes.ts","backend/src/modules/community-groups/community-group.controller.ts","backend/src/modules/community-groups/community-group.service.ts","backend/src/modules/community-members/community-member.compat.routes.ts","backend/src/modules/community-members/community-member.controller.ts","backend/src/modules/community-members/community-member.service.ts","backend/src/modules/content-categories/content-category.controller.ts","backend/src/modules/content-categories/content-category.service.ts","backend/src/modules/content-creation/content-creation.controller.ts","backend/src/modules/content-creation/content-creation.service.ts","backend/src/modules/content-distribution/content-distribution.controller.ts","backend/src/modules/content-distribution/content-distribution.service.ts","backend/src/modules/content-library/content-library.controller.ts","backend/src/modules/content-library/content-library.service.ts","backend/src/modules/content-review/content-review.controller.ts","backend/src/modules/content-review/content-review.service.ts","backend/src/modules/content-templates/content-template.controller.ts","backend/src/modules/content-templates/content-template.service.ts","backend/src/modules/contracts/contract.compat.routes.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/cost-allocation/cost-allocation.compat.routes.ts","backend/src/modules/cost-allocation/cost-allocation.service.ts","backend/src/modules/crm-activities/crm-activity.controller.ts","backend/src/modules/crm-activities/crm-activity.routes.ts","backend/src/modules/crm-activities/crm-activity.service.ts","backend/src/modules/customers/customer-export.service.ts","backend/src/modules/customers/customer.controller.ts","backend/src/modules/customers/customer.routes.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.compat.routes.ts","backend/src/modules/departments/department.controller.ts","backend/src/modules/departments/department.routes.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/devices/device.controller.ts","backend/src/modules/devices/device.service.ts","backend/src/modules/faults/fault.compat.routes.ts","backend/src/modules/faults/fault.controller.ts","backend/src/modules/faults/fault.routes.ts","backend/src/modules/faults/fault.service.ts","backend/src/modules/finance/finance-automation.service.ts","backend/src/modules/finance/finance-cash-analysis.service.ts","backend/src/modules/finance/finance-reporting.service.ts","backend/src/modules/finance/finance.controller.ts","backend/src/modules/finance/finance.routes.ts","backend/src/modules/finance/revenue-compat.routes.ts","backend/src/modules/fulfillment/acceptance-automation.service.ts","backend/src/modules/fulfillment/fulfillment.controller.ts","backend/src/modules/fulfillment/fulfillment.routes.ts","backend/src/modules/fulfillment/fulfillment.service.ts","backend/src/modules/geo-analytics/geo-analytics.controller.ts","backend/src/modules/geo-analytics/geo-analytics.service.ts","backend/src/modules/geo-pois/geo-poi.controller.ts","backend/src/modules/geo-pois/geo-poi.service.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.controller.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.service.ts","backend/src/modules/groupbuy-orders/groupbuy-order.controller.ts","backend/src/modules/groupbuy-orders/groupbuy-order.service.ts","backend/src/modules/im/im.routes.ts","backend/src/modules/inventory/inventory.controller.ts","backend/src/modules/inventory/inventory.service.ts","backend/src/modules/inventory/services/inventory-count.service.ts","backend/src/modules/inventory/services/inventory-reservation.service.ts","backend/src/modules/invoices/invoice.controller.ts","backend/src/modules/invoices/invoice.routes.ts","backend/src/modules/invoices/invoice.service.ts","backend/src/modules/knowledge-feedback/knowledge-feedback.routes.ts","backend/src/modules/knowledge/knowledge-crud.service.ts","backend/src/modules/knowledge/knowledge.controller.ts","backend/src/modules/knowledge/knowledge.routes.ts","backend/src/modules/lead-scoring-ai/lead-action-recommendation.routes.ts","backend/src/modules/lead-scoring-ai/lead-score-trigger.routes.ts","backend/src/modules/leads/lead.controller.ts","backend/src/modules/leads/lead.routes.ts","backend/src/modules/leads/lead.schema.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-rooms/livestream-room.controller.ts","backend/src/modules/livestream-rooms/livestream-room.service.ts","backend/src/modules/livestream-schedules/livestream-schedule.compat.routes.ts","backend/src/modules/livestream-schedules/livestream-schedule.controller.ts","backend/src/modules/livestream-schedules/livestream-schedule.service.ts","backend/src/modules/marketing-automation/workflow.controller.ts","backend/src/modules/marketing-automation/workflow.service.ts","backend/src/modules/marketing-matrix/matrix.service.ts","backend/src/modules/marketing/marketing-campaign.service.ts","backend/src/modules/marketing/marketing.controller.ts","backend/src/modules/opportunities/index.ts","backend/src/modules/opportunities/opportunity-export.service.ts","backend/src/modules/opportunities/opportunity.controller.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.controller.ts","backend/src/modules/orders/order.routes.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/orders/order.service.test.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/partners/partner.controller.ts","backend/src/modules/partners/partner.routes.ts","backend/src/modules/partners/partner.service.ts","backend/src/modules/payments/payment-record.service.ts","backend/src/modules/payments/payment.controller.ts","backend/src/modules/price-books/index.ts","backend/src/modules/price-books/price-book.controller.ts","backend/src/modules/price-books/price-book.routes.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/price-books/price-enhancement.controller.ts","backend/src/modules/products/controllers/category.controller.ts","backend/src/modules/products/controllers/product.controller.ts","backend/src/modules/products/controllers/sku.controller.ts","backend/src/modules/products/services/category.service.ts","backend/src/modules/products/services/index.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/products/services/sku.service.ts","backend/src/modules/projects/project.controller.ts","backend/src/modules/projects/project.routes.ts","backend/src/modules/projects/project.service.ts","backend/src/modules/quotes/quote.controller.ts","backend/src/modules/quotes/quote.routes.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/reconciliation/matching-engine.service.ts","backend/src/modules/reconciliation/reconciliation.controller.ts","backend/src/modules/reconciliation/reconciliation.service.ts","backend/src/modules/renewals/index.ts","backend/src/modules/renewals/renewals.service.ts","backend/src/modules/revenue/ar-ledger.controller.ts","backend/src/modules/revenue/ar-ledger.service.ts","backend/src/modules/revenue/index.ts","backend/src/modules/revenue/invoice.controller.ts","backend/src/modules/revenue/invoice.routes.ts","backend/src/modules/revenue/invoice.service.ts","backend/src/modules/revenue/payment.controller.ts","backend/src/modules/revenue/revenue-recognition.controller.ts","backend/src/modules/revenue/revenue-recognition.service.ts","backend/src/modules/revenue/revenue.controller.ts","backend/src/modules/revenue/revenue.docs.ts","backend/src/modules/revenue/revenue.routes.ts","backend/src/modules/revenue/revenue.service.ts","backend/src/modules/revenue/sales-commission-compat.controller.ts","backend/src/modules/revenue/sales-commission.service.ts","backend/src/modules/rma/index.ts","backend/src/modules/rma/rma.compat.routes.ts","backend/src/modules/rma/rma.controller.ts","backend/src/modules/rma/rma.routes.ts","backend/src/modules/rma/rma.service.ts","backend/src/modules/roles/role.controller.ts","backend/src/modules/roles/role.routes.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/serial-numbers/sn.controller.ts","backend/src/modules/serial-numbers/sn.service.ts","backend/src/modules/shipments/shipment.controller.ts","backend/src/modules/shipments/shipment.routes.ts","backend/src/modules/shipments/shipment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-accounts/social-account.controller.ts","backend/src/modules/social-accounts/social-account.service.ts","backend/src/modules/social-posts/social-post.controller.ts","backend/src/modules/social-posts/social-post.service.ts","backend/src/modules/supplier-payments/supplier-payments.compat.routes.ts","backend/src/modules/supplier-payments/supplier-payments.service.ts","backend/src/modules/suppliers/supplier.service.ts","backend/src/modules/targets/target.controller.ts","backend/src/modules/targets/target.service.ts","backend/src/modules/tenant-configs/tenant-config.controller.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/ticket-workflows/ticket-workflow.controller.ts","backend/src/modules/ticket-workflows/ticket-workflow.routes.ts","backend/src/modules/ticket-workflows/ticket-workflow.service.ts","backend/src/modules/tickets/index.ts","backend/src/modules/tickets/ticket-interactions.service.ts","backend/src/modules/tickets/ticket-operations.service.ts","backend/src/modules/tickets/ticket-queries.service.ts","backend/src/modules/tickets/ticket.controller.ts","backend/src/modules/tickets/ticket.routes.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/modules/treasury/bank-account.service.ts","backend/src/modules/treasury/payment-request.service.ts","backend/src/modules/users/user.controller.ts","backend/src/modules/users/user.service.ts","backend/src/routes/register-domain-routes.ts","backend/src/shared/constants/events.ts","backend/src/shared/constants/permissions.ts","backend/src/shared/middleware/error.middleware.ts","backend/src/shared/services/base.service.test.ts","backend/src/shared/services/base.service.ts","backend/src/shared/state-machines/index.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/utils/transitions.ts","backend/src/shared/utils/biz-code.ts","backend/src/shared/utils/event-outbox-helper.ts","backend/tests/api/finance-gap-closure.test.ts","backend/tests/api/orders.test.ts","backend/tsconfig.json","docs/DEVELOPMENT_GUIDE.md","docs/api/openapi.json","docs/api/openapi.yaml","e2e/.auth/admin.json","e2e/playwright-report/index.html","frontend/src/api/adapters.ts","frontend/src/api/modules/revenue-recognition.ts","frontend/src/types/models.ts","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Detail.vue","frontend/src/views/leads/Index.vue","frontend/src/views/tickets/components/gantt/TicketGanttChart.vue","frontend/src/views/tickets/components/gantt/composables/useGanttData.ts","package.json","pnpm-lock.yaml","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md","reports/missing-events-audit.latest.json","reports/missing-events-audit.latest.md","reports/module-placeholder-audit.latest.json","reports/module-placeholder-audit.latest.md","reports/state-machine-integration-audit.latest.json","reports/state-machine-integration-audit.latest.md","shared/src/types/models.ts"]},{"id":"34dd3176c9d53eec42229818726de7931dde4edb","message":"Fix localhost revenue rules 404\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/34dd3176c9d53eec42229818726de7931dde4edb","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-16T08:58:40+08:00","added":[],"removed":[],"modified":["backend/src/modules/ad-audiences/ad-audience.service.ts","backend/src/modules/ad-campaigns/ad-campaigns.docs.ts","backend/src/modules/ad-campaigns/ad-campaigns.routes.ts","backend/src/modules/ad-campaigns/ad-campaigns.service.ts"]},{"id":"7f0601bdd1c8b0145758236aa9cd2f1b605e5e9a","message":"Auto populate finance placeholder UI\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/7f0601bdd1c8b0145758236aa9cd2f1b605e5e9a","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-16T01:45:50+08:00","added":[],"removed":[],"modified":["backend/src/modules/cash-flow/cash-flow-forecast.service.ts","backend/src/modules/finance/finance-costing.service.ts","backend/src/modules/revenue/revenue-recognition.service.ts","frontend/src/router/menu.ts","frontend/src/views/finance/Index.vue"]},{"id":"5c3b90c3df54a5727978fccc9fd3b68a496c2b90","message":"Add finance dashboard skeleton tabs\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/5c3b90c3df54a5727978fccc9fd3b68a496c2b90","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-16T01:32:03+08:00","added":["backend/src/modules/finance/finance-cash-analysis.service.ts","frontend/src/views/finance-os/__tests__/pr3-cash-pages.smoke.test.ts","frontend/src/views/finance-os/ai/AutoFundScheduling.vue","frontend/src/views/finance-os/ai/CashForecastModel.vue","frontend/src/views/finance-os/cash/CashControlTower.vue"],"removed":[],"modified":["backend/src/modules/cash-flow/cash-flow-forecast.service.ts","backend/src/modules/finance/finance-automation.service.ts","backend/src/modules/finance/finance.controller.ts","backend/src/modules/finance/finance.routes.ts","backend/src/modules/finance/finance.schema.ts","backend/src/modules/finance/finance.service.ts","backend/tests/api/finance-gap-closure.test.ts","frontend/src/api/modules/finance.ts","frontend/src/router/index.ts"]},{"id":"5bf47df3e9217bf8193505e7d28b73240bcd3cf4","message":"Update finance placeholder pages\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/5bf47df3e9217bf8193505e7d28b73240bcd3cf4","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-16T01:15:20+08:00","added":["backend/src/modules/finance/finance-costing.service.ts","frontend/src/views/finance-os/expense/CostAnomaly.vue","frontend/src/views/finance-os/expense/CostCenter.vue","frontend/src/views/finance-os/expense/ExpenseApprovalFlow.vue","frontend/src/views/finance-os/expense/NodeCost.vue","frontend/src/views/finance-os/expense/ProjectCost.vue"],"removed":[],"modified":["backend/src/modules/cost-allocation/cost-allocation.service.ts","backend/src/modules/finance/finance-automation.service.ts","backend/src/modules/finance/finance.controller.ts","backend/src/modules/finance/finance.routes.ts","backend/src/modules/finance/finance.schema.ts","backend/src/modules/finance/finance.service.ts","backend/src/modules/supplier-payments/supplier-payments.compat.routes.ts","backend/src/modules/supplier-payments/supplier-payments.service.ts","backend/src/shared/constants/modules.ts","backend/src/shared/constants/permissions.ts","backend/tests/api/finance-gap-closure.test.ts","frontend/src/api/modules/finance.ts","frontend/src/router/index.ts"]}],"total_commits":0,"head_commit":{"id":"4d8152400e0edaa95ca297b53f8ad4da2f49bf7f","message":"Fix frontend revenue recognition any\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/4d8152400e0edaa95ca297b53f8ad4da2f49bf7f","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-17T14:24:28+08:00","added":["REFACTOR_TASKS.md","backend/build.js","backend/scripts/audit-permissions.ts","backend/scripts/benchmark-stats.ts","backend/scripts/fix-build-errors.ts","backend/scripts/fix-permissions.ts","backend/scripts/reset-tenant-data.ts","backend/src/modules/assets/index.ts","backend/src/modules/cost-allocation/cost-allocation.service.test.ts","backend/src/modules/knowledge/knowledge.mapper.ts","backend/src/modules/marketing-matrix/matrix.mapper.ts","backend/src/modules/orders/order.mapper.ts","backend/src/modules/revenue/revenue.mapper.ts","backend/src/modules/supplier-payments/supplier-payments.service.test.ts","backend/src/modules/targets/target.mapper.ts","docs/BASESERVICE_REFACTOR_ANALYSIS.md","docs/ORDERS_REFACTOR_COMPLETE.md","docs/P0_HOTFIX_COMPLETE.md","docs/P0_HOTFIX_PLAN.md","docs/REFACTOR_COMPLETE_REPORT.md","docs/REFACTOR_EXECUTION_PLAN.md","docs/REFACTOR_STATUS_CORRECTION.md","docs/REVENUE_REFACTOR_PLAN.md","docs/reports/PROJECT_STATUS_2026-02-16.md","e2e/test-results/.last-run.json","e2e/test-results/results.json","reports/refactor-acceptance.backend-typecheck.summary.json","reports/refactor-acceptance.rescan.backend-errors.pass2.tsv","reports/refactor-acceptance.rescan.backend-errors.tsv","reports/refactor-acceptance.rescan.static.latest.json","reports/refactor-acceptance.rescan.summary.latest.json","reports/refactor-acceptance.static.latest.json"],"removed":["backend/src/modules/renewals/renewal.service.new.ts","backend/src/modules/shipments/shipments.service.ts","e2e/playwright-report/data/00432be148278a654597c3830a7e219a7e74c948.json","e2e/playwright-report/data/09e7eab8182c1766bab432b7d35679a56e590d6d.json","e2e/playwright-report/data/13b4efad4c879a56fa794893945161cacbec39b8.json","e2e/playwright-report/data/4c274e01c876c5b132ba0a7514ac6274d8bed8a7.json","e2e/playwright-report/data/531ca7bebbe75f6259f24b9b58a1349f692d584e.json","e2e/playwright-report/data/53d1de4e90c5847d891c321397f970a61795d21f.json","e2e/playwright-report/data/5be2a28255d48bdaedb3a67814a39faa9563e19c.json","e2e/playwright-report/data/72a97ccd7dcef53ef3c14502005370e347ffea71.json","e2e/playwright-report/data/7ecd6c6d4859e683d376ae0b1b487f139df79870.json","e2e/playwright-report/data/a56a40d92b92fb255414c08a3540971a77e76d19.json","e2e/playwright-report/data/a9a2339b0db5be963e681086219c18ca111c3c56.json","e2e/playwright-report/data/ac1afff941a40582896f847e63fed2cff6f298f9.json","e2e/playwright-report/data/ba7af977e55409348cae4d335d83b0a2f96f5241.json","e2e/playwright-report/data/bb3c20ff64f9f19e603d1f8c9d13922391282ef0.json","e2e/playwright-report/data/ca554707b28752dcd942b674c8e796179b48c4ad.json","e2e/playwright-report/data/d7a8d4a2a30a5c2858d099554966d586cd96069d.json","e2e/playwright-report/data/e03cf8298428dd6a25a9256aca551fa0f4b05d9d.json","e2e/playwright-report/data/f3d0321eb421843b4f90b757526068a89b201e54.json","e2e/playwright-report/data/fb514a72017343d2ac3376cca4d0e9db2d5bd947.json"],"modified":["GEMINI.md","backend/package.json","backend/prisma/seeds/01-base.ts","backend/src/modules/ad-audiences/ad-audience.compat.routes.ts","backend/src/modules/ad-audiences/ad-audience.controller.ts","backend/src/modules/ad-audiences/ad-audience.service.ts","backend/src/modules/ad-campaigns/ad-campaigns.compat.routes.ts","backend/src/modules/ad-campaigns/ad-campaigns.controller.ts","backend/src/modules/ad-campaigns/ad-campaigns.service.ts","backend/src/modules/ai-agents/ai-agent.controller.ts","backend/src/modules/ai-agents/ai-agent.service.ts","backend/src/modules/alliance-merchants/alliance-merchant.controller.ts","backend/src/modules/alliance-merchants/alliance-merchant.service.ts","backend/src/modules/alliance-partners/alliance-partner.controller.ts","backend/src/modules/alliance-partners/alliance-partner.routes.ts","backend/src/modules/alliance-partners/alliance-partner.service.ts","backend/src/modules/alliance-products/alliance-product.compat.routes.ts","backend/src/modules/alliance-products/alliance-product.controller.ts","backend/src/modules/alliance-products/alliance-product.service.ts","backend/src/modules/ar-ledger/ar-ledger.controller.ts","backend/src/modules/ar-ledger/ar-ledger.service.ts","backend/src/modules/campaigns/campaign.routes.ts","backend/src/modules/cash-flow/cash-flow-forecast.service.ts","backend/src/modules/channel-analytics/channel-analytics.routes.ts","backend/src/modules/channels/channel.controller.ts","backend/src/modules/channels/channel.routes.ts","backend/src/modules/channels/channel.service.ts","backend/src/modules/commissions/commission.controller.ts","backend/src/modules/commissions/commission.service.ts","backend/src/modules/community-groups/community-group.compat.routes.ts","backend/src/modules/community-groups/community-group.controller.ts","backend/src/modules/community-groups/community-group.service.ts","backend/src/modules/community-members/community-member.compat.routes.ts","backend/src/modules/community-members/community-member.controller.ts","backend/src/modules/community-members/community-member.service.ts","backend/src/modules/content-categories/content-category.controller.ts","backend/src/modules/content-categories/content-category.service.ts","backend/src/modules/content-creation/content-creation.controller.ts","backend/src/modules/content-creation/content-creation.service.ts","backend/src/modules/content-distribution/content-distribution.controller.ts","backend/src/modules/content-distribution/content-distribution.service.ts","backend/src/modules/content-library/content-library.controller.ts","backend/src/modules/content-library/content-library.service.ts","backend/src/modules/content-review/content-review.controller.ts","backend/src/modules/content-review/content-review.service.ts","backend/src/modules/content-templates/content-template.controller.ts","backend/src/modules/content-templates/content-template.service.ts","backend/src/modules/contracts/contract.compat.routes.ts","backend/src/modules/contracts/contract.controller.ts","backend/src/modules/contracts/contract.routes.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/cost-allocation/cost-allocation.compat.routes.ts","backend/src/modules/cost-allocation/cost-allocation.service.ts","backend/src/modules/crm-activities/crm-activity.controller.ts","backend/src/modules/crm-activities/crm-activity.routes.ts","backend/src/modules/crm-activities/crm-activity.service.ts","backend/src/modules/customers/customer-export.service.ts","backend/src/modules/customers/customer.controller.ts","backend/src/modules/customers/customer.routes.ts","backend/src/modules/customers/customer.service.ts","backend/src/modules/departments/department.compat.routes.ts","backend/src/modules/departments/department.controller.ts","backend/src/modules/departments/department.routes.ts","backend/src/modules/departments/department.service.ts","backend/src/modules/devices/device.controller.ts","backend/src/modules/devices/device.service.ts","backend/src/modules/faults/fault.compat.routes.ts","backend/src/modules/faults/fault.controller.ts","backend/src/modules/faults/fault.routes.ts","backend/src/modules/faults/fault.service.ts","backend/src/modules/finance/finance-automation.service.ts","backend/src/modules/finance/finance-cash-analysis.service.ts","backend/src/modules/finance/finance-reporting.service.ts","backend/src/modules/finance/finance.controller.ts","backend/src/modules/finance/finance.routes.ts","backend/src/modules/finance/revenue-compat.routes.ts","backend/src/modules/fulfillment/acceptance-automation.service.ts","backend/src/modules/fulfillment/fulfillment.controller.ts","backend/src/modules/fulfillment/fulfillment.routes.ts","backend/src/modules/fulfillment/fulfillment.service.ts","backend/src/modules/geo-analytics/geo-analytics.controller.ts","backend/src/modules/geo-analytics/geo-analytics.service.ts","backend/src/modules/geo-pois/geo-poi.controller.ts","backend/src/modules/geo-pois/geo-poi.service.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.controller.ts","backend/src/modules/groupbuy-campaigns/groupbuy-campaign.service.ts","backend/src/modules/groupbuy-orders/groupbuy-order.controller.ts","backend/src/modules/groupbuy-orders/groupbuy-order.service.ts","backend/src/modules/im/im.routes.ts","backend/src/modules/inventory/inventory.controller.ts","backend/src/modules/inventory/inventory.service.ts","backend/src/modules/inventory/services/inventory-count.service.ts","backend/src/modules/inventory/services/inventory-reservation.service.ts","backend/src/modules/invoices/invoice.controller.ts","backend/src/modules/invoices/invoice.routes.ts","backend/src/modules/invoices/invoice.service.ts","backend/src/modules/knowledge-feedback/knowledge-feedback.routes.ts","backend/src/modules/knowledge/knowledge-crud.service.ts","backend/src/modules/knowledge/knowledge.controller.ts","backend/src/modules/knowledge/knowledge.routes.ts","backend/src/modules/lead-scoring-ai/lead-action-recommendation.routes.ts","backend/src/modules/lead-scoring-ai/lead-score-trigger.routes.ts","backend/src/modules/leads/lead.controller.ts","backend/src/modules/leads/lead.routes.ts","backend/src/modules/leads/lead.schema.ts","backend/src/modules/leads/lead.service.ts","backend/src/modules/livestream-rooms/livestream-room.controller.ts","backend/src/modules/livestream-rooms/livestream-room.service.ts","backend/src/modules/livestream-schedules/livestream-schedule.compat.routes.ts","backend/src/modules/livestream-schedules/livestream-schedule.controller.ts","backend/src/modules/livestream-schedules/livestream-schedule.service.ts","backend/src/modules/marketing-automation/workflow.controller.ts","backend/src/modules/marketing-automation/workflow.service.ts","backend/src/modules/marketing-matrix/matrix.service.ts","backend/src/modules/marketing/marketing-campaign.service.ts","backend/src/modules/marketing/marketing.controller.ts","backend/src/modules/opportunities/index.ts","backend/src/modules/opportunities/opportunity-export.service.ts","backend/src/modules/opportunities/opportunity.controller.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.controller.ts","backend/src/modules/orders/order.routes.ts","backend/src/modules/orders/order.schema.ts","backend/src/modules/orders/order.service.test.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/partners/partner.controller.ts","backend/src/modules/partners/partner.routes.ts","backend/src/modules/partners/partner.service.ts","backend/src/modules/payments/payment-record.service.ts","backend/src/modules/payments/payment.controller.ts","backend/src/modules/price-books/index.ts","backend/src/modules/price-books/price-book.controller.ts","backend/src/modules/price-books/price-book.routes.ts","backend/src/modules/price-books/price-book.service.ts","backend/src/modules/price-books/price-enhancement.controller.ts","backend/src/modules/products/controllers/category.controller.ts","backend/src/modules/products/controllers/product.controller.ts","backend/src/modules/products/controllers/sku.controller.ts","backend/src/modules/products/services/category.service.ts","backend/src/modules/products/services/index.ts","backend/src/modules/products/services/product.service.ts","backend/src/modules/products/services/sku.service.ts","backend/src/modules/projects/project.controller.ts","backend/src/modules/projects/project.routes.ts","backend/src/modules/projects/project.service.ts","backend/src/modules/quotes/quote.controller.ts","backend/src/modules/quotes/quote.routes.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/reconciliation/matching-engine.service.ts","backend/src/modules/reconciliation/reconciliation.controller.ts","backend/src/modules/reconciliation/reconciliation.service.ts","backend/src/modules/renewals/index.ts","backend/src/modules/renewals/renewals.service.ts","backend/src/modules/revenue/ar-ledger.controller.ts","backend/src/modules/revenue/ar-ledger.service.ts","backend/src/modules/revenue/index.ts","backend/src/modules/revenue/invoice.controller.ts","backend/src/modules/revenue/invoice.routes.ts","backend/src/modules/revenue/invoice.service.ts","backend/src/modules/revenue/payment.controller.ts","backend/src/modules/revenue/revenue-recognition.controller.ts","backend/src/modules/revenue/revenue-recognition.service.ts","backend/src/modules/revenue/revenue.controller.ts","backend/src/modules/revenue/revenue.docs.ts","backend/src/modules/revenue/revenue.routes.ts","backend/src/modules/revenue/revenue.service.ts","backend/src/modules/revenue/sales-commission-compat.controller.ts","backend/src/modules/revenue/sales-commission.service.ts","backend/src/modules/rma/index.ts","backend/src/modules/rma/rma.compat.routes.ts","backend/src/modules/rma/rma.controller.ts","backend/src/modules/rma/rma.routes.ts","backend/src/modules/rma/rma.service.ts","backend/src/modules/roles/role.controller.ts","backend/src/modules/roles/role.routes.ts","backend/src/modules/roles/role.service.ts","backend/src/modules/serial-numbers/sn.controller.ts","backend/src/modules/serial-numbers/sn.service.ts","backend/src/modules/shipments/shipment.controller.ts","backend/src/modules/shipments/shipment.routes.ts","backend/src/modules/shipments/shipment.service.ts","backend/src/modules/sla/sla.service.ts","backend/src/modules/social-accounts/social-account.controller.ts","backend/src/modules/social-accounts/social-account.service.ts","backend/src/modules/social-posts/social-post.controller.ts","backend/src/modules/social-posts/social-post.service.ts","backend/src/modules/supplier-payments/supplier-payments.compat.routes.ts","backend/src/modules/supplier-payments/supplier-payments.service.ts","backend/src/modules/suppliers/supplier.service.ts","backend/src/modules/targets/target.controller.ts","backend/src/modules/targets/target.service.ts","backend/src/modules/tenant-configs/tenant-config.controller.ts","backend/src/modules/tenant-configs/tenant-config.service.ts","backend/src/modules/ticket-workflows/ticket-workflow.controller.ts","backend/src/modules/ticket-workflows/ticket-workflow.routes.ts","backend/src/modules/ticket-workflows/ticket-workflow.service.ts","backend/src/modules/tickets/index.ts","backend/src/modules/tickets/ticket-interactions.service.ts","backend/src/modules/tickets/ticket-operations.service.ts","backend/src/modules/tickets/ticket-queries.service.ts","backend/src/modules/tickets/ticket.controller.ts","backend/src/modules/tickets/ticket.routes.ts","backend/src/modules/tickets/ticket.service.ts","backend/src/modules/treasury/bank-account.service.ts","backend/src/modules/treasury/payment-request.service.ts","backend/src/modules/users/user.controller.ts","backend/src/modules/users/user.service.ts","backend/src/routes/register-domain-routes.ts","backend/src/shared/constants/events.ts","backend/src/shared/constants/permissions.ts","backend/src/shared/middleware/error.middleware.ts","backend/src/shared/services/base.service.test.ts","backend/src/shared/services/base.service.ts","backend/src/shared/state-machines/index.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/src/shared/state-machines/utils/transitions.ts","backend/src/shared/utils/biz-code.ts","backend/src/shared/utils/event-outbox-helper.ts","backend/tests/api/finance-gap-closure.test.ts","backend/tests/api/orders.test.ts","backend/tsconfig.json","docs/DEVELOPMENT_GUIDE.md","docs/api/openapi.json","docs/api/openapi.yaml","e2e/.auth/admin.json","e2e/playwright-report/index.html","frontend/src/api/adapters.ts","frontend/src/api/modules/revenue-recognition.ts","frontend/src/types/models.ts","frontend/src/views/lead-qualification/Index.vue","frontend/src/views/leads/Assignment.vue","frontend/src/views/leads/Detail.vue","frontend/src/views/leads/Index.vue","frontend/src/views/tickets/components/gantt/TicketGanttChart.vue","frontend/src/views/tickets/components/gantt/composables/useGanttData.ts","package.json","pnpm-lock.yaml","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md","reports/missing-events-audit.latest.json","reports/missing-events-audit.latest.md","reports/module-placeholder-audit.latest.json","reports/module-placeholder-audit.latest.md","reports/state-machine-integration-audit.latest.json","reports/state-machine-integration-audit.latest.md","shared/src/types/models.ts"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":true,"fork":false,"template":false,"parent":null,"mirror":false,"size":464735,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-02-24T00:16:50+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
|
2
|
2
|
0
|
1771864510
|
0
|
1771863610
|
1771864510
|
NULL
|
|
0
|
Edit
Delete
|
|
66
|
Fix e2e timeout failures in business
|
6
|
5
|
health-check.yml
|
27
|
-2
|
21
|
refs/heads/main
|
546659ec60e857bdf77619972d1b3e4333b621ac
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"4e9a26e0e1c15538f2a6f033748340bb62b02af2","after":"546659ec60e857bdf77619972d1b3e4333b621ac","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/4e9a26e0e1c15538f2a6f033748340bb62b02af2...546659ec60e857bdf77619972d1b3e4333b621ac","commits":[{"id":"546659ec60e857bdf77619972d1b3e4333b621ac","message":"Fix e2e timeout failures in business\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/546659ec60e857bdf77619972d1b3e4333b621ac","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-12T10:47:47+08:00","added":[],"removed":["e2e/playwright-report/data/512a8834d5f08d119fe44c5406f8f7b90c325900.png","e2e/playwright-report/data/5e84b497e5e6a5067f6b68414b2858576c91c6de.png","e2e/playwright-report/data/756cf89caac3dbbaf66ae5a4fece9488c4a42525.png","e2e/playwright-report/data/822a0a09c9b863d07c83467a99efb1337ffd0cac.png","e2e/playwright-report/data/92ffd60eca3e883a7e21500e5fdf92f7880e0ea8.md","e2e/playwright-report/data/aab2a6ce8f585d43bfae98f67d618f9e62590d16.png","e2e/playwright-report/data/bc1bd2948dfc983ce38f14632ed16f0dcb23b7eb.png","e2e/playwright-report/data/c480ca7b102943634bceabd2605376dc4358b2e2.png","e2e/playwright-report/data/e4a07244821da8bc81a5c72ff2bc44138444e25c.md","e2e/test-results/business-flows-ticket-proc-03d35-理流程-E2E-测试-重新打开流程:已关闭工单重新打开-chromium/error-context.md","e2e/test-results/business-flows-ticket-proc-03d35-理流程-E2E-测试-重新打开流程:已关闭工单重新打开-chromium/test-failed-1.png","e2e/test-results/business-flows-ticket-proc-1cdf9-处理流程-E2E-测试-权限测试:一线客服不能删除工单-chromium/error-context.md","e2e/test-results/business-flows-ticket-proc-1cdf9-处理流程-E2E-测试-权限测试:一线客服不能删除工单-chromium/test-failed-1.png","e2e/test-results/business-flows-ticket-proc-3474b-E-测试-SLA-超时预警:首次响应超时-解决时间超时-chromium/error-context.md","e2e/test-results/business-flows-ticket-proc-3474b-E-测试-SLA-超时预警:首次响应超时-解决时间超时-chromium/test-failed-1.png","e2e/test-results/business-flows-ticket-proc-381df-→-分配-→-处理-→-解决-→-关闭-→-满意度调查-chromium/error-context.md","e2e/test-results/business-flows-ticket-proc-381df-→-分配-→-处理-→-解决-→-关闭-→-满意度调查-chromium/test-failed-1.png","e2e/test-results/business-flows-ticket-proc-a4b93-流程-E2E-测试-权限测试:只有客服经理可以删除工单-chromium/error-context.md","e2e/test-results/business-flows-ticket-proc-a4b93-流程-E2E-测试-权限测试:只有客服经理可以删除工单-chromium/test-failed-1.png","e2e/test-results/business-flows-ticket-proc-e0988-2E-测试-关联订单流程:从订单创建工单-→-关联资产-chromium/error-context.md","e2e/test-results/business-flows-ticket-proc-e0988-2E-测试-关联订单流程:从订单创建工单-→-关联资产-chromium/test-failed-1.png","e2e/test-results/business-flows-ticket-proc-ef546-理流程-E2E-测试-权限测试:客户只能查看自己的工单-chromium/error-context.md","e2e/test-results/business-flows-ticket-proc-ef546-理流程-E2E-测试-权限测试:客户只能查看自己的工单-chromium/test-failed-1.png","e2e/test-results/business-flows-ticket-proc-efb99-试-升级流程:一线无法处理-→-升级二线-→-升级经理-chromium/error-context.md","e2e/test-results/business-flows-ticket-proc-efb99-试-升级流程:一线无法处理-→-升级二线-→-升级经理-chromium/test-failed-1.png"],"modified":["e2e/.auth/admin.json","e2e/playwright-report/index.html","e2e/tests/permissions/role-based-access.spec.ts","e2e/tests/state-machines/lead-state-transitions.spec.ts"]},{"id":"1b8bb5fb6f26c34b2e8b8ef0034ba5abad85b778","message":"Fix contract signing flow timeouts\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/1b8bb5fb6f26c34b2e8b8ef0034ba5abad85b778","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-12T10:43:58+08:00","added":["e2e/playwright-report/data/512a8834d5f08d119fe44c5406f8f7b90c325900.png","e2e/playwright-report/data/5e84b497e5e6a5067f6b68414b2858576c91c6de.png","e2e/playwright-report/data/756cf89caac3dbbaf66ae5a4fece9488c4a42525.png","e2e/playwright-report/data/822a0a09c9b863d07c83467a99efb1337ffd0cac.png","e2e/playwright-report/data/92ffd60eca3e883a7e21500e5fdf92f7880e0ea8.md","e2e/playwright-report/data/aab2a6ce8f585d43bfae98f67d618f9e62590d16.png","e2e/playwright-report/data/bc1bd2948dfc983ce38f14632ed16f0dcb23b7eb.png","e2e/playwright-report/data/c480ca7b102943634bceabd2605376dc4358b2e2.png","e2e/playwright-report/data/e4a07244821da8bc81a5c72ff2bc44138444e25c.md","e2e/test-results/business-flows-ticket-proc-03d35-理流程-E2E-测试-重新打开流程:已关闭工单重新打开-chromium/error-context.md","e2e/test-results/business-flows-ticket-proc-03d35-理流程-E2E-测试-重新打开流程:已关闭工单重新打开-chromium/test-failed-1.png","e2e/test-results/business-flows-ticket-proc-1cdf9-处理流程-E2E-测试-权限测试:一线客服不能删除工单-chromium/error-context.md","e2e/test-results/business-flows-ticket-proc-1cdf9-处理流程-E2E-测试-权限测试:一线客服不能删除工单-chromium/test-failed-1.png","e2e/test-results/business-flows-ticket-proc-3474b-E-测试-SLA-超时预警:首次响应超时-解决时间超时-chromium/error-context.md","e2e/test-results/business-flows-ticket-proc-3474b-E-测试-SLA-超时预警:首次响应超时-解决时间超时-chromium/test-failed-1.png","e2e/test-results/business-flows-ticket-proc-381df-→-分配-→-处理-→-解决-→-关闭-→-满意度调查-chromium/error-context.md","e2e/test-results/business-flows-ticket-proc-381df-→-分配-→-处理-→-解决-→-关闭-→-满意度调查-chromium/test-failed-1.png","e2e/test-results/business-flows-ticket-proc-a4b93-流程-E2E-测试-权限测试:只有客服经理可以删除工单-chromium/error-context.md","e2e/test-results/business-flows-ticket-proc-a4b93-流程-E2E-测试-权限测试:只有客服经理可以删除工单-chromium/test-failed-1.png","e2e/test-results/business-flows-ticket-proc-e0988-2E-测试-关联订单流程:从订单创建工单-→-关联资产-chromium/error-context.md","e2e/test-results/business-flows-ticket-proc-e0988-2E-测试-关联订单流程:从订单创建工单-→-关联资产-chromium/test-failed-1.png","e2e/test-results/business-flows-ticket-proc-ef546-理流程-E2E-测试-权限测试:客户只能查看自己的工单-chromium/error-context.md","e2e/test-results/business-flows-ticket-proc-ef546-理流程-E2E-测试-权限测试:客户只能查看自己的工单-chromium/test-failed-1.png","e2e/test-results/business-flows-ticket-proc-efb99-试-升级流程:一线无法处理-→-升级二线-→-升级经理-chromium/error-context.md","e2e/test-results/business-flows-ticket-proc-efb99-试-升级流程:一线无法处理-→-升级二线-→-升级经理-chromium/test-failed-1.png"],"removed":["e2e/playwright-report/data/48dc2931f6ad03bf1647af865b67316ecb95db29.png","e2e/playwright-report/data/a91972eeb28938ca920219ffb692b40b4d87cfc1.png","e2e/playwright-report/data/b49e78f3b0aa576dea32b81ce579c24446839693.md","e2e/test-results/.last-run.json","e2e/test-results/business-flows-contract-si-66eea-试-审批拒绝流程:法务拒绝-→-销售修改-→-重新提交-chromium/error-context.md","e2e/test-results/business-flows-contract-si-66eea-试-审批拒绝流程:法务拒绝-→-销售修改-→-重新提交-chromium/test-failed-1.png","e2e/test-results/business-flows-contract-si-66eea-试-审批拒绝流程:法务拒绝-→-销售修改-→-重新提交-chromium/test-failed-2.png","e2e/test-results/results.json"],"modified":["backend/src/shared/services/encryption.service.ts","e2e/.auth/admin.json","e2e/playwright-report/index.html","e2e/tests/state-machines/lead-state-transitions.spec.ts"]},{"id":"5bbca50424a2b46f75580225a21e3598d47f2599","message":"Fix 合同签署流程超时失败」} PMID correction? I\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/5bbca50424a2b46f75580225a21e3598d47f2599","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-12T10:32:53+08:00","added":["e2e/playwright-report/data/48dc2931f6ad03bf1647af865b67316ecb95db29.png","e2e/playwright-report/data/a91972eeb28938ca920219ffb692b40b4d87cfc1.png","e2e/playwright-report/data/b49e78f3b0aa576dea32b81ce579c24446839693.md"],"removed":["e2e/playwright-report/data/01c5544c07f97d03e132ab644a39892558530756.png","e2e/playwright-report/data/1e3bff6e21388ee6ae55d738136b0ebd14242762.png","e2e/playwright-report/data/1e8647e191347d8c0be54fe12399779ecb265681.md","e2e/playwright-report/data/2c1ff274bc98d00754507d0e6c3f19f6ab740273.png","e2e/playwright-report/data/5b49a7322fede55376a86d603c2f78b6d958e16a.md","e2e/playwright-report/data/808cd0daba52b1aebec71ffbb3c5923b80c8eef6.png","e2e/playwright-report/data/86ecef0599c45b85e0a258783649deb03135e794.png","e2e/playwright-report/data/9bc189bebbd446b4c6d2b9e754d2c807cae8ac88.md","e2e/playwright-report/data/9c7b2cc08b528e57678bf86499406191c21c8c24.png","e2e/playwright-report/data/b0ca7d1de835a657f38fb2fad0966eda01bb75c2.png","e2e/playwright-report/data/b670bed2e7301e04c793e1f8c70507a67c12e8eb.md","e2e/playwright-report/data/bd80a896165071be262938eeb606833d291f0b79.md","e2e/playwright-report/data/c7deca52e3a9dd3b16af1b037e4c19aed3778659.png","e2e/playwright-report/data/dd673f0b7b80dc4b4ee837092ee6bf2b7f0b1b62.png","e2e/playwright-report/data/ece5ae700e0c1a9afb38a197d9bf430b7cd67a8c.md","e2e/playwright-report/data/f7fe6998814c22457ef676632613e18a7619d059.md","e2e/playwright-report/data/f9efc8470e821caa5b3dc5ffa81a46a782e548d6.png","e2e/test-results/business-flows-contract-si-28626-签署流程-E2E-测试-权限测试:销售专员无法审批合同-chromium/error-context.md","e2e/test-results/business-flows-contract-si-28626-签署流程-E2E-测试-权限测试:销售专员无法审批合同-chromium/test-failed-1.png","e2e/test-results/business-flows-contract-si-51110--合同签署流程-E2E-测试-合同续签流程:到期前续签-chromium/error-context.md","e2e/test-results/business-flows-contract-si-51110--合同签署流程-E2E-测试-合同续签流程:到期前续签-chromium/test-failed-1.png","e2e/test-results/business-flows-contract-si-90e82-合同签署流程-E2E-测试-签署拒绝流程:客户拒绝签署-chromium/error-context.md","e2e/test-results/business-flows-contract-si-90e82-合同签署流程-E2E-测试-签署拒绝流程:客户拒绝签署-chromium/test-failed-1.png","e2e/test-results/business-flows-contract-si-90e82-合同签署流程-E2E-测试-签署拒绝流程:客户拒绝签署-chromium/test-failed-2.png","e2e/test-results/business-flows-contract-si-90e82-合同签署流程-E2E-测试-签署拒绝流程:客户拒绝签署-chromium/test-failed-3.png","e2e/test-results/business-flows-contract-si-a11ed-签署流程-E2E-测试-合同终止流程:生效中-→-终止-chromium/error-context.md","e2e/test-results/business-flows-contract-si-a11ed-签署流程-E2E-测试-合同终止流程:生效中-→-终止-chromium/test-failed-1.png","e2e/test-results/business-flows-contract-si-bed52-E-测试-合同激活-→-订单生成-→-权益激活完整链路-chromium/error-context.md","e2e/test-results/business-flows-contract-si-bed52-E-测试-合同激活-→-订单生成-→-权益激活完整链路-chromium/test-failed-1.png","e2e/test-results/business-flows-contract-si-e6f49-合同签署流程-E2E-测试-双审批流程:法务-财务审批-chromium/error-context.md","e2e/test-results/business-flows-contract-si-e6f49-合同签署流程-E2E-测试-双审批流程:法务-财务审批-chromium/test-failed-1.png"],"modified":["e2e/.auth/admin.json","e2e/pages/ContractDetailPage.ts","e2e/playwright-report/index.html","e2e/test-results/.last-run.json","e2e/test-results/business-flows-contract-si-66eea-试-审批拒绝流程:法务拒绝-→-销售修改-→-重新提交-chromium/error-context.md","e2e/test-results/business-flows-contract-si-66eea-试-审批拒绝流程:法务拒绝-→-销售修改-→-重新提交-chromium/test-failed-1.png","e2e/test-results/business-flows-contract-si-66eea-试-审批拒绝流程:法务拒绝-→-销售修改-→-重新提交-chromium/test-failed-2.png","e2e/test-results/results.json","e2e/tests/business-flows/contract-signing-flow.spec.ts"]},{"id":"6ed44eeae0cc3408bafde02ef9a6987230bb423f","message":"Fix contract signing flow timeout\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6ed44eeae0cc3408bafde02ef9a6987230bb423f","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-12T10:06:50+08:00","added":["e2e/playwright-report/data/01c5544c07f97d03e132ab644a39892558530756.png","e2e/playwright-report/data/1e3bff6e21388ee6ae55d738136b0ebd14242762.png","e2e/playwright-report/data/1e8647e191347d8c0be54fe12399779ecb265681.md","e2e/playwright-report/data/2c1ff274bc98d00754507d0e6c3f19f6ab740273.png","e2e/playwright-report/data/5b49a7322fede55376a86d603c2f78b6d958e16a.md","e2e/playwright-report/data/808cd0daba52b1aebec71ffbb3c5923b80c8eef6.png","e2e/playwright-report/data/86ecef0599c45b85e0a258783649deb03135e794.png","e2e/playwright-report/data/9bc189bebbd446b4c6d2b9e754d2c807cae8ac88.md","e2e/playwright-report/data/9c7b2cc08b528e57678bf86499406191c21c8c24.png","e2e/playwright-report/data/b0ca7d1de835a657f38fb2fad0966eda01bb75c2.png","e2e/playwright-report/data/b670bed2e7301e04c793e1f8c70507a67c12e8eb.md","e2e/playwright-report/data/bd80a896165071be262938eeb606833d291f0b79.md","e2e/playwright-report/data/c7deca52e3a9dd3b16af1b037e4c19aed3778659.png","e2e/playwright-report/data/dd673f0b7b80dc4b4ee837092ee6bf2b7f0b1b62.png","e2e/playwright-report/data/ece5ae700e0c1a9afb38a197d9bf430b7cd67a8c.md","e2e/playwright-report/data/f7fe6998814c22457ef676632613e18a7619d059.md","e2e/playwright-report/data/f9efc8470e821caa5b3dc5ffa81a46a782e548d6.png","e2e/test-results/.last-run.json","e2e/test-results/results.json"],"removed":["e2e/playwright-report/data/0356a236f837a3985fb99f2003f15bc22578fa09.png","e2e/playwright-report/data/0a2db2cad27f229619558b270dff99d6805712a2.md","e2e/playwright-report/data/1574ab1df75ae3b0d740ab533a4609424746c549.png","e2e/playwright-report/data/245a1b25080abc239936461f2bb7e40d74bd5c73.md","e2e/playwright-report/data/24b87d784b823f08b7196c1a415e33b385dd3c8e.png","e2e/playwright-report/data/2ad9df6c76ce3aa0f1b6add71f016f936cb7c6ea.png","e2e/playwright-report/data/4684d4f88f38fd01d85a0d77047b35286376a8fd.png","e2e/playwright-report/data/4da5736930ddbfb78341f344842f6db0ec3eaced.md","e2e/playwright-report/data/51102b9d0bc0912f8733e17110bc2db8c32e60ac.png","e2e/playwright-report/data/6fa7e7b1fb072546eb4cb098d02ae61f8bb4f1c8.md","e2e/playwright-report/data/8eaba0371c15aa9801aa5723d04e6d11640e8ee4.png","e2e/playwright-report/data/b350d581b8cf27c2d27956631afad495301dc8fc.png","e2e/playwright-report/data/e2a4cf0199da1869c6f81830445be797a172b67e.md","e2e/playwright-report/data/e75f92bf420a837d0cbe84ee79f61b5326c9bea1.png","e2e/test-results/.playwright-artifacts-1/1105e1e235d62ac9107b1c0bf9a2526b.png","e2e/test-results/.playwright-artifacts-1/840afe4772661e84fbc166314e02d410.png","e2e/test-results/.playwright-artifacts-1/c771f6e47c260915d3f3f21195fe24d4.png"],"modified":["e2e/playwright-report/index.html"]},{"id":"e42d979f587f47754c40e56d87cb2e5afed8d6e9","message":"Fix contract signing flow timeouts\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/e42d979f587f47754c40e56d87cb2e5afed8d6e9","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-12T10:05:41+08:00","added":["e2e/playwright-report/data/0356a236f837a3985fb99f2003f15bc22578fa09.png","e2e/playwright-report/data/0a2db2cad27f229619558b270dff99d6805712a2.md","e2e/playwright-report/data/1574ab1df75ae3b0d740ab533a4609424746c549.png","e2e/playwright-report/data/245a1b25080abc239936461f2bb7e40d74bd5c73.md","e2e/playwright-report/data/24b87d784b823f08b7196c1a415e33b385dd3c8e.png","e2e/playwright-report/data/2ad9df6c76ce3aa0f1b6add71f016f936cb7c6ea.png","e2e/playwright-report/data/4684d4f88f38fd01d85a0d77047b35286376a8fd.png","e2e/playwright-report/data/4da5736930ddbfb78341f344842f6db0ec3eaced.md","e2e/playwright-report/data/51102b9d0bc0912f8733e17110bc2db8c32e60ac.png","e2e/playwright-report/data/6fa7e7b1fb072546eb4cb098d02ae61f8bb4f1c8.md","e2e/playwright-report/data/8eaba0371c15aa9801aa5723d04e6d11640e8ee4.png","e2e/playwright-report/data/b350d581b8cf27c2d27956631afad495301dc8fc.png","e2e/playwright-report/data/e2a4cf0199da1869c6f81830445be797a172b67e.md","e2e/playwright-report/data/e75f92bf420a837d0cbe84ee79f61b5326c9bea1.png","e2e/test-results/.playwright-artifacts-1/1105e1e235d62ac9107b1c0bf9a2526b.png","e2e/test-results/.playwright-artifacts-1/840afe4772661e84fbc166314e02d410.png","e2e/test-results/.playwright-artifacts-1/c771f6e47c260915d3f3f21195fe24d4.png","e2e/test-results/business-flows-contract-si-66eea-试-审批拒绝流程:法务拒绝-→-销售修改-→-重新提交-chromium/error-context.md","e2e/test-results/business-flows-contract-si-66eea-试-审批拒绝流程:法务拒绝-→-销售修改-→-重新提交-chromium/test-failed-1.png","e2e/test-results/business-flows-contract-si-66eea-试-审批拒绝流程:法务拒绝-→-销售修改-→-重新提交-chromium/test-failed-2.png","e2e/test-results/business-flows-contract-si-90e82-合同签署流程-E2E-测试-签署拒绝流程:客户拒绝签署-chromium/test-failed-2.png","e2e/test-results/business-flows-contract-si-90e82-合同签署流程-E2E-测试-签署拒绝流程:客户拒绝签署-chromium/test-failed-3.png","e2e/test-results/business-flows-contract-si-e6f49-合同签署流程-E2E-测试-双审批流程:法务-财务审批-chromium/error-context.md","e2e/test-results/business-flows-contract-si-e6f49-合同签署流程-E2E-测试-双审批流程:法务-财务审批-chromium/test-failed-1.png"],"removed":["e2e/test-results/business-flows-contract-si-109b0--测试-标准流程:法务审批-→-电子签章-→-合同激活-chromium/error-context.md","e2e/test-results/business-flows-contract-si-109b0--测试-标准流程:法务审批-→-电子签章-→-合同激活-chromium/test-failed-1.png"],"modified":["e2e/.auth/admin.json","e2e/helpers/test-data-factory.ts","e2e/pages/ContractDetailPage.ts","e2e/playwright-report/index.html","e2e/test-results/business-flows-contract-si-28626-签署流程-E2E-测试-权限测试:销售专员无法审批合同-chromium/error-context.md","e2e/test-results/business-flows-contract-si-28626-签署流程-E2E-测试-权限测试:销售专员无法审批合同-chromium/test-failed-1.png","e2e/test-results/business-flows-contract-si-51110--合同签署流程-E2E-测试-合同续签流程:到期前续签-chromium/error-context.md","e2e/test-results/business-flows-contract-si-51110--合同签署流程-E2E-测试-合同续签流程:到期前续签-chromium/test-failed-1.png","e2e/test-results/business-flows-contract-si-90e82-合同签署流程-E2E-测试-签署拒绝流程:客户拒绝签署-chromium/error-context.md","e2e/test-results/business-flows-contract-si-90e82-合同签署流程-E2E-测试-签署拒绝流程:客户拒绝签署-chromium/test-failed-1.png","e2e/test-results/business-flows-contract-si-a11ed-签署流程-E2E-测试-合同终止流程:生效中-→-终止-chromium/error-context.md","e2e/test-results/business-flows-contract-si-a11ed-签署流程-E2E-测试-合同终止流程:生效中-→-终止-chromium/test-failed-1.png","e2e/test-results/business-flows-contract-si-bed52-E-测试-合同激活-→-订单生成-→-权益激活完整链路-chromium/error-context.md","e2e/test-results/business-flows-contract-si-bed52-E-测试-合同激活-→-订单生成-→-权益激活完整链路-chromium/test-failed-1.png","e2e/tests/business-flows/contract-signing-flow.spec.ts"]}],"total_commits":0,"head_commit":{"id":"546659ec60e857bdf77619972d1b3e4333b621ac","message":"Fix e2e timeout failures in business\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/546659ec60e857bdf77619972d1b3e4333b621ac","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-12T10:47:47+08:00","added":[],"removed":["e2e/playwright-report/data/512a8834d5f08d119fe44c5406f8f7b90c325900.png","e2e/playwright-report/data/5e84b497e5e6a5067f6b68414b2858576c91c6de.png","e2e/playwright-report/data/756cf89caac3dbbaf66ae5a4fece9488c4a42525.png","e2e/playwright-report/data/822a0a09c9b863d07c83467a99efb1337ffd0cac.png","e2e/playwright-report/data/92ffd60eca3e883a7e21500e5fdf92f7880e0ea8.md","e2e/playwright-report/data/aab2a6ce8f585d43bfae98f67d618f9e62590d16.png","e2e/playwright-report/data/bc1bd2948dfc983ce38f14632ed16f0dcb23b7eb.png","e2e/playwright-report/data/c480ca7b102943634bceabd2605376dc4358b2e2.png","e2e/playwright-report/data/e4a07244821da8bc81a5c72ff2bc44138444e25c.md","e2e/test-results/business-flows-ticket-proc-03d35-理流程-E2E-测试-重新打开流程:已关闭工单重新打开-chromium/error-context.md","e2e/test-results/business-flows-ticket-proc-03d35-理流程-E2E-测试-重新打开流程:已关闭工单重新打开-chromium/test-failed-1.png","e2e/test-results/business-flows-ticket-proc-1cdf9-处理流程-E2E-测试-权限测试:一线客服不能删除工单-chromium/error-context.md","e2e/test-results/business-flows-ticket-proc-1cdf9-处理流程-E2E-测试-权限测试:一线客服不能删除工单-chromium/test-failed-1.png","e2e/test-results/business-flows-ticket-proc-3474b-E-测试-SLA-超时预警:首次响应超时-解决时间超时-chromium/error-context.md","e2e/test-results/business-flows-ticket-proc-3474b-E-测试-SLA-超时预警:首次响应超时-解决时间超时-chromium/test-failed-1.png","e2e/test-results/business-flows-ticket-proc-381df-→-分配-→-处理-→-解决-→-关闭-→-满意度调查-chromium/error-context.md","e2e/test-results/business-flows-ticket-proc-381df-→-分配-→-处理-→-解决-→-关闭-→-满意度调查-chromium/test-failed-1.png","e2e/test-results/business-flows-ticket-proc-a4b93-流程-E2E-测试-权限测试:只有客服经理可以删除工单-chromium/error-context.md","e2e/test-results/business-flows-ticket-proc-a4b93-流程-E2E-测试-权限测试:只有客服经理可以删除工单-chromium/test-failed-1.png","e2e/test-results/business-flows-ticket-proc-e0988-2E-测试-关联订单流程:从订单创建工单-→-关联资产-chromium/error-context.md","e2e/test-results/business-flows-ticket-proc-e0988-2E-测试-关联订单流程:从订单创建工单-→-关联资产-chromium/test-failed-1.png","e2e/test-results/business-flows-ticket-proc-ef546-理流程-E2E-测试-权限测试:客户只能查看自己的工单-chromium/error-context.md","e2e/test-results/business-flows-ticket-proc-ef546-理流程-E2E-测试-权限测试:客户只能查看自己的工单-chromium/test-failed-1.png","e2e/test-results/business-flows-ticket-proc-efb99-试-升级流程:一线无法处理-→-升级二线-→-升级经理-chromium/error-context.md","e2e/test-results/business-flows-ticket-proc-efb99-试-升级流程:一线无法处理-→-升级二线-→-升级经理-chromium/test-failed-1.png"],"modified":["e2e/.auth/admin.json","e2e/playwright-report/index.html","e2e/tests/permissions/role-based-access.spec.ts","e2e/tests/state-machines/lead-state-transitions.spec.ts"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":true,"fork":false,"template":false,"parent":null,"mirror":false,"size":264083,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-02-24T00:08:51+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
|
1771863033
|
1771863033
|
0
|
1771863010
|
1771863033
|
NULL
|
|
0
|
Edit
Delete
|
|
55
|
Update predictive and RFM modules
|
6
|
5
|
health-check.yml
|
16
|
-2
|
11
|
refs/heads/main
|
7145a8553a880d8a94356baf7bcb4e2df4631e61
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"c8adeb7142f7f1b57a10bfffc3de856524997227","after":"7145a8553a880d8a94356baf7bcb4e2df4631e61","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/c8adeb7142f7f1b57a10bfffc3de856524997227...7145a8553a880d8a94356baf7bcb4e2df4631e61","commits":[{"id":"7145a8553a880d8a94356baf7bcb4e2df4631e61","message":"Update predictive and RFM modules\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/7145a8553a880d8a94356baf7bcb4e2df4631e61","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-11T01:01:39+08:00","added":[],"removed":[],"modified":["backend/src/modules/predictive-analytics/predictive-analytics.compat.routes.ts","backend/src/modules/predictive-analytics/predictive-analytics.controller.ts","backend/src/modules/predictive-analytics/predictive-analytics.docs.ts","backend/src/modules/predictive-analytics/predictive-analytics.schema.ts","backend/src/modules/predictive-analytics/predictive-analytics.service.ts","backend/src/modules/rfm-analysis/rfm-analysis.compat.routes.ts","backend/src/modules/rfm-analysis/rfm-analysis.controller.ts","backend/src/modules/rfm-analysis/rfm-analysis.docs.ts","backend/src/modules/rfm-analysis/rfm-analysis.schema.ts","backend/src/modules/rfm-analysis/rfm-analysis.service.ts"]},{"id":"0f2d9c3835013e4d3629614ecd18a44606763f27","message":"Review analytics module updates\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/0f2d9c3835013e4d3629614ecd18a44606763f27","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-11T00:49:16+08:00","added":["backend/src/modules/campaign-analytics/campaign-analytics.controller.ts","backend/src/modules/campaign-analytics/campaign-analytics.docs.ts","backend/src/modules/campaign-analytics/campaign-analytics.schema.ts","backend/src/modules/campaign-analytics/campaign-analytics.service.ts","backend/src/modules/channel-analytics/channel-analytics.controller.ts","backend/src/modules/channel-analytics/channel-analytics.docs.ts","backend/src/modules/channel-analytics/channel-analytics.schema.ts","backend/src/modules/channel-analytics/channel-analytics.service.ts","backend/src/modules/cohort-analysis/cohort-analysis.controller.ts","backend/src/modules/cohort-analysis/cohort-analysis.docs.ts","backend/src/modules/cohort-analysis/cohort-analysis.schema.ts","backend/src/modules/cohort-analysis/cohort-analysis.service.ts","backend/src/modules/consumer-behavior-analytics/consumer-behavior-analytics.controller.ts","backend/src/modules/consumer-behavior-analytics/consumer-behavior-analytics.docs.ts","backend/src/modules/consumer-behavior-analytics/consumer-behavior-analytics.schema.ts","backend/src/modules/consumer-behavior-analytics/consumer-behavior-analytics.service.ts","backend/src/modules/cost-allocation/cost-allocation.controller.ts","backend/src/modules/cost-allocation/cost-allocation.docs.ts","backend/src/modules/cost-allocation/cost-allocation.schema.ts","backend/src/modules/cost-allocation/cost-allocation.service.ts","backend/src/modules/cross-domain-funnel/cross-domain-funnel.controller.ts","backend/src/modules/cross-domain-funnel/cross-domain-funnel.docs.ts","backend/src/modules/cross-domain-funnel/cross-domain-funnel.schema.ts","backend/src/modules/cross-domain-funnel/cross-domain-funnel.service.ts","backend/src/modules/customer-journey-orchestration/customer-journey-orchestration.controller.ts","backend/src/modules/customer-journey-orchestration/customer-journey-orchestration.docs.ts","backend/src/modules/customer-journey-orchestration/customer-journey-orchestration.schema.ts","backend/src/modules/customer-journey-orchestration/customer-journey-orchestration.service.ts","backend/src/modules/customer-lifecycle-value/customer-lifecycle-value.controller.ts","backend/src/modules/customer-lifecycle-value/customer-lifecycle-value.docs.ts","backend/src/modules/customer-lifecycle-value/customer-lifecycle-value.schema.ts","backend/src/modules/customer-lifecycle-value/customer-lifecycle-value.service.ts","backend/src/modules/customer-ltv/customer-ltv.controller.ts","backend/src/modules/customer-ltv/customer-ltv.docs.ts","backend/src/modules/customer-ltv/customer-ltv.schema.ts","backend/src/modules/customer-ltv/customer-ltv.service.ts","backend/src/modules/dictionaries/dictionary.docs.ts","backend/src/modules/dimension-transform/dimension-transform.controller.ts","backend/src/modules/dimension-transform/dimension-transform.docs.ts","backend/src/modules/dimension-transform/dimension-transform.schema.ts","backend/src/modules/dimension-transform/dimension-transform.service.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.controller.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.docs.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.schema.ts","backend/src/modules/marketing-effectiveness/marketing-effectiveness.service.ts","backend/src/modules/mdm/mdm.docs.ts","backend/src/modules/menus/menu.docs.ts","backend/src/modules/omnichannel-dashboard/omnichannel-dashboard.controller.ts","backend/src/modules/omnichannel-dashboard/omnichannel-dashboard.docs.ts","backend/src/modules/omnichannel-dashboard/omnichannel-dashboard.schema.ts","backend/src/modules/omnichannel-dashboard/omnichannel-dashboard.service.ts","backend/src/modules/omnichannel-data-hub/omnichannel-data-hub.controller.ts","backend/src/modules/omnichannel-data-hub/omnichannel-data-hub.docs.ts","backend/src/modules/omnichannel-data-hub/omnichannel-data-hub.schema.ts","backend/src/modules/omnichannel-data-hub/omnichannel-data-hub.service.ts","backend/src/modules/omnichannel-touchpoints/omnichannel-touchpoints.controller.ts","backend/src/modules/omnichannel-touchpoints/omnichannel-touchpoints.docs.ts","backend/src/modules/omnichannel-touchpoints/omnichannel-touchpoints.schema.ts","backend/src/modules/omnichannel-touchpoints/omnichannel-touchpoints.service.ts","backend/src/modules/positions/positions.controller.ts","backend/src/modules/positions/positions.docs.ts","backend/src/modules/positions/positions.schema.ts","backend/src/modules/positions/positions.service.ts","backend/src/modules/predictive-analytics/predictive-analytics.controller.ts","backend/src/modules/predictive-analytics/predictive-analytics.docs.ts","backend/src/modules/predictive-analytics/predictive-analytics.schema.ts","backend/src/modules/predictive-analytics/predictive-analytics.service.ts","backend/src/modules/realtime-trigger/realtime-trigger.controller.ts","backend/src/modules/realtime-trigger/realtime-trigger.docs.ts","backend/src/modules/realtime-trigger/realtime-trigger.schema.ts","backend/src/modules/realtime-trigger/realtime-trigger.service.ts","backend/src/modules/rfm-analysis/rfm-analysis.controller.ts","backend/src/modules/rfm-analysis/rfm-analysis.docs.ts","backend/src/modules/rfm-analysis/rfm-analysis.schema.ts","backend/src/modules/rfm-analysis/rfm-analysis.service.ts","backend/src/modules/supplier-payments/supplier-payments.controller.ts","backend/src/modules/supplier-payments/supplier-payments.docs.ts","backend/src/modules/supplier-payments/supplier-payments.schema.ts","backend/src/modules/supplier-payments/supplier-payments.service.ts"],"removed":[],"modified":["docs/ACTION-PLAN-2026.md","docs/ROADMAP_2026_Q1.md","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md","reports/全域收敛状态总览_2026-02-10.md"]},{"id":"9675324a5bbabd31646b05a46b9ccea1f19bbfb9","message":"Review backend and docs updates\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9675324a5bbabd31646b05a46b9ccea1f19bbfb9","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-11T00:29:08+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/services/multi-agent-collaboration.service.ts","backend/src/modules/alliance-campaigns/alliance-campaign.service.ts","backend/src/modules/alliance-partners/alliance-partner.service.ts","backend/src/modules/campaign-drafts/campaign-draft.service.ts","backend/src/modules/devices/device.service.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.service.ts","backend/src/modules/inventory/services/inventory-reservation.service.ts","backend/src/modules/livestream-groupbuy/livestream-groupbuy-conversion.service.ts","backend/src/modules/meddpicc-analyses/meddpicc.service.ts","backend/src/modules/swot-analyses/swot.service.ts","backend/src/modules/web-tracking/web-tracking.service.ts","docs/ACQUISITION-DOMAIN-ANALYSIS.md","docs/ACQUISITION-INNOVATION-TRANSFORMATION-PLAN.md","docs/ACTION-PLAN-2026.md","docs/AI-AGENT-SYSTEM-ANALYSIS.md","docs/ALIGNMENT_REPORT.md","docs/API_REFACTORING_PLAN.md","docs/AUTO-FIX-REPORT.md","docs/BACKEND-QUALITY-AUDIT-REPORT.md","docs/BATCH_OPERATIONS_AUDIT.md","docs/BUSINESS-DOMAIN-ANALYSIS.md","docs/DATABASE_MIGRATION_GUIDE.md","docs/DEPLOYMENT_COMPLETE.md","docs/DUPLICATION_ANALYSIS_REPORT.md","docs/E2E-TEST-STRATEGY.md","docs/EVENT_STREAM_OPTIMIZATION_REPORT.md","docs/FRONTEND-BACKEND-GAP-ANALYSIS.md","docs/FRONTEND-UI-TEST-SPECIFICATION.md","docs/FRONTEND_ANALYSIS_20260102.md","docs/FRONTEND_ARCHITECTURE_ANALYSIS.md","docs/FULLSTACK-MATCHER-ANALYSIS.md","docs/IMPLEMENTATION-GAP-ANALYSIS.md","docs/IMPROVEMENT-PLAN.md","docs/IMPROVEMENTS_SUMMARY_20260102.md","docs/IMPROVEMENT_REPORT_2026-01-02.md","docs/KTV-LOCATION-SELECTION-PRD.md","docs/MARKETING-ARCHITECTURE-INNOVATION.md","docs/MENU-DESIGN-PROPOSAL.md","docs/MENU-STRUCTURE-COMPLETE.md","docs/MOBILE_CHAT_CRM_DEVELOPMENT_PLAN.md","docs/MODULE-STRUCTURE-ANALYSIS.md","docs/OMNICHANNEL-MARKETING-ARCHITECTURE.md","docs/P2-OPTIMIZATION-FINAL-REPORT.md","docs/PERFORMANCE_AUDIT_REPORT.md","docs/PHP-MIGRATION-ANALYSIS.md","docs/PLANNED-ROUTES.md","docs/PRD_巨嗨全域智库_v1.0.md","docs/PRODUCTION_CHECKLIST.md","docs/PROJECT_MODULE_OPTIMIZATION.md","docs/REFACTOR_COMPLETED.md","docs/ROADMAP_2026_Q1.md","docs/SALES-DOMAIN-ANALYSIS.md","docs/SECURITY-AUDIT-REPORT.md","docs/STABILITY-ANALYSIS-REPORT.md","docs/SWOT-ANALYSIS.md","docs/TEST-MATURITY-ASSESSMENT-REPORT.md","docs/TEST_COVERAGE_REPORT.md","docs/TEST_SPECIFICATION_REVIEW.md","docs/WEAKNESS-REMEDIATION-PLAN.md","docs/ZOD_VALIDATION_ENHANCEMENT_REPORT.md","docs/architecture/CAMPAIGNS-TENANT-ID-MIGRATION.md","docs/architecture/CONSISTENCY-CHECKER-COMPLETE.md","docs/architecture/P0-OUTBOX-IMPLEMENTATION-PLAN.md","docs/architecture/P0-OUTBOX-IMPLEMENTATION-REPORT.md","docs/architecture/P0-TABLE-PARTITIONING-PLAN.md","docs/architecture/P1-IMPLEMENTATION-PLAN.md","docs/architecture/PHASE_1_FIX_PLAN.md","docs/architecture/REFACTOR-MODULE-LIST-COMPLETE.md","docs/architecture/REFACTOR_IMPLEMENTATION_PLAN.md","docs/architecture/ROI-ANALYSIS-EMERGENCY-FIX.md","docs/architecture/ROI-ANALYSIS-FIX-UPDATED.md","docs/architecture/ROI-ANALYSIS-IMPLEMENTATION.md","docs/architecture/ROI-MENU-RENAME-COMPLETION.md","docs/architecture/ROI-MENU-RENAME-PLAN.md","docs/architecture/ROI-RENAME-SUMMARY.md","docs/architecture/ROUTE-LAYER-REFACTOR-REPORT.md","docs/architecture/SYSTEM-MANAGEMENT-ANALYSIS.md","docs/audits/comprehensive-scan-report-2026-01-08.md","docs/batch-refactor-plan.md","docs/batch-refactor-summary-phase1.md","docs/deployment-checklist.md","docs/guides/TESTING-SUMMARY.md","docs/guides/TODO-CLEANUP-PLAN.md","docs/guides/TODO-GITHUB-ISSUES.md","docs/guides/TYPESCRIPT-ERRORS-FIX-PLAN.md","docs/kafka-event-improvement-plan.md","docs/menus/MENU-ALIGNMENT-FINAL-REPORT.md","docs/menus/MENU-FIX-COMPLETION-REPORT.md","docs/menus/MENU-FIX-SUMMARY.md","docs/menus/MENU-MIGRATION-GUIDE.md","docs/menus/MENU-PERMISSIONS-ANALYSIS.md","docs/menus/MENU-PERMISSIONS-IMPLEMENTATION-GUIDE.md","docs/menus/MENU-PERMISSIONS-QUICK-REFERENCE.md","docs/menus/MENU-PERMISSIONS-SUMMARY.md","docs/menus/MENU-STRUCTURE-V2.2.md","docs/menus/MENU-STRUCTURE-VISUAL.md","docs/menus/MENU-UPDATE-V2.2-FINAL.md","docs/pinia-persistence-verification.md","docs/refactor-final-report.md","docs/refactor-plan-partner-customers.md","docs/refactor-progress.md","docs/refactor-session-summary-2026-01-06.md","docs/refactor-summary-partner-customers.md","docs/refactor-summary.md","docs/reports/AI_AGENT_IMPLEMENTATION_SUMMARY.md","docs/reports/CAMPAIGNS-MIGRATION-REPORT-20260110.md","docs/reports/CHANGELOG_ROUTER_FIX.md","docs/reports/CODE_AUDIT_REPORT.md","docs/reports/CODE_AUDIT_REPORT_2026-01-24.md","docs/reports/CODE_FIX_REPORT_2026-01-24.md","docs/reports/CONFIG_ANALYSIS_REPORT.md","docs/reports/DATABASE-INDEX-MIGRATION-REPORT.md","docs/reports/DATABASE-PARTITIONING-MERGE-SUMMARY.md","docs/reports/DEPENDENCY_AUDIT_REPORT.md","docs/reports/FRONTEND_AUDIT_REPORT.md","docs/reports/FULLSTACK-GAP-ANALYSIS.md","docs/reports/GAP_ANALYSIS_REPORT.md","docs/reports/IMMEDIATE-ACTION-SUMMARY.md","docs/reports/OPTIMIZATION-REPORT.md","docs/reports/P0-TASKS-COMPLETION-REPORT.md","docs/reports/P0-VERIFICATION-CHECKLIST.md","docs/reports/P1-SCHEMA-VALIDATION-REPORT.md","docs/reports/P1-SENTRY-INTEGRATION-REPORT.md","docs/reports/P2_OPTIMIZATION_REPORT.md","docs/reports/PERFORMANCE_ANALYSIS_REPORT.md","docs/reports/PERFORMANCE_OPTIMIZATION_REPORT.md","docs/reports/PHASE_0_COMPLETION_REPORT.md","docs/reports/PHASE_1_STATUS_REPORT.md","docs/reports/PRISMA_GAP_ANALYSIS.md","docs/reports/PROJECT_ANALYSIS_REPORT.md","docs/reports/PROJECT_COMPREHENSIVE_ANALYSIS_2026-01-24.md","docs/reports/REALITY_CHECK_20251222.md","docs/reports/ROUTER_WHITE_SCREEN_FINAL_FIX.md","docs/reports/SECURITY_AUDIT_REPORT_2026-01-24.md","docs/reports/TASK_COMPLETION_SUMMARY.md","docs/reports/TEST-CLEANUP-FIX-REPORT.md","docs/reports/TEST-EXECUTION-REPORT.md","docs/reports/TEST-FIXES-SUMMARY.md","docs/reports/TEST-INFRASTRUCTURE-COMPLETE.md","docs/reports/TEST_REPORT.md","docs/reports/TODO-ANALYSIS-REPORT.md","docs/testing/TEST_IMPROVEMENT_PLAN.md","docs/zod-fix-final-report.md","docs/zod-fix-verification.md","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md","reports/全域收敛状态总览_2026-02-10.md"]},{"id":"eb3fcc5f8f454b79674c60ad457e4d5ecd3ee310","message":"Review recent docs and service edits\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/eb3fcc5f8f454b79674c60ad457e4d5ecd3ee310","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-11T00:16:16+08:00","added":[],"removed":[],"modified":["backend/src/modules/campaigns/campaign-effectiveness.service.ts","docs/ACQUISITION-DOMAIN-ANALYSIS.md","docs/ACQUISITION-INNOVATION-TRANSFORMATION-PLAN.md","docs/ACTION-PLAN-2026.md","docs/AI-AGENT-SYSTEM-ANALYSIS.md","docs/ALIGNMENT_REPORT.md","docs/API_REFACTORING_PLAN.md","docs/AUTO-FIX-REPORT.md","docs/BACKEND-QUALITY-AUDIT-REPORT.md","docs/BATCH_OPERATIONS_AUDIT.md","docs/BUSINESS-DOMAIN-ANALYSIS.md","docs/DATABASE_MIGRATION_GUIDE.md","docs/DEPLOYMENT_COMPLETE.md","docs/DUPLICATION_ANALYSIS_REPORT.md","docs/E2E-TEST-STRATEGY.md","docs/EVENT_STREAM_OPTIMIZATION_REPORT.md","docs/FRONTEND-BACKEND-GAP-ANALYSIS.md","docs/FRONTEND-UI-TEST-SPECIFICATION.md","docs/FRONTEND_ANALYSIS_20260102.md","docs/FRONTEND_ARCHITECTURE_ANALYSIS.md","docs/FULLSTACK-MATCHER-ANALYSIS.md","docs/IMPLEMENTATION-GAP-ANALYSIS.md","docs/IMPROVEMENT-PLAN.md","docs/IMPROVEMENTS_SUMMARY_20260102.md","docs/IMPROVEMENT_REPORT_2026-01-02.md","docs/KTV-LOCATION-SELECTION-PRD.md","docs/MARKETING-ARCHITECTURE-INNOVATION.md","docs/MENU-DESIGN-PROPOSAL.md","docs/MENU-STRUCTURE-COMPLETE.md","docs/MOBILE_CHAT_CRM_DEVELOPMENT_PLAN.md","docs/MODULE-STRUCTURE-ANALYSIS.md","docs/OMNICHANNEL-MARKETING-ARCHITECTURE.md","docs/P2-OPTIMIZATION-FINAL-REPORT.md","docs/PERFORMANCE_AUDIT_REPORT.md","docs/PHP-MIGRATION-ANALYSIS.md","docs/PLANNED-ROUTES.md","docs/PRD_巨嗨全域智库_v1.0.md","docs/PRODUCTION_CHECKLIST.md","docs/PROJECT_MODULE_OPTIMIZATION.md","docs/REFACTOR_COMPLETED.md","docs/ROADMAP_2026_Q1.md","docs/SALES-DOMAIN-ANALYSIS.md","docs/SECURITY-AUDIT-REPORT.md","docs/STABILITY-ANALYSIS-REPORT.md","docs/SWOT-ANALYSIS.md","docs/TEST-MATURITY-ASSESSMENT-REPORT.md","docs/TEST_COVERAGE_REPORT.md","docs/TEST_SPECIFICATION_REVIEW.md","docs/WEAKNESS-REMEDIATION-PLAN.md","docs/ZOD_VALIDATION_ENHANCEMENT_REPORT.md","docs/architecture/CAMPAIGNS-TENANT-ID-MIGRATION.md","docs/architecture/CONSISTENCY-CHECKER-COMPLETE.md","docs/architecture/P0-OUTBOX-IMPLEMENTATION-PLAN.md","docs/architecture/P0-OUTBOX-IMPLEMENTATION-REPORT.md","docs/architecture/P0-TABLE-PARTITIONING-PLAN.md","docs/architecture/P1-IMPLEMENTATION-PLAN.md","docs/architecture/PHASE_1_FIX_PLAN.md","docs/architecture/REFACTOR-MODULE-LIST-COMPLETE.md","docs/architecture/REFACTOR_IMPLEMENTATION_PLAN.md","docs/architecture/ROI-ANALYSIS-EMERGENCY-FIX.md","docs/architecture/ROI-ANALYSIS-FIX-UPDATED.md","docs/architecture/ROI-ANALYSIS-IMPLEMENTATION.md","docs/architecture/ROI-MENU-RENAME-COMPLETION.md","docs/architecture/ROI-MENU-RENAME-PLAN.md","docs/architecture/ROI-RENAME-SUMMARY.md","docs/architecture/ROUTE-LAYER-REFACTOR-REPORT.md","docs/architecture/SYSTEM-MANAGEMENT-ANALYSIS.md","docs/audits/comprehensive-scan-report-2026-01-08.md","docs/batch-refactor-plan.md","docs/batch-refactor-summary-phase1.md","docs/deployment-checklist.md","docs/guides/TESTING-SUMMARY.md","docs/guides/TODO-CLEANUP-PLAN.md","docs/guides/TODO-GITHUB-ISSUES.md","docs/guides/TYPESCRIPT-ERRORS-FIX-PLAN.md","docs/kafka-event-improvement-plan.md","docs/menus/MENU-ALIGNMENT-FINAL-REPORT.md","docs/menus/MENU-FIX-COMPLETION-REPORT.md","docs/menus/MENU-FIX-SUMMARY.md","docs/menus/MENU-MIGRATION-GUIDE.md","docs/menus/MENU-PERMISSIONS-ANALYSIS.md","docs/menus/MENU-PERMISSIONS-IMPLEMENTATION-GUIDE.md","docs/menus/MENU-PERMISSIONS-QUICK-REFERENCE.md","docs/menus/MENU-PERMISSIONS-SUMMARY.md","docs/menus/MENU-STRUCTURE-V2.2.md","docs/menus/MENU-STRUCTURE-VISUAL.md","docs/menus/MENU-UPDATE-V2.2-FINAL.md","docs/pinia-persistence-verification.md","docs/refactor-final-report.md","docs/refactor-plan-partner-customers.md","docs/refactor-progress.md","docs/refactor-session-summary-2026-01-06.md","docs/refactor-summary-partner-customers.md","docs/refactor-summary.md","docs/reports/AI_AGENT_IMPLEMENTATION_SUMMARY.md","docs/reports/CAMPAIGNS-MIGRATION-REPORT-20260110.md","docs/reports/CHANGELOG_ROUTER_FIX.md","docs/reports/CODE_AUDIT_REPORT.md","docs/reports/CODE_AUDIT_REPORT_2026-01-24.md","docs/reports/CODE_FIX_REPORT_2026-01-24.md","docs/reports/CONFIG_ANALYSIS_REPORT.md","docs/reports/DATABASE-INDEX-MIGRATION-REPORT.md","docs/reports/DATABASE-PARTITIONING-MERGE-SUMMARY.md","docs/reports/DEPENDENCY_AUDIT_REPORT.md","docs/reports/FRONTEND_AUDIT_REPORT.md","docs/reports/FULLSTACK-GAP-ANALYSIS.md","docs/reports/GAP_ANALYSIS_REPORT.md","docs/reports/IMMEDIATE-ACTION-SUMMARY.md","docs/reports/OPTIMIZATION-REPORT.md","docs/reports/P0-TASKS-COMPLETION-REPORT.md","docs/reports/P0-VERIFICATION-CHECKLIST.md","docs/reports/P1-SCHEMA-VALIDATION-REPORT.md","docs/reports/P1-SENTRY-INTEGRATION-REPORT.md","docs/reports/P2_OPTIMIZATION_REPORT.md","docs/reports/PERFORMANCE_ANALYSIS_REPORT.md","docs/reports/PERFORMANCE_OPTIMIZATION_REPORT.md","docs/reports/PHASE_0_COMPLETION_REPORT.md","docs/reports/PHASE_1_STATUS_REPORT.md","docs/reports/PRISMA_GAP_ANALYSIS.md","docs/reports/PROJECT_ANALYSIS_REPORT.md","docs/reports/PROJECT_COMPREHENSIVE_ANALYSIS_2026-01-24.md","docs/reports/REALITY_CHECK_20251222.md","docs/reports/ROUTER_WHITE_SCREEN_FINAL_FIX.md","docs/reports/SECURITY_AUDIT_REPORT_2026-01-24.md","docs/reports/TASK_COMPLETION_SUMMARY.md","docs/reports/TEST-CLEANUP-FIX-REPORT.md","docs/reports/TEST-EXECUTION-REPORT.md","docs/reports/TEST-FIXES-SUMMARY.md","docs/reports/TEST-INFRASTRUCTURE-COMPLETE.md","docs/reports/TEST_REPORT.md","docs/reports/TODO-ANALYSIS-REPORT.md","docs/testing/TEST_IMPROVEMENT_PLAN.md","docs/zod-fix-final-report.md","docs/zod-fix-verification.md","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md","reports/全域收敛状态总览_2026-02-10.md"]},{"id":"2d6cf596bcfe9ab7bfa9a6d26a1d0572fef6cc8c","message":"Summarize backend doc updates\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/2d6cf596bcfe9ab7bfa9a6d26a1d0572fef6cc8c","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-11T00:12:40+08:00","added":[],"removed":[],"modified":["backend/src/modules/ai-agents/services/task-heartbeat.service.ts","backend/src/modules/campaigns/campaign.service.ts","backend/src/modules/community-fission/community-fission.service.ts","backend/src/modules/crm-activities/crm-activity.service.ts","backend/src/modules/im/im.service.ts","backend/src/modules/inventory/services/inventory-export.service.ts","backend/src/modules/knowledge-capture/knowledge-ai.service.ts","backend/src/modules/livestream/livestream.service.ts","backend/src/modules/marketing-automation/workflow-action.service.ts","backend/src/modules/marketing-automation/workflow.service.ts","backend/src/modules/marketing-chatbot/marketing-chatbot.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/pm/pm.service.ts","backend/src/modules/products/services/sku.service.ts","backend/src/modules/renewals/renewal.service.ts","backend/src/modules/rma/rma.compat.routes.ts","backend/src/modules/rma/rma.service.ts","backend/src/modules/sms-marketing/sms-marketing.service.ts","backend/src/modules/stage-knowledge/stage-knowledge.service.ts","docs/ACQUISITION-DOMAIN-ANALYSIS.md","docs/ACQUISITION-INNOVATION-TRANSFORMATION-PLAN.md","docs/ACTION-PLAN-2026.md","docs/AI-AGENT-SYSTEM-ANALYSIS.md","docs/ALIGNMENT_REPORT.md","docs/API_REFACTORING_PLAN.md","docs/AUTO-FIX-REPORT.md","docs/BACKEND-QUALITY-AUDIT-REPORT.md","docs/BATCH_OPERATIONS_AUDIT.md","docs/BUSINESS-DOMAIN-ANALYSIS.md","docs/DATABASE_MIGRATION_GUIDE.md","docs/DEPLOYMENT_COMPLETE.md","docs/DUPLICATION_ANALYSIS_REPORT.md","docs/E2E-TEST-STRATEGY.md","docs/EVENT_STREAM_OPTIMIZATION_REPORT.md","docs/FRONTEND-BACKEND-GAP-ANALYSIS.md","docs/FRONTEND-UI-TEST-SPECIFICATION.md","docs/FRONTEND_ANALYSIS_20260102.md","docs/FRONTEND_ARCHITECTURE_ANALYSIS.md","docs/FULLSTACK-MATCHER-ANALYSIS.md","docs/IMPLEMENTATION-GAP-ANALYSIS.md","docs/IMPROVEMENT-PLAN.md","docs/IMPROVEMENTS_SUMMARY_20260102.md","docs/IMPROVEMENT_REPORT_2026-01-02.md","docs/KTV-LOCATION-SELECTION-PRD.md","docs/MARKETING-ARCHITECTURE-INNOVATION.md","docs/MENU-DESIGN-PROPOSAL.md","docs/MENU-STRUCTURE-COMPLETE.md","docs/MOBILE_CHAT_CRM_DEVELOPMENT_PLAN.md","docs/MODULE-STRUCTURE-ANALYSIS.md","docs/OMNICHANNEL-MARKETING-ARCHITECTURE.md","docs/P2-OPTIMIZATION-FINAL-REPORT.md","docs/PERFORMANCE_AUDIT_REPORT.md","docs/PHP-MIGRATION-ANALYSIS.md","docs/PLANNED-ROUTES.md","docs/PRD_巨嗨全域智库_v1.0.md","docs/PRODUCTION_CHECKLIST.md","docs/PROJECT_MODULE_OPTIMIZATION.md","docs/REFACTOR_COMPLETED.md","docs/ROADMAP_2026_Q1.md","docs/SALES-DOMAIN-ANALYSIS.md","docs/SECURITY-AUDIT-REPORT.md","docs/STABILITY-ANALYSIS-REPORT.md","docs/SWOT-ANALYSIS.md","docs/TEST-MATURITY-ASSESSMENT-REPORT.md","docs/TEST_COVERAGE_REPORT.md","docs/TEST_SPECIFICATION_REVIEW.md","docs/WEAKNESS-REMEDIATION-PLAN.md","docs/ZOD_VALIDATION_ENHANCEMENT_REPORT.md","docs/architecture/CAMPAIGNS-TENANT-ID-MIGRATION.md","docs/architecture/CONSISTENCY-CHECKER-COMPLETE.md","docs/architecture/P0-OUTBOX-IMPLEMENTATION-PLAN.md","docs/architecture/P0-OUTBOX-IMPLEMENTATION-REPORT.md","docs/architecture/P0-TABLE-PARTITIONING-PLAN.md","docs/architecture/P1-IMPLEMENTATION-PLAN.md","docs/architecture/PHASE_1_FIX_PLAN.md","docs/architecture/REFACTOR-MODULE-LIST-COMPLETE.md","docs/architecture/REFACTOR_IMPLEMENTATION_PLAN.md","docs/architecture/ROI-ANALYSIS-EMERGENCY-FIX.md","docs/architecture/ROI-ANALYSIS-FIX-UPDATED.md","docs/architecture/ROI-ANALYSIS-IMPLEMENTATION.md","docs/architecture/ROI-MENU-RENAME-COMPLETION.md","docs/architecture/ROI-MENU-RENAME-PLAN.md","docs/architecture/ROI-RENAME-SUMMARY.md","docs/architecture/ROUTE-LAYER-REFACTOR-REPORT.md","docs/architecture/SYSTEM-MANAGEMENT-ANALYSIS.md","docs/audits/comprehensive-scan-report-2026-01-08.md","docs/batch-refactor-plan.md","docs/batch-refactor-summary-phase1.md","docs/deployment-checklist.md","docs/guides/TESTING-SUMMARY.md","docs/guides/TODO-CLEANUP-PLAN.md","docs/guides/TODO-GITHUB-ISSUES.md","docs/guides/TYPESCRIPT-ERRORS-FIX-PLAN.md","docs/kafka-event-improvement-plan.md","docs/menus/MENU-ALIGNMENT-FINAL-REPORT.md","docs/menus/MENU-FIX-COMPLETION-REPORT.md","docs/menus/MENU-FIX-SUMMARY.md","docs/menus/MENU-MIGRATION-GUIDE.md","docs/menus/MENU-PERMISSIONS-ANALYSIS.md","docs/menus/MENU-PERMISSIONS-IMPLEMENTATION-GUIDE.md","docs/menus/MENU-PERMISSIONS-QUICK-REFERENCE.md","docs/menus/MENU-PERMISSIONS-SUMMARY.md","docs/menus/MENU-STRUCTURE-V2.2.md","docs/menus/MENU-STRUCTURE-VISUAL.md","docs/menus/MENU-UPDATE-V2.2-FINAL.md","docs/pinia-persistence-verification.md","docs/refactor-final-report.md","docs/refactor-plan-partner-customers.md","docs/refactor-progress.md","docs/refactor-session-summary-2026-01-06.md","docs/refactor-summary-partner-customers.md","docs/refactor-summary.md","docs/reports/AI_AGENT_IMPLEMENTATION_SUMMARY.md","docs/reports/CAMPAIGNS-MIGRATION-REPORT-20260110.md","docs/reports/CHANGELOG_ROUTER_FIX.md","docs/reports/CODE_AUDIT_REPORT.md","docs/reports/CODE_AUDIT_REPORT_2026-01-24.md","docs/reports/CODE_FIX_REPORT_2026-01-24.md","docs/reports/CONFIG_ANALYSIS_REPORT.md","docs/reports/DATABASE-INDEX-MIGRATION-REPORT.md","docs/reports/DATABASE-PARTITIONING-MERGE-SUMMARY.md","docs/reports/DEPENDENCY_AUDIT_REPORT.md","docs/reports/FRONTEND_AUDIT_REPORT.md","docs/reports/FULLSTACK-GAP-ANALYSIS.md","docs/reports/GAP_ANALYSIS_REPORT.md","docs/reports/IMMEDIATE-ACTION-SUMMARY.md","docs/reports/OPTIMIZATION-REPORT.md","docs/reports/P0-TASKS-COMPLETION-REPORT.md","docs/reports/P0-VERIFICATION-CHECKLIST.md","docs/reports/P1-SCHEMA-VALIDATION-REPORT.md","docs/reports/P1-SENTRY-INTEGRATION-REPORT.md","docs/reports/P2_OPTIMIZATION_REPORT.md","docs/reports/PERFORMANCE_ANALYSIS_REPORT.md","docs/reports/PERFORMANCE_OPTIMIZATION_REPORT.md","docs/reports/PHASE_0_COMPLETION_REPORT.md","docs/reports/PHASE_1_STATUS_REPORT.md","docs/reports/PRISMA_GAP_ANALYSIS.md","docs/reports/PROJECT_ANALYSIS_REPORT.md","docs/reports/PROJECT_COMPREHENSIVE_ANALYSIS_2026-01-24.md","docs/reports/REALITY_CHECK_20251222.md","docs/reports/ROUTER_WHITE_SCREEN_FINAL_FIX.md","docs/reports/SECURITY_AUDIT_REPORT_2026-01-24.md","docs/reports/TASK_COMPLETION_SUMMARY.md","docs/reports/TEST-CLEANUP-FIX-REPORT.md","docs/reports/TEST-EXECUTION-REPORT.md","docs/reports/TEST-FIXES-SUMMARY.md","docs/reports/TEST-INFRASTRUCTURE-COMPLETE.md","docs/reports/TEST_REPORT.md","docs/reports/TODO-ANALYSIS-REPORT.md","docs/testing/TEST_IMPROVEMENT_PLAN.md","docs/zod-fix-final-report.md","docs/zod-fix-verification.md","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md","reports/全域收敛状态总览_2026-02-10.md"]}],"total_commits":0,"head_commit":{"id":"7145a8553a880d8a94356baf7bcb4e2df4631e61","message":"Update predictive and RFM modules\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/7145a8553a880d8a94356baf7bcb4e2df4631e61","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-11T01:01:39+08:00","added":[],"removed":[],"modified":["backend/src/modules/predictive-analytics/predictive-analytics.compat.routes.ts","backend/src/modules/predictive-analytics/predictive-analytics.controller.ts","backend/src/modules/predictive-analytics/predictive-analytics.docs.ts","backend/src/modules/predictive-analytics/predictive-analytics.schema.ts","backend/src/modules/predictive-analytics/predictive-analytics.service.ts","backend/src/modules/rfm-analysis/rfm-analysis.compat.routes.ts","backend/src/modules/rfm-analysis/rfm-analysis.controller.ts","backend/src/modules/rfm-analysis/rfm-analysis.docs.ts","backend/src/modules/rfm-analysis/rfm-analysis.schema.ts","backend/src/modules/rfm-analysis/rfm-analysis.service.ts"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":true,"fork":false,"template":false,"parent":null,"mirror":false,"size":31473,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-02-24T00:01:59+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
|
1771862766
|
1771862767
|
0
|
1771862710
|
1771862767
|
NULL
|
|
0
|
Edit
Delete
|
|
45
|
feat: 新增门店管理模块,补充门店维度营销分析端点
|
6
|
5
|
health-check.yml
|
6
|
-2
|
3
|
refs/heads/main
|
89209aba1afe21133399ce0db0a47c2729c9a4b4
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"abd8cdd0283c96dc4a62fbf753d2aca2e68aa379","after":"89209aba1afe21133399ce0db0a47c2729c9a4b4","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/abd8cdd0283c96dc4a62fbf753d2aca2e68aa379...89209aba1afe21133399ce0db0a47c2729c9a4b4","commits":[{"id":"89209aba1afe21133399ce0db0a47c2729c9a4b4","message":"feat: 新增门店管理模块,补充门店维度营销分析端点\n\n一、门店管理模块 (stores)\n- 门店 CRUD:创建、更新、删除、状态管理\n- 门店类型:旗舰店、标准店、加盟店、合作店、迷你店、快闪店\n- 状态机:pending → active → suspended/renovating → closed\n\n二、门店维度营销分析端点\n- GET /stores/:id/marketing-analytics - 门店营销分析(活动、直播、团购、订单汇总)\n- GET /stores/:id/roi-analytics - 门店 ROI 分析(投入产出比、渠道分解、同比环比)\n- GET /stores/:id/livestream-stats - 门店直播统计(场次、时长、观众、GMV)\n- GET /stores/:id/campaigns - 门店活动列表\n\n三、门店对比和排行\n- POST /stores/compare - 多门店横向对比\n- GET /stores/ranking - 门店排行榜(营收、订单、评分、直播GMV)\n\n四、门店营销配置\n- PATCH /stores/:id/marketing-config - 团购/直播/促销开关、平台配置、预算设置\n\n五、前端 API 模块\n- stores.ts:完整类型定义 + API 封装 + 状态配置 + 工具函数\n\n严格遵循8条开发红线\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89209aba1afe21133399ce0db0a47c2729c9a4b4","author":{"name":"Claude","email":"noreply@anthropic.com","username":""},"committer":{"name":"Claude","email":"noreply@anthropic.com","username":""},"verification":null,"timestamp":"2026-01-11T07:36:12Z","added":["backend/src/modules/stores/index.ts","backend/src/modules/stores/store.controller.ts","backend/src/modules/stores/store.routes.ts","backend/src/modules/stores/store.schema.ts","backend/src/modules/stores/store.service.ts","frontend/src/api/modules/stores.ts"],"removed":[],"modified":["backend/src/shared/constants/modules.ts"]},{"id":"bd02a7f3eefc8d114499177151ddde0a410c4065","message":"feat: 完善 KTV 智慧营销域模块代码实现 - 19个后端模块 + 19个前端API模块\n\n一、分析类模块 (3个)\n- social-analytics: 社交媒体分析(账号概览、内容表现、粉丝画像、竞品对比、趋势分析)\n- content-analytics: 内容分析(表现概览、热门内容、分类表现、发布时间分析)\n- livestream-gifts: 直播礼物(礼物配置、赠送记录、礼物统计、排行榜)\n\n二、商家联盟域模块 (5个)\n- alliance-partners: 联盟商家(入驻审核、等级管理、状态机驱动)\n- alliance-agreements: 联盟协议(协议模板、审批流、续签终止)\n- alliance-campaigns: 联盟活动(多商家参与、效果追踪、奖励配置)\n- alliance-coupons: 联盟优惠券(发放核销、成本分摊、使用规则)\n- alliance-packages: 联盟套餐(多商家组合、分成模式、有效期管理)\n\n三、社群运营域模块 (4个)\n- community-materials: 社群素材(素材库、审核流程、使用追踪)\n- community-tasks: 社群任务(任务配置、执行管理、状态机驱动)\n- community-fission: 社群裂变(邀请奖励、拼团助力、排行榜)\n- community-bots: 社群机器人(多平台支持、自动回复、消息日志)\n\n四、团购运营域模块 (7个)\n- groupbuy-platforms: 团购平台(平台接入、同步配置、对账管理)\n- groupbuy-promotions: 团购促销(促销配置、状态管理、批量操作)\n- groupbuy-inventory: 团购库存(库存管理、预警机制、调拨盘点)\n- groupbuy-redemptions: 团购核销(券码验证、核销记录、统计分析)\n- groupbuy-reviews: 团购评价(评价管理、商家回复、审核分析)\n- groupbuy-commissions: 团购佣金(佣金规则、结算审批、对账报表)\n- groupbuy-influencers: 团购达人(招募审核、等级体系、带货数据)\n\n技术规范:\n- 后端:5层标准结构(schema/service/controller/routes/index)\n- 前端:完整 TypeScript 类型定义 + API 封装\n- 严格遵循8条开发红线(多租户隔离、状态机、事件驱动等)\n\n文件统计:\n- 后端模块:19个目录,95个文件\n- 前端API:19个TypeScript模块,总计约10,000+行代码\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/bd02a7f3eefc8d114499177151ddde0a410c4065","author":{"name":"Claude","email":"noreply@anthropic.com","username":""},"committer":{"name":"Claude","email":"noreply@anthropic.com","username":""},"verification":null,"timestamp":"2026-01-11T07:21:51Z","added":["backend/src/modules/alliance-agreements/alliance-agreement.controller.ts","backend/src/modules/alliance-agreements/alliance-agreement.routes.ts","backend/src/modules/alliance-agreements/alliance-agreement.schema.ts","backend/src/modules/alliance-agreements/alliance-agreement.service.ts","backend/src/modules/alliance-agreements/index.ts","backend/src/modules/alliance-campaigns/alliance-campaign.controller.ts","backend/src/modules/alliance-campaigns/alliance-campaign.routes.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.service.ts","backend/src/modules/alliance-campaigns/index.ts","backend/src/modules/alliance-coupons/alliance-coupon.controller.ts","backend/src/modules/alliance-coupons/alliance-coupon.routes.ts","backend/src/modules/alliance-coupons/alliance-coupon.schema.ts","backend/src/modules/alliance-coupons/alliance-coupon.service.ts","backend/src/modules/alliance-coupons/index.ts","backend/src/modules/alliance-packages/alliance-package.controller.ts","backend/src/modules/alliance-packages/alliance-package.routes.ts","backend/src/modules/alliance-packages/alliance-package.schema.ts","backend/src/modules/alliance-packages/alliance-package.service.ts","backend/src/modules/alliance-packages/index.ts","backend/src/modules/alliance-partners/alliance-partner.controller.ts","backend/src/modules/alliance-partners/alliance-partner.routes.ts","backend/src/modules/alliance-partners/alliance-partner.schema.ts","backend/src/modules/alliance-partners/alliance-partner.service.ts","backend/src/modules/alliance-partners/index.ts","backend/src/modules/community-bots/community-bot.controller.ts","backend/src/modules/community-bots/community-bot.routes.ts","backend/src/modules/community-bots/community-bot.schema.ts","backend/src/modules/community-bots/community-bot.service.ts","backend/src/modules/community-bots/index.ts","backend/src/modules/community-fission/community-fission.controller.ts","backend/src/modules/community-fission/community-fission.routes.ts","backend/src/modules/community-fission/community-fission.schema.ts","backend/src/modules/community-fission/community-fission.service.ts","backend/src/modules/community-fission/index.ts","backend/src/modules/community-materials/community-material.controller.ts","backend/src/modules/community-materials/community-material.routes.ts","backend/src/modules/community-materials/community-material.schema.ts","backend/src/modules/community-materials/community-material.service.ts","backend/src/modules/community-materials/index.ts","backend/src/modules/community-tasks/community-task.controller.ts","backend/src/modules/community-tasks/community-task.routes.ts","backend/src/modules/community-tasks/community-task.schema.ts","backend/src/modules/community-tasks/community-task.service.ts","backend/src/modules/community-tasks/index.ts","backend/src/modules/content-analytics/content-analytics.controller.ts","backend/src/modules/content-analytics/content-analytics.routes.ts","backend/src/modules/content-analytics/content-analytics.schema.ts","backend/src/modules/content-analytics/content-analytics.service.ts","backend/src/modules/content-analytics/index.ts","backend/src/modules/groupbuy-commissions/groupbuy-commission.controller.ts","backend/src/modules/groupbuy-commissions/groupbuy-commission.routes.ts","backend/src/modules/groupbuy-commissions/groupbuy-commission.schema.ts","backend/src/modules/groupbuy-commissions/groupbuy-commission.service.ts","backend/src/modules/groupbuy-commissions/index.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.controller.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.routes.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.schema.ts","backend/src/modules/groupbuy-influencers/groupbuy-influencer.service.ts","backend/src/modules/groupbuy-influencers/index.ts","backend/src/modules/groupbuy-inventory/groupbuy-inventory.controller.ts","backend/src/modules/groupbuy-inventory/groupbuy-inventory.routes.ts","backend/src/modules/groupbuy-inventory/groupbuy-inventory.schema.ts","backend/src/modules/groupbuy-inventory/groupbuy-inventory.service.ts","backend/src/modules/groupbuy-inventory/index.ts","backend/src/modules/groupbuy-platforms/groupbuy-platform.controller.ts","backend/src/modules/groupbuy-platforms/groupbuy-platform.routes.ts","backend/src/modules/groupbuy-platforms/groupbuy-platform.schema.ts","backend/src/modules/groupbuy-platforms/groupbuy-platform.service.ts","backend/src/modules/groupbuy-platforms/index.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.controller.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.routes.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.schema.ts","backend/src/modules/groupbuy-promotions/groupbuy-promotion.service.ts","backend/src/modules/groupbuy-promotions/index.ts","backend/src/modules/groupbuy-redemptions/groupbuy-redemption.controller.ts","backend/src/modules/groupbuy-redemptions/groupbuy-redemption.routes.ts","backend/src/modules/groupbuy-redemptions/groupbuy-redemption.schema.ts","backend/src/modules/groupbuy-redemptions/groupbuy-redemption.service.ts","backend/src/modules/groupbuy-redemptions/index.ts","backend/src/modules/groupbuy-reviews/groupbuy-review.controller.ts","backend/src/modules/groupbuy-reviews/groupbuy-review.routes.ts","backend/src/modules/groupbuy-reviews/groupbuy-review.schema.ts","backend/src/modules/groupbuy-reviews/groupbuy-review.service.ts","backend/src/modules/groupbuy-reviews/index.ts","backend/src/modules/livestream-gifts/index.ts","backend/src/modules/livestream-gifts/livestream-gifts.controller.ts","backend/src/modules/livestream-gifts/livestream-gifts.routes.ts","backend/src/modules/livestream-gifts/livestream-gifts.schema.ts","backend/src/modules/livestream-gifts/livestream-gifts.service.ts","backend/src/modules/social-analytics/index.ts","backend/src/modules/social-analytics/social-analytics.controller.ts","backend/src/modules/social-analytics/social-analytics.routes.ts","backend/src/modules/social-analytics/social-analytics.schema.ts","backend/src/modules/social-analytics/social-analytics.service.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-campaigns.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/community-bots.ts","frontend/src/api/modules/community-fission.ts","frontend/src/api/modules/community-materials.ts","frontend/src/api/modules/community-tasks.ts","frontend/src/api/modules/content-analytics.ts","frontend/src/api/modules/groupbuy-commissions.ts","frontend/src/api/modules/groupbuy-influencers.ts","frontend/src/api/modules/groupbuy-inventory.ts","frontend/src/api/modules/groupbuy-platforms.ts","frontend/src/api/modules/groupbuy-promotions.ts","frontend/src/api/modules/groupbuy-redemptions.ts","frontend/src/api/modules/groupbuy-reviews.ts","frontend/src/api/modules/livestream-gifts.ts","frontend/src/api/modules/social-analytics.ts"],"removed":[],"modified":[]},{"id":"5c0e2a9ccc614bb1dac8ed3875f4eeddb1bed80d","message":"feat: 完善 modules.ts 模块元数据定义,覆盖全部142个已部署模块\n\n主要变更:\n1. 新增 ModuleCategory 类型:\n - hr (人力资源域)\n - marketing-customer (营销客户维度)\n - ktv-content, ktv-social, ktv-geo, ktv-adflow, ktv-livestream, ktv-alliance, ktv-community, ktv-groupbuy (KTV智慧营销域)\n\n2. 补充缺失的模块定义:\n - 营销客户维度:campaign-targets, segments, customer-marketing\n - 系统核心模块:auth, scheduled-jobs, event-logs, event-subscriptions, realtime, ai-copilot\n - 服务域:service, service-monitor\n - 履约域:maintenance, workflow-generator\n - 财务域:customer-profit\n - HR域:hr\n\n3. 新增KTV智慧营销域模块(未来规划):\n - 内容管理、社交媒体、GEO优化、投流管理、直播运营、商家联盟、社群运营、团购运营等34个模块\n\n4. 清理重复模块定义:\n - 删除 users, roles, departments, notifications, files, events, approvals, analytics, dashboard, reports, im 的重复定义\n\n模块统计:\n- 已部署模块:142个(全部覆盖)\n- 总定义模块:176个(含34个未来规划模块)\n\n严格遵循8条开发红线\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/5c0e2a9ccc614bb1dac8ed3875f4eeddb1bed80d","author":{"name":"Claude","email":"noreply@anthropic.com","username":""},"committer":{"name":"Claude","email":"noreply@anthropic.com","username":""},"verification":null,"timestamp":"2026-01-11T06:14:38Z","added":[],"removed":[],"modified":["backend/src/shared/constants/modules.ts"]},{"id":"b7ed9e35d5ce2b9182dd507c95aa9c675335c3b3","message":"feat: 营销模块客户/门店维度增强 - 活动定向、客户分群、营销分析\n\n核心功能:\n- 新增4个数据库表:campaign_targets、audience_segments、segment_members、campaign_performance\n- 新增3个后端模块:campaign-targets(活动定向)、segments(客户分群)、customer-marketing(营销分析)\n- 新增3个前端API模块,包含完整类型定义和工具函数\n- 新增18个权限配置,归入营销客户维度分组\n\n技术亮点:\n- 分群状态机:draft → active → paused → archived\n- 营销衍生指标:CTR、CVR、ROI、CPA、ROAS 自动计算\n- 多维度分析:客户、门店、活动、分群四个维度\n- 严格遵循8条开发红线\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/b7ed9e35d5ce2b9182dd507c95aa9c675335c3b3","author":{"name":"Claude","email":"noreply@anthropic.com","username":""},"committer":{"name":"Claude","email":"noreply@anthropic.com","username":""},"verification":null,"timestamp":"2026-01-11T06:00:53Z","added":["backend/src/modules/campaign-targets/index.ts","backend/src/modules/customer-marketing/index.ts","backend/src/modules/segments/index.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/customer-marketing.ts","frontend/src/api/modules/segments.ts"],"removed":[],"modified":["backend/prisma/schema.prisma","backend/src/main.ts","backend/src/shared/constants/permissions.ts"]},{"id":"fb6039939f7601cf35179127a6b8205e787342aa","message":"feat: 完善社交账号、广告人群、广告报表等6个核心模块,严格遵循8条开发红线\n\n完善模块:\n- social-accounts: 8平台账号授权、数据同步、指标追踪、健康度评估\n- social-interactions: 6种互动类型、4种状态、情感分析、自动回复\n- livestream-analytics: 10+分析维度、房间/商品/主播/话术效果分析\n- livestream-scripts: 7种话术类型、6种场景、AI生成优化、结构化模板\n- ad-audiences: 6种人群类型、6种数据源、相似人群、规则验证\n- ad-reports: 8种报表API、10种指标计算、预算预警、效果建议\n\n特性:\n- 状态机驱动:所有状态变更通过POST动作接口\n- 类型安全:禁用any,完整类型定义与后端严格匹配\n- 四层架构:智库层/数链层/SOP层/IM层交互文档\n- 工具函数:格式化、验证、健康度计算、图表数据生成\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/fb6039939f7601cf35179127a6b8205e787342aa","author":{"name":"Claude","email":"noreply@anthropic.com","username":""},"committer":{"name":"Claude","email":"noreply@anthropic.com","username":""},"verification":null,"timestamp":"2026-01-11T05:02:28Z","added":[],"removed":[],"modified":["frontend/src/api/modules/ad-audiences.ts","frontend/src/api/modules/ad-reports.ts","frontend/src/api/modules/livestream-analytics.ts","frontend/src/api/modules/livestream-scripts.ts","frontend/src/api/modules/social-accounts.ts","frontend/src/api/modules/social-interactions.ts"]}],"total_commits":0,"head_commit":{"id":"89209aba1afe21133399ce0db0a47c2729c9a4b4","message":"feat: 新增门店管理模块,补充门店维度营销分析端点\n\n一、门店管理模块 (stores)\n- 门店 CRUD:创建、更新、删除、状态管理\n- 门店类型:旗舰店、标准店、加盟店、合作店、迷你店、快闪店\n- 状态机:pending → active → suspended/renovating → closed\n\n二、门店维度营销分析端点\n- GET /stores/:id/marketing-analytics - 门店营销分析(活动、直播、团购、订单汇总)\n- GET /stores/:id/roi-analytics - 门店 ROI 分析(投入产出比、渠道分解、同比环比)\n- GET /stores/:id/livestream-stats - 门店直播统计(场次、时长、观众、GMV)\n- GET /stores/:id/campaigns - 门店活动列表\n\n三、门店对比和排行\n- POST /stores/compare - 多门店横向对比\n- GET /stores/ranking - 门店排行榜(营收、订单、评分、直播GMV)\n\n四、门店营销配置\n- PATCH /stores/:id/marketing-config - 团购/直播/促销开关、平台配置、预算设置\n\n五、前端 API 模块\n- stores.ts:完整类型定义 + API 封装 + 状态配置 + 工具函数\n\n严格遵循8条开发红线\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/89209aba1afe21133399ce0db0a47c2729c9a4b4","author":{"name":"Claude","email":"noreply@anthropic.com","username":""},"committer":{"name":"Claude","email":"noreply@anthropic.com","username":""},"verification":null,"timestamp":"2026-01-11T07:36:12Z","added":["backend/src/modules/stores/index.ts","backend/src/modules/stores/store.controller.ts","backend/src/modules/stores/store.routes.ts","backend/src/modules/stores/store.schema.ts","backend/src/modules/stores/store.service.ts","frontend/src/api/modules/stores.ts"],"removed":[],"modified":["backend/src/shared/constants/modules.ts"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatars/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":true,"fork":false,"template":false,"parent":null,"mirror":false,"size":9503,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-02-23T23:59:28+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
|
1771862496
|
1771862496
|
0
|
1771862410
|
1771862496
|
NULL
|
|
0
|
Edit
Delete
|
|
1140
|
fix(ime-core): 修复TFLiteRecognizerTest验证方式,改为验证可观察行 fix(ime-core): 修复TFLiteRecognizerTest验证方式,改为验证可观察行为...
|
9
|
5
|
frontend-backend-ci.yml
|
6
|
5
|
0
|
refs/heads/main
|
22125e0f1e435efabf81ec0007a1b56996cb0776
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"893022bfd17ce1f2e75e75651551cf8ceaacfe45","after":"22125e0f1e435efabf81ec0007a1b56996cb0776","compare_url":"https://gitea.g-hi.com/luoanwu/haizhan-ime-android/compare/893022bfd17ce1f2e75e75651551cf8ceaacfe45...22125e0f1e435efabf81ec0007a1b56996cb0776","commits":[{"id":"22125e0f1e435efabf81ec0007a1b56996cb0776","message":"fix(ime-core): 修复TFLiteRecognizerTest验证方式,改为验证可观察行为\n","url":"https://gitea.g-hi.com/luoanwu/haizhan-ime-android/commit/22125e0f1e435efabf81ec0007a1b56996cb0776","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-27T14:49:40+08:00","added":[],"removed":["ios_keyboard/.build/index-build/arm64-apple-macosx/debug/index/db/v13/p95794--38ca5d/data.mdb","ios_keyboard/.build/index-build/arm64-apple-macosx/debug/index/db/v13/p95794--38ca5d/lock.mdb"],"modified":["ai-panel/src/main/java/com/haizhan/ime/panel/ui/components/PanelCommon.kt","ai-panel/src/test/java/com/haizhan/ime/panel/contact/ContactMatcherTest.kt","app/src/main/java/com/haizhan/ime/ui/management/ManagementViewModel.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/HandwritingManager.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/StrokeSegmenter.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/UnifiedRecognitionEngine.kt","ime-core/src/test/java/com/haizhan/ime/core/handwriting/TFLiteRecognizerTest.kt","pnpm-lock.yaml","server/api-gateway/package.json","server/api-gateway/src/app.module.ts","server/api-gateway/src/main.ts","server/api-gateway/src/modules/ai/ai.module.ts","server/api-gateway/src/modules/ai/ai.service.ts","server/api-gateway/src/modules/knowledge/knowledge.service.ts","server/api-gateway/src/modules/ocr/ocr.module.ts","server/api-gateway/src/modules/ocr/ocr.service.ts","server/api-gateway/src/modules/settings/settings.module.ts","server/api-gateway/src/modules/settings/settings.service.ts"]},{"id":"e7926bf94bb1d2df1c56170dbe47940b49a70134","message":"fix(ime-core): 修复HandwritingManager测试缺少ModelDownloader参数\n","url":"https://gitea.g-hi.com/luoanwu/haizhan-ime-android/commit/e7926bf94bb1d2df1c56170dbe47940b49a70134","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-27T14:40:23+08:00","added":[".github/workflows/ios-ci.yml",".npmrc","MIGRATION_COMPLETE_REPORT.md","admin-web/.eslintrc.cjs","docs/PNPM_MIGRATION_NOTICE.md","flutter_app/assets/fonts/PingFang-Medium.ttf","flutter_app/assets/fonts/PingFang-Regular.ttf","flutter_app/assets/fonts/PingFang-Semibold.ttf","flutter_app/assets/icons/.gitkeep","flutter_app/assets/images/.gitkeep","flutter_app/lib/features/contacts/data/contact_360_provider.dart","ime-core/src/main/java/com/haizhan/ime/core/handwriting/ModelDownloader.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/StrokeSegmenter.kt","package.json","pnpm-lock.yaml","pnpm-workspace.yaml","scripts/PACKAGE_MANAGER.md","scripts/PACKAGE_MANAGER_SUMMARY.md","scripts/migrate-to-pnpm.sh","scripts/package-manager-migration.md","server/api-gateway/src/modules/ai/ai.controller.ts","server/api-gateway/src/modules/ai/ai.module.ts","server/api-gateway/src/modules/ai/ai.service.ts","server/api-gateway/src/modules/ocr/ocr.controller.ts","server/api-gateway/src/modules/ocr/ocr.module.ts","server/api-gateway/src/modules/ocr/ocr.service.ts"],"removed":["server/ai-service/package-lock.json","server/api-gateway/package-lock.json","server/ocr-service/package-lock.json"],"modified":[".github/workflows/frontend-backend-ci.yml",".gitignore","CHANGELOG.md","CLAUDE.md","README.md","admin-web/package.json","admin-web/src/views/knowledge/index.vue","ai-panel/src/main/java/com/haizhan/ime/panel/agentic/HybridSearchExecutor.kt","ai-panel/src/main/java/com/haizhan/ime/panel/contact/ContactMatcher.kt","ai-panel/src/main/java/com/haizhan/ime/panel/contact/EnhancedContactMatcher.kt","ai-panel/src/main/java/com/haizhan/ime/panel/context/InputContextCollector.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ocr/TitleBarParser.kt","ai-panel/src/main/java/com/haizhan/ime/panel/reply/RagReplyGenerator.kt","ai-panel/src/main/java/com/haizhan/ime/panel/reply/ReplyGenerator.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/components/PanelCommon.kt","ai-panel/src/test/java/com/haizhan/ime/panel/contact/ContactMatcherTest.kt","app/build.gradle.kts","app/proguard-rules.pro","app/src/main/java/com/haizhan/ime/ui/management/ManagementViewModel.kt","app/src/main/java/com/haizhan/ime/ui/management/SettingsScreen.kt","build.gradle.kts","common/src/main/java/com/haizhan/ime/common/theme/DesignTokens.kt","data/src/main/java/com/haizhan/ime/data/auth/AuthInterceptor.kt","data/src/main/java/com/haizhan/ime/data/auth/AuthManager.kt","data/src/main/java/com/haizhan/ime/data/di/NetworkModule.kt","data/src/main/java/com/haizhan/ime/data/repository/SettingsRepository.kt","docs/CI_CD_PIPELINE.md","docs/CODING_STANDARDS.md","docs/DEPLOYMENT.md","docs/DEVELOPMENT_GUIDE.md","docs/TESTING_STRATEGY.md","flutter_app/.dart_tool/package_config.json","flutter_app/.dart_tool/package_graph.json","flutter_app/lib/core/bridge/haizhan_bridge.dart","flutter_app/lib/core/di/service_locator.dart","flutter_app/lib/core/theme/app_colors.dart","flutter_app/lib/core/theme/app_theme.dart","flutter_app/lib/features/auth/presentation/login_screen.dart","flutter_app/lib/features/chat/presentation/chat_screen.dart","flutter_app/lib/features/chat/presentation/conversation_screen.dart","flutter_app/lib/features/contacts/data/contacts_provider.dart","flutter_app/lib/features/contacts/presentation/contact_detail_screen.dart","flutter_app/lib/features/contacts/presentation/contacts_screen.dart","flutter_app/lib/features/home/presentation/home_screen.dart","flutter_app/lib/features/home/presentation/main_shell.dart","flutter_app/lib/features/knowledge/presentation/knowledge_screen.dart","flutter_app/lib/features/profile/presentation/profile_screen.dart","flutter_app/lib/features/search/presentation/widgets/search_metrics_indicator.dart","flutter_app/lib/features/settings/presentation/settings_screen.dart","flutter_app/lib/features/stats/presentation/widgets/contact_stats_tab.dart","flutter_app/lib/features/stats/presentation/widgets/overview_tab.dart","flutter_app/lib/features/stats/presentation/widgets/reply_stats_tab.dart","flutter_app/lib/features/stats/presentation/widgets/stats_shared_widgets.dart","flutter_app/lib/features/support/presentation/about_screen.dart","flutter_app/lib/features/support/presentation/feedback_screen.dart","flutter_app/lib/features/support/presentation/help_screen.dart","flutter_app/lib/features/support/presentation/privacy_screen.dart","flutter_app/lib/main.dart","flutter_app/lib/shared/widgets/stat_card.dart","flutter_app/pigeons/haizhan_api.dart","flutter_app/pubspec.lock","flutter_app/pubspec.yaml","flutter_app/test/core/theme/theme_provider_test.dart","flutter_app/test/features/auth/login_screen_test.dart","flutter_app/test/features/chat/chat_screen_test.dart","flutter_app/test/features/contacts/contacts_screen_test.dart","flutter_app/test/features/home/home_screen_test.dart","flutter_app/test/features/knowledge/knowledge_screen_test.dart","flutter_app/test/features/profile/profile_screen_test.dart","flutter_app/test/features/settings/settings_screen_test.dart","flutter_app/test/features/stats/stats_screen_test.dart","flutter_app/test/integration/app_integration_test.dart","flutter_app/test/providers/auth_provider_test.dart","flutter_app/test/services/api_service_test.dart","ime-core/src/main/java/com/haizhan/ime/core/handwriting/HandwritingManager.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/HandwritingView.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/TFLiteRecognizer.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/UnifiedRecognitionEngine.kt","ime-core/src/main/java/com/haizhan/ime/core/keyboard/EnhancedCandidatesView.kt","ime-core/src/main/java/com/haizhan/ime/core/keyboard/KeyboardView.kt","ime-core/src/main/java/com/haizhan/ime/core/theme/DesignTokens.kt","ime-core/src/test/java/com/haizhan/ime/core/handwriting/HandwritingManagerAdvancedTest.kt","ime-core/src/test/java/com/haizhan/ime/core/handwriting/HandwritingManagerTest.kt","ios_keyboard/.build/.lock","ios_keyboard/.build/arm64-apple-macosx/debug/HaizhanKeyboard.build/HaizhanKeyboard.emit-module.d","ios_keyboard/.build/arm64-apple-macosx/debug/HaizhanKeyboard.build/master.priors","ios_keyboard/.build/arm64-apple-macosx/debug/HaizhanKeyboard.build/output-file-map.json","ios_keyboard/.build/arm64-apple-macosx/debug/HaizhanKeyboard.build/sources","ios_keyboard/.build/arm64-apple-macosx/debug/HaizhanKeyboardTests.build/output-file-map.json","ios_keyboard/.build/arm64-apple-macosx/debug/HaizhanKeyboardTests.build/sources","ios_keyboard/.build/arm64-apple-macosx/debug/description.json","ios_keyboard/.build/arm64-apple-macosx/debug/index/store/v5/units/AIPanelView.swift.o-3JCH38GYDGXR8","ios_keyboard/.build/arm64-apple-macosx/debug/index/store/v5/units/ContactMatcher.swift.o-2DEFMG7O4JYLM","ios_keyboard/.build/arm64-apple-macosx/debug/index/store/v5/units/HapticManager.swift.o-1RR1AGSLF5OMM","ios_keyboard/.build/arm64-apple-macosx/debug/index/store/v5/units/KeyboardEngine.swift.o-138QNNFN5L8T5","ios_keyboard/.build/arm64-apple-macosx/debug/index/store/v5/units/KeyboardView.swift.o-3DKAUVCODQU40","ios_keyboard/.build/arm64-apple-macosx/debug/index/store/v5/units/KeyboardViewController.swift.o-Q3D13NLK8BXH","ios_keyboard/.build/arm64-apple-macosx/debug/index/store/v5/units/NineGridKeyboard.swift.o-1SAAN5KAN9TN9","ios_keyboard/.build/arm64-apple-macosx/debug/index/store/v5/units/PinyinSegmenter.swift.o-MFJITYIEOC0T","ios_keyboard/.build/arm64-apple-macosx/debug/index/store/v5/units/ReplyService.swift.o-32WKBX1JUI0W6","ios_keyboard/.build/arm64-apple-macosx/debug/index/store/v5/units/ScreenshotManager.swift.o-2OU33ZXZWSYE6","ios_keyboard/.build/arm64-apple-macosx/debug/index/store/v5/units/SettingsView.swift.o-127RM9EAP5VM6","ios_keyboard/.build/arm64-apple-macosx/debug/plugin-tools-description.json","ios_keyboard/.build/build.db","ios_keyboard/.build/debug.yaml","ios_keyboard/.build/index-build/.lock","ios_keyboard/.build/index-build/arm64-apple-macosx/debug/HaizhanKeyboard.build/master.priors","ios_keyboard/.build/index-build/arm64-apple-macosx/debug/description.json","ios_keyboard/.build/index-build/arm64-apple-macosx/debug/index/store/v5/units/KeyboardView.swift.o-ZCNKWX79V430","ios_keyboard/.build/index-build/arm64-apple-macosx/debug/index/store/v5/units/NineGridKeyboard.swift.o-1ZTZUBTR9D3N2","ios_keyboard/.build/index-build/arm64-apple-macosx/debug/index/store/v5/units/ScreenshotManager.swift.o-1OSRMU5500GQS","ios_keyboard/.build/index-build/build.db","ios_keyboard/.build/index-build/debug.yaml","ios_keyboard/.build/plugin-tools.yaml","ios_keyboard/Sources/HaizhanKeyboard/AI/ScreenshotManager.swift","ios_keyboard/Sources/HaizhanKeyboard/Views/KeyboardView.swift","ios_keyboard/Sources/HaizhanKeyboard/Views/NineGridKeyboard.swift","server/.npmrc","server/README.md","server/ai-service/Dockerfile","server/api-gateway/Dockerfile","server/api-gateway/package.json","server/api-gateway/src/modules/mobile-compat/mobile-compat.controller.ts","server/docker-compose.override.yml","server/docker-compose.yml","server/ocr-service/Dockerfile","shared/src/iosMain/kotlin/com/haizhan/ime/shared/auth/IosTokenStorage.kt","shared/src/iosMain/kotlin/com/haizhan/ime/shared/platform/DictionaryLoader.ios.kt","voice/src/main/java/com/haizhan/ime/voice/audio/AudioPipelineImpl.kt","voice/src/main/java/com/haizhan/ime/voice/recognition/SpeechRecognitionServiceImpl.kt"]},{"id":"15aae8c5e92b6e0c7dd53a7921212b68b8a1294b","message":"perf(server): JWT用户缓存 + 缓存失效 + legacy-reply stub实现\n\n- JwtStrategy 添加 Redis 用户缓存 (5分钟TTL), 减少95%数据库查询\n- auth.service 在 updateProfile/logout/logoutAll 时主动失效缓存\n- users.service 在 update/updateStatus/toggleStatus/delete 时失效缓存\n- UsersModule 注入 RedisModule 支持缓存操作\n- legacy-reply markReplyUsed/submitReplyFeedback stub 实现完整请求解析和日志\n","url":"https://gitea.g-hi.com/luoanwu/haizhan-ime-android/commit/15aae8c5e92b6e0c7dd53a7921212b68b8a1294b","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-25T08:23:28+08:00","added":[],"removed":[],"modified":["server/ai-service/src/modules/ai/legacy-reply.controller.ts","server/api-gateway/src/modules/auth/auth.service.ts","server/api-gateway/src/modules/auth/strategies/jwt.strategy.ts","server/api-gateway/src/modules/users/users.module.ts","server/api-gateway/src/modules/users/users.service.ts"]},{"id":"f19558e8e838bacc0f616f40c1ec10d9a5e4e9d5","message":"chore(server): 优化 Docker 基础设施配置\n\n- Redis: 修复空密码时 --requirepass 报错问题\n- Reranker Dockerfile: torch CPU 预安装 + 清华 PyPI 镜像加速\n- requirements.txt: 移除 --extra-index-url(已在 Dockerfile 中处理)\n","url":"https://gitea.g-hi.com/luoanwu/haizhan-ime-android/commit/f19558e8e838bacc0f616f40c1ec10d9a5e4e9d5","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-25T08:16:10+08:00","added":[],"removed":[],"modified":["server/docker-compose.yml","server/model-services/reranker/Dockerfile","server/model-services/reranker/requirements.txt"]},{"id":"43712be12681e00bab0e3fed74c60ffa34fdc11d","message":"fix(server): 修复 5 个 CRITICAL + 5 个 HIGH 安全漏洞\n\nCRITICAL:\n- C1: 移除 JWT_SECRET/JWT_REFRESH_SECRET 弱默认值回退,启动时断言必须配置\n- C2: 开发后门 000000 需同时满足 NODE_ENV=development + ENABLE_DEV_BYPASS=true\n- C3: OCR recognizeFromUrl 添加 SSRF 防护(HTTPS-only + 内网地址黑名单)\n- C4: resetPassword 使用 crypto.randomBytes + bcrypt.hash 替代 Math.random + 明文\n- C5: ai-service auth.guard 添加 JWT alg 字段校验 + timingSafeEqual 签名比较\n\nHIGH:\n- H1: Redis KEYS 命令替换为 SCAN 游标迭代,避免生产环境阻塞\n- H2: knowledge.controller 添加 @UseGuards(JwtAuthGuard) 认证守卫\n- H4: updateProfile 禁止直接修改手机号,需独立验证流程\n- H6: Access Token 有效期从 7d 缩短至 1h\n- H7: JwtStrategy.validate 注入 RedisService 检查 token 黑名单\n\n测试: api-gateway 963 tests, ai-service 883 tests, ocr-service 87 tests 全部通过\n","url":"https://gitea.g-hi.com/luoanwu/haizhan-ime-android/commit/43712be12681e00bab0e3fed74c60ffa34fdc11d","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-25T08:15:48+08:00","added":[],"removed":[],"modified":["server/ai-service/src/common/guards/auth.guard.ts","server/api-gateway/src/modules/auth/auth.service.ts","server/api-gateway/src/modules/auth/strategies/jwt.strategy.ts","server/api-gateway/src/modules/knowledge/knowledge.controller.ts","server/api-gateway/src/modules/users/users.service.ts","server/api-gateway/src/shared/redis/redis.service.ts","server/ocr-service/src/modules/ocr/ocr.service.ts"]}],"total_commits":0,"head_commit":{"id":"22125e0f1e435efabf81ec0007a1b56996cb0776","message":"fix(ime-core): 修复TFLiteRecognizerTest验证方式,改为验证可观察行为\n","url":"https://gitea.g-hi.com/luoanwu/haizhan-ime-android/commit/22125e0f1e435efabf81ec0007a1b56996cb0776","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-27T14:49:40+08:00","added":[],"removed":["ios_keyboard/.build/index-build/arm64-apple-macosx/debug/index/db/v13/p95794--38ca5d/data.mdb","ios_keyboard/.build/index-build/arm64-apple-macosx/debug/index/db/v13/p95794--38ca5d/lock.mdb"],"modified":["ai-panel/src/main/java/com/haizhan/ime/panel/ui/components/PanelCommon.kt","ai-panel/src/test/java/com/haizhan/ime/panel/contact/ContactMatcherTest.kt","app/src/main/java/com/haizhan/ime/ui/management/ManagementViewModel.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/HandwritingManager.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/StrokeSegmenter.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/UnifiedRecognitionEngine.kt","ime-core/src/test/java/com/haizhan/ime/core/handwriting/TFLiteRecognizerTest.kt","pnpm-lock.yaml","server/api-gateway/package.json","server/api-gateway/src/app.module.ts","server/api-gateway/src/main.ts","server/api-gateway/src/modules/ai/ai.module.ts","server/api-gateway/src/modules/ai/ai.service.ts","server/api-gateway/src/modules/knowledge/knowledge.service.ts","server/api-gateway/src/modules/ocr/ocr.module.ts","server/api-gateway/src/modules/ocr/ocr.service.ts","server/api-gateway/src/modules/settings/settings.module.ts","server/api-gateway/src/modules/settings/settings.service.ts"]},"repository":{"id":9,"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":"haizhan-ime-android","full_name":"luoanwu/haizhan-ime-android","description":"嗨赞AI输入法 Android版","empty":false,"private":false,"fork":false,"template":false,"parent":null,"mirror":false,"size":22552,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/haizhan-ime-android/languages","html_url":"https://gitea.g-hi.com/luoanwu/haizhan-ime-android","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/haizhan-ime-android","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/haizhan-ime-android.git","clone_url":"https://gitea.g-hi.com/luoanwu/haizhan-ime-android.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-27T15:27:17+08:00","updated_at":"2026-02-27T15:42:01+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"}}...
|
push
|
2
|
14
|
1772189123
|
1772189722
|
0
|
1772178609
|
1772189722
|
NULL
|
|
0
|
Edit
Delete
|
|
1132
|
feat: 嗨赞AI输入法Android版初始提交
|
9
|
5
|
frontend-backend-ci.yml
|
2
|
5
|
0
|
refs/heads/main
|
893022bfd17ce1f2e75e75651551cf8ceaacfe45
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"a8f0a86b4c1d4422bfe5c002b8c5307111d317bb","after":"893022bfd17ce1f2e75e75651551cf8ceaacfe45","compare_url":"https://gitea.g-hi.com/luoanwu/haizhan-ime-android/compare/a8f0a86b4c1d4422bfe5c002b8c5307111d317bb...893022bfd17ce1f2e75e75651551cf8ceaacfe45","commits":[{"id":"893022bfd17ce1f2e75e75651551cf8ceaacfe45","message":"feat: 嗨赞AI输入法Android版初始提交\n","url":"https://gitea.g-hi.com/luoanwu/haizhan-ime-android/commit/893022bfd17ce1f2e75e75651551cf8ceaacfe45","author":{"name":"luoanwu","email":"law@g-hi.com","username":"luoanwu"},"committer":{"name":"luoanwu","email":"law@g-hi.com","username":"luoanwu"},"verification":null,"timestamp":"2026-02-27T15:28:58+08:00","added":[".claude/skills/haizhan-ime-development.md",".claude/worktrees/charming-zhukovsky",".editorconfig",".github/workflows/ci.yml",".github/workflows/frontend-backend-ci.yml",".github/workflows/ios-ci.yml",".github/workflows/performance-check.yml",".github/workflows/pr-check.yml",".github/workflows/release.yml",".gitignore",".npmrc","CHANGELOG.md","CLAUDE.md","MIGRATION_COMPLETE_REPORT.md","README.md","admin-web/.env.development","admin-web/.eslintrc.cjs","admin-web/.gitignore","admin-web/.npmrc","admin-web/README.md","admin-web/e2e/all-pages.spec.ts","admin-web/e2e/crud-tests.spec.ts","admin-web/e2e/dashboard.spec.ts","admin-web/e2e/interactive-click.spec.ts","admin-web/e2e/login.spec.ts","admin-web/e2e/templates.spec.ts","admin-web/index.html","admin-web/package.json","admin-web/playwright.config.ts","admin-web/postcss.config.js","admin-web/public/favicon.svg","admin-web/src/App.vue","admin-web/src/api/ai-config.ts","admin-web/src/api/audit.ts","admin-web/src/api/auth.ts","admin-web/src/api/contact.ts","admin-web/src/api/knowledge.ts","admin-web/src/api/rag.ts","admin-web/src/api/settings.ts","admin-web/src/api/team.ts","admin-web/src/api/template.ts","admin-web/src/api/usage.ts","admin-web/src/api/user.ts","admin-web/src/assets/logo.svg","admin-web/src/components/UserCard.vue","admin-web/src/components/index.ts","admin-web/src/composables/usePermission.ts","admin-web/src/composables/useResponsive.ts","admin-web/src/composables/useTable.ts","admin-web/src/directives/index.ts","admin-web/src/directives/permission.ts","admin-web/src/env.d.ts","admin-web/src/layouts/MainLayout.vue","admin-web/src/layouts/components/HeaderBar.vue","admin-web/src/layouts/components/MobileDrawer.vue","admin-web/src/layouts/components/SidebarMenu.vue","admin-web/src/main.ts","admin-web/src/router/index.ts","admin-web/src/stores/app.ts","admin-web/src/stores/user.ts","admin-web/src/styles/index.scss","admin-web/src/styles/variables.scss","admin-web/src/types/ai-config.ts","admin-web/src/types/api.ts","admin-web/src/types/audit.ts","admin-web/src/types/contact.ts","admin-web/src/types/knowledge.ts","admin-web/src/types/permission.ts","admin-web/src/types/rag.ts","admin-web/src/types/settings.ts","admin-web/src/types/team.ts","admin-web/src/types/template.ts","admin-web/src/types/usage.ts","admin-web/src/types/user.ts","admin-web/src/utils/request.ts","admin-web/src/views/ai-config/index.vue","admin-web/src/views/audit/index.vue","admin-web/src/views/contacts/index.vue","admin-web/src/views/contacts/profile.vue","admin-web/src/views/dashboard/index.vue","admin-web/src/views/error/403.vue","admin-web/src/views/error/404.vue","admin-web/src/views/knowledge/index.vue","admin-web/src/views/login/index.vue","admin-web/src/views/profile/index.vue","admin-web/src/views/rag/index.vue","admin-web/src/views/settings/index.vue","admin-web/src/views/teams/index.vue","admin-web/src/views/templates/index.vue","admin-web/src/views/usage/index.vue","admin-web/src/views/users/index.vue","admin-web/tailwind.config.js","admin-web/test-results/.last-run.json","admin-web/tsconfig.app.json","admin-web/tsconfig.json","admin-web/tsconfig.node.json","admin-web/vite.config.d.ts","admin-web/vite.config.js","admin-web/vite.config.ts","ai-panel/build.gradle.kts","ai-panel/consumer-rules.pro","ai-panel/proguard-rules.pro","ai-panel/src/main/AndroidManifest.xml","ai-panel/src/main/java/com/haizhan/ime/panel/AiPanelManager.kt","ai-panel/src/main/java/com/haizhan/ime/panel/AiPanelModels.kt","ai-panel/src/main/java/com/haizhan/ime/panel/agentic/AgenticDecisionEngine.kt","ai-panel/src/main/java/com/haizhan/ime/panel/agentic/AgenticRouter.kt","ai-panel/src/main/java/com/haizhan/ime/panel/agentic/AgenticTypes.kt","ai-panel/src/main/java/com/haizhan/ime/panel/agentic/CostController.kt","ai-panel/src/main/java/com/haizhan/ime/panel/agentic/HybridSearchExecutor.kt","ai-panel/src/main/java/com/haizhan/ime/panel/agentic/di/AgenticModule.kt","ai-panel/src/main/java/com/haizhan/ime/panel/contact/AvatarMatcher.kt","ai-panel/src/main/java/com/haizhan/ime/panel/contact/ContactCache.kt","ai-panel/src/main/java/com/haizhan/ime/panel/contact/ContactContextPreloader.kt","ai-panel/src/main/java/com/haizhan/ime/panel/contact/ContactIndexes.kt","ai-panel/src/main/java/com/haizhan/ime/panel/contact/ContactMatcher.kt","ai-panel/src/main/java/com/haizhan/ime/panel/contact/ContactMatcherData.kt","ai-panel/src/main/java/com/haizhan/ime/panel/contact/EnhancedContactMatcher.kt","ai-panel/src/main/java/com/haizhan/ime/panel/contact/MatchedContact.kt","ai-panel/src/main/java/com/haizhan/ime/panel/contact/NicknameMatcher.kt","ai-panel/src/main/java/com/haizhan/ime/panel/context/InputContextCollector.kt","ai-panel/src/main/java/com/haizhan/ime/panel/context/UnifiedContextManager.kt","ai-panel/src/main/java/com/haizhan/ime/panel/di/AiPanelModule.kt","ai-panel/src/main/java/com/haizhan/ime/panel/di/ContactModule.kt","ai-panel/src/main/java/com/haizhan/ime/panel/di/ContextModule.kt","ai-panel/src/main/java/com/haizhan/ime/panel/di/OcrModule.kt","ai-panel/src/main/java/com/haizhan/ime/panel/di/ReplyModule.kt","ai-panel/src/main/java/com/haizhan/ime/panel/di/ScreenshotModule.kt","ai-panel/src/main/java/com/haizhan/ime/panel/knowledge/KnowledgeService.kt","ai-panel/src/main/java/com/haizhan/ime/panel/memory/ContactMemoryModels.kt","ai-panel/src/main/java/com/haizhan/ime/panel/memory/ContactMemoryService.kt","ai-panel/src/main/java/com/haizhan/ime/panel/memory/MemoryDtoMapper.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ocr/EnhancedSenderDetector.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ocr/MessageParser.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ocr/OcrReliabilityScore.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ocr/OcrService.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ocr/TitleBarParser.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ocr/adapter/ChatMessageAdapter.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ocr/adapter/DingTalkMessageAdapter.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ocr/adapter/FeishuMessageAdapter.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ocr/adapter/MessageAdapterFactory.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ocr/adapter/WeChatMessageAdapter.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ocr/adapter/WeWorkMessageAdapter.kt","ai-panel/src/main/java/com/haizhan/ime/panel/reply/BatteryAwareManager.kt","ai-panel/src/main/java/com/haizhan/ime/panel/reply/ClipboardHelper.kt","ai-panel/src/main/java/com/haizhan/ime/panel/reply/FrequencyController.kt","ai-panel/src/main/java/com/haizhan/ime/panel/reply/RagReplyGenerator.kt","ai-panel/src/main/java/com/haizhan/ime/panel/reply/ReplyGenerator.kt","ai-panel/src/main/java/com/haizhan/ime/panel/reply/ReplyStyle.kt","ai-panel/src/main/java/com/haizhan/ime/panel/screenshot/RegionDetector.kt","ai-panel/src/main/java/com/haizhan/ime/panel/screenshot/ScreenshotManager.kt","ai-panel/src/main/java/com/haizhan/ime/panel/service/ScreenshotForegroundService.kt","ai-panel/src/main/java/com/haizhan/ime/panel/trigger/AppDetector.kt","ai-panel/src/main/java/com/haizhan/ime/panel/trigger/TriggerDetector.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/AIPanelScreen.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/AiPanelTheme.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/Contact360View.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/ContactCard.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/ContactSelector.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/EmotionBadge.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/FunctionTabBar.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/IntentBadge.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/KnowledgeCard.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/KnowledgePanel.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/QuickReplyPanel.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/ReplyCard.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/components/ContactComponents.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/components/HistoryComponents.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/components/KnowledgeComponents.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/components/NoteComponents.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/components/OcrComponents.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/components/PanelCommon.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/components/ReplyComponents.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/components/TeamComponents.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/tabs/AiReplyTab.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/tabs/ContactsTab.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/tabs/HistoryTab.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/tabs/KnowledgeTab.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/tabs/NoteTab.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/tabs/OcrTab.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/tabs/TeamTab.kt","ai-panel/src/main/java/com/haizhan/ime/panel/weather/WeatherService.kt","ai-panel/src/main/res/drawable/ic_ai_reply.xml","ai-panel/src/main/res/drawable/ic_capture.xml","ai-panel/src/main/res/drawable/ic_contacts.xml","ai-panel/src/main/res/drawable/ic_knowledge.xml","ai-panel/src/main/res/drawable/ic_ocr.xml","ai-panel/src/main/res/drawable/ic_refresh.xml","ai-panel/src/main/res/drawable/ic_screenshot.xml","ai-panel/src/main/res/drawable/ic_stop.xml","ai-panel/src/test/java/com/haizhan/ime/panel/AiPanelManagerTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/agentic/AgenticDecisionEngineTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/agentic/AgenticRouterTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/agentic/AgenticTypesTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/agentic/CostControllerTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/agentic/ResultQualityEvaluatorTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/contact/ContactCacheTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/contact/ContactContextPreloaderTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/contact/ContactIndexPerformanceTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/contact/ContactIndexesTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/contact/ContactMatcherTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/contact/ContactMemoryServiceTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/contact/MatchedContactTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/contact/NicknameMatcherTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/context/InputContextCollectorTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/context/UnifiedContextManagerTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/knowledge/KnowledgeServiceTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/ocr/EnhancedSenderDetectorTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/ocr/MessageParserTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/ocr/OcrReliabilityScoreTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/ocr/OcrServiceTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/ocr/TitleBarParserTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/platform/DingTalkAdapterTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/platform/FeishuAdapterTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/platform/WeChatAdapterTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/platform/WeWorkAdapterTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/reply/BatteryAwareManagerTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/reply/ClipboardHelperTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/reply/FrequencyControllerTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/reply/RagReplyGeneratorTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/reply/ReplyGeneratorTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/reply/ReplyStyleTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/screenshot/RegionDetectorTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/screenshot/ScreenshotManagerTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/trigger/AppDetectorTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/trigger/TriggerDetectorTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/ui/AIPanelScreenTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/ui/ReplyCardTest.kt","api-clients/android/.openapi-generator-ignore","api-clients/android/.openapi-generator/FILES","api-clients/android/.openapi-generator/VERSION","api-clients/android/README.md","api-clients/android/build.gradle","api-clients/android/docs/AdminLoginDto.md","api-clients/android/docs/AiConfigApi.md","api-clients/android/docs/AuditLogsApi.md","api-clients/android/docs/AuthApi.md","api-clients/android/docs/BatchRemoveContactsDto.md","api-clients/android/docs/ChunkingConfigDto.md","api-clients/android/docs/Contact360ResponseDto.md","api-clients/android/docs/Contact360ViewDto.md","api-clients/android/docs/ContactDetailResponseDto.md","api-clients/android/docs/ContactDto.md","api-clients/android/docs/ContactEventDto.md","api-clients/android/docs/ContactListResponseDto.md","api-clients/android/docs/ContactProfileDto.md","api-clients/android/docs/ContactStatsDto.md","api-clients/android/docs/ContactTagDto.md","api-clients/android/docs/ContactsApi.md","api-clients/android/docs/ConversationSummaryDto.md","api-clients/android/docs/CreateContactDto.md","api-clients/android/docs/CreateContactEventDto.md","api-clients/android/docs/CreateKnowledgeBaseDto.md","api-clients/android/docs/CreateKnowledgeDocumentDto.md","api-clients/android/docs/CreateQwenModelDto.md","api-clients/android/docs/DefaultApi.md","api-clients/android/docs/EmbeddingConfigDto.md","api-clients/android/docs/EmbeddingModelDto.md","api-clients/android/docs/GenerationConfigDto.md","api-clients/android/docs/HealthApi.md","api-clients/android/docs/KnowledgeApi.md","api-clients/android/docs/KnowledgeBaseResponseDto.md","api-clients/android/docs/KnowledgeDocumentListResponseDto.md","api-clients/android/docs/KnowledgeDocumentResponseDto.md","api-clients/android/docs/LoginDto.md","api-clients/android/docs/MatchContactDto.md","api-clients/android/docs/MatchContactResponseDto.md","api-clients/android/docs/MobileCompatApi.md","api-clients/android/docs/PinyinApi.md","api-clients/android/docs/PipelineHealthDto.md","api-clients/android/docs/PipelineMetricsDto.md","api-clients/android/docs/PreviewChunkingDto.md","api-clients/android/docs/QwenModelConfigDto.md","api-clients/android/docs/QwenModelFeaturesDto.md","api-clients/android/docs/RagApi.md","api-clients/android/docs/RagConfigDto.md","api-clients/android/docs/RagMetricsDto.md","api-clients/android/docs/RagPipelineStatusDto.md","api-clients/android/docs/RagQueryDto.md","api-clients/android/docs/RebuildIndexDto.md","api-clients/android/docs/RefreshTokenDto.md","api-clients/android/docs/RetrievalConfigDto.md","api-clients/android/docs/SettingsApi.md","api-clients/android/docs/SyncContactsDto.md","api-clients/android/docs/SyncContactsResponseDto.md","api-clients/android/docs/TeamsApi.md","api-clients/android/docs/ToggleQwenModelDto.md","api-clients/android/docs/UpdateContactDto.md","api-clients/android/docs/UpdateKnowledgeBaseDto.md","api-clients/android/docs/UpdateKnowledgeDocumentDto.md","api-clients/android/docs/UpdateQwenModelDto.md","api-clients/android/docs/UpdateRagConfigDto.md","api-clients/android/docs/UsageApi.md","api-clients/android/docs/WeatherApi.md","api-clients/android/gradle/wrapper/gradle-wrapper.jar","api-clients/android/gradle/wrapper/gradle-wrapper.properties","api-clients/android/gradlew","api-clients/android/gradlew.bat","api-clients/android/settings.gradle","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/AiConfigApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/AuditLogsApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/AuthApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/ContactsApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/DefaultApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/HealthApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/KnowledgeApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/MobileCompatApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/PinyinApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/RagApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/SettingsApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/TeamsApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/UsageApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/WeatherApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/auth/HttpBearerAuth.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/infrastructure/ApiClient.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/infrastructure/BigDecimalAdapter.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/infrastructure/BigIntegerAdapter.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/infrastructure/ByteArrayAdapter.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/infrastructure/CollectionFormats.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/infrastructure/LocalDateAdapter.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/infrastructure/LocalDateTimeAdapter.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/infrastructure/OffsetDateTimeAdapter.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/infrastructure/ResponseExt.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/infrastructure/Serializer.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/infrastructure/URIAdapter.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/infrastructure/UUIDAdapter.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/AdminLoginDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/BatchRemoveContactsDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/ChunkingConfigDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/Contact360ResponseDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/Contact360ViewDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/ContactDetailResponseDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/ContactDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/ContactEventDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/ContactListResponseDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/ContactProfileDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/ContactStatsDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/ContactTagDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/ConversationSummaryDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/CreateContactDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/CreateContactEventDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/CreateKnowledgeBaseDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/CreateKnowledgeDocumentDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/CreateQwenModelDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/EmbeddingConfigDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/EmbeddingModelDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/GenerationConfigDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/KnowledgeBaseResponseDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/KnowledgeDocumentListResponseDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/KnowledgeDocumentResponseDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/LoginDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/MatchContactDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/MatchContactResponseDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/PipelineHealthDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/PipelineMetricsDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/PreviewChunkingDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/QwenModelConfigDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/QwenModelFeaturesDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/RagConfigDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/RagMetricsDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/RagPipelineStatusDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/RagQueryDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/RebuildIndexDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/RefreshTokenDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/RetrievalConfigDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/SyncContactsDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/SyncContactsResponseDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/ToggleQwenModelDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/UpdateContactDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/UpdateKnowledgeBaseDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/UpdateKnowledgeDocumentDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/UpdateQwenModelDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/UpdateRagConfigDto.kt","api-clients/flutter/.gitignore","api-clients/flutter/.openapi-generator-ignore","api-clients/flutter/.openapi-generator/FILES","api-clients/flutter/.openapi-generator/VERSION","api-clients/flutter/README.md","api-clients/flutter/analysis_options.yaml","api-clients/flutter/doc/AdminLoginDto.md","api-clients/flutter/doc/AiConfigApi.md","api-clients/flutter/doc/AuditLogsApi.md","api-clients/flutter/doc/AuthApi.md","api-clients/flutter/doc/BatchRemoveContactsDto.md","api-clients/flutter/doc/ChunkingConfigDto.md","api-clients/flutter/doc/Contact360ResponseDto.md","api-clients/flutter/doc/Contact360ViewDto.md","api-clients/flutter/doc/ContactDetailResponseDto.md","api-clients/flutter/doc/ContactDto.md","api-clients/flutter/doc/ContactEventDto.md","api-clients/flutter/doc/ContactListResponseDto.md","api-clients/flutter/doc/ContactProfileDto.md","api-clients/flutter/doc/ContactStatsDto.md","api-clients/flutter/doc/ContactTagDto.md","api-clients/flutter/doc/ContactsApi.md","api-clients/flutter/doc/ConversationSummaryDto.md","api-clients/flutter/doc/CreateContactDto.md","api-clients/flutter/doc/CreateContactEventDto.md","api-clients/flutter/doc/CreateKnowledgeBaseDto.md","api-clients/flutter/doc/CreateKnowledgeDocumentDto.md","api-clients/flutter/doc/CreateQwenModelDto.md","api-clients/flutter/doc/DefaultApi.md","api-clients/flutter/doc/EmbeddingConfigDto.md","api-clients/flutter/doc/EmbeddingModelDto.md","api-clients/flutter/doc/GenerationConfigDto.md","api-clients/flutter/doc/HealthApi.md","api-clients/flutter/doc/KnowledgeApi.md","api-clients/flutter/doc/KnowledgeBaseResponseDto.md","api-clients/flutter/doc/KnowledgeDocumentListResponseDto.md","api-clients/flutter/doc/KnowledgeDocumentResponseDto.md","api-clients/flutter/doc/LoginDto.md","api-clients/flutter/doc/MatchContactDto.md","api-clients/flutter/doc/MatchContactResponseDto.md","api-clients/flutter/doc/MobileCompatApi.md","api-clients/flutter/doc/PinyinApi.md","api-clients/flutter/doc/PipelineHealthDto.md","api-clients/flutter/doc/PipelineMetricsDto.md","api-clients/flutter/doc/PreviewChunkingDto.md","api-clients/flutter/doc/QwenModelConfigDto.md","api-clients/flutter/doc/QwenModelFeaturesDto.md","api-clients/flutter/doc/RagApi.md","api-clients/flutter/doc/RagConfigDto.md","api-clients/flutter/doc/RagMetricsDto.md","api-clients/flutter/doc/RagPipelineStatusDto.md","api-clients/flutter/doc/RagQueryDto.md","api-clients/flutter/doc/RebuildIndexDto.md","api-clients/flutter/doc/RefreshTokenDto.md","api-clients/flutter/doc/RetrievalConfigDto.md","api-clients/flutter/doc/SettingsApi.md","api-clients/flutter/doc/SyncContactsDto.md","api-clients/flutter/doc/SyncContactsResponseDto.md","api-clients/flutter/doc/TeamsApi.md","api-clients/flutter/doc/ToggleQwenModelDto.md","api-clients/flutter/doc/UpdateContactDto.md","api-clients/flutter/doc/UpdateKnowledgeBaseDto.md","api-clients/flutter/doc/UpdateKnowledgeDocumentDto.md","api-clients/flutter/doc/UpdateQwenModelDto.md","api-clients/flutter/doc/UpdateRagConfigDto.md","api-clients/flutter/doc/UsageApi.md","api-clients/flutter/doc/WeatherApi.md","api-clients/flutter/lib/haizhan_api.dart","api-clients/flutter/lib/src/api.dart","api-clients/flutter/lib/src/api/ai_config_api.dart","api-clients/flutter/lib/src/api/audit_logs_api.dart","api-clients/flutter/lib/src/api/auth_api.dart","api-clients/flutter/lib/src/api/contacts_api.dart","api-clients/flutter/lib/src/api/default_api.dart","api-clients/flutter/lib/src/api/health_api.dart","api-clients/flutter/lib/src/api/knowledge_api.dart","api-clients/flutter/lib/src/api/mobile_compat_api.dart","api-clients/flutter/lib/src/api/pinyin_api.dart","api-clients/flutter/lib/src/api/rag_api.dart","api-clients/flutter/lib/src/api/settings_api.dart","api-clients/flutter/lib/src/api/teams_api.dart","api-clients/flutter/lib/src/api/usage_api.dart","api-clients/flutter/lib/src/api/weather_api.dart","api-clients/flutter/lib/src/api_util.dart","api-clients/flutter/lib/src/auth/api_key_auth.dart","api-clients/flutter/lib/src/auth/auth.dart","api-clients/flutter/lib/src/auth/basic_auth.dart","api-clients/flutter/lib/src/auth/bearer_auth.dart","api-clients/flutter/lib/src/auth/oauth.dart","api-clients/flutter/lib/src/date_serializer.dart","api-clients/flutter/lib/src/model/admin_login_dto.dart","api-clients/flutter/lib/src/model/batch_remove_contacts_dto.dart","api-clients/flutter/lib/src/model/chunking_config_dto.dart","api-clients/flutter/lib/src/model/contact360_response_dto.dart","api-clients/flutter/lib/src/model/contact360_view_dto.dart","api-clients/flutter/lib/src/model/contact_detail_response_dto.dart","api-clients/flutter/lib/src/model/contact_dto.dart","api-clients/flutter/lib/src/model/contact_event_dto.dart","api-clients/flutter/lib/src/model/contact_list_response_dto.dart","api-clients/flutter/lib/src/model/contact_profile_dto.dart","api-clients/flutter/lib/src/model/contact_stats_dto.dart","api-clients/flutter/lib/src/model/contact_tag_dto.dart","api-clients/flutter/lib/src/model/conversation_summary_dto.dart","api-clients/flutter/lib/src/model/create_contact_dto.dart","api-clients/flutter/lib/src/model/create_contact_event_dto.dart","api-clients/flutter/lib/src/model/create_knowledge_base_dto.dart","api-clients/flutter/lib/src/model/create_knowledge_document_dto.dart","api-clients/flutter/lib/src/model/create_qwen_model_dto.dart","api-clients/flutter/lib/src/model/date.dart","api-clients/flutter/lib/src/model/embedding_config_dto.dart","api-clients/flutter/lib/src/model/embedding_model_dto.dart","api-clients/flutter/lib/src/model/generation_config_dto.dart","api-clients/flutter/lib/src/model/knowledge_base_response_dto.dart","api-clients/flutter/lib/src/model/knowledge_document_list_response_dto.dart","api-clients/flutter/lib/src/model/knowledge_document_response_dto.dart","api-clients/flutter/lib/src/model/login_dto.dart","api-clients/flutter/lib/src/model/match_contact_dto.dart","api-clients/flutter/lib/src/model/match_contact_response_dto.dart","api-clients/flutter/lib/src/model/pipeline_health_dto.dart","api-clients/flutter/lib/src/model/pipeline_metrics_dto.dart","api-clients/flutter/lib/src/model/preview_chunking_dto.dart","api-clients/flutter/lib/src/model/qwen_model_config_dto.dart","api-clients/flutter/lib/src/model/qwen_model_features_dto.dart","api-clients/flutter/lib/src/model/rag_config_dto.dart","api-clients/flutter/lib/src/model/rag_metrics_dto.dart","api-clients/flutter/lib/src/model/rag_pipeline_status_dto.dart","api-clients/flutter/lib/src/model/rag_query_dto.dart","api-clients/flutter/lib/src/model/rebuild_index_dto.dart","api-clients/flutter/lib/src/model/refresh_token_dto.dart","api-clients/flutter/lib/src/model/retrieval_config_dto.dart","api-clients/flutter/lib/src/model/sync_contacts_dto.dart","api-clients/flutter/lib/src/model/sync_contacts_response_dto.dart","api-clients/flutter/lib/src/model/toggle_qwen_model_dto.dart","api-clients/flutter/lib/src/model/update_contact_dto.dart","api-clients/flutter/lib/src/model/update_knowledge_base_dto.dart","api-clients/flutter/lib/src/model/update_knowledge_document_dto.dart","api-clients/flutter/lib/src/model/update_qwen_model_dto.dart","api-clients/flutter/lib/src/model/update_rag_config_dto.dart","api-clients/flutter/lib/src/serializers.dart","api-clients/flutter/pubspec.yaml","api-clients/flutter/test/admin_login_dto_test.dart","api-clients/flutter/test/ai_config_api_test.dart","api-clients/flutter/test/audit_logs_api_test.dart","api-clients/flutter/test/auth_api_test.dart","api-clients/flutter/test/batch_remove_contacts_dto_test.dart","api-clients/flutter/test/chunking_config_dto_test.dart","api-clients/flutter/test/contact360_response_dto_test.dart","api-clients/flutter/test/contact360_view_dto_test.dart","api-clients/flutter/test/contact_detail_response_dto_test.dart","api-clients/flutter/test/contact_dto_test.dart","api-clients/flutter/test/contact_event_dto_test.dart","api-clients/flutter/test/contact_list_response_dto_test.dart","api-clients/flutter/test/contact_profile_dto_test.dart","api-clients/flutter/test/contact_stats_dto_test.dart","api-clients/flutter/test/contact_tag_dto_test.dart","api-clients/flutter/test/contacts_api_test.dart","api-clients/flutter/test/conversation_summary_dto_test.dart","api-clients/flutter/test/create_contact_dto_test.dart","api-clients/flutter/test/create_contact_event_dto_test.dart","api-clients/flutter/test/create_knowledge_base_dto_test.dart","api-clients/flutter/test/create_knowledge_document_dto_test.dart","api-clients/flutter/test/create_qwen_model_dto_test.dart","api-clients/flutter/test/default_api_test.dart","api-clients/flutter/test/embedding_config_dto_test.dart","api-clients/flutter/test/embedding_model_dto_test.dart","api-clients/flutter/test/generation_config_dto_test.dart","api-clients/flutter/test/health_api_test.dart","api-clients/flutter/test/knowledge_api_test.dart","api-clients/flutter/test/knowledge_base_response_dto_test.dart","api-clients/flutter/test/knowledge_document_list_response_dto_test.dart","api-clients/flutter/test/knowledge_document_response_dto_test.dart","api-clients/flutter/test/login_dto_test.dart","api-clients/flutter/test/match_contact_dto_test.dart","api-clients/flutter/test/match_contact_response_dto_test.dart","api-clients/flutter/test/mobile_compat_api_test.dart","api-clients/flutter/test/pinyin_api_test.dart","api-clients/flutter/test/pipeline_health_dto_test.dart","api-clients/flutter/test/pipeline_metrics_dto_test.dart","api-clients/flutter/test/preview_chunking_dto_test.dart","api-clients/flutter/test/qwen_model_config_dto_test.dart","api-clients/flutter/test/qwen_model_features_dto_test.dart","api-clients/flutter/test/rag_api_test.dart","api-clients/flutter/test/rag_config_dto_test.dart","api-clients/flutter/test/rag_metrics_dto_test.dart","api-clients/flutter/test/rag_pipeline_status_dto_test.dart","api-clients/flutter/test/rag_query_dto_test.dart","api-clients/flutter/test/rebuild_index_dto_test.dart","api-clients/flutter/test/refresh_token_dto_test.dart","api-clients/flutter/test/retrieval_config_dto_test.dart","api-clients/flutter/test/settings_api_test.dart","api-clients/flutter/test/sync_contacts_dto_test.dart","api-clients/flutter/test/sync_contacts_response_dto_test.dart","api-clients/flutter/test/teams_api_test.dart","api-clients/flutter/test/toggle_qwen_model_dto_test.dart","api-clients/flutter/test/update_contact_dto_test.dart","api-clients/flutter/test/update_knowledge_base_dto_test.dart","api-clients/flutter/test/update_knowledge_document_dto_test.dart","api-clients/flutter/test/update_qwen_model_dto_test.dart","api-clients/flutter/test/update_rag_config_dto_test.dart","api-clients/flutter/test/usage_api_test.dart","api-clients/flutter/test/weather_api_test.dart","api-clients/ios/.gitignore","api-clients/ios/.openapi-generator-ignore","api-clients/ios/.openapi-generator/FILES","api-clients/ios/.openapi-generator/VERSION","api-clients/ios/.swiftformat","api-clients/ios/Cartfile","api-clients/ios/HaizhanAPI.podspec","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIHelper.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/AiConfigAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/AuditLogsAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/AuthAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/ContactsAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/DefaultAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/HealthAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/KnowledgeAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/MobileCompatAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/PinyinAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/RagAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/SettingsAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/TeamsAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/UsageAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/WeatherAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/CodableHelper.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Configuration.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Extensions.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/JSONDataEncoding.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/JSONEncodingHelper.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/AdminLoginDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/BatchRemoveContactsDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/ChunkingConfigDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/Contact360ResponseDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/Contact360ViewDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/ContactDetailResponseDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/ContactDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/ContactEventDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/ContactListResponseDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/ContactProfileDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/ContactStatsDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/ContactTagDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/ConversationSummaryDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/CreateContactDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/CreateContactEventDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/CreateKnowledgeBaseDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/CreateKnowledgeDocumentDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/CreateQwenModelDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/EmbeddingConfigDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/EmbeddingModelDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/GenerationConfigDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/KnowledgeBaseResponseDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/KnowledgeDocumentListResponseDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/KnowledgeDocumentResponseDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/LoginDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/MatchContactDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/MatchContactResponseDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/PipelineHealthDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/PipelineMetricsDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/PreviewChunkingDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/QwenModelConfigDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/QwenModelFeaturesDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/RagConfigDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/RagMetricsDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/RagPipelineStatusDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/RagQueryDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/RebuildIndexDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/RefreshTokenDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/RetrievalConfigDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/SyncContactsDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/SyncContactsResponseDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/ToggleQwenModelDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/UpdateContactDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/UpdateKnowledgeBaseDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/UpdateKnowledgeDocumentDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/UpdateQwenModelDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/UpdateRagConfigDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/OpenISO8601DateFormatter.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/SynchronizedDictionary.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/URLSessionImplementations.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Validation.swift","api-clients/ios/Package.swift","api-clients/ios/README.md","api-clients/ios/docs/AdminLoginDto.md","api-clients/ios/docs/AiConfigAPI.md","api-clients/ios/docs/AuditLogsAPI.md","api-clients/ios/docs/AuthAPI.md","api-clients/ios/docs/BatchRemoveContactsDto.md","api-clients/ios/docs/ChunkingConfigDto.md","api-clients/ios/docs/Contact360ResponseDto.md","api-clients/ios/docs/Contact360ViewDto.md","api-clients/ios/docs/ContactDetailResponseDto.md","api-clients/ios/docs/ContactDto.md","api-clients/ios/docs/ContactEventDto.md","api-clients/ios/docs/ContactListResponseDto.md","api-clients/ios/docs/ContactProfileDto.md","api-clients/ios/docs/ContactStatsDto.md","api-clients/ios/docs/ContactTagDto.md","api-clients/ios/docs/ContactsAPI.md","api-clients/ios/docs/ConversationSummaryDto.md","api-clients/ios/docs/CreateContactDto.md","api-clients/ios/docs/CreateContactEventDto.md","api-clients/ios/docs/CreateKnowledgeBaseDto.md","api-clients/ios/docs/CreateKnowledgeDocumentDto.md","api-clients/ios/docs/CreateQwenModelDto.md","api-clients/ios/docs/DefaultAPI.md","api-clients/ios/docs/EmbeddingConfigDto.md","api-clients/ios/docs/EmbeddingModelDto.md","api-clients/ios/docs/GenerationConfigDto.md","api-clients/ios/docs/HealthAPI.md","api-clients/ios/docs/KnowledgeAPI.md","api-clients/ios/docs/KnowledgeBaseResponseDto.md","api-clients/ios/docs/KnowledgeDocumentListResponseDto.md","api-clients/ios/docs/KnowledgeDocumentResponseDto.md","api-clients/ios/docs/LoginDto.md","api-clients/ios/docs/MatchContactDto.md","api-clients/ios/docs/MatchContactResponseDto.md","api-clients/ios/docs/MobileCompatAPI.md","api-clients/ios/docs/PinyinAPI.md","api-clients/ios/docs/PipelineHealthDto.md","api-clients/ios/docs/PipelineMetricsDto.md","api-clients/ios/docs/PreviewChunkingDto.md","api-clients/ios/docs/QwenModelConfigDto.md","api-clients/ios/docs/QwenModelFeaturesDto.md","api-clients/ios/docs/RagAPI.md","api-clients/ios/docs/RagConfigDto.md","api-clients/ios/docs/RagMetricsDto.md","api-clients/ios/docs/RagPipelineStatusDto.md","api-clients/ios/docs/RagQueryDto.md","api-clients/ios/docs/RebuildIndexDto.md","api-clients/ios/docs/RefreshTokenDto.md","api-clients/ios/docs/RetrievalConfigDto.md","api-clients/ios/docs/SettingsAPI.md","api-clients/ios/docs/SyncContactsDto.md","api-clients/ios/docs/SyncContactsResponseDto.md","api-clients/ios/docs/TeamsAPI.md","api-clients/ios/docs/ToggleQwenModelDto.md","api-clients/ios/docs/UpdateContactDto.md","api-clients/ios/docs/UpdateKnowledgeBaseDto.md","api-clients/ios/docs/UpdateKnowledgeDocumentDto.md","api-clients/ios/docs/UpdateQwenModelDto.md","api-clients/ios/docs/UpdateRagConfigDto.md","api-clients/ios/docs/UsageAPI.md","api-clients/ios/docs/WeatherAPI.md","api-clients/ios/git_push.sh","api-clients/ios/project.yml","app/build.gradle.kts","app/proguard-rules-release.pro","app/proguard-rules.pro","app/src/androidTest/java/com/haizhan/ime/ComposeUiTest.kt","app/src/androidTest/java/com/haizhan/ime/ExampleInstrumentedTest.kt","app/src/androidTest/java/com/haizhan/ime/e2e/SmokeE2ETest.kt","app/src/androidTest/java/com/haizhan/ime/integration/ImeIntegrationTest.kt","app/src/main/AndroidManifest.xml","app/src/main/assets/dictionaries/stroke-data.txt","app/src/main/assets/handwriting_labels.txt","app/src/main/assets/handwriting_labels_casia.txt","app/src/main/assets/handwriting_labels_clean.txt","app/src/main/assets/handwriting_labels_jp.txt","app/src/main/assets/paddle_models/handwriting_labels.txt","app/src/main/assets/paddle_models/ppocr_keys_v1.txt","app/src/main/assets/temp_clean.txt","app/src/main/assets/temp_labels.txt","app/src/main/java/com/haizhan/ime/HaizhanApplication.kt","app/src/main/java/com/haizhan/ime/about/ui/AboutScreen.kt","app/src/main/java/com/haizhan/ime/chat/model/Message.kt","app/src/main/java/com/haizhan/ime/chat/service/WebSocketService.kt","app/src/main/java/com/haizhan/ime/chat/ui/ChatMessageCard.kt","app/src/main/java/com/haizhan/ime/chat/ui/ChatScreen.kt","app/src/main/java/com/haizhan/ime/chat/ui/GroupChatScreen.kt","app/src/main/java/com/haizhan/ime/feedback/ui/FeedbackScreen.kt","app/src/main/java/com/haizhan/ime/help/ui/HelpCenterScreen.kt","app/src/main/java/com/haizhan/ime/note/model/Note.kt","app/src/main/java/com/haizhan/ime/note/service/NoteService.kt","app/src/main/java/com/haizhan/ime/note/ui/NoteEditorScreen.kt","app/src/main/java/com/haizhan/ime/note/ui/NoteListScreen.kt","app/src/main/java/com/haizhan/ime/profile/model/Profile.kt","app/src/main/java/com/haizhan/ime/profile/ui/ProfileScreen.kt","app/src/main/java/com/haizhan/ime/receiver/BootReceiver.kt","app/src/main/java/com/haizhan/ime/search/model/Search.kt","app/src/main/java/com/haizhan/ime/search/service/SearchService.kt","app/src/main/java/com/haizhan/ime/search/ui/GlobalSearchScreen.kt","app/src/main/java/com/haizhan/ime/security/EncryptionManager.kt","app/src/main/java/com/haizhan/ime/security/NetworkSecurityManager.kt","app/src/main/java/com/haizhan/ime/security/PrivacyComplianceManager.kt","app/src/main/java/com/haizhan/ime/security/SecurityAuditor.kt","app/src/main/java/com/haizhan/ime/service/AiProcessingService.kt","app/src/main/java/com/haizhan/ime/service/ContextCollector.kt","app/src/main/java/com/haizhan/ime/service/DataSyncService.kt","app/src/main/java/com/haizhan/ime/service/HaizhanInputMethodService.kt","app/src/main/java/com/haizhan/ime/service/InputTypeAnalysis.kt","app/src/main/java/com/haizhan/ime/service/KeyboardContentView.kt","app/src/main/java/com/haizhan/ime/service/OcrCaptureService.kt","app/src/main/java/com/haizhan/ime/service/VoiceInputDelegate.kt","app/src/main/java/com/haizhan/ime/session/model/Session.kt","app/src/main/java/com/haizhan/ime/session/service/SessionService.kt","app/src/main/java/com/haizhan/ime/session/ui/MessageCenterScreen.kt","app/src/main/java/com/haizhan/ime/session/ui/SessionCard.kt","app/src/main/java/com/haizhan/ime/session/ui/SessionListScreen.kt","app/src/main/java/com/haizhan/ime/stability/AnrWatchdog.kt","app/src/main/java/com/haizhan/ime/stability/CrashHandler.kt","app/src/main/java/com/haizhan/ime/stability/MemoryLeakDetector.kt","app/src/main/java/com/haizhan/ime/stability/StabilityManager.kt","app/src/main/java/com/haizhan/ime/statistics/model/Statistics.kt","app/src/main/java/com/haizhan/ime/statistics/ui/ChartComponents.kt","app/src/main/java/com/haizhan/ime/statistics/ui/StatisticsScreen.kt","app/src/main/java/com/haizhan/ime/subscription/model/Subscription.kt","app/src/main/java/com/haizhan/ime/subscription/service/SubscriptionService.kt","app/src/main/java/com/haizhan/ime/subscription/ui/SubscriptionScreen.kt","app/src/main/java/com/haizhan/ime/sync/ContactSyncTaskAdapter.kt","app/src/main/java/com/haizhan/ime/sync/KnowledgeSyncTaskAdapter.kt","app/src/main/java/com/haizhan/ime/sync/SyncContracts.kt","app/src/main/java/com/haizhan/ime/sync/SyncCoordinator.kt","app/src/main/java/com/haizhan/ime/sync/SyncScheduler.kt","app/src/main/java/com/haizhan/ime/team/model/Team.kt","app/src/main/java/com/haizhan/ime/team/service/TeamService.kt","app/src/main/java/com/haizhan/ime/team/ui/TeamScreen.kt","app/src/main/java/com/haizhan/ime/template/data/B2BTemplates.kt","app/src/main/java/com/haizhan/ime/template/data/ClosingTemplates.kt","app/src/main/java/com/haizhan/ime/template/data/CoreSalesTemplates.kt","app/src/main/java/com/haizhan/ime/template/data/DailyTemplates.kt","app/src/main/java/com/haizhan/ime/template/data/DefaultTemplates.kt","app/src/main/java/com/haizhan/ime/template/data/FollowUpTemplates.kt","app/src/main/java/com/haizhan/ime/template/data/QuickPhraseDefaults.kt","app/src/main/java/com/haizhan/ime/template/data/SeasonalTemplates.kt","app/src/main/java/com/haizhan/ime/template/data/TemplateDatabase.kt","app/src/main/java/com/haizhan/ime/template/data/TemplateImporter.kt","app/src/main/java/com/haizhan/ime/template/data/TemplateRepository.kt","app/src/main/java/com/haizhan/ime/template/di/TemplateModule.kt","app/src/main/java/com/haizhan/ime/template/model/Template.kt","app/src/main/java/com/haizhan/ime/template/service/TemplateService.kt","app/src/main/java/com/haizhan/ime/template/ui/FolderManagementDialog.kt","app/src/main/java/com/haizhan/ime/template/ui/TemplateListScreen.kt","app/src/main/java/com/haizhan/ime/template/ui/TemplateViewModel.kt","app/src/main/java/com/haizhan/ime/ui/MainActivity.kt","app/src/main/java/com/haizhan/ime/ui/management/DictionaryImportActivity.kt","app/src/main/java/com/haizhan/ime/ui/management/DictionaryImportScreen.kt","app/src/main/java/com/haizhan/ime/ui/management/DictionaryImportViewModel.kt","app/src/main/java/com/haizhan/ime/ui/management/DictionaryScreen.kt","app/src/main/java/com/haizhan/ime/ui/management/ManagementActivity.kt","app/src/main/java/com/haizhan/ime/ui/management/ManagementViewModel.kt","app/src/main/java/com/haizhan/ime/ui/management/PermissionScreen.kt","app/src/main/java/com/haizhan/ime/ui/management/SettingsScreen.kt","app/src/main/java/com/haizhan/ime/ui/permission/ScreenshotPermissionActivity.kt","app/src/main/java/com/haizhan/ime/ui/settings/ImeSettingsActivity.kt","app/src/main/java/com/haizhan/ime/ui/settings/SettingsViewModel.kt","app/src/main/java/com/haizhan/ime/ui/theme/Theme.kt","app/src/main/java/com/haizhan/ime/ui/theme/Type.kt","app/src/main/java/com/haizhan/ime/ux/AccessibilityHelper.kt","app/src/main/java/com/haizhan/ime/ux/AnimationUtils.kt","app/src/main/java/com/haizhan/ime/ux/ErrorHandler.kt","app/src/main/java/com/haizhan/ime/ux/OnboardingScreen.kt","app/src/main/java/com/haizhan/ime/ux/StartupOptimizer.kt","app/src/main/java/com/haizhan/ime/voice/service/VoiceService.kt","app/src/main/java/com/haizhan/ime/voice/ui/VoiceInputScreen.kt","app/src/main/res/drawable/ic_launcher_background.xml","app/src/main/res/drawable/ic_launcher_foreground.xml","app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml","app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml","app/src/main/res/values-night/colors.xml","app/src/main/res/values/colors.xml","app/src/main/res/values/strings.xml","app/src/main/res/values/themes.xml","app/src/main/res/xml/backup_rules.xml","app/src/main/res/xml/data_extraction_rules.xml","app/src/main/res/xml/file_paths.xml","app/src/main/res/xml/method.xml","app/src/main/res/xml/network_security_config.xml","app/src/test/java/com/haizhan/ime/ExampleUnitTest.kt","app/src/test/java/com/haizhan/ime/app/service/NotificationServiceTest.kt","app/src/test/java/com/haizhan/ime/app/service/SearchServiceTest.kt","app/src/test/java/com/haizhan/ime/app/service/SessionServiceTest.kt","app/src/test/java/com/haizhan/ime/app/service/SyncServiceTest.kt","app/src/test/java/com/haizhan/ime/app/service/WebSocketServiceTest.kt","app/src/test/java/com/haizhan/ime/benchmark/PerformanceBenchmarkTest.kt","app/src/test/java/com/haizhan/ime/security/EncryptionManagerTest.kt","app/src/test/java/com/haizhan/ime/security/PrivacyComplianceManagerTest.kt","app/src/test/java/com/haizhan/ime/security/SecurityAuditorTest.kt","app/src/test/java/com/haizhan/ime/service/HaizhanInputMethodServiceTest.kt","app/src/test/java/com/haizhan/ime/services/AiProcessingServiceTest.kt","app/src/test/java/com/haizhan/ime/services/NoteServiceTest.kt","app/src/test/java/com/haizhan/ime/services/OcrCaptureServiceTest.kt","app/src/test/java/com/haizhan/ime/services/SubscriptionServiceTest.kt","app/src/test/java/com/haizhan/ime/services/TeamServiceTest.kt","app/src/test/java/com/haizhan/ime/services/TemplateServiceTest.kt","app/src/test/java/com/haizhan/ime/services/VoiceServiceTest.kt","app/src/test/java/com/haizhan/ime/ui/management/ManagementViewModelTest.kt","app/src/test/java/com/haizhan/ime/ui/settings/SettingsViewModelTest.kt","app/src/test/java/com/haizhan/ime/ux/ErrorHandlerTest.kt","app/src/test/java/com/haizhan/ime/ux/StartupOptimizerTest.kt","app/src/test/java/com/haizhan/ime/viewmodel/DictionaryImportViewModelTest.kt","app/src/test/java/com/haizhan/ime/viewmodel/TemplateViewModelTest.kt","build.gradle.kts","common/build.gradle.kts","common/consumer-rules.pro","common/proguard-rules.pro","common/src/main/AndroidManifest.xml","common/src/main/java/com/haizhan/ime/common/ext/ContextExt.kt","common/src/main/java/com/haizhan/ime/common/ext/FlowExt.kt","common/src/main/java/com/haizhan/ime/common/ext/StringExt.kt","common/src/main/java/com/haizhan/ime/common/performance/ImePerformanceTracker.kt","common/src/main/java/com/haizhan/ime/common/theme/DesignTokens.kt","common/src/main/java/com/haizhan/ime/common/theme/KeyboardTheme.kt","common/src/main/java/com/haizhan/ime/common/util/DeviceUtils.kt","common/src/main/java/com/haizhan/ime/common/util/Logger.kt","common/src/main/java/com/haizhan/ime/common/util/LruCache.kt","common/src/main/java/com/haizhan/ime/common/util/MemoryMonitor.kt","common/src/test/java/com/haizhan/ime/common/StringExtTest.kt","common/src/test/java/com/haizhan/ime/common/ext/ResultTest.kt","common/src/test/java/com/haizhan/ime/common/util/DateUtilsTest.kt","common/src/test/java/com/haizhan/ime/common/util/LoggerTest.kt","common/src/test/java/com/haizhan/ime/common/util/MemoryStatsTest.kt","common/src/test/java/com/haizhan/ime/common/util/PinyinUtilsTest.kt","common/src/test/java/com/haizhan/ime/common/util/TextUtilsTest.kt","config/detekt/detekt.yml","data/build.gradle.kts","data/consumer-rules.pro","data/dictionaries/dictionary.config.json","data/dictionaries/fallback-words.txt","data/dictionaries/sensitive-words.txt","data/dictionaries/system/char-single.txt","data/dictionaries/system/core-char.txt","data/dictionaries/system/core-phrase.txt","data/dictionaries/system/core-word2.txt","data/dictionaries/system/core-word3.txt","data/dictionaries/system/core-word4.txt","data/dictionaries/system/idiom.txt","data/dictionaries/system/name-place.txt","data/dictionaries/system/word-common.txt","data/proguard-rules.pro","data/schemas/com.haizhan.ime.data.local.database.HaizhanDatabase/1.json","data/schemas/com.haizhan.ime.data.local.database.HaizhanDatabase/2.json","data/schemas/com.haizhan.ime.data.local.database.HaizhanDatabase/3.json","data/schemas/com.haizhan.ime.data.local.database.HaizhanDatabase/4.json","data/src/main/AndroidManifest.xml","data/src/main/java/com/haizhan/ime/data/auth/AuthInterceptor.kt","data/src/main/java/com/haizhan/ime/data/auth/AuthManager.kt","data/src/main/java/com/haizhan/ime/data/di/DataModule.kt","data/src/main/java/com/haizhan/ime/data/di/DatabaseModule.kt","data/src/main/java/com/haizhan/ime/data/di/NetworkModule.kt","data/src/main/java/com/haizhan/ime/data/di/RepositoryModule.kt","data/src/main/java/com/haizhan/ime/data/local/dao/ContactDao.kt","data/src/main/java/com/haizhan/ime/data/local/dao/KnowledgeDao.kt","data/src/main/java/com/haizhan/ime/data/local/dao/MessageDao.kt","data/src/main/java/com/haizhan/ime/data/local/dao/NoteDao.kt","data/src/main/java/com/haizhan/ime/data/local/dao/SearchDao.kt","data/src/main/java/com/haizhan/ime/data/local/dao/UserDictDao.kt","data/src/main/java/com/haizhan/ime/data/local/database/Converters.kt","data/src/main/java/com/haizhan/ime/data/local/database/HaizhanDatabase.kt","data/src/main/java/com/haizhan/ime/data/local/database/SecureDatabaseFactory.kt","data/src/main/java/com/haizhan/ime/data/local/entity/ContactEntity.kt","data/src/main/java/com/haizhan/ime/data/local/entity/KnowledgeEntity.kt","data/src/main/java/com/haizhan/ime/data/local/entity/MessageEntity.kt","data/src/main/java/com/haizhan/ime/data/local/entity/NoteEntity.kt","data/src/main/java/com/haizhan/ime/data/local/entity/SearchEntity.kt","data/src/main/java/com/haizhan/ime/data/local/entity/UserDictEntity.kt","data/src/main/java/com/haizhan/ime/data/remote/adapter/FlexibleTimestampAdapter.kt","data/src/main/java/com/haizhan/ime/data/remote/aliyun/AliyunSearchClient.kt","data/src/main/java/com/haizhan/ime/data/remote/aliyun/AliyunSearchConfig.kt","data/src/main/java/com/haizhan/ime/data/remote/aliyun/AliyunSearchConfigProvider.kt","data/src/main/java/com/haizhan/ime/data/remote/api/AuthApi.kt","data/src/main/java/com/haizhan/ime/data/remote/api/ContactApi.kt","data/src/main/java/com/haizhan/ime/data/remote/api/HaizhanApi.kt","data/src/main/java/com/haizhan/ime/data/remote/api/PinyinApi.kt","data/src/main/java/com/haizhan/ime/data/remote/api/RagSearchApi.kt","data/src/main/java/com/haizhan/ime/data/remote/api/ReplyApi.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/AiDto.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/AuthDto.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/CommonDto.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/ContactDto.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/KnowledgeDto.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/MemoryDto.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/MessageDto.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/NoteDto.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/ProfileDto.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/RagSearchDto.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/SearchDto.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/TeamDto.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/WeatherDto.kt","data/src/main/java/com/haizhan/ime/data/repository/ContactRepository.kt","data/src/main/java/com/haizhan/ime/data/repository/KnowledgeRepository.kt","data/src/main/java/com/haizhan/ime/data/repository/MessageRepository.kt","data/src/main/java/com/haizhan/ime/data/repository/RagSearchRepository.kt","data/src/main/java/com/haizhan/ime/data/repository/SettingsRepository.kt","data/src/main/java/com/haizhan/ime/data/repository/mapper/ContactMapper.kt","data/src/main/java/com/haizhan/ime/data/repository/mapper/KnowledgeMapper.kt","data/src/main/java/com/haizhan/ime/data/repository/mapper/MessageMapper.kt","data/src/main/java/com/haizhan/ime/data/repository/model/Contact.kt","data/src/main/java/com/haizhan/ime/data/repository/model/Knowledge.kt","data/src/main/java/com/haizhan/ime/data/repository/model/Message.kt","data/src/test/java/com/haizhan/ime/data/auth/AuthInterceptorTest.kt","data/src/test/java/com/haizhan/ime/data/auth/AuthManagerTest.kt","data/src/test/java/com/haizhan/ime/data/auth/AuthTypesTest.kt","data/src/test/java/com/haizhan/ime/data/local/dao/ContactDaoTest.kt","data/src/test/java/com/haizhan/ime/data/local/dao/KnowledgeDaoTest.kt","data/src/test/java/com/haizhan/ime/data/local/dao/MessageDaoTest.kt","data/src/test/java/com/haizhan/ime/data/local/dao/NoteDaoTest.kt","data/src/test/java/com/haizhan/ime/data/local/dao/SearchDaoTest.kt","data/src/test/java/com/haizhan/ime/data/local/dao/UserDictDaoTest.kt","data/src/test/java/com/haizhan/ime/data/local/dao/UserPreferencesDaoTest.kt","data/src/test/java/com/haizhan/ime/data/remote/api/HaizhanApiTest.kt","data/src/test/java/com/haizhan/ime/data/remote/dto/ContactDtoTest.kt","data/src/test/java/com/haizhan/ime/data/repository/ContactRepositoryTest.kt","data/src/test/java/com/haizhan/ime/data/repository/KnowledgeRepositoryTest.kt","data/src/test/java/com/haizhan/ime/data/repository/MessageRepositoryTest.kt","data/src/test/java/com/haizhan/ime/data/repository/SettingsRepositoryTest.kt","data/src/test/java/com/haizhan/ime/data/repository/mapper/ContactMapperTest.kt","data/src/test/java/com/haizhan/ime/data/repository/mapper/KnowledgeMapperTest.kt","data/src/test/java/com/haizhan/ime/data/repository/mapper/MessageMapperTest.kt","designs/exports/CLAUDE_CODE_DESIGN_GUIDE.md","designs/exports/DESIGN_MANIFEST.md","designs/exports/svg/Frame.svg","designs/exports/svg/P2-关于.svg","designs/exports/svg/P2-协议条款.svg","designs/exports/svg/P2-帮助中心.svg","designs/exports/svg/P2-意见反馈.svg","designs/exports/svg/P2-版本更新.svg","designs/exports/svg/__设计系统_-_组件库.svg","designs/exports/svg/功能面板_-_OCR识别.svg","designs/exports/svg/功能面板_-_历史.svg","designs/exports/svg/功能面板_-_团队.svg","designs/exports/svg/功能面板_-_知识库.svg","designs/exports/svg/功能面板_-_笔记.svg","designs/exports/svg/功能面板_-_联系人.svg","designs/exports/svg/嗨赞AI助手_-_AI回复选择.svg","designs/exports/svg/嗨赞AI助手_-_OCR结果确认.svg","designs/exports/svg/嗨赞AI助手_-_个人中心.svg","designs/exports/svg/嗨赞AI助手_-_主应用首页.svg","designs/exports/svg/嗨赞AI助手_-_主键盘界面.svg","designs/exports/svg/嗨赞AI助手_-_主键盘界面__深色_.svg","designs/exports/svg/嗨赞AI助手_-_交互式笔记.svg","designs/exports/svg/嗨赞AI助手_-_会员订阅.svg","designs/exports/svg/嗨赞AI助手_-_会话列表.svg","designs/exports/svg/嗨赞AI助手_-_单聊IM.svg","designs/exports/svg/嗨赞AI助手_-_历史记录页面.svg","designs/exports/svg/嗨赞AI助手_-_引导页1.svg","designs/exports/svg/嗨赞AI助手_-_引导页2.svg","designs/exports/svg/嗨赞AI助手_-_引导页3.svg","designs/exports/svg/嗨赞AI助手_-_忘记密码.svg","designs/exports/svg/嗨赞AI助手_-_我的页面.svg","designs/exports/svg/嗨赞AI助手_-_搜索.svg","designs/exports/svg/嗨赞AI助手_-_数据统计.svg","designs/exports/svg/嗨赞AI助手_-_新建联系人.svg","designs/exports/svg/嗨赞AI助手_-_注册页面.svg","designs/exports/svg/嗨赞AI助手_-_消息中心.svg","designs/exports/svg/嗨赞AI助手_-_登录页面.svg","designs/exports/svg/嗨赞AI助手_-_知识库列表.svg","designs/exports/svg/嗨赞AI助手_-_知识库详情.svg","designs/exports/svg/嗨赞AI助手_-_编辑个人信息.svg","designs/exports/svg/嗨赞AI助手_-_群聊IM.svg","designs/exports/svg/嗨赞AI助手_-_联系人列表.svg","designs/exports/svg/嗨赞AI助手_-_联系人详情.svg","designs/exports/svg/嗨赞AI助手_-_设置.svg","designs/exports/svg/嗨赞AI助手_-_设置页面.svg","designs/exports/svg/嗨赞AI助手_-_话术模板.svg","designs/exports/svg/嗨赞AI助手_-_话术模板详情.svg","designs/exports/svg/微交互规范文档.svg","designs/exports/svg/组件_-_悬浮球状态.svg","designs/exports/svg/组件_-_拼音候选词展开.svg","designs/exports/svg/组件_-_空状态.svg","designs/exports/svg/组件_-_语音输入状态.svg","designs/exports/svg/组件_-_错误状态.svg","designs/mobile-keyboard-design.md","designs/specs/COMPONENT_SPEC.md","designs/specs/KEYBOARD_DESIGN_SPEC.md","designs/specs/README.md","designs/specs/design-tokens.json","designs/templates/android/DesignTokens.kt","designs/templates/android/KeyboardTheme.kt","designs/templates/ios/DesignTokens.swift","designs/templates/ios/KeyboardTheme.swift","designs/嗨赞输入法.pen","docs/ANDROID_DEVELOPMENT.md","docs/API.md","docs/ARCHITECTURE.md","docs/BACKEND_API_REQUIREMENTS.md","docs/BACKEND_DESIGN.md","docs/CI_CD_PIPELINE.md","docs/CODING_STANDARDS.md","docs/COMPLETE_FEATURE_SPEC.md","docs/DATABASE.md","docs/DEPLOYMENT.md","docs/DESIGN_TO_DEV_SPEC.md","docs/DEVELOPMENT_GUIDE.md","docs/DEVELOPMENT_PLAN.md","docs/DOCS_SYNC.md","docs/ERROR_HANDLING.md","docs/FEATURE_ANALYSIS.md","docs/FLUTTER_DEVELOPMENT.md","docs/FRONTEND_DEV_REQUIREMENTS.md","docs/HANDWRITING_MODEL_UPGRADE.md","docs/IOS_DEVELOPMENT.md","docs/KMP_DEVELOPMENT.md","docs/LOGGING_STANDARDS.md","docs/MILESTONES.md","docs/MODULE_ANALYSIS.md","docs/MODULE_LIST.md","docs/PERFORMANCE_OPTIMIZATION.md","docs/PNPM_MIGRATION_NOTICE.md","docs/PRD.md","docs/PRIVACY_POLICY.md","docs/PRODUCT_ARCHITECTURE.md","docs/Phase_11_12_Final_Report.md","docs/RELEASE_CHECKLIST.md","docs/SECURITY_AUDIT.md","docs/SECURITY_GUIDELINES.md","docs/STORE_LISTING.md","docs/SYSTEM_ARCHITECTURE.md","docs/TASKS.md","docs/TECH_STACK.md","docs/TESTING_STRATEGY.md","docs/USER_MANUAL.md","docs/VOICE_API_DOCUMENTATION.md","docs/VOICE_MODULE_MIGRATION.md","docs/openapi.json","docs/skills/anthropic-official/.claude-plugin/marketplace.json","docs/skills/anthropic-official/.gitignore","docs/skills/anthropic-official/README.md","docs/skills/anthropic-official/THIRD_PARTY_NOTICES.md","docs/skills/anthropic-official/skills/algorithmic-art/LICENSE.txt","docs/skills/anthropic-official/skills/algorithmic-art/SKILL.md","docs/skills/anthropic-official/skills/algorithmic-art/templates/generator_template.js","docs/skills/anthropic-official/skills/algorithmic-art/templates/viewer.html","docs/skills/anthropic-official/skills/brand-guidelines/LICENSE.txt","docs/skills/anthropic-official/skills/brand-guidelines/SKILL.md","docs/skills/anthropic-official/skills/canvas-design/LICENSE.txt","docs/skills/anthropic-official/skills/canvas-design/SKILL.md","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/DMMono-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Gloock-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Italiana-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Jura-Light.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Jura-Medium.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Jura-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Lora-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Lora-Italic.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Lora-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Lora-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Outfit-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Tektur-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf","docs/skills/anthropic-official/skills/doc-coauthoring/SKILL.md","docs/skills/anthropic-official/skills/docx/LICENSE.txt","docs/skills/anthropic-official/skills/docx/SKILL.md","docs/skills/anthropic-official/skills/docx/docx-js.md","docs/skills/anthropic-official/skills/docx/ooxml.md","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/mce/mc.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd","docs/skills/anthropic-official/skills/docx/ooxml/scripts/pack.py","docs/skills/anthropic-official/skills/docx/ooxml/scripts/unpack.py","docs/skills/anthropic-official/skills/docx/ooxml/scripts/validate.py","docs/skills/anthropic-official/skills/docx/ooxml/scripts/validation/__init__.py","docs/skills/anthropic-official/skills/docx/ooxml/scripts/validation/base.py","docs/skills/anthropic-official/skills/docx/ooxml/scripts/validation/docx.py","docs/skills/anthropic-official/skills/docx/ooxml/scripts/validation/pptx.py","docs/skills/anthropic-official/skills/docx/ooxml/scripts/validation/redlining.py","docs/skills/anthropic-official/skills/docx/scripts/__init__.py","docs/skills/anthropic-official/skills/docx/scripts/document.py","docs/skills/anthropic-official/skills/docx/scripts/templates/comments.xml","docs/skills/anthropic-official/skills/docx/scripts/templates/commentsExtended.xml","docs/skills/anthropic-official/skills/docx/scripts/templates/commentsExtensible.xml","docs/skills/anthropic-official/skills/docx/scripts/templates/commentsIds.xml","docs/skills/anthropic-official/skills/docx/scripts/templates/people.xml","docs/skills/anthropic-official/skills/docx/scripts/utilities.py","docs/skills/anthropic-official/skills/frontend-design/LICENSE.txt","docs/skills/anthropic-official/skills/frontend-design/SKILL.md","docs/skills/anthropic-official/skills/internal-comms/LICENSE.txt","docs/skills/anthropic-official/skills/internal-comms/SKILL.md","docs/skills/anthropic-official/skills/internal-comms/examples/3p-updates.md","docs/skills/anthropic-official/skills/internal-comms/examples/company-newsletter.md","docs/skills/anthropic-official/skills/internal-comms/examples/faq-answers.md","docs/skills/anthropic-official/skills/internal-comms/examples/general-comms.md","docs/skills/anthropic-official/skills/mcp-builder/LICENSE.txt","docs/skills/anthropic-official/skills/mcp-builder/SKILL.md","docs/skills/anthropic-official/skills/mcp-builder/reference/evaluation.md","docs/skills/anthropic-official/skills/mcp-builder/reference/mcp_best_practices.md","docs/skills/anthropic-official/skills/mcp-builder/reference/node_mcp_server.md","docs/skills/anthropic-official/skills/mcp-builder/reference/python_mcp_server.md","docs/skills/anthropic-official/skills/mcp-builder/scripts/connections.py","docs/skills/anthropic-official/skills/mcp-builder/scripts/evaluation.py","docs/skills/anthropic-official/skills/mcp-builder/scripts/example_evaluation.xml","docs/skills/anthropic-official/skills/mcp-builder/scripts/requirements.txt","docs/skills/anthropic-official/skills/pdf/LICENSE.txt","docs/skills/anthropic-official/skills/pdf/SKILL.md","docs/skills/anthropic-official/skills/pdf/forms.md","docs/skills/anthropic-official/skills/pdf/reference.md","docs/skills/anthropic-official/skills/pdf/scripts/check_bounding_boxes.py","docs/skills/anthropic-official/skills/pdf/scripts/check_bounding_boxes_test.py","docs/skills/anthropic-official/skills/pdf/scripts/check_fillable_fields.py","docs/skills/anthropic-official/skills/pdf/scripts/convert_pdf_to_images.py","docs/skills/anthropic-official/skills/pdf/scripts/create_validation_image.py","docs/skills/anthropic-official/skills/pdf/scripts/extract_form_field_info.py","docs/skills/anthropic-official/skills/pdf/scripts/fill_fillable_fields.py","docs/skills/anthropic-official/skills/pdf/scripts/fill_pdf_form_with_annotations.py","docs/skills/anthropic-official/skills/pptx/LICENSE.txt","docs/skills/anthropic-official/skills/pptx/SKILL.md","docs/skills/anthropic-official/skills/pptx/html2pptx.md","docs/skills/anthropic-official/skills/pptx/ooxml.md","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/mce/mc.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/scripts/pack.py","docs/skills/anthropic-official/skills/pptx/ooxml/scripts/unpack.py","docs/skills/anthropic-official/skills/pptx/ooxml/scripts/validate.py","docs/skills/anthropic-official/skills/pptx/ooxml/scripts/validation/__init__.py","docs/skills/anthropic-official/skills/pptx/ooxml/scripts/validation/base.py","docs/skills/anthropic-official/skills/pptx/ooxml/scripts/validation/docx.py","docs/skills/anthropic-official/skills/pptx/ooxml/scripts/validation/pptx.py","docs/skills/anthropic-official/skills/pptx/ooxml/scripts/validation/redlining.py","docs/skills/anthropic-official/skills/pptx/scripts/html2pptx.js","docs/skills/anthropic-official/skills/pptx/scripts/inventory.py","docs/skills/anthropic-official/skills/pptx/scripts/rearrange.py","docs/skills/anthropic-official/skills/pptx/scripts/replace.py","docs/skills/anthropic-official/skills/pptx/scripts/thumbnail.py","docs/skills/anthropic-official/skills/skill-creator/LICENSE.txt","docs/skills/anthropic-official/skills/skill-creator/SKILL.md","docs/skills/anthropic-official/skills/skill-creator/references/output-patterns.md","docs/skills/anthropic-official/skills/skill-creator/references/workflows.md","docs/skills/anthropic-official/skills/skill-creator/scripts/init_skill.py","docs/skills/anthropic-official/skills/skill-creator/scripts/package_skill.py","docs/skills/anthropic-official/skills/skill-creator/scripts/quick_validate.py","docs/skills/anthropic-official/skills/slack-gif-creator/LICENSE.txt","docs/skills/anthropic-official/skills/slack-gif-creator/SKILL.md","docs/skills/anthropic-official/skills/slack-gif-creator/core/easing.py","docs/skills/anthropic-official/skills/slack-gif-creator/core/frame_composer.py","docs/skills/anthropic-official/skills/slack-gif-creator/core/gif_builder.py","docs/skills/anthropic-official/skills/slack-gif-creator/core/validators.py","docs/skills/anthropic-official/skills/slack-gif-creator/requirements.txt","docs/skills/anthropic-official/skills/theme-factory/LICENSE.txt","docs/skills/anthropic-official/skills/theme-factory/SKILL.md","docs/skills/anthropic-official/skills/theme-factory/theme-showcase.pdf","docs/skills/anthropic-official/skills/theme-factory/themes/arctic-frost.md","docs/skills/anthropic-official/skills/theme-factory/themes/botanical-garden.md","docs/skills/anthropic-official/skills/theme-factory/themes/desert-rose.md","docs/skills/anthropic-official/skills/theme-factory/themes/forest-canopy.md","docs/skills/anthropic-official/skills/theme-factory/themes/golden-hour.md","docs/skills/anthropic-official/skills/theme-factory/themes/midnight-galaxy.md","docs/skills/anthropic-official/skills/theme-factory/themes/modern-minimalist.md","docs/skills/anthropic-official/skills/theme-factory/themes/ocean-depths.md","docs/skills/anthropic-official/skills/theme-factory/themes/sunset-boulevard.md","docs/skills/anthropic-official/skills/theme-factory/themes/tech-innovation.md","docs/skills/anthropic-official/skills/web-artifacts-builder/LICENSE.txt","docs/skills/anthropic-official/skills/web-artifacts-builder/SKILL.md","docs/skills/anthropic-official/skills/web-artifacts-builder/scripts/bundle-artifact.sh","docs/skills/anthropic-official/skills/web-artifacts-builder/scripts/init-artifact.sh","docs/skills/anthropic-official/skills/web-artifacts-builder/scripts/shadcn-components.tar.gz","docs/skills/anthropic-official/skills/webapp-testing/LICENSE.txt","docs/skills/anthropic-official/skills/webapp-testing/SKILL.md","docs/skills/anthropic-official/skills/webapp-testing/examples/console_logging.py","docs/skills/anthropic-official/skills/webapp-testing/examples/element_discovery.py","docs/skills/anthropic-official/skills/webapp-testing/examples/static_html_automation.py","docs/skills/anthropic-official/skills/webapp-testing/scripts/with_server.py","docs/skills/anthropic-official/skills/xlsx/LICENSE.txt","docs/skills/anthropic-official/skills/xlsx/SKILL.md","docs/skills/anthropic-official/skills/xlsx/recalc.py","docs/skills/anthropic-official/spec/agent-skills-spec.md","docs/skills/anthropic-official/template/SKILL.md","docs/skills/awesome-skills/.gitignore","docs/skills/awesome-skills/CONTRIBUTING.md","docs/skills/awesome-skills/README.md","docs/skills/backend-patterns/SKILL.md","docs/skills/clickhouse-io/SKILL.md","docs/skills/coding-standards/SKILL.md","docs/skills/continuous-learning/SKILL.md","docs/skills/continuous-learning/config.json","docs/skills/continuous-learning/evaluate-session.sh","docs/skills/daymade-skills/.claude-plugin/marketplace.json","docs/skills/daymade-skills/.github/ISSUE_TEMPLATE/bug_report.md","docs/skills/daymade-skills/.github/ISSUE_TEMPLATE/feature_request.md","docs/skills/daymade-skills/.github/PULL_REQUEST_TEMPLATE.md","docs/skills/daymade-skills/.gitignore","docs/skills/daymade-skills/AGENTS.md","docs/skills/daymade-skills/CHANGELOG.md","docs/skills/daymade-skills/CLAUDE.md","docs/skills/daymade-skills/CONTRIBUTING.md","docs/skills/daymade-skills/LICENSE","docs/skills/daymade-skills/QUICKSTART.md","docs/skills/daymade-skills/QUICKSTART.zh-CN.md","docs/skills/daymade-skills/README.md","docs/skills/daymade-skills/README.zh-CN.md","docs/skills/daymade-skills/claude-code-history-files-finder/.INTEGRATION_SUMMARY.md","docs/skills/daymade-skills/claude-code-history-files-finder/.security-scan-passed","docs/skills/daymade-skills/claude-code-history-files-finder/SKILL.md","docs/skills/daymade-skills/claude-code-history-files-finder/references/session_file_format.md","docs/skills/daymade-skills/claude-code-history-files-finder/references/workflow_examples.md","docs/skills/daymade-skills/claude-code-history-files-finder/scripts/analyze_sessions.py","docs/skills/daymade-skills/claude-code-history-files-finder/scripts/recover_content.py","docs/skills/daymade-skills/claude-md-progressive-disclosurer/.security-scan-passed","docs/skills/daymade-skills/claude-md-progressive-disclosurer/SKILL.md","docs/skills/daymade-skills/claude-md-progressive-disclosurer/references/progressive_disclosure_principles.md","docs/skills/daymade-skills/cli-demo-generator/SKILL.md","docs/skills/daymade-skills/cli-demo-generator/assets/examples/batch-config.yaml","docs/skills/daymade-skills/cli-demo-generator/assets/templates/basic.tape","docs/skills/daymade-skills/cli-demo-generator/assets/templates/interactive.tape","docs/skills/daymade-skills/cli-demo-generator/references/best_practices.md","docs/skills/daymade-skills/cli-demo-generator/references/vhs_syntax.md","docs/skills/daymade-skills/cli-demo-generator/scripts/auto_generate_demo.py","docs/skills/daymade-skills/cli-demo-generator/scripts/batch_generate.py","docs/skills/daymade-skills/cli-demo-generator/scripts/record_interactive.sh","docs/skills/daymade-skills/cloudflare-troubleshooting/SKILL.md","docs/skills/daymade-skills/cloudflare-troubleshooting/references/api_overview.md","docs/skills/daymade-skills/cloudflare-troubleshooting/references/common_issues.md","docs/skills/daymade-skills/cloudflare-troubleshooting/references/ssl_modes.md","docs/skills/daymade-skills/cloudflare-troubleshooting/scripts/check_cloudflare_config.py","docs/skills/daymade-skills/cloudflare-troubleshooting/scripts/fix_ssl_mode.py","docs/skills/daymade-skills/demos/README.md","docs/skills/daymade-skills/demos/cli-demo-generator/generate-demo.gif","docs/skills/daymade-skills/demos/cli-demo-generator/generate-demo.tape","docs/skills/daymade-skills/demos/generate_all_demos.sh","docs/skills/daymade-skills/demos/github-ops/create-pr.gif","docs/skills/daymade-skills/demos/github-ops/create-pr.tape","docs/skills/daymade-skills/demos/index.html","docs/skills/daymade-skills/demos/llm-icon-finder/find-icons.gif","docs/skills/daymade-skills/demos/llm-icon-finder/find-icons.tape","docs/skills/daymade-skills/demos/markdown-tools/convert-docs.gif","docs/skills/daymade-skills/demos/markdown-tools/convert-docs.tape","docs/skills/daymade-skills/demos/mermaid-tools/extract-diagrams.gif","docs/skills/daymade-skills/demos/mermaid-tools/extract-diagrams.tape","docs/skills/daymade-skills/demos/ppt-creator/create-presentation.gif","docs/skills/daymade-skills/demos/ppt-creator/create-presentation.tape","docs/skills/daymade-skills/demos/repomix-unmixer/extract-repo.gif","docs/skills/daymade-skills/demos/repomix-unmixer/extract-repo.tape","docs/skills/daymade-skills/demos/skill-creator/init-skill.gif","docs/skills/daymade-skills/demos/skill-creator/init-skill.tape","docs/skills/daymade-skills/demos/skill-creator/package-skill.gif","docs/skills/daymade-skills/demos/skill-creator/package-skill.tape","docs/skills/daymade-skills/demos/skill-creator/validate-skill.gif","docs/skills/daymade-skills/demos/skill-creator/validate-skill.tape","docs/skills/daymade-skills/demos/statusline-generator/customize-statusline.gif","docs/skills/daymade-skills/demos/statusline-generator/customize-statusline.tape","docs/skills/daymade-skills/demos/teams-channel-post-writer/write-post.gif","docs/skills/daymade-skills/demos/teams-channel-post-writer/write-post.tape","docs/skills/daymade-skills/demos/ui-designer/extract-design-system.gif","docs/skills/daymade-skills/demos/ui-designer/extract-design-system.tape","docs/skills/daymade-skills/demos/youtube-downloader/download-video.gif","docs/skills/daymade-skills/demos/youtube-downloader/download-video.tape","docs/skills/daymade-skills/docs-cleaner/.security-scan-passed","docs/skills/daymade-skills/docs-cleaner/SKILL.md","docs/skills/daymade-skills/docs-cleaner/references/value_analysis_template.md","docs/skills/daymade-skills/fact-checker/.security-scan-passed","docs/skills/daymade-skills/fact-checker/README.md","docs/skills/daymade-skills/fact-checker/SKILL.md","docs/skills/daymade-skills/github-contributor/.security-scan-passed","docs/skills/daymade-skills/github-contributor/SKILL.md","docs/skills/daymade-skills/github-contributor/references/communication_templates.md","docs/skills/daymade-skills/github-contributor/references/pr_checklist.md","docs/skills/daymade-skills/github-contributor/references/project_evaluation.md","docs/skills/daymade-skills/github-ops/SKILL.md","docs/skills/daymade-skills/github-ops/references/api_reference.md","docs/skills/daymade-skills/github-ops/references/best_practices.md","docs/skills/daymade-skills/github-ops/references/issue_operations.md","docs/skills/daymade-skills/github-ops/references/pr_operations.md","docs/skills/daymade-skills/github-ops/references/workflow_operations.md","docs/skills/daymade-skills/iOS-APP-developer/.security-scan-passed","docs/skills/daymade-skills/iOS-APP-developer/SKILL.md","docs/skills/daymade-skills/iOS-APP-developer/references/camera-avfoundation.md","docs/skills/daymade-skills/iOS-APP-developer/references/swiftui-compatibility.md","docs/skills/daymade-skills/iOS-APP-developer/references/testing-mainactor.md","docs/skills/daymade-skills/iOS-APP-developer/references/xcodegen-full.md","docs/skills/daymade-skills/llm-icon-finder/SKILL.md","docs/skills/daymade-skills/llm-icon-finder/references/developer-info.md","docs/skills/daymade-skills/llm-icon-finder/references/icons-list.md","docs/skills/daymade-skills/macos-cleaner/.security-scan-passed","docs/skills/daymade-skills/macos-cleaner/SKILL.md","docs/skills/daymade-skills/macos-cleaner/references/cleanup_targets.md","docs/skills/daymade-skills/macos-cleaner/references/mole_integration.md","docs/skills/daymade-skills/macos-cleaner/references/safety_rules.md","docs/skills/daymade-skills/macos-cleaner/scripts/analyze_caches.py","docs/skills/daymade-skills/macos-cleaner/scripts/analyze_dev_env.py","docs/skills/daymade-skills/macos-cleaner/scripts/analyze_large_files.py","docs/skills/daymade-skills/macos-cleaner/scripts/cleanup_report.py","docs/skills/daymade-skills/macos-cleaner/scripts/find_app_remnants.py","docs/skills/daymade-skills/macos-cleaner/scripts/safe_delete.py","docs/skills/daymade-skills/markdown-tools/SKILL.md","docs/skills/daymade-skills/markdown-tools/references/conversion-examples.md","docs/skills/daymade-skills/markdown-tools/scripts/convert_path.py","docs/skills/daymade-skills/markdown-tools/scripts/extract_pdf_images.py","docs/skills/daymade-skills/mermaid-tools/SKILL.md","docs/skills/daymade-skills/mermaid-tools/references/setup_and_troubleshooting.md","docs/skills/daymade-skills/mermaid-tools/scripts/extract-and-generate.sh","docs/skills/daymade-skills/mermaid-tools/scripts/extract_diagrams.py","docs/skills/daymade-skills/mermaid-tools/scripts/puppeteer-config.json","docs/skills/daymade-skills/pdf-creator/.security-scan-passed","docs/skills/daymade-skills/pdf-creator/SKILL.md","docs/skills/daymade-skills/pdf-creator/scripts/batch_convert.py","docs/skills/daymade-skills/pdf-creator/scripts/md_to_pdf.py","docs/skills/daymade-skills/ppt-creator/SKILL.md","docs/skills/daymade-skills/ppt-creator/references/CHECKLIST.md","docs/skills/daymade-skills/ppt-creator/references/EXAMPLES.md","docs/skills/daymade-skills/ppt-creator/references/INTAKE.md","docs/skills/daymade-skills/ppt-creator/references/ORCHESTRATION_DATA_CHARTS.md","docs/skills/daymade-skills/ppt-creator/references/ORCHESTRATION_OVERVIEW.md","docs/skills/daymade-skills/ppt-creator/references/ORCHESTRATION_PPTX.md","docs/skills/daymade-skills/ppt-creator/references/RUBRIC.md","docs/skills/daymade-skills/ppt-creator/references/STYLE-GUIDE.md","docs/skills/daymade-skills/ppt-creator/references/TEMPLATES.md","docs/skills/daymade-skills/ppt-creator/references/VIS-GUIDE.md","docs/skills/daymade-skills/ppt-creator/references/WORKFLOW.md","docs/skills/daymade-skills/ppt-creator/scripts/chartkit.py","docs/skills/daymade-skills/prompt-optimizer/.security-scan-passed","docs/skills/daymade-skills/prompt-optimizer/SKILL.md","docs/skills/daymade-skills/prompt-optimizer/references/advanced_techniques.md","docs/skills/daymade-skills/prompt-optimizer/references/domain_theories.md","docs/skills/daymade-skills/prompt-optimizer/references/ears_syntax.md","docs/skills/daymade-skills/prompt-optimizer/references/examples.md","docs/skills/daymade-skills/promptfoo-evaluation/.security-scan-passed","docs/skills/daymade-skills/promptfoo-evaluation/SKILL.md","docs/skills/daymade-skills/promptfoo-evaluation/references/promptfoo_api.md","docs/skills/daymade-skills/qa-expert/.security-scan-passed","docs/skills/daymade-skills/qa-expert/SKILL.md","docs/skills/daymade-skills/qa-expert/assets/templates/TEST-CASE-TEMPLATE.md","docs/skills/daymade-skills/qa-expert/references/day1_onboarding.md","docs/skills/daymade-skills/qa-expert/references/google_testing_standards.md","docs/skills/daymade-skills/qa-expert/references/ground_truth_principle.md","docs/skills/daymade-skills/qa-expert/references/llm_prompts_library.md","docs/skills/daymade-skills/qa-expert/references/master_qa_prompt.md","docs/skills/daymade-skills/qa-expert/scripts/calculate_metrics.py","docs/skills/daymade-skills/qa-expert/scripts/init_qa_project.py","docs/skills/daymade-skills/repomix-safe-mixer/SKILL.md","docs/skills/daymade-skills/repomix-safe-mixer/references/common_secrets.md","docs/skills/daymade-skills/repomix-safe-mixer/scripts/safe_pack.py","docs/skills/daymade-skills/repomix-safe-mixer/scripts/scan_secrets.py","docs/skills/daymade-skills/repomix-unmixer/README.md","docs/skills/daymade-skills/repomix-unmixer/SKILL.md","docs/skills/daymade-skills/repomix-unmixer/references/repomix-format.md","docs/skills/daymade-skills/repomix-unmixer/references/validation-workflow.md","docs/skills/daymade-skills/repomix-unmixer/scripts/unmix_repomix.py","docs/skills/daymade-skills/scripts/install.ps1","docs/skills/daymade-skills/scripts/install.sh","docs/skills/daymade-skills/skill-creator/.gitignore","docs/skills/daymade-skills/skill-creator/LICENSE.txt","docs/skills/daymade-skills/skill-creator/SKILL.md","docs/skills/daymade-skills/skill-creator/scripts/init_skill.py","docs/skills/daymade-skills/skill-creator/scripts/package_skill.py","docs/skills/daymade-skills/skill-creator/scripts/quick_validate.py","docs/skills/daymade-skills/skill-creator/scripts/security_scan.py","docs/skills/daymade-skills/skill-reviewer/.security-scan-passed","docs/skills/daymade-skills/skill-reviewer/SKILL.md","docs/skills/daymade-skills/skill-reviewer/references/evaluation_checklist.md","docs/skills/daymade-skills/skill-reviewer/references/marketplace_template.json","docs/skills/daymade-skills/skill-reviewer/references/pr_template.md","docs/skills/daymade-skills/skills-search/.security-scan-passed","docs/skills/daymade-skills/skills-search/SKILL.md","docs/skills/daymade-skills/statusline-generator/SKILL.md","docs/skills/daymade-skills/statusline-generator/references/ccusage_integration.md","docs/skills/daymade-skills/statusline-generator/references/color_codes.md","docs/skills/daymade-skills/statusline-generator/scripts/generate_statusline.sh","docs/skills/daymade-skills/statusline-generator/scripts/install_statusline.sh","docs/skills/daymade-skills/teams-channel-post-writer/SKILL.md","docs/skills/daymade-skills/teams-channel-post-writer/assets/post-template.md","docs/skills/daymade-skills/teams-channel-post-writer/references/writing-guidelines.md","docs/skills/daymade-skills/transcript-fixer/.gitignore","docs/skills/daymade-skills/transcript-fixer/SKILL.md","docs/skills/daymade-skills/transcript-fixer/references/architecture.md","docs/skills/daymade-skills/transcript-fixer/references/best_practices.md","docs/skills/daymade-skills/transcript-fixer/references/database_schema.md","docs/skills/daymade-skills/transcript-fixer/references/dictionary_guide.md","docs/skills/daymade-skills/transcript-fixer/references/file_formats.md","docs/skills/daymade-skills/transcript-fixer/references/glm_api_setup.md","docs/skills/daymade-skills/transcript-fixer/references/installation_setup.md","docs/skills/daymade-skills/transcript-fixer/references/iteration_workflow.md","docs/skills/daymade-skills/transcript-fixer/references/quick_reference.md","docs/skills/daymade-skills/transcript-fixer/references/script_parameters.md","docs/skills/daymade-skills/transcript-fixer/references/sql_queries.md","docs/skills/daymade-skills/transcript-fixer/references/team_collaboration.md","docs/skills/daymade-skills/transcript-fixer/references/troubleshooting.md","docs/skills/daymade-skills/transcript-fixer/references/workflow_guide.md","docs/skills/daymade-skills/transcript-fixer/requirements.txt","docs/skills/daymade-skills/transcript-fixer/scripts/__init__.py","docs/skills/daymade-skills/transcript-fixer/scripts/check_type_hints.py","docs/skills/daymade-skills/transcript-fixer/scripts/cli/__init__.py","docs/skills/daymade-skills/transcript-fixer/scripts/cli/argument_parser.py","docs/skills/daymade-skills/transcript-fixer/scripts/cli/commands.py","docs/skills/daymade-skills/transcript-fixer/scripts/core/__init__.py","docs/skills/daymade-skills/transcript-fixer/scripts/core/ai_processor.py","docs/skills/daymade-skills/transcript-fixer/scripts/core/ai_processor_async.py","docs/skills/daymade-skills/transcript-fixer/scripts/core/change_extractor.py","docs/skills/daymade-skills/transcript-fixer/scripts/core/connection_pool.py","docs/skills/daymade-skills/transcript-fixer/scripts/core/correction_repository.py","docs/skills/daymade-skills/transcript-fixer/scripts/core/correction_service.py","docs/skills/daymade-skills/transcript-fixer/scripts/core/dictionary_processor.py","docs/skills/daymade-skills/transcript-fixer/scripts/core/learning_engine.py","docs/skills/daymade-skills/transcript-fixer/scripts/core/schema.sql","docs/skills/daymade-skills/transcript-fixer/scripts/ensure_deps.py","docs/skills/daymade-skills/transcript-fixer/scripts/examples/bulk_import.py","docs/skills/daymade-skills/transcript-fixer/scripts/fix_transcript_enhanced.py","docs/skills/daymade-skills/transcript-fixer/scripts/fix_transcription.py","docs/skills/daymade-skills/transcript-fixer/scripts/generate_word_diff.py","docs/skills/daymade-skills/transcript-fixer/scripts/tests/__init__.py","docs/skills/daymade-skills/transcript-fixer/scripts/tests/test_audit_log_retention.py","docs/skills/daymade-skills/transcript-fixer/scripts/tests/test_connection_pool.py","docs/skills/daymade-skills/transcript-fixer/scripts/tests/test_correction_service.py","docs/skills/daymade-skills/transcript-fixer/scripts/tests/test_domain_validator.py","docs/skills/daymade-skills/transcript-fixer/scripts/tests/test_error_recovery.py","docs/skills/daymade-skills/transcript-fixer/scripts/tests/test_learning_engine.py","docs/skills/daymade-skills/transcript-fixer/scripts/tests/test_path_validator.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/__init__.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/audit_log_retention.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/concurrency_manager.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/config.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/database_migration.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/db_migrations_cli.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/diff_formats/__init__.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/diff_formats/change_extractor.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/diff_formats/html_format.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/diff_formats/inline_format.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/diff_formats/markdown_format.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/diff_formats/text_splitter.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/diff_formats/unified_format.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/diff_generator.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/domain_validator.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/health_check.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/logging_config.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/metrics.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/migrations.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/path_validator.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/rate_limiter.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/retry_logic.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/security.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/validation.py","docs/skills/daymade-skills/twitter-reader/.security-scan-passed","docs/skills/daymade-skills/twitter-reader/SKILL.md","docs/skills/daymade-skills/twitter-reader/scripts/fetch_tweet.py","docs/skills/daymade-skills/twitter-reader/scripts/fetch_tweets.sh","docs/skills/daymade-skills/ui-designer/SKILL.md","docs/skills/daymade-skills/ui-designer/assets/app-overview-generator.md","docs/skills/daymade-skills/ui-designer/assets/design-system.md","docs/skills/daymade-skills/ui-designer/assets/vibe-design-template.md","docs/skills/daymade-skills/video-comparer/.security-scan-passed","docs/skills/daymade-skills/video-comparer/README.md","docs/skills/daymade-skills/video-comparer/SKILL.md","docs/skills/daymade-skills/video-comparer/assets/template.html","docs/skills/daymade-skills/video-comparer/references/configuration.md","docs/skills/daymade-skills/video-comparer/references/ffmpeg_commands.md","docs/skills/daymade-skills/video-comparer/references/video_metrics.md","docs/skills/daymade-skills/video-comparer/scripts/compare.py","docs/skills/daymade-skills/youtube-downloader/.security-scan-passed","docs/skills/daymade-skills/youtube-downloader/SKILL.md","docs/skills/daymade-skills/youtube-downloader/references/po-token-setup.md","docs/skills/daymade-skills/youtube-downloader/scripts/download_video.py","docs/skills/eval-harness/SKILL.md","docs/skills/frontend-patterns/SKILL.md","docs/skills/haizhan-ime-development.md","docs/skills/hizan-official/.claude-plugin/marketplace.json","docs/skills/hizan-official/skills/arch/SKILL.md","docs/skills/hizan-official/skills/game/SKILL.md","docs/skills/hizan-official/skills/quality/SKILL.md","docs/skills/hizan-official/skills/work/SKILL.md","docs/skills/juhi/tool-usage.md","docs/skills/mhattingpete-skills/.claude-plugin/marketplace.json","docs/skills/mhattingpete-skills/.claude/install-gh.sh","docs/skills/mhattingpete-skills/.claude/settings.json","docs/skills/mhattingpete-skills/.gitignore","docs/skills/mhattingpete-skills/CHANGELOG.md","docs/skills/mhattingpete-skills/CLAUDE.md","docs/skills/mhattingpete-skills/CONTRIBUTING.md","docs/skills/mhattingpete-skills/LICENSE","docs/skills/mhattingpete-skills/README.md","docs/skills/mhattingpete-skills/assets/skill-loading.gif","docs/skills/mhattingpete-skills/code-operations-plugin/.claude-plugin/plugin.json","docs/skills/mhattingpete-skills/code-operations-plugin/README.md","docs/skills/mhattingpete-skills/code-operations-plugin/skills/code-execution/SKILL.md","docs/skills/mhattingpete-skills/code-operations-plugin/skills/code-execution/examples/bulk_refactor.py","docs/skills/mhattingpete-skills/code-operations-plugin/skills/code-execution/examples/codebase_audit.py","docs/skills/mhattingpete-skills/code-operations-plugin/skills/code-execution/examples/extract_functions.py","docs/skills/mhattingpete-skills/code-operations-plugin/skills/code-refactor/SKILL.md","docs/skills/mhattingpete-skills/code-operations-plugin/skills/code-transfer/SKILL.md","docs/skills/mhattingpete-skills/code-operations-plugin/skills/code-transfer/scripts/line_insert.py","docs/skills/mhattingpete-skills/code-operations-plugin/skills/file-operations/SKILL.md","docs/skills/mhattingpete-skills/engineering-workflow-plugin/.claude-plugin/plugin.json","docs/skills/mhattingpete-skills/engineering-workflow-plugin/README.md","docs/skills/mhattingpete-skills/engineering-workflow-plugin/agents/ensemble-orchestrator/AGENT.md","docs/skills/mhattingpete-skills/engineering-workflow-plugin/agents/plan-implementer.md","docs/skills/mhattingpete-skills/engineering-workflow-plugin/commands/pr.md","docs/skills/mhattingpete-skills/engineering-workflow-plugin/skills/ensemble-solving/SKILL.md","docs/skills/mhattingpete-skills/engineering-workflow-plugin/skills/ensemble-solving/references/diversification-strategies.md","docs/skills/mhattingpete-skills/engineering-workflow-plugin/skills/ensemble-solving/references/evaluation-rubrics.md","docs/skills/mhattingpete-skills/engineering-workflow-plugin/skills/feature-planning/SKILL.md","docs/skills/mhattingpete-skills/engineering-workflow-plugin/skills/feature-planning/references/planning-best-practices.md","docs/skills/mhattingpete-skills/engineering-workflow-plugin/skills/git-pushing/SKILL.md","docs/skills/mhattingpete-skills/engineering-workflow-plugin/skills/git-pushing/scripts/smart_commit.sh","docs/skills/mhattingpete-skills/engineering-workflow-plugin/skills/review-implementing/SKILL.md","docs/skills/mhattingpete-skills/engineering-workflow-plugin/skills/test-fixing/SKILL.md","docs/skills/mhattingpete-skills/execution-runtime/.env.example","docs/skills/mhattingpete-skills/execution-runtime/README.md","docs/skills/mhattingpete-skills/execution-runtime/api/__init__.py","docs/skills/mhattingpete-skills/execution-runtime/api/code_analysis.py","docs/skills/mhattingpete-skills/execution-runtime/api/code_transform.py","docs/skills/mhattingpete-skills/execution-runtime/api/filesystem.py","docs/skills/mhattingpete-skills/execution-runtime/api/git_operations.py","docs/skills/mhattingpete-skills/execution-runtime/execution_runtime/__init__.py","docs/skills/mhattingpete-skills/execution-runtime/execution_runtime/security/__init__.py","docs/skills/mhattingpete-skills/execution-runtime/execution_runtime/security/import_guard.py","docs/skills/mhattingpete-skills/execution-runtime/execution_runtime/security/pii_detector.py","docs/skills/mhattingpete-skills/execution-runtime/execution_runtime/sessions.py","docs/skills/mhattingpete-skills/execution-runtime/execution_runtime/skills.py","docs/skills/mhattingpete-skills/execution-runtime/mcp-server/mcp_server.py","docs/skills/mhattingpete-skills/execution-runtime/mcp-server/security/pii_detector.py","docs/skills/mhattingpete-skills/execution-runtime/mcp-server/security/sandbox.py","docs/skills/mhattingpete-skills/execution-runtime/pyproject.toml","docs/skills/mhattingpete-skills/execution-runtime/setup.sh","docs/skills/mhattingpete-skills/productivity-skills-plugin/.claude-plugin/plugin.json","docs/skills/mhattingpete-skills/productivity-skills-plugin/README.md","docs/skills/mhattingpete-skills/productivity-skills-plugin/skills/code-auditor/SKILL.md","docs/skills/mhattingpete-skills/productivity-skills-plugin/skills/codebase-documenter/SKILL.md","docs/skills/mhattingpete-skills/productivity-skills-plugin/skills/conversation-analyzer/SKILL.md","docs/skills/mhattingpete-skills/productivity-skills-plugin/skills/conversation-analyzer/scripts/analyze_history.py","docs/skills/mhattingpete-skills/productivity-skills-plugin/skills/project-bootstrapper/SKILL.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/.claude-plugin/plugin.json","docs/skills/mhattingpete-skills/visual-documentation-plugin/EXAMPLES.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/README.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/architecture-diagram-creator/SKILL.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/architecture-diagram-creator/assets/templates/architecture_components.html","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/architecture-diagram-creator/assets/templates/base_template.html","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/architecture-diagram-creator/references/example_architecture.html","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/dashboard-creator/SKILL.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/dashboard-creator/assets/templates/base_template.html","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/dashboard-creator/assets/templates/dashboard_components.html","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/dashboard-creator/references/design_patterns.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/dashboard-creator/references/svg_library.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/flowchart-creator/SKILL.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/flowchart-creator/assets/templates/base_template.html","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/flowchart-creator/assets/templates/flowchart_components.html","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/flowchart-creator/references/design_patterns.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/flowchart-creator/references/svg_library.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/technical-doc-creator/SKILL.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/technical-doc-creator/assets/templates/base_template.html","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/technical-doc-creator/references/design_patterns.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/technical-doc-creator/references/svg_library.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/timeline-creator/SKILL.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/timeline-creator/assets/templates/base_template.html","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/timeline-creator/assets/templates/timeline_components.html","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/timeline-creator/references/design_patterns.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/timeline-creator/references/svg_library.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/test-outputs/dashboard-test-monitoring.html","docs/skills/mhattingpete-skills/visual-documentation-plugin/test-outputs/flowchart-test-authentication.html","docs/skills/netresearch-marketplace/.claude-plugin/marketplace.json","docs/skills/netresearch-marketplace/.github/workflows/sync-skills.yml","docs/skills/netresearch-marketplace/.gitignore","docs/skills/netresearch-marketplace/.sync-config.json","docs/skills/netresearch-marketplace/README.md","docs/skills/netresearch-marketplace/SYNC-SETUP.md","docs/skills/netresearch-marketplace/VERSIONING.md","docs/skills/netresearch-marketplace/notify-marketplace.yml","docs/skills/netresearch-marketplace/plugins/coach/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/plugins/coach/LICENSE","docs/skills/netresearch-marketplace/plugins/coach/README.md","docs/skills/netresearch-marketplace/plugins/coach/assets/templates/antipattern.md","docs/skills/netresearch-marketplace/plugins/coach/assets/templates/checklist.md","docs/skills/netresearch-marketplace/plugins/coach/assets/templates/rule.md","docs/skills/netresearch-marketplace/plugins/coach/assets/templates/snippet.md","docs/skills/netresearch-marketplace/plugins/coach/commands/approve.md","docs/skills/netresearch-marketplace/plugins/coach/commands/edit.md","docs/skills/netresearch-marketplace/plugins/coach/commands/init.md","docs/skills/netresearch-marketplace/plugins/coach/commands/promote.md","docs/skills/netresearch-marketplace/plugins/coach/commands/reject.md","docs/skills/netresearch-marketplace/plugins/coach/commands/review.md","docs/skills/netresearch-marketplace/plugins/coach/commands/scan.md","docs/skills/netresearch-marketplace/plugins/coach/commands/status.md","docs/skills/netresearch-marketplace/plugins/coach/hooks/hooks.json","docs/skills/netresearch-marketplace/plugins/coach/references/architecture.md","docs/skills/netresearch-marketplace/plugins/coach/references/schema.md","docs/skills/netresearch-marketplace/plugins/coach/references/scope_heuristics.md","docs/skills/netresearch-marketplace/plugins/coach/references/signal_patterns.md","docs/skills/netresearch-marketplace/plugins/coach/scripts/aggregate.py","docs/skills/netresearch-marketplace/plugins/coach/scripts/apply.py","docs/skills/netresearch-marketplace/plugins/coach/scripts/detect_signals.py","docs/skills/netresearch-marketplace/plugins/coach/scripts/fingerprint.py","docs/skills/netresearch-marketplace/plugins/coach/scripts/init_coach.py","docs/skills/netresearch-marketplace/plugins/coach/scripts/ledger.py","docs/skills/netresearch-marketplace/plugins/coach/scripts/propose.py","docs/skills/netresearch-marketplace/plugins/coach/scripts/root_cause_analyzer.py","docs/skills/netresearch-marketplace/plugins/coach/scripts/scope_analyzer.py","docs/skills/netresearch-marketplace/plugins/coach/scripts/skill_analyzer.py","docs/skills/netresearch-marketplace/plugins/coach/skills/coach/SKILL.md","docs/skills/netresearch-marketplace/renovate.json","docs/skills/netresearch-marketplace/skills/agents/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/agents/LICENSE","docs/skills/netresearch-marketplace/skills/agents/README.md","docs/skills/netresearch-marketplace/skills/agents/STATUS.md","docs/skills/netresearch-marketplace/skills/agents/claudedocs/refactoring-summary.md","docs/skills/netresearch-marketplace/skills/agents/composer.json","docs/skills/netresearch-marketplace/skills/agents/docs/ROADMAP.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/SKILL.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/assets/root-thin.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/assets/root-verbose.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/assets/scoped/backend-go.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/assets/scoped/backend-php.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/assets/scoped/cli.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/assets/scoped/documentation.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/assets/scoped/examples.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/assets/scoped/frontend-typescript.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/assets/scoped/resources.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/assets/scoped/testing.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/references/analysis.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/references/directory-coverage.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/references/examples/coding-agent-cli/AGENTS.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/references/examples/coding-agent-cli/scripts-AGENTS.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/references/examples/ldap-selfservice/AGENTS.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/references/examples/ldap-selfservice/internal-AGENTS.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/references/examples/ldap-selfservice/internal-web-AGENTS.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/references/examples/simple-ldap-go/AGENTS.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/references/examples/simple-ldap-go/examples-AGENTS.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/references/examples/t3x-rte-ckeditor-image/AGENTS.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/references/examples/t3x-rte-ckeditor-image/Classes-AGENTS.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/analyze-git-history.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/check-freshness.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/detect-project.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/detect-scopes.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/extract-agent-configs.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/extract-ci-commands.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/extract-commands.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/extract-documentation.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/extract-ide-settings.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/extract-platform-files.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/extract-quality-configs.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/generate-agents.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/lib/summary.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/lib/template.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/validate-structure.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/verify-content.sh","docs/skills/netresearch-marketplace/skills/cli-tools/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/cli-tools/LICENSE","docs/skills/netresearch-marketplace/skills/cli-tools/README.md","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/ansible-core.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/ast-grep.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/aws.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/bandit.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/bat.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/black.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/claude.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/codex.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/compose.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/composer.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/ctags.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/curlie.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/dasel.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/delta.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/direnv.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/dive.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/docker.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/entr.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/eslint.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/fd.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/flake8.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/fx.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/fzf.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/gam.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/gem.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/gh.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/git-absorb.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/git-branchless.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/git-filter-repo.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/git-lfs.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/git.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/gitleaks.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/glab.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/go.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/golangci-lint.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/gosec.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/httpie.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/isort.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/jq.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/just.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/kubectl.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/ninja.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/node.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/npm.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/parallel.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/php.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/pip.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/pipx.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/pnpm.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/poetry.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/pre-commit.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/prename.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/prettier.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/python.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/rbenv.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/rename.ul.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/rga.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/ripgrep.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/ruby-build.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/ruby.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/ruff.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/rust.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/sd.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/semgrep.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/shellcheck.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/shfmt.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/sponge.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/terraform.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/tfsec.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/trivy.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/uv.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/watchexec.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/xsv.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/yarn.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/yq.json","docs/skills/netresearch-marketplace/skills/cli-tools/composer.json","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/SKILL.md","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/references/binary_to_tool_map.md","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/references/project_type_requirements.md","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/auto_update.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/check_environment.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/detect_project_type.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/install_composer.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/install_tool.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/installers/aws_installer.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/installers/dedicated_script.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/installers/github_clone.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/installers/github_release_binary.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/installers/hashicorp_zip.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/installers/npm_global.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/installers/npm_self_update.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/installers/package_manager.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/installers/uv_tool.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/lib/capability.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/lib/catalog.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/lib/common.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/lib/dependency.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/lib/install_strategy.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/lib/path_check.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/lib/policy.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/lib/reconcile.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/lib/scope_detection.sh","docs/skills/netresearch-marketplace/skills/context7/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/context7/LICENSE","docs/skills/netresearch-marketplace/skills/context7/README.md","docs/skills/netresearch-marketplace/skills/context7/skills/context7/SKILL.md","docs/skills/netresearch-marketplace/skills/context7/skills/context7/scripts/context7.sh","docs/skills/netresearch-marketplace/skills/enterprise-readiness/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/enterprise-readiness/LICENSE","docs/skills/netresearch-marketplace/skills/enterprise-readiness/README.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/assets/templates/ARCHITECTURE.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/assets/templates/BADGE_EXCEPTIONS.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/assets/templates/CODE_OF_CONDUCT.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/assets/templates/GOVERNANCE.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/assets/templates/ROADMAP.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/assets/templates/SECURITY_AUDIT.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/assets/workflows/codeql.yml","docs/skills/netresearch-marketplace/skills/enterprise-readiness/assets/workflows/dco-check.yml","docs/skills/netresearch-marketplace/skills/enterprise-readiness/assets/workflows/dependency-review.yml","docs/skills/netresearch-marketplace/skills/enterprise-readiness/assets/workflows/scorecard.yml","docs/skills/netresearch-marketplace/skills/enterprise-readiness/assets/workflows/slsa-provenance.yml","docs/skills/netresearch-marketplace/skills/enterprise-readiness/composer.json","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/SKILL.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/2fa-enforcement.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/badge-display.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/branch-coverage.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/dco-implementation.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/dynamic-analysis.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/general.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/github.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/go.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/openssf-badge-gold.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/openssf-badge-silver.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/quick-start-guide.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/reproducible-builds.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/security-hardening.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/signed-releases.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/solo-maintainer-guide.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/sonarcloud.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/test-invocation.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/scripts/add-spdx-headers.sh","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/scripts/analyze-bus-factor.sh","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/scripts/check-branch-coverage.sh","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/scripts/check-coverage-threshold.sh","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/scripts/check-tls-minimum.sh","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/scripts/verify-badge-criteria.sh","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/scripts/verify-reproducible-build.sh","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/scripts/verify-review-requirements.sh","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/scripts/verify-signed-tags.sh","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/scripts/verify-spdx-headers.sh","docs/skills/netresearch-marketplace/skills/git-workflow/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/git-workflow/LICENSE","docs/skills/netresearch-marketplace/skills/git-workflow/README.md","docs/skills/netresearch-marketplace/skills/git-workflow/composer.json","docs/skills/netresearch-marketplace/skills/git-workflow/skills/git-workflow/SKILL.md","docs/skills/netresearch-marketplace/skills/git-workflow/skills/git-workflow/references/advanced-git.md","docs/skills/netresearch-marketplace/skills/git-workflow/skills/git-workflow/references/branching-strategies.md","docs/skills/netresearch-marketplace/skills/git-workflow/skills/git-workflow/references/ci-cd-integration.md","docs/skills/netresearch-marketplace/skills/git-workflow/skills/git-workflow/references/commit-conventions.md","docs/skills/netresearch-marketplace/skills/git-workflow/skills/git-workflow/references/github-releases.md","docs/skills/netresearch-marketplace/skills/git-workflow/skills/git-workflow/references/pull-request-workflow.md","docs/skills/netresearch-marketplace/skills/git-workflow/skills/git-workflow/scripts/verify-git-workflow.sh","docs/skills/netresearch-marketplace/skills/github-project/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/github-project/LICENSE","docs/skills/netresearch-marketplace/skills/github-project/README.md","docs/skills/netresearch-marketplace/skills/github-project/composer.json","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/SKILL.md","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/assets/CODEOWNERS.template","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/assets/CONTRIBUTING.md.template","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/assets/PULL_REQUEST_TEMPLATE.md.template","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/assets/SECURITY.md.template","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/assets/auto-merge-direct.yml.template","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/assets/auto-merge-queue.yml.template","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/assets/auto-merge.yml.template","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/assets/bug_report.md.template","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/assets/dependabot.yml.template","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/assets/feature_request.md.template","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/assets/release-labeler.yml.template","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/assets/renovate.json.template","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/references/branch-migration.md","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/references/dependency-management.md","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/references/release-labeling.md","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/references/repository-structure.md","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/references/sub-issues.md","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/scripts/verify-github-project.sh","docs/skills/netresearch-marketplace/skills/go-development/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/go-development/LICENSE","docs/skills/netresearch-marketplace/skills/go-development/README.md","docs/skills/netresearch-marketplace/skills/go-development/skills/go-development/SKILL.md","docs/skills/netresearch-marketplace/skills/go-development/skills/go-development/references/api-design.md","docs/skills/netresearch-marketplace/skills/go-development/skills/go-development/references/architecture.md","docs/skills/netresearch-marketplace/skills/go-development/skills/go-development/references/docker.md","docs/skills/netresearch-marketplace/skills/go-development/skills/go-development/references/fuzz-testing.md","docs/skills/netresearch-marketplace/skills/go-development/skills/go-development/references/ldap.md","docs/skills/netresearch-marketplace/skills/go-development/skills/go-development/references/linting.md","docs/skills/netresearch-marketplace/skills/go-development/skills/go-development/references/makefile.md","docs/skills/netresearch-marketplace/skills/go-development/skills/go-development/references/mutation-testing.md","docs/skills/netresearch-marketplace/skills/go-development/skills/go-development/references/resilience.md","docs/skills/netresearch-marketplace/skills/go-development/skills/go-development/references/testing.md","docs/skills/netresearch-marketplace/skills/go-development/skills/go-development/scripts/verify-go-project.sh","docs/skills/netresearch-marketplace/skills/jira-integration/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/jira-integration/AGENTS.md","docs/skills/netresearch-marketplace/skills/jira-integration/CHANGELOG.md","docs/skills/netresearch-marketplace/skills/jira-integration/CLAUDE.md","docs/skills/netresearch-marketplace/skills/jira-integration/LICENSE","docs/skills/netresearch-marketplace/skills/jira-integration/MIGRATION.md","docs/skills/netresearch-marketplace/skills/jira-integration/PRD.md","docs/skills/netresearch-marketplace/skills/jira-integration/README.md","docs/skills/netresearch-marketplace/skills/jira-integration/SKILL.md","docs/skills/netresearch-marketplace/skills/jira-integration/composer.json","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/AGENTS.md","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/SKILL.md","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/references/jql-quick-reference.md","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/references/troubleshooting.md","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/core/jira-attachment.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/core/jira-issue.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/core/jira-search.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/core/jira-setup.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/core/jira-validate.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/core/jira-worklog.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/lib/__init__.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/lib/client.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/lib/config.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/lib/output.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/utility/jira-fields.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/utility/jira-link.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/utility/jira-user.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/workflow/jira-board.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/workflow/jira-comment.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/workflow/jira-create.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/workflow/jira-sprint.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/workflow/jira-transition.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-syntax/AGENTS.md","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-syntax/SKILL.md","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-syntax/references/jira-syntax-quick-reference.md","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-syntax/scripts/validate-jira-syntax.sh","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-syntax/templates/bug-report-template.md","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-syntax/templates/feature-request-template.md","docs/skills/netresearch-marketplace/skills/netresearch-branding/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/netresearch-branding/LICENSE","docs/skills/netresearch-marketplace/skills/netresearch-branding/README.md","docs/skills/netresearch-marketplace/skills/netresearch-branding/assets/logos/netresearch-symbol-only.svg","docs/skills/netresearch-marketplace/skills/netresearch-branding/composer.json","docs/skills/netresearch-marketplace/skills/netresearch-branding/examples/components.html","docs/skills/netresearch-marketplace/skills/netresearch-branding/skills/netresearch-branding/SKILL.md","docs/skills/netresearch-marketplace/skills/netresearch-branding/skills/netresearch-branding/references/colors.md","docs/skills/netresearch-marketplace/skills/netresearch-branding/skills/netresearch-branding/references/typo3-extension-branding.md","docs/skills/netresearch-marketplace/skills/netresearch-branding/skills/netresearch-branding/references/typography.md","docs/skills/netresearch-marketplace/skills/netresearch-branding/skills/netresearch-branding/references/web-design.md","docs/skills/netresearch-marketplace/skills/netresearch-branding/skills/netresearch-branding/templates/landing-page.html","docs/skills/netresearch-marketplace/skills/netresearch-branding/skills/netresearch-branding/templates/styles.css","docs/skills/netresearch-marketplace/skills/php-modernization/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/php-modernization/LICENSE","docs/skills/netresearch-marketplace/skills/php-modernization/README.md","docs/skills/netresearch-marketplace/skills/php-modernization/composer.json","docs/skills/netresearch-marketplace/skills/php-modernization/skills/php-modernization/SKILL.md","docs/skills/netresearch-marketplace/skills/php-modernization/skills/php-modernization/references/adapter-registry-pattern.md","docs/skills/netresearch-marketplace/skills/php-modernization/skills/php-modernization/references/migration-strategies.md","docs/skills/netresearch-marketplace/skills/php-modernization/skills/php-modernization/references/php8-features.md","docs/skills/netresearch-marketplace/skills/php-modernization/skills/php-modernization/references/phpstan-compliance.md","docs/skills/netresearch-marketplace/skills/php-modernization/skills/php-modernization/references/psr-per-compliance.md","docs/skills/netresearch-marketplace/skills/php-modernization/skills/php-modernization/references/request-dtos.md","docs/skills/netresearch-marketplace/skills/php-modernization/skills/php-modernization/references/static-analysis-tools.md","docs/skills/netresearch-marketplace/skills/php-modernization/skills/php-modernization/references/symfony-patterns.md","docs/skills/netresearch-marketplace/skills/php-modernization/skills/php-modernization/references/type-safety.md","docs/skills/netresearch-marketplace/skills/php-modernization/skills/php-modernization/scripts/verify-php-project.sh","docs/skills/netresearch-marketplace/skills/security-audit/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/security-audit/LICENSE","docs/skills/netresearch-marketplace/skills/security-audit/README.md","docs/skills/netresearch-marketplace/skills/security-audit/composer.json","docs/skills/netresearch-marketplace/skills/security-audit/skills/security-audit/SKILL.md","docs/skills/netresearch-marketplace/skills/security-audit/skills/security-audit/references/api-key-encryption.md","docs/skills/netresearch-marketplace/skills/security-audit/skills/security-audit/references/cvss-scoring.md","docs/skills/netresearch-marketplace/skills/security-audit/skills/security-audit/references/owasp-top10.md","docs/skills/netresearch-marketplace/skills/security-audit/skills/security-audit/references/xxe-prevention.md","docs/skills/netresearch-marketplace/skills/security-audit/skills/security-audit/scripts/security-audit.sh","docs/skills/netresearch-marketplace/skills/skill-repo/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/skill-repo/LICENSE","docs/skills/netresearch-marketplace/skills/skill-repo/README.md","docs/skills/netresearch-marketplace/skills/skill-repo/composer.json","docs/skills/netresearch-marketplace/skills/skill-repo/renovate.json","docs/skills/netresearch-marketplace/skills/skill-repo/skills/skill-repo/SKILL.md","docs/skills/netresearch-marketplace/skills/skill-repo/skills/skill-repo/references/composer-setup.md","docs/skills/netresearch-marketplace/skills/skill-repo/skills/skill-repo/references/installation-methods.md","docs/skills/netresearch-marketplace/skills/skill-repo/skills/skill-repo/references/marketplace-integration.md","docs/skills/netresearch-marketplace/skills/skill-repo/skills/skill-repo/scripts/validate-skill.sh","docs/skills/netresearch-marketplace/skills/skill-repo/skills/skill-repo/templates/README.md.template","docs/skills/netresearch-marketplace/skills/skill-repo/skills/skill-repo/templates/composer.json.template","docs/skills/netresearch-marketplace/skills/skill-repo/skills/skill-repo/templates/release.yml.template","docs/skills/netresearch-marketplace/skills/typo3-ckeditor5/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/typo3-ckeditor5/LICENSE","docs/skills/netresearch-marketplace/skills/typo3-ckeditor5/README.md","docs/skills/netresearch-marketplace/skills/typo3-ckeditor5/composer.json","docs/skills/netresearch-marketplace/skills/typo3-ckeditor5/skills/typo3-ckeditor5/SKILL.md","docs/skills/netresearch-marketplace/skills/typo3-ckeditor5/skills/typo3-ckeditor5/references/ckeditor5-architecture.md","docs/skills/netresearch-marketplace/skills/typo3-ckeditor5/skills/typo3-ckeditor5/references/migration-guide.md","docs/skills/netresearch-marketplace/skills/typo3-ckeditor5/skills/typo3-ckeditor5/references/plugin-development.md","docs/skills/netresearch-marketplace/skills/typo3-ckeditor5/skills/typo3-ckeditor5/references/typo3-integration.md","docs/skills/netresearch-marketplace/skills/typo3-ckeditor5/skills/typo3-ckeditor5/scripts/verify-ckeditor5.sh","docs/skills/netresearch-marketplace/skills/typo3-conformance/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/typo3-conformance/LICENSE","docs/skills/netresearch-marketplace/skills/typo3-conformance/README.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/composer.json","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/SKILL.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/assets/.github/workflows/publish-to-ter.yml","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/backend-module-v13.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/backend-wizard-patterns.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/best-practices.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/coding-guidelines.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/composer-validation.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/crowdin-integration.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/development-environment.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/directory-structure.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/dual-version-compatibility.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/excellence-indicators.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/ext-emconf-validation.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/ext-files-validation.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/extension-architecture.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/hooks-and-events.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/multi-tier-configuration.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/php-architecture.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/report-template.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/runtests-validation.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/ter-publishing.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/testing-standards.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/v13-deprecations.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/version-requirements.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/scripts/check-architecture.sh","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/scripts/check-coding-standards.sh","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/scripts/check-conformance.sh","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/scripts/check-documentation.sh","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/scripts/check-file-structure.sh","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/scripts/check-phpstan-baseline.sh","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/scripts/check-testing.sh","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/scripts/generate-report.sh","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/LICENSE","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/README.md","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/assets/commit-template.txt","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/claudedocs/refactoring-summary.md","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/composer.json","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/SKILL.md","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/references/account-setup.md","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/references/commit-message-format.md","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/references/commit-msg-hook.md","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/references/ddev-setup-workflow.md","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/references/forge-api.md","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/references/gerrit-review-patterns.md","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/references/gerrit-workflow.md","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/references/modern-typo3-patterns.md","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/references/troubleshooting.md","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/scripts/create-commit-message.py","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/scripts/create-forge-issue.sh","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/scripts/query-forge-metadata.sh","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/scripts/setup-typo3-coredev.sh","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/scripts/validate-commit-message.py","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/scripts/verify-prerequisites.sh","docs/skills/netresearch-marketplace/skills/typo3-ddev/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/typo3-ddev/LICENSE","docs/skills/netresearch-marketplace/skills/typo3-ddev/README.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/composer.json","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/SKILL.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/.envrc","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/Makefile.template","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/README-SERVICES.md.optional","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/apache/apache-site.conf","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/commands/host/docs","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/commands/host/pre-start-git-info","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/commands/host/setup","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/commands/install-all","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/commands/install-v11","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/commands/install-v12","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/commands/install-v13","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/commands/web/configure-extension.optional","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/commands/web/generate-index","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/commands/web/generate-makefile","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/commands/web/install-introduction.optional","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/config.redis.php.example","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/config.yaml","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/docker-compose.git-info.yaml","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/docker-compose.ofelia.yaml.optional","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/docker-compose.services-redis.yaml.optional","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/docker-compose.services.yaml.optional","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/docker-compose.web.yaml","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/homeadditions/.bashrc_additions.optional","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/index.html.netresearch.template","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/index.html.typo3.template","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/web-build/Dockerfile","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/web-build/install-cron.sh.optional","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/web-entrypoint.d/10-cleanup-index.sh","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/references/0001-valkey-default-with-redis-alternative.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/references/0002-mariadb-default-with-database-alternatives.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/references/0003-php-version-management.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/references/advanced-options.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/references/documentation-rendering.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/references/index-page-generation.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/references/prerequisites-validation.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/references/quickstart.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/references/troubleshooting.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/references/typo3-12-cli-changes.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/references/windows-fixes.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/references/windows-optimizations.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/scripts/validate-prerequisites.sh","docs/skills/netresearch-marketplace/skills/typo3-docs/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/typo3-docs/LICENSE","docs/skills/netresearch-marketplace/skills/typo3-docs/README.md","docs/skills/netresearch-marketplace/skills/typo3-docs/composer.json","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/SKILL.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/assets/AGENTS.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/architecture-decision-records.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/code-structure-elements.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/coding-guidelines.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/content-directives.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/documentation-coverage-analysis.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/extraction-patterns.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/file-structure.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/guides-xml.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/intercept-deployment.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/rendering.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/rst-syntax.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/screenshots.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/text-roles-inline-code.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/typo3-directives.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/typo3-extension-architecture.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/scripts/add-agents-md.sh","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/scripts/analyze-docs.sh","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/scripts/extract-all.sh","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/scripts/extract-build-configs.sh","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/scripts/extract-composer.sh","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/scripts/extract-extension-config.sh","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/scripts/extract-php.sh","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/scripts/extract-project-files.sh","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/scripts/extract-repo-metadata.sh","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/scripts/render_docs.sh","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/scripts/validate_docs.sh","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/LICENSE","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/README.md","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/composer.json","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/skills/typo3-extension-upgrade/SKILL.md","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/skills/typo3-extension-upgrade/assets/.php-cs-fixer.php","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/skills/typo3-extension-upgrade/assets/fractor.php","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/skills/typo3-extension-upgrade/assets/phpstan.neon","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/skills/typo3-extension-upgrade/assets/phpunit.xml","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/skills/typo3-extension-upgrade/assets/rector.php","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/skills/typo3-extension-upgrade/references/api-changes.md","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/skills/typo3-extension-upgrade/references/dual-compatibility.md","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/skills/typo3-extension-upgrade/references/pre-upgrade.md","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/skills/typo3-extension-upgrade/references/real-world-patterns.md","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/skills/typo3-extension-upgrade/references/upgrade-v11-to-v12.md","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/skills/typo3-extension-upgrade/references/upgrade-v12-to-v13.md","docs/skills/netresearch-marketplace/skills/typo3-testing/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/typo3-testing/LICENSE","docs/skills/netresearch-marketplace/skills/typo3-testing/README.md","docs/skills/netresearch-marketplace/skills/typo3-testing/composer.json","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/SKILL.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/.php-cs-fixer.dist.php","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/AGENTS.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/FunctionalTests.xml","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/FunctionalTestsBootstrap.php","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/Makefile","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/UnitTests.xml","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/UnitTestsBootstrap.php","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/bootstrap.php","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/codecov.yml","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/docker/codeception.yml","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/docker/docker-compose.yml","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/example-tests/ExampleAcceptanceCest.php","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/example-tests/ExampleFunctionalTest.php","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/example-tests/ExampleUnitTest.php","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/fixtures/README.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/fixtures/be_users.csv","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/fixtures/pages.csv","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/fixtures/sys_category.csv","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/fixtures/tt_content.csv","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/github-actions-e2e.yml","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/github-actions-tests.yml","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/infection.json5","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/phpat.neon","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/phpat.php","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/phpstan-baseline.neon","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/phpstan.neon","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/rector.php","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/accessibility-testing.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/architecture-testing.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/ci-cd.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/crypto-testing.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/ddev-testing.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/e2e-testing.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/functional-test-patterns.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/functional-testing.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/fuzz-testing.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/integration-testing.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/javascript-testing.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/mutation-testing.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/performance-testing.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/quality-tools.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/sonarcloud.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/test-runners.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/typo3-v14-final-classes.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/unit-testing.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/scripts/generate-test.sh","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/scripts/setup-testing.sh","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/scripts/validate-setup.sh","docs/skills/netresearch-marketplace/update-source-repos.sh","docs/skills/project-guidelines-example/SKILL.md","docs/skills/security-review/SKILL.md","docs/skills/strategic-compact/SKILL.md","docs/skills/strategic-compact/suggest-compact.sh","docs/skills/tdd-workflow/SKILL.md","docs/skills/verification-loop/SKILL.md","docs/话术库导出_20251231103252.xlsx","docs_archive/AI_INPUT_METHOD_BRAINSTORM.md","docs_archive/ANDROID_100_PERCENT_PLAN.md","docs_archive/ANDROID_NATIVE_REPLACEMENT_DETAILED_PLAN.md","docs_archive/ANDROID_NATIVE_REPLACEMENT_PLAN.md","docs_archive/API.md","docs_archive/APPLE_PLATFORM_DEVELOPMENT_PLAN.md","docs_archive/ARCHITECTURE.md","docs_archive/ARCHITECTURE_COMPACT.md","docs_archive/CLAUDE.md","docs_archive/COMPREHENSIVE_IMPROVEMENT_PLAN.md","docs_archive/DEPLOYMENT.md","docs_archive/DESIGN_BASED_DEVELOPMENT_PLAN.md","docs_archive/DEVELOPMENT_ROADMAP.md","docs_archive/DICTIONARY_IMPROVEMENT_PLAN.md","docs_archive/DOCS_INDEX.md","docs_archive/IMPLEMENTATION_PLAN.md","docs_archive/IMPROVEMENT_RECOMMENDATIONS.md","docs_archive/IOS_DEVELOPMENT_PLAN.md","docs_archive/NEXT_STEPS_PLAN.md","docs_archive/PINYIN_DEVELOPMENT_PLAN.md","docs_archive/PRD.md","docs_archive/PROGRESS_TRACKER.md","docs_archive/README.md","docs_archive/REDLINES.md","docs_archive/SMART_RECOGNITION_COMPACT.md","docs_archive/TECHNICAL_ARCHITECTURE.md","docs_archive/UI_DEVELOPMENT_PLAN.md","docs_archive/smart-recognition-design.md","flutter_app/assets/fonts/PingFang-Medium.ttf","flutter_app/assets/fonts/PingFang-Regular.ttf","flutter_app/assets/fonts/PingFang-Semibold.ttf","flutter_app/assets/icons/.gitkeep","flutter_app/assets/images/.gitkeep","flutter_app/lib/core/bridge/bridge_models.dart","flutter_app/lib/core/bridge/bridge_response_parser.dart","flutter_app/lib/core/bridge/haizhan_bridge.dart","flutter_app/lib/core/di/service_locator.dart","flutter_app/lib/core/router/app_router.dart","flutter_app/lib/core/router/routes.dart","flutter_app/lib/core/theme/app_colors.dart","flutter_app/lib/core/theme/app_theme.dart","flutter_app/lib/core/theme/app_typography.dart","flutter_app/lib/features/auth/data/auth_provider.dart","flutter_app/lib/features/auth/data/auth_repository.dart","flutter_app/lib/features/auth/domain/auth_models.dart","flutter_app/lib/features/auth/presentation/login_screen.dart","flutter_app/lib/features/auth/presentation/register_screen.dart","flutter_app/lib/features/chat/data/ai_provider.dart","flutter_app/lib/features/chat/data/ai_repository.dart","flutter_app/lib/features/chat/domain/ai_reply_models.dart","flutter_app/lib/features/chat/presentation/chat_screen.dart","flutter_app/lib/features/chat/presentation/conversation_screen.dart","flutter_app/lib/features/contacts/data/contact_360_provider.dart","flutter_app/lib/features/contacts/data/contacts_provider.dart","flutter_app/lib/features/contacts/data/contacts_repository.dart","flutter_app/lib/features/contacts/domain/contact_models.dart","flutter_app/lib/features/contacts/presentation/contact_detail_screen.dart","flutter_app/lib/features/contacts/presentation/contacts_screen.dart","flutter_app/lib/features/home/presentation/home_screen.dart","flutter_app/lib/features/home/presentation/main_shell.dart","flutter_app/lib/features/knowledge/data/knowledge_provider.dart","flutter_app/lib/features/knowledge/data/knowledge_repository.dart","flutter_app/lib/features/knowledge/domain/knowledge_models.dart","flutter_app/lib/features/knowledge/presentation/knowledge_screen.dart","flutter_app/lib/features/profile/presentation/profile_screen.dart","flutter_app/lib/features/search/data/models/search_metrics.dart","flutter_app/lib/features/search/presentation/widgets/search_metrics_indicator.dart","flutter_app/lib/features/settings/presentation/settings_screen.dart","flutter_app/lib/features/stats/presentation/stats_screen.dart","flutter_app/lib/features/stats/presentation/widgets/contact_stats_tab.dart","flutter_app/lib/features/stats/presentation/widgets/overview_tab.dart","flutter_app/lib/features/stats/presentation/widgets/reply_stats_tab.dart","flutter_app/lib/features/stats/presentation/widgets/stats_shared_widgets.dart","flutter_app/lib/features/support/presentation/about_screen.dart","flutter_app/lib/features/support/presentation/feedback_screen.dart","flutter_app/lib/features/support/presentation/help_screen.dart","flutter_app/lib/features/support/presentation/privacy_screen.dart","flutter_app/lib/features/support/presentation/terms_screen.dart","flutter_app/lib/main.dart","flutter_app/lib/shared/widgets/stat_card.dart","flutter_app/pigeons/haizhan_api.dart","flutter_app/pubspec.lock","flutter_app/pubspec.yaml","flutter_app/test/core/network/api_client_test.dart","flutter_app/test/core/theme/theme_provider_test.dart","flutter_app/test/features/auth/login_screen_test.dart","flutter_app/test/features/chat/chat_screen_test.dart","flutter_app/test/features/contacts/contacts_screen_test.dart","flutter_app/test/features/home/home_screen_test.dart","flutter_app/test/features/knowledge/knowledge_screen_test.dart","flutter_app/test/features/profile/profile_screen_test.dart","flutter_app/test/features/settings/settings_screen_test.dart","flutter_app/test/features/statistics/statistics_screen_test.dart","flutter_app/test/features/stats/stats_screen_test.dart","flutter_app/test/integration/app_integration_test.dart","flutter_app/test/providers/auth_provider_test.dart","flutter_app/test/services/api_service_test.dart","flutter_app/test/widgets/contact_card_test.dart","gradle.properties","gradle/libs.versions.toml","gradle/wrapper/gradle-wrapper.jar","gradle/wrapper/gradle-wrapper.properties","gradlew","gradlew.bat","ime-core/build.gradle.kts","ime-core/consumer-rules.pro","ime-core/proguard-rules.pro","ime-core/src/androidTest/java/com/haizhan/ime/core/handwriting/HandwritingIntegrationTest.kt","ime-core/src/androidTest/java/com/haizhan/ime/core/handwriting/HandwritingPerformanceTest.kt","ime-core/src/androidTest/java/com/haizhan/ime/core/handwriting/HandwritingViewTest.kt","ime-core/src/main/AndroidManifest.xml","ime-core/src/main/assets/dictionaries/system/core-char.txt","ime-core/src/main/assets/dictionaries/system/core-merged.txt","ime-core/src/main/assets/dictionaries/system/core-phrase.txt","ime-core/src/main/assets/dictionaries/system/core-word2.txt","ime-core/src/main/assets/dictionaries/system/core-word3.txt","ime-core/src/main/assets/dictionaries/system/core-word4.txt","ime-core/src/main/assets/handwriting_labels_casia.txt","ime-core/src/main/assets/paddle_models/ppocr_keys_v1.txt","ime-core/src/main/cpp/CMakeLists.txt","ime-core/src/main/cpp/include/paddle_api.h","ime-core/src/main/cpp/include/paddle_image_preprocess.h","ime-core/src/main/cpp/include/paddle_lite_factory_helper.h","ime-core/src/main/cpp/include/paddle_place.h","ime-core/src/main/cpp/include/paddle_use_kernels.h","ime-core/src/main/cpp/include/paddle_use_ops.h","ime-core/src/main/cpp/include/paddle_use_passes.h","ime-core/src/main/cpp/paddle_lite_jni.cpp","ime-core/src/main/cpp/paddle_ocr_jni.cpp","ime-core/src/main/java/com/haizhan/ime/core/context/ChatContext.kt","ime-core/src/main/java/com/haizhan/ime/core/context/ChatContextProvider.kt","ime-core/src/main/java/com/haizhan/ime/core/context/ContextAnalyzer.kt","ime-core/src/main/java/com/haizhan/ime/core/context/ContextAwareRanker.kt","ime-core/src/main/java/com/haizhan/ime/core/context/WordCategoryClassifier.kt","ime-core/src/main/java/com/haizhan/ime/core/di/ImeCoreModule.kt","ime-core/src/main/java/com/haizhan/ime/core/di/PerformanceModule.kt","ime-core/src/main/java/com/haizhan/ime/core/engine/ImeEngine.kt","ime-core/src/main/java/com/haizhan/ime/core/engine/handler/EnglishKeyHandler.kt","ime-core/src/main/java/com/haizhan/ime/core/engine/handler/HandwritingKeyHandler.kt","ime-core/src/main/java/com/haizhan/ime/core/engine/handler/KeyPressDispatcher.kt","ime-core/src/main/java/com/haizhan/ime/core/engine/handler/KeyPressHandler.kt","ime-core/src/main/java/com/haizhan/ime/core/engine/handler/PinyinKeyHandler.kt","ime-core/src/main/java/com/haizhan/ime/core/engine/handler/SymbolKeyHandler.kt","ime-core/src/main/java/com/haizhan/ime/core/engine/handler/VoiceKeyHandler.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/HaizhanHandwritingApiClient.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/HandwritingKeyboard.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/HandwritingManager.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/HandwritingToolbar.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/HandwritingView.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/IHandwritingRecognizer.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/ModelDownloader.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/PaddleLiteRecognizer.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/RecognitionConfig.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/Stroke.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/StrokeCache.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/StrokePreprocessor.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/StrokeSegmenter.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/TFLiteRecognizer.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/UnifiedRecognitionEngine.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/di/HandwritingModule.kt","ime-core/src/main/java/com/haizhan/ime/core/keyboard/CandidatesView.kt","ime-core/src/main/java/com/haizhan/ime/core/keyboard/EnhancedCandidatesView.kt","ime-core/src/main/java/com/haizhan/ime/core/keyboard/ImeContentLayout.kt","ime-core/src/main/java/com/haizhan/ime/core/keyboard/ImeLayoutConstants.kt","ime-core/src/main/java/com/haizhan/ime/core/keyboard/InputModeToolbar.kt","ime-core/src/main/java/com/haizhan/ime/core/keyboard/KeyboardLayout.kt","ime-core/src/main/java/com/haizhan/ime/core/keyboard/KeyboardView.kt","ime-core/src/main/java/com/haizhan/ime/core/ocr/IOcrEngine.kt","ime-core/src/main/java/com/haizhan/ime/core/ocr/OcrImageProcessor.kt","ime-core/src/main/java/com/haizhan/ime/core/ocr/OcrModels.kt","ime-core/src/main/java/com/haizhan/ime/core/ocr/PaddleOcrEngine.kt","ime-core/src/main/java/com/haizhan/ime/core/ocr/README.md","ime-core/src/main/java/com/haizhan/ime/core/ocr/di/OcrModule.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/BuiltinDictionary.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/Candidate.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/CloudPinyinService.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/CloudSyncService.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/DictModels.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/DictionaryFileParser.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/DictionaryHotReloader.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/DictionaryImporter.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/DictionaryReloader.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/EnterpriseDictionary.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/FuzzyPinyinConfig.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/HotWordService.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/ImportResult.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/InputPredictor.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/LocalDictionary.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/NgramData.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/NgramModel.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/NineGridMatcher.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/PinyinSegmenterImpl.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/PinyinService.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/PinyinServiceImpl.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/PinyinSplitter.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/SmartErrorCorrector.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/SystemDatDictionary.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/UserPreferenceStore.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/cloud/CloudPinyinApiImpl.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/cloud/CloudPinyinModule.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/cloud/ExponentialBackoff.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/converter/ChineseConverter.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/matcher/FullPinyinMatcher.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/matcher/InputMatcher.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/matcher/InputMatcherManager.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/matcher/NineGridMatcherAdapter.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/matcher/ShortcutMatcher.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/matcher/ShuangpinMatcher.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/matcher/di/MatcherModule.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/shuangpin/MicrosoftScheme.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/shuangpin/NaturalScheme.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/shuangpin/ShuangpinConverter.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/shuangpin/ShuangpinScheme.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/shuangpin/SogouScheme.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/shuangpin/XiaoheScheme.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/stroke/StrokeData.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/stroke/StrokeMatcher.kt","ime-core/src/main/java/com/haizhan/ime/core/theme/DesignTokens.kt","ime-core/src/main/java/com/haizhan/ime/core/theme/KeyboardTheme.kt","ime-core/src/main/java/com/haizhan/ime/core/theme/ThemeManager.kt","ime-core/src/main/java/com/haizhan/ime/core/voice/ui/VoicePanel.kt","ime-core/src/main/jniLibs/arm64-v8a/libpaddle_light_api_shared.so","ime-core/src/main/res/drawable/ic_backspace.xml","ime-core/src/main/res/drawable/ic_clear_all.xml","ime-core/src/main/res/drawable/ic_handwriting.xml","ime-core/src/main/res/drawable/ic_keyboard.xml","ime-core/src/test/java/com/haizhan/ime/core/ImeEngineTest.kt","ime-core/src/test/java/com/haizhan/ime/core/benchmark/ImeCorePerformanceTest.kt","ime-core/src/test/java/com/haizhan/ime/core/benchmark/MemoryBenchmarkTest.kt","ime-core/src/test/java/com/haizhan/ime/core/context/ContextAnalyzerTest.kt","ime-core/src/test/java/com/haizhan/ime/core/context/ContextAwareRankerTest.kt","ime-core/src/test/java/com/haizhan/ime/core/context/WordCategoryClassifierTest.kt","ime-core/src/test/java/com/haizhan/ime/core/decoder/UnifiedRankerTest.kt","ime-core/src/test/java/com/haizhan/ime/core/engine/ImeEngineTest.kt","ime-core/src/test/java/com/haizhan/ime/core/engine/handler/EnglishKeyHandlerExpandedTest.kt","ime-core/src/test/java/com/haizhan/ime/core/engine/handler/KeyPressDispatcherTest.kt","ime-core/src/test/java/com/haizhan/ime/core/engine/handler/KeyPressHandlerTest.kt","ime-core/src/test/java/com/haizhan/ime/core/engine/handler/PinyinKeyHandlerExpandedTest.kt","ime-core/src/test/java/com/haizhan/ime/core/engine/handler/SymbolKeyHandlerExpandedTest.kt","ime-core/src/test/java/com/haizhan/ime/core/handwriting/HandwritingManagerAdvancedTest.kt","ime-core/src/test/java/com/haizhan/ime/core/handwriting/HandwritingManagerTest.kt","ime-core/src/test/java/com/haizhan/ime/core/handwriting/PaddleLiteRecognizerTest.kt","ime-core/src/test/java/com/haizhan/ime/core/handwriting/StrokeCacheTest.kt","ime-core/src/test/java/com/haizhan/ime/core/handwriting/StrokePreprocessorTest.kt","ime-core/src/test/java/com/haizhan/ime/core/handwriting/TFLiteRecognizerTest.kt","ime-core/src/test/java/com/haizhan/ime/core/keyboard/CandidatesViewTest.kt","ime-core/src/test/java/com/haizhan/ime/core/keyboard/KeyboardLayoutTest.kt","ime-core/src/test/java/com/haizhan/ime/core/keyboard/KeyboardViewTest.kt","ime-core/src/test/java/com/haizhan/ime/core/ocr/OcrImageProcessorTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/CloudPinyinServiceTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/CloudSyncServiceTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/DictionaryFileParserTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/DictionaryImporterTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/DictionaryReloaderTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/EnterpriseDictionaryTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/FuzzyPinyinConfigTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/HotWordServiceTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/InputPredictorTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/LocalDictionaryTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/NgramModelTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/NineGridMatcherTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/PinyinSegmenterTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/PinyinServiceImplTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/PinyinServiceTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/PinyinSplitterTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/SmartErrorCorrectorTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/SystemDatDictionaryTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/UserPreferenceStoreTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/cloud/CloudPinyinApiImplTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/cloud/ExponentialBackoffTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/matcher/FullPinyinMatcherTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/matcher/ShuangpinMatcherTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/shuangpin/ShuangpinSchemeTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/shuangpin/SogouSchemeTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/shuangpin/XiaoheSchemeTest.kt","ime-core/src/test/java/com/haizhan/ime/core/theme/ThemeManagerTest.kt","ios_keyboard/APPSTORE_LISTING.md","ios_keyboard/HaizhanKeyboard/Info.plist","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboard.xcodeproj/project.pbxproj","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboard.xcodeproj/project.xcworkspace/contents.xcworkspacedata","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp.entitlements","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp.swift","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp/HaizhanKeyboardApp.entitlements","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp/HaizhanKeyboardApp.swift","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp/Info.plist","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp/Models/AppSession.swift","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp/Services/KeyboardStatusService.swift","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp/Services/ScreenshotResponder.swift","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp/Views/AccountView.swift","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp/Views/AppSettingsView.swift","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp/Views/ContentView.swift","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp/Views/LoginView.swift","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp/Views/OnboardingView.swift","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardExtension.entitlements","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardExtension/HaizhanKeyboardExtension.entitlements","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardExtension/Info.plist","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardExtension/KeyboardExtensionStub.swift","ios_keyboard/HaizhanKeyboardApp/Info.plist","ios_keyboard/HaizhanKeyboardApp/Models/AppSession.swift","ios_keyboard/HaizhanKeyboardApp/README.md","ios_keyboard/HaizhanKeyboardApp/Services/KeyboardStatusService.swift","ios_keyboard/HaizhanKeyboardApp/Services/ScreenshotResponder.swift","ios_keyboard/HaizhanKeyboardApp/Views/AccountView.swift","ios_keyboard/HaizhanKeyboardApp/Views/AppSettingsView.swift","ios_keyboard/HaizhanKeyboardApp/Views/ContentView.swift","ios_keyboard/HaizhanKeyboardApp/Views/LoginView.swift","ios_keyboard/HaizhanKeyboardApp/Views/OnboardingView.swift","ios_keyboard/HaizhanKeyboardApp/project.yml","ios_keyboard/HaizhanKeyboardExtension/Info.plist","ios_keyboard/HaizhanKeyboardExtension/KeyboardExtensionStub.swift","ios_keyboard/Package.swift","ios_keyboard/README.md","ios_keyboard/Sources/HaizhanKeyboard/AI/ContactMatcher.swift","ios_keyboard/Sources/HaizhanKeyboard/AI/ReplyService.swift","ios_keyboard/Sources/HaizhanKeyboard/AI/ScreenshotManager.swift","ios_keyboard/Sources/HaizhanKeyboard/Bridge/KMPBridge.swift","ios_keyboard/Sources/HaizhanKeyboard/Engine/KeyboardEngine.swift","ios_keyboard/Sources/HaizhanKeyboard/Engine/PinyinSegmenter.swift","ios_keyboard/Sources/HaizhanKeyboard/KeyboardViewController.swift","ios_keyboard/Sources/HaizhanKeyboard/Network/ApiClient.swift","ios_keyboard/Sources/HaizhanKeyboard/Network/AuthService.swift","ios_keyboard/Sources/HaizhanKeyboard/Storage/AppGroupStore.swift","ios_keyboard/Sources/HaizhanKeyboard/Storage/KeychainStore.swift","ios_keyboard/Sources/HaizhanKeyboard/Theme/ThemeManager.swift","ios_keyboard/Sources/HaizhanKeyboard/Utils/HapticManager.swift","ios_keyboard/Sources/HaizhanKeyboard/ViewModel/KeyboardViewModel.swift","ios_keyboard/Sources/HaizhanKeyboard/Views/AIPanelView.swift","ios_keyboard/Sources/HaizhanKeyboard/Views/KeyboardView.swift","ios_keyboard/Sources/HaizhanKeyboard/Views/NineGridKeyboard.swift","ios_keyboard/Sources/HaizhanKeyboard/Views/SettingsView.swift","ios_keyboard/Tests/HaizhanKeyboardTests/ApiClientTests.swift","ios_keyboard/Tests/HaizhanKeyboardTests/AppGroupStoreTests.swift","ios_keyboard/Tests/HaizhanKeyboardTests/ContactMatcherTests.swift","ios_keyboard/Tests/HaizhanKeyboardTests/HapticManagerTests.swift","ios_keyboard/Tests/HaizhanKeyboardTests/KeyboardEngineTests.swift","ios_keyboard/Tests/HaizhanKeyboardTests/KeychainStoreTests.swift","ios_keyboard/Tests/HaizhanKeyboardTests/PinyinSegmenterTests.swift","ios_keyboard/Tests/HaizhanKeyboardTests/ReplyServiceTests.swift","ios_keyboard/Tests/HaizhanKeyboardTests/ThemeManagerTests.swift","ios_keyboard/build_kmp_xcframework.sh","openapitools.json","package.json","pnpm-workspace.yaml","scripts/PACKAGE_MANAGER_SUMMARY.md","scripts/check-docs-sync.sh","scripts/download_paddle_ocr_models.sh","scripts/generate-design-tokens.py","scripts/package-manager-migration.md","scripts/pre-commit","server/.dockerignore","server/.env.example","server/.npmrc","server/Makefile","server/README.md","server/ai-service/.dockerignore","server/ai-service/Dockerfile","server/ai-service/jest.config.js","server/ai-service/nest-cli.json","server/ai-service/package.json","server/ai-service/poc-load-test-1770067946237.json","server/ai-service/poc-report-1770067953461.json","server/ai-service/poc-report-1770067953461.md","server/ai-service/poc-report-1771647201192.json","server/ai-service/poc-report-1771647201192.md","server/ai-service/scripts/poc/README.md","server/ai-service/scripts/poc/deploy-models.sh","server/ai-service/scripts/poc/generate-report.ts","server/ai-service/scripts/poc/load-test.ts","server/ai-service/scripts/poc/v1-int8-quality.ts","server/ai-service/scripts/poc/v2-router-accuracy.ts","server/ai-service/scripts/poc/v3-e2e-latency.ts","server/ai-service/scripts/seed-rag.ts","server/ai-service/src/app.module.ts","server/ai-service/src/common/decorators/current-tenant.decorator.ts","server/ai-service/src/common/decorators/public.decorator.ts","server/ai-service/src/common/guards/auth.guard.spec.ts","server/ai-service/src/common/guards/auth.guard.ts","server/ai-service/src/common/redis/index.ts","server/ai-service/src/common/redis/redis.module.ts","server/ai-service/src/common/redis/redis.service.ts","server/ai-service/src/main.ts","server/ai-service/src/modules/ai/ai.controller.ts","server/ai-service/src/modules/ai/ai.module.ts","server/ai-service/src/modules/ai/ai.service.spec.ts","server/ai-service/src/modules/ai/ai.service.ts","server/ai-service/src/modules/ai/dto/generate-reply.dto.ts","server/ai-service/src/modules/ai/legacy-reply.controller.ts","server/ai-service/src/modules/health/health.controller.ts","server/ai-service/src/modules/health/health.module.ts","server/ai-service/src/modules/memory/dto/memory.dto.ts","server/ai-service/src/modules/memory/event.service.spec.ts","server/ai-service/src/modules/memory/event.service.ts","server/ai-service/src/modules/memory/index.ts","server/ai-service/src/modules/memory/memory.controller.ts","server/ai-service/src/modules/memory/memory.module.ts","server/ai-service/src/modules/memory/memory.service.spec.ts","server/ai-service/src/modules/memory/memory.service.ts","server/ai-service/src/modules/memory/profile.service.spec.ts","server/ai-service/src/modules/memory/profile.service.ts","server/ai-service/src/modules/memory/schemas/contact-event.schema.ts","server/ai-service/src/modules/memory/schemas/contact-profile.schema.ts","server/ai-service/src/modules/memory/schemas/conversation-summary.schema.ts","server/ai-service/src/modules/memory/summary.service.spec.ts","server/ai-service/src/modules/memory/summary.service.ts","server/ai-service/src/modules/memory/vector.service.ts","server/ai-service/src/modules/privacy/index.ts","server/ai-service/src/modules/privacy/pii-scrubber.service.ts","server/ai-service/src/modules/privacy/privacy.module.ts","server/ai-service/src/modules/search/agentic/agentic-loop.controller.ts","server/ai-service/src/modules/search/agentic/answer-synthesizer.service.ts","server/ai-service/src/modules/search/agentic/answer-synthesizer.spec.ts","server/ai-service/src/modules/search/agentic/index.ts","server/ai-service/src/modules/search/agentic/query-decomposer.service.ts","server/ai-service/src/modules/search/agentic/query-decomposer.spec.ts","server/ai-service/src/modules/search/agentic/result-evaluator.service.ts","server/ai-service/src/modules/search/agentic/result-evaluator.spec.ts","server/ai-service/src/modules/search/cache/index.ts","server/ai-service/src/modules/search/cache/multi-level-cache.service.ts","server/ai-service/src/modules/search/cache/multi-level-cache.spec.ts","server/ai-service/src/modules/search/config/search.config.ts","server/ai-service/src/modules/search/dto/index.ts","server/ai-service/src/modules/search/dto/search-request.dto.ts","server/ai-service/src/modules/search/dto/search-response.dto.ts","server/ai-service/src/modules/search/experiment/ab-testing.service.ts","server/ai-service/src/modules/search/experiment/experiment.controller.ts","server/ai-service/src/modules/search/experiment/gradual-release.service.ts","server/ai-service/src/modules/search/experiment/index.ts","server/ai-service/src/modules/search/gateway/unified-search-gateway.service.ts","server/ai-service/src/modules/search/gateway/unified-search-gateway.spec.ts","server/ai-service/src/modules/search/index.ts","server/ai-service/src/modules/search/layers/agentic-layer.service.spec.ts","server/ai-service/src/modules/search/layers/agentic-layer.service.ts","server/ai-service/src/modules/search/layers/cache-layer.service.spec.ts","server/ai-service/src/modules/search/layers/cache-layer.service.ts","server/ai-service/src/modules/search/layers/rag-layer.service.spec.ts","server/ai-service/src/modules/search/layers/rag-layer.service.ts","server/ai-service/src/modules/search/monitoring/alert.service.ts","server/ai-service/src/modules/search/monitoring/grafana-dashboard.json","server/ai-service/src/modules/search/monitoring/index.ts","server/ai-service/src/modules/search/monitoring/metrics.service.ts","server/ai-service/src/modules/search/optimization/index.ts","server/ai-service/src/modules/search/optimization/parallel-retriever.service.ts","server/ai-service/src/modules/search/optimization/parallel-retriever.spec.ts","server/ai-service/src/modules/search/router/pure-rule-router.spec.ts","server/ai-service/src/modules/search/router/pure-rule-router.ts","server/ai-service/src/modules/search/router/router.types.ts","server/ai-service/src/modules/search/search.controller.ts","server/ai-service/src/modules/search/search.integration.spec.ts","server/ai-service/src/modules/search/search.module.ts","server/ai-service/src/modules/search/services/elasticsearch.service.ts","server/ai-service/src/modules/search/services/embedding.service.spec.ts","server/ai-service/src/modules/search/services/embedding.service.ts","server/ai-service/src/modules/search/services/index.ts","server/ai-service/src/modules/search/services/llm.service.spec.ts","server/ai-service/src/modules/search/services/llm.service.ts","server/ai-service/src/modules/search/services/milvus.service.ts","server/ai-service/src/modules/search/services/reranker.service.spec.ts","server/ai-service/src/modules/search/services/reranker.service.ts","server/ai-service/src/modules/search/streaming/index.ts","server/ai-service/src/modules/search/streaming/stream-optimizer.service.ts","server/ai-service/src/modules/search/vip/index.ts","server/ai-service/src/modules/search/vip/vip-tier.service.ts","server/ai-service/tsconfig.json","server/api-gateway/.dockerignore","server/api-gateway/Dockerfile","server/api-gateway/logs/.3fa4d5e91883ce1217f62a49f94203b42caa131d-audit.json","server/api-gateway/logs/.92dabeadf9708ae538f84c8892e853b5a8f57f04-audit.json","server/api-gateway/nest-cli.json","server/api-gateway/package.json","server/api-gateway/prisma/README.md","server/api-gateway/prisma/migrations/20260203065715_init/migration.sql","server/api-gateway/prisma/migrations/20260203160000_add_360_view_models/migration.sql","server/api-gateway/prisma/migrations/20260203170000_add_admin_modules/migration.sql","server/api-gateway/prisma/migrations/20260203180000_add_config_and_usage_stats/migration.sql","server/api-gateway/prisma/migrations/20260213000000_add_contact_geo_fields/migration.sql","server/api-gateway/prisma/migrations/20260213100000_expand_prompt_template/migration.sql","server/api-gateway/prisma/migrations/migration_lock.toml","server/api-gateway/prisma/schema.prisma","server/api-gateway/prisma/seed.ts","server/api-gateway/scripts/generate-openapi.ts","server/api-gateway/src/app.module.ts","server/api-gateway/src/common/logger/global-logger.module.ts","server/api-gateway/src/common/logger/global-logger.service.ts","server/api-gateway/src/main.ts","server/api-gateway/src/modules/ai-config/ai-config.controller.ts","server/api-gateway/src/modules/ai-config/ai-config.module.ts","server/api-gateway/src/modules/ai-config/ai-config.service.ts","server/api-gateway/src/modules/ai-config/dto/ai-config.dto.ts","server/api-gateway/src/modules/ai/ai.controller.ts","server/api-gateway/src/modules/ai/ai.module.ts","server/api-gateway/src/modules/ai/ai.service.ts","server/api-gateway/src/modules/audit-logs/audit-logs.controller.ts","server/api-gateway/src/modules/audit-logs/audit-logs.module.ts","server/api-gateway/src/modules/audit-logs/audit-logs.service.ts","server/api-gateway/src/modules/audit-logs/dto/audit-logs.dto.ts","server/api-gateway/src/modules/auth/auth.controller.spec.ts","server/api-gateway/src/modules/auth/auth.controller.ts","server/api-gateway/src/modules/auth/auth.module.ts","server/api-gateway/src/modules/auth/auth.service.spec.ts","server/api-gateway/src/modules/auth/auth.service.ts","server/api-gateway/src/modules/auth/decorators/roles.decorator.ts","server/api-gateway/src/modules/auth/dto/admin-login.dto.ts","server/api-gateway/src/modules/auth/dto/login.dto.ts","server/api-gateway/src/modules/auth/dto/refresh-token.dto.ts","server/api-gateway/src/modules/auth/guards/jwt-auth.guard.ts","server/api-gateway/src/modules/auth/guards/roles.guard.ts","server/api-gateway/src/modules/auth/strategies/jwt.strategy.ts","server/api-gateway/src/modules/contacts/contacts.controller.spec.ts","server/api-gateway/src/modules/contacts/contacts.controller.ts","server/api-gateway/src/modules/contacts/contacts.module.ts","server/api-gateway/src/modules/contacts/contacts.service.spec.ts","server/api-gateway/src/modules/contacts/contacts.service.ts","server/api-gateway/src/modules/contacts/dto/match-contact.dto.ts","server/api-gateway/src/modules/health/health.controller.spec.ts","server/api-gateway/src/modules/health/health.controller.ts","server/api-gateway/src/modules/health/health.module.ts","server/api-gateway/src/modules/knowledge/dto/knowledge-base.dto.ts","server/api-gateway/src/modules/knowledge/dto/search-knowledge.dto.ts","server/api-gateway/src/modules/knowledge/knowledge.controller.spec.ts","server/api-gateway/src/modules/knowledge/knowledge.controller.ts","server/api-gateway/src/modules/knowledge/knowledge.module.ts","server/api-gateway/src/modules/knowledge/knowledge.service.spec.ts","server/api-gateway/src/modules/knowledge/knowledge.service.ts","server/api-gateway/src/modules/mobile-compat/mobile-compat.controller.ts","server/api-gateway/src/modules/mobile-compat/mobile-compat.module.ts","server/api-gateway/src/modules/ocr/ocr.controller.ts","server/api-gateway/src/modules/ocr/ocr.module.ts","server/api-gateway/src/modules/ocr/ocr.service.ts","server/api-gateway/src/modules/pinyin/pinyin.controller.spec.ts","server/api-gateway/src/modules/pinyin/pinyin.controller.ts","server/api-gateway/src/modules/pinyin/pinyin.module.ts","server/api-gateway/src/modules/pinyin/pinyin.service.spec.ts","server/api-gateway/src/modules/pinyin/pinyin.service.ts","server/api-gateway/src/modules/rag/dto/rag.dto.ts","server/api-gateway/src/modules/rag/rag.controller.spec.ts","server/api-gateway/src/modules/rag/rag.controller.ts","server/api-gateway/src/modules/rag/rag.module.ts","server/api-gateway/src/modules/rag/rag.service.runtime.spec.ts","server/api-gateway/src/modules/rag/rag.service.spec.ts","server/api-gateway/src/modules/rag/rag.service.ts","server/api-gateway/src/modules/settings/dto/settings.dto.ts","server/api-gateway/src/modules/settings/settings.controller.spec.ts","server/api-gateway/src/modules/settings/settings.controller.ts","server/api-gateway/src/modules/settings/settings.module.ts","server/api-gateway/src/modules/settings/settings.service.spec.ts","server/api-gateway/src/modules/settings/settings.service.ts","server/api-gateway/src/modules/teams/dto/teams.dto.ts","server/api-gateway/src/modules/teams/teams.controller.spec.ts","server/api-gateway/src/modules/teams/teams.controller.ts","server/api-gateway/src/modules/teams/teams.module.ts","server/api-gateway/src/modules/teams/teams.service.spec.ts","server/api-gateway/src/modules/teams/teams.service.ts","server/api-gateway/src/modules/templates/dto/template.dto.ts","server/api-gateway/src/modules/templates/templates.controller.spec.ts","server/api-gateway/src/modules/templates/templates.controller.ts","server/api-gateway/src/modules/templates/templates.module.ts","server/api-gateway/src/modules/templates/templates.service.spec.ts","server/api-gateway/src/modules/templates/templates.service.ts","server/api-gateway/src/modules/usage/dto/usage.dto.ts","server/api-gateway/src/modules/usage/usage.controller.ts","server/api-gateway/src/modules/usage/usage.module.ts","server/api-gateway/src/modules/usage/usage.service.spec.ts","server/api-gateway/src/modules/usage/usage.service.ts","server/api-gateway/src/modules/users/users.controller.spec.ts","server/api-gateway/src/modules/users/users.controller.ts","server/api-gateway/src/modules/users/users.module.ts","server/api-gateway/src/modules/users/users.service.spec.ts","server/api-gateway/src/modules/users/users.service.ts","server/api-gateway/src/modules/weather/weather.controller.spec.ts","server/api-gateway/src/modules/weather/weather.controller.ts","server/api-gateway/src/modules/weather/weather.module.ts","server/api-gateway/src/modules/weather/weather.service.spec.ts","server/api-gateway/src/modules/weather/weather.service.ts","server/api-gateway/src/shared/prisma/prisma.module.ts","server/api-gateway/src/shared/prisma/prisma.service.ts","server/api-gateway/src/shared/redis/redis.module.ts","server/api-gateway/src/shared/redis/redis.service.ts","server/api-gateway/src/shared/sms/sms.module.ts","server/api-gateway/src/shared/sms/sms.service.spec.ts","server/api-gateway/src/shared/sms/sms.service.ts","server/api-gateway/tsconfig.json","server/docker-compose.override.yml","server/docker-compose.prod.yml","server/docker-compose.yml","server/docker/grafana/provisioning/dashboards/dashboards.yml","server/docker/grafana/provisioning/dashboards/json/api-gateway.json","server/docker/grafana/provisioning/datasources/datasources.yml","server/docker/loki/loki-config.yml","server/docker/mongodb/init.js","server/docker/nginx/conf.d/default.conf","server/docker/nginx/nginx.conf","server/docker/nginx/ssl/.gitkeep","server/docker/nginx/ssl/README.md","server/docker/postgres/init.sql","server/docker/prometheus/alert.rules.yml","server/docker/prometheus/prometheus.yml","server/docker/promtail/promtail-config.yml","server/k8s/vllm/deployment.yaml","server/k8s/vllm/hpa.yaml","server/k8s/vllm/service.yaml","server/model-services/reranker/Dockerfile","server/model-services/reranker/requirements.txt","server/model-services/reranker/reranker_server.py","server/ocr-service/.dockerignore","server/ocr-service/Dockerfile","server/ocr-service/jest.config.js","server/ocr-service/nest-cli.json","server/ocr-service/package.json","server/ocr-service/src/app.module.ts","server/ocr-service/src/main.ts","server/ocr-service/src/modules/health/health.controller.ts","server/ocr-service/src/modules/health/health.module.ts","server/ocr-service/src/modules/ocr/chat-parser.service.spec.ts","server/ocr-service/src/modules/ocr/chat-parser.service.ts","server/ocr-service/src/modules/ocr/dto/chat-screenshot.dto.ts","server/ocr-service/src/modules/ocr/ocr.controller.ts","server/ocr-service/src/modules/ocr/ocr.module.ts","server/ocr-service/src/modules/ocr/ocr.service.spec.ts","server/ocr-service/src/modules/ocr/ocr.service.ts","server/ocr-service/tsconfig.json","server/scripts/backup.sh","server/scripts/check-mobile-api-coverage.js","server/scripts/check-mobile-response-compat.js","server/scripts/deploy.sh","server/scripts/deploy/deploy-infrastructure.sh","server/scripts/deploy/deploy-models.sh","server/scripts/deploy/final-deploy.sh","server/scripts/deploy/stop-models.sh","server/scripts/e2e-smoke.js","server/scripts/health-check.sh","server/scripts/mobile-api-smoke.js","server/scripts/setup-ssl.sh","settings.gradle.kts","shared/README.md","shared/build.gradle.kts","shared/src/androidInstrumentedTest/kotlin/com/haizhan/ime/shared/auth/AndroidTokenStorageTest.kt","shared/src/androidInstrumentedTest/kotlin/com/haizhan/ime/shared/auth/SharedAuthManagerIntegrationTest.kt","shared/src/androidInstrumentedTest/kotlin/com/haizhan/ime/shared/database/DatabaseIntegrationTest.kt","shared/src/androidInstrumentedTest/kotlin/com/haizhan/ime/shared/pinyin/CandidateRankerIntegrationTest.kt","shared/src/androidMain/kotlin/com/haizhan/ime/shared/BuildConfig.kt","shared/src/androidMain/kotlin/com/haizhan/ime/shared/Platform.android.kt","shared/src/androidMain/kotlin/com/haizhan/ime/shared/auth/AndroidTokenStorage.kt","shared/src/androidMain/kotlin/com/haizhan/ime/shared/auth/CurrentTime.android.kt","shared/src/androidMain/kotlin/com/haizhan/ime/shared/database/DatabaseDriverFactory.android.kt","shared/src/androidMain/kotlin/com/haizhan/ime/shared/database/SharedDatabaseKeyManager.kt","shared/src/androidMain/kotlin/com/haizhan/ime/shared/di/PlatformModule.android.kt","shared/src/androidMain/kotlin/com/haizhan/ime/shared/migration/RoomToSqlDelightMigrator.kt","shared/src/androidMain/kotlin/com/haizhan/ime/shared/platform/Connectivity.android.kt","shared/src/androidMain/kotlin/com/haizhan/ime/shared/platform/DeviceInfo.android.kt","shared/src/androidMain/kotlin/com/haizhan/ime/shared/platform/DictionaryLoader.android.kt","shared/src/androidMain/kotlin/com/haizhan/ime/shared/platform/FileSystem.android.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/Platform.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/analytics/AnalyticsTracker.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/ApiClient.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/AuthApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/ContactApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/DashboardApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/FeedbackApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/KnowledgeApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/MemoryApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/NoteApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/OcrApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/PinyinApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/RagSearchApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/ReplyApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/ScriptApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/SearchApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/SessionApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/SettingsApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/SubscriptionApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/UserApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/WeatherApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/auth/AuthManager.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/auth/AuthModels.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/database/DatabaseDriverFactory.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/database/DatabaseExtensions.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/di/SharedModule.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/matcher/NicknameMatcher.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/ContactModel.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/KnowledgeModel.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/AiDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/ApiResponse.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/AuthDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/ContactDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/DashboardDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/FeedbackDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/KnowledgeDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/MemoryDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/MessageDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/NoteDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/OcrDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/PinyinDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/ProfileDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/RagSearchDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/ReplyDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/ScriptDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/SearchDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/SessionDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/SettingsDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/SubscriptionDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/WeatherDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/Candidate.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/CandidateRanker.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/DictEntry.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/NineGridMatcher.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/PinyinConstants.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/PinyinService.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/PinyinSplitter.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/algorithm/CloudSynergyEngine.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/algorithm/DoubleArrayTrie.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/algorithm/DoubleArrayTrieImpl.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/algorithm/DynamicWeightRanker.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/algorithm/PinyinDAG.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/algorithm/ViterbiDecoder.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/platform/Connectivity.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/platform/DeviceInfo.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/platform/DictionaryLoader.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/platform/FileSystem.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/repository/ContactRepository.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/repository/KnowledgeRepository.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/repository/MessageRepository.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/repository/NoteRepository.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/repository/PinyinRepository.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/repository/SearchRepository.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/repository/SettingsRepository.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/repository/UserDictRepository.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/service/MessageChainMatcher.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/service/OcrMatchService.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/service/OfflineFallbackService.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/service/ReplyService.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/service/ScriptService.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/service/SessionService.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/sync/SyncManager.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/util/FlowExt.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/util/LevenshteinDistance.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/util/LruCache.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/util/StringExt.kt","shared/src/commonMain/sqldelight/com/haizhan/ime/shared/database/Contact.sq","shared/src/commonMain/sqldelight/com/haizhan/ime/shared/database/Knowledge.sq","shared/src/commonMain/sqldelight/com/haizhan/ime/shared/database/Message.sq","shared/src/commonMain/sqldelight/com/haizhan/ime/shared/database/Note.sq","shared/src/commonMain/sqldelight/com/haizhan/ime/shared/database/Search.sq","shared/src/commonMain/sqldelight/com/haizhan/ime/shared/database/Settings.sq","shared/src/commonMain/sqldelight/com/haizhan/ime/shared/database/UserDict.sq","shared/src/commonMain/sqldelight/migrations/1.sqm","shared/src/commonTest/kotlin/com/haizhan/ime/shared/analytics/AnalyticsTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/api/ApiClientTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/auth/AuthModelsTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/matcher/NicknameMatcherTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/model/ContactModelTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/model/KnowledgeModelTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/network/NetworkClientTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/pinyin/CandidateRankerTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/pinyin/CandidateTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/pinyin/NineGridMatcherTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/pinyin/PinyinConstantsTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/pinyin/PinyinSplitterTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/pinyin/algorithm/CloudSynergyEngineTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/pinyin/algorithm/DoubleArrayTrieImplTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/pinyin/algorithm/DynamicWeightRankerTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/pinyin/algorithm/PinyinDAGTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/pinyin/algorithm/ViterbiDecoderTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/repository/ContactRepositoryTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/sync/SyncTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/util/LevenshteinDistanceTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/util/PinyinConverterTest.kt","shared/src/iosMain/kotlin/com/haizhan/ime/shared/Platform.ios.kt","shared/src/iosMain/kotlin/com/haizhan/ime/shared/auth/CurrentTime.ios.kt","shared/src/iosMain/kotlin/com/haizhan/ime/shared/auth/IosTokenStorage.kt","shared/src/iosMain/kotlin/com/haizhan/ime/shared/database/DatabaseDriverFactory.ios.kt","shared/src/iosMain/kotlin/com/haizhan/ime/shared/di/PlatformModule.ios.kt","shared/src/iosMain/kotlin/com/haizhan/ime/shared/platform/Connectivity.ios.kt","shared/src/iosMain/kotlin/com/haizhan/ime/shared/platform/DeviceInfo.ios.kt","shared/src/iosMain/kotlin/com/haizhan/ime/shared/platform/DictionaryLoader.ios.kt","shared/src/iosMain/kotlin/com/haizhan/ime/shared/platform/FileSystem.ios.kt","voice/build.gradle.kts","voice/consumer-rules.pro","voice/proguard-rules.pro","voice/src/androidTest/java/com/haizhan/ime/voice/integration/VoiceModuleIntegrationTest.kt","voice/src/androidTest/java/com/haizhan/ime/voice/integration/WakeWordServiceIntegrationTest.kt","voice/src/main/AndroidManifest.xml","voice/src/main/java/com/haizhan/ime/voice/api/AudioPipeline.kt","voice/src/main/java/com/haizhan/ime/voice/api/SpeechRecognitionService.kt","voice/src/main/java/com/haizhan/ime/voice/api/VoiceCoordinator.kt","voice/src/main/java/com/haizhan/ime/voice/api/VoiceErrors.kt","voice/src/main/java/com/haizhan/ime/voice/api/VoiceTypes.kt","voice/src/main/java/com/haizhan/ime/voice/api/WakeWordConfigManager.kt","voice/src/main/java/com/haizhan/ime/voice/api/WakeWordDetectionService.kt","voice/src/main/java/com/haizhan/ime/voice/audio/AudioPipelineImpl.kt","voice/src/main/java/com/haizhan/ime/voice/audio/di/AudioModule.kt","voice/src/main/java/com/haizhan/ime/voice/coordinator/VoiceCoordinatorImpl.kt","voice/src/main/java/com/haizhan/ime/voice/coordinator/di/CoordinatorModule.kt","voice/src/main/java/com/haizhan/ime/voice/denoise/DenoiseAudioConsumer.kt","voice/src/main/java/com/haizhan/ime/voice/denoise/DenoiseManager.kt","voice/src/main/java/com/haizhan/ime/voice/denoise/MusicAwareAEC.kt","voice/src/main/java/com/haizhan/ime/voice/denoise/NoiseEstimator.kt","voice/src/main/java/com/haizhan/ime/voice/denoise/SpectralSubtractor.kt","voice/src/main/java/com/haizhan/ime/voice/denoise/VoiceActivityDetector.kt","voice/src/main/java/com/haizhan/ime/voice/denoise/di/DenoiseModule.kt","voice/src/main/java/com/haizhan/ime/voice/di/VoiceModule.kt","voice/src/main/java/com/haizhan/ime/voice/engine/VoiceInputEngine.kt","voice/src/main/java/com/haizhan/ime/voice/model/MultiModelManager.kt","voice/src/main/java/com/haizhan/ime/voice/model/VoiceModelManager.kt","voice/src/main/java/com/haizhan/ime/voice/monitoring/VoicePerformanceMonitor.kt","voice/src/main/java/com/haizhan/ime/voice/monitoring/di/MonitoringModule.kt","voice/src/main/java/com/haizhan/ime/voice/recognition/AudioDiagnostics.kt","voice/src/main/java/com/haizhan/ime/voice/recognition/SpeechRecognitionServiceImpl.kt","voice/src/main/java/com/haizhan/ime/voice/recognition/VoskGrammarBuilder.kt","voice/src/main/java/com/haizhan/ime/voice/recognition/VoskRecognizer.kt","voice/src/main/java/com/haizhan/ime/voice/recognition/di/SpeechModule.kt","voice/src/main/java/com/haizhan/ime/voice/ui/VoiceUiTypes.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/WakeWordDetectionServiceImpl.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/analytics/WakeWordAnalytics.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/config/WakeWordConfigManagerImpl.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/config/di/ConfigModule.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/confirmation/WakeWordConfirmation.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/detector/IWakeWordDetector.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/detector/VoskWakeWordDetector.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/di/ConfirmationModule.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/di/MatcherModule.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/di/ParserModule.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/di/RepositoryModule.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/di/WakeWordModule.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/filter/FalseWakeFilter.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/matcher/PinyinData.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/matcher/PinyinMatcher.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/matcher/TrieWordMatcher.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/parser/WakeWordCommandParser.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/predetect/EnergyPatternMatcher.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/predetect/PitchExtractor.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/predetect/QuickWakeDetector.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/predetect/SingingModeDetector.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/predetect/SpectralAnalyzer.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/predetect/SyllableDetector.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/predetect/VibratoDetector.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/predetect/VoiceCharacteristicAnalyzer.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/predetect/VoiceProfileAnalyzer.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/predetect/di/PredetectModule.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/repository/WakeWordRepository.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/sensitivity/AdaptiveSensitivity.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/service/WakeWordService.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/util/PinyinUtils.kt","voice/src/test/java/com/haizhan/ime/voice/api/HotwordConfigTest.kt","voice/src/test/java/com/haizhan/ime/voice/audio/AudioPipelineImplTest.kt","voice/src/test/java/com/haizhan/ime/voice/coordinator/VoiceCoordinatorImplTest.kt","voice/src/test/java/com/haizhan/ime/voice/denoise/DenoiseManagerTest.kt","voice/src/test/java/com/haizhan/ime/voice/denoise/MusicAwareAECTest.kt","voice/src/test/java/com/haizhan/ime/voice/denoise/SpectralSubtractorTest.kt","voice/src/test/java/com/haizhan/ime/voice/denoise/VoiceActivityDetectorTest.kt.bak","voice/src/test/java/com/haizhan/ime/voice/model/MultiModelManagerTest.kt","voice/src/test/java/com/haizhan/ime/voice/monitoring/VoicePerformanceMonitorTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/config/WakeWordConfigManagerTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/confirmation/WakeWordConfirmationTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/filter/FalseWakeFilterTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/matcher/PinyinDataTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/matcher/PinyinMatcherTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/matcher/TrieWordMatcherTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/parser/WakeWordCommandParserTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/predetect/QuickWakeDetectorTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/predetect/SingingModeDetectorTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/predetect/SyllableDetectorTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/predetect/VibratoDetectorTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/predetect/VoiceCharacteristicAnalyzerTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/predetect/VoiceProfileAnalyzerTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/repository/WakeWordRepositorySerializationTest.kt"],"removed":[],"modified":[]}],"total_commits":0,"head_commit":{"id":"893022bfd17ce1f2e75e75651551cf8ceaacfe45","message":"feat: 嗨赞AI输入法Android版初始提交\n","url":"https://gitea.g-hi.com/luoanwu/haizhan-ime-android/commit/893022bfd17ce1f2e75e75651551cf8ceaacfe45","author":{"name":"luoanwu","email":"law@g-hi.com","username":"luoanwu"},"committer":{"name":"luoanwu","email":"law@g-hi.com","username":"luoanwu"},"verification":null,"timestamp":"2026-02-27T15:28:58+08:00","added":[".claude/skills/haizhan-ime-development.md",".claude/worktrees/charming-zhukovsky",".editorconfig",".github/workflows/ci.yml",".github/workflows/frontend-backend-ci.yml",".github/workflows/ios-ci.yml",".github/workflows/performance-check.yml",".github/workflows/pr-check.yml",".github/workflows/release.yml",".gitignore",".npmrc","CHANGELOG.md","CLAUDE.md","MIGRATION_COMPLETE_REPORT.md","README.md","admin-web/.env.development","admin-web/.eslintrc.cjs","admin-web/.gitignore","admin-web/.npmrc","admin-web/README.md","admin-web/e2e/all-pages.spec.ts","admin-web/e2e/crud-tests.spec.ts","admin-web/e2e/dashboard.spec.ts","admin-web/e2e/interactive-click.spec.ts","admin-web/e2e/login.spec.ts","admin-web/e2e/templates.spec.ts","admin-web/index.html","admin-web/package.json","admin-web/playwright.config.ts","admin-web/postcss.config.js","admin-web/public/favicon.svg","admin-web/src/App.vue","admin-web/src/api/ai-config.ts","admin-web/src/api/audit.ts","admin-web/src/api/auth.ts","admin-web/src/api/contact.ts","admin-web/src/api/knowledge.ts","admin-web/src/api/rag.ts","admin-web/src/api/settings.ts","admin-web/src/api/team.ts","admin-web/src/api/template.ts","admin-web/src/api/usage.ts","admin-web/src/api/user.ts","admin-web/src/assets/logo.svg","admin-web/src/components/UserCard.vue","admin-web/src/components/index.ts","admin-web/src/composables/usePermission.ts","admin-web/src/composables/useResponsive.ts","admin-web/src/composables/useTable.ts","admin-web/src/directives/index.ts","admin-web/src/directives/permission.ts","admin-web/src/env.d.ts","admin-web/src/layouts/MainLayout.vue","admin-web/src/layouts/components/HeaderBar.vue","admin-web/src/layouts/components/MobileDrawer.vue","admin-web/src/layouts/components/SidebarMenu.vue","admin-web/src/main.ts","admin-web/src/router/index.ts","admin-web/src/stores/app.ts","admin-web/src/stores/user.ts","admin-web/src/styles/index.scss","admin-web/src/styles/variables.scss","admin-web/src/types/ai-config.ts","admin-web/src/types/api.ts","admin-web/src/types/audit.ts","admin-web/src/types/contact.ts","admin-web/src/types/knowledge.ts","admin-web/src/types/permission.ts","admin-web/src/types/rag.ts","admin-web/src/types/settings.ts","admin-web/src/types/team.ts","admin-web/src/types/template.ts","admin-web/src/types/usage.ts","admin-web/src/types/user.ts","admin-web/src/utils/request.ts","admin-web/src/views/ai-config/index.vue","admin-web/src/views/audit/index.vue","admin-web/src/views/contacts/index.vue","admin-web/src/views/contacts/profile.vue","admin-web/src/views/dashboard/index.vue","admin-web/src/views/error/403.vue","admin-web/src/views/error/404.vue","admin-web/src/views/knowledge/index.vue","admin-web/src/views/login/index.vue","admin-web/src/views/profile/index.vue","admin-web/src/views/rag/index.vue","admin-web/src/views/settings/index.vue","admin-web/src/views/teams/index.vue","admin-web/src/views/templates/index.vue","admin-web/src/views/usage/index.vue","admin-web/src/views/users/index.vue","admin-web/tailwind.config.js","admin-web/test-results/.last-run.json","admin-web/tsconfig.app.json","admin-web/tsconfig.json","admin-web/tsconfig.node.json","admin-web/vite.config.d.ts","admin-web/vite.config.js","admin-web/vite.config.ts","ai-panel/build.gradle.kts","ai-panel/consumer-rules.pro","ai-panel/proguard-rules.pro","ai-panel/src/main/AndroidManifest.xml","ai-panel/src/main/java/com/haizhan/ime/panel/AiPanelManager.kt","ai-panel/src/main/java/com/haizhan/ime/panel/AiPanelModels.kt","ai-panel/src/main/java/com/haizhan/ime/panel/agentic/AgenticDecisionEngine.kt","ai-panel/src/main/java/com/haizhan/ime/panel/agentic/AgenticRouter.kt","ai-panel/src/main/java/com/haizhan/ime/panel/agentic/AgenticTypes.kt","ai-panel/src/main/java/com/haizhan/ime/panel/agentic/CostController.kt","ai-panel/src/main/java/com/haizhan/ime/panel/agentic/HybridSearchExecutor.kt","ai-panel/src/main/java/com/haizhan/ime/panel/agentic/di/AgenticModule.kt","ai-panel/src/main/java/com/haizhan/ime/panel/contact/AvatarMatcher.kt","ai-panel/src/main/java/com/haizhan/ime/panel/contact/ContactCache.kt","ai-panel/src/main/java/com/haizhan/ime/panel/contact/ContactContextPreloader.kt","ai-panel/src/main/java/com/haizhan/ime/panel/contact/ContactIndexes.kt","ai-panel/src/main/java/com/haizhan/ime/panel/contact/ContactMatcher.kt","ai-panel/src/main/java/com/haizhan/ime/panel/contact/ContactMatcherData.kt","ai-panel/src/main/java/com/haizhan/ime/panel/contact/EnhancedContactMatcher.kt","ai-panel/src/main/java/com/haizhan/ime/panel/contact/MatchedContact.kt","ai-panel/src/main/java/com/haizhan/ime/panel/contact/NicknameMatcher.kt","ai-panel/src/main/java/com/haizhan/ime/panel/context/InputContextCollector.kt","ai-panel/src/main/java/com/haizhan/ime/panel/context/UnifiedContextManager.kt","ai-panel/src/main/java/com/haizhan/ime/panel/di/AiPanelModule.kt","ai-panel/src/main/java/com/haizhan/ime/panel/di/ContactModule.kt","ai-panel/src/main/java/com/haizhan/ime/panel/di/ContextModule.kt","ai-panel/src/main/java/com/haizhan/ime/panel/di/OcrModule.kt","ai-panel/src/main/java/com/haizhan/ime/panel/di/ReplyModule.kt","ai-panel/src/main/java/com/haizhan/ime/panel/di/ScreenshotModule.kt","ai-panel/src/main/java/com/haizhan/ime/panel/knowledge/KnowledgeService.kt","ai-panel/src/main/java/com/haizhan/ime/panel/memory/ContactMemoryModels.kt","ai-panel/src/main/java/com/haizhan/ime/panel/memory/ContactMemoryService.kt","ai-panel/src/main/java/com/haizhan/ime/panel/memory/MemoryDtoMapper.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ocr/EnhancedSenderDetector.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ocr/MessageParser.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ocr/OcrReliabilityScore.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ocr/OcrService.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ocr/TitleBarParser.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ocr/adapter/ChatMessageAdapter.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ocr/adapter/DingTalkMessageAdapter.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ocr/adapter/FeishuMessageAdapter.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ocr/adapter/MessageAdapterFactory.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ocr/adapter/WeChatMessageAdapter.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ocr/adapter/WeWorkMessageAdapter.kt","ai-panel/src/main/java/com/haizhan/ime/panel/reply/BatteryAwareManager.kt","ai-panel/src/main/java/com/haizhan/ime/panel/reply/ClipboardHelper.kt","ai-panel/src/main/java/com/haizhan/ime/panel/reply/FrequencyController.kt","ai-panel/src/main/java/com/haizhan/ime/panel/reply/RagReplyGenerator.kt","ai-panel/src/main/java/com/haizhan/ime/panel/reply/ReplyGenerator.kt","ai-panel/src/main/java/com/haizhan/ime/panel/reply/ReplyStyle.kt","ai-panel/src/main/java/com/haizhan/ime/panel/screenshot/RegionDetector.kt","ai-panel/src/main/java/com/haizhan/ime/panel/screenshot/ScreenshotManager.kt","ai-panel/src/main/java/com/haizhan/ime/panel/service/ScreenshotForegroundService.kt","ai-panel/src/main/java/com/haizhan/ime/panel/trigger/AppDetector.kt","ai-panel/src/main/java/com/haizhan/ime/panel/trigger/TriggerDetector.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/AIPanelScreen.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/AiPanelTheme.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/Contact360View.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/ContactCard.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/ContactSelector.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/EmotionBadge.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/FunctionTabBar.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/IntentBadge.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/KnowledgeCard.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/KnowledgePanel.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/QuickReplyPanel.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/ReplyCard.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/components/ContactComponents.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/components/HistoryComponents.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/components/KnowledgeComponents.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/components/NoteComponents.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/components/OcrComponents.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/components/PanelCommon.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/components/ReplyComponents.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/components/TeamComponents.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/tabs/AiReplyTab.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/tabs/ContactsTab.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/tabs/HistoryTab.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/tabs/KnowledgeTab.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/tabs/NoteTab.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/tabs/OcrTab.kt","ai-panel/src/main/java/com/haizhan/ime/panel/ui/tabs/TeamTab.kt","ai-panel/src/main/java/com/haizhan/ime/panel/weather/WeatherService.kt","ai-panel/src/main/res/drawable/ic_ai_reply.xml","ai-panel/src/main/res/drawable/ic_capture.xml","ai-panel/src/main/res/drawable/ic_contacts.xml","ai-panel/src/main/res/drawable/ic_knowledge.xml","ai-panel/src/main/res/drawable/ic_ocr.xml","ai-panel/src/main/res/drawable/ic_refresh.xml","ai-panel/src/main/res/drawable/ic_screenshot.xml","ai-panel/src/main/res/drawable/ic_stop.xml","ai-panel/src/test/java/com/haizhan/ime/panel/AiPanelManagerTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/agentic/AgenticDecisionEngineTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/agentic/AgenticRouterTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/agentic/AgenticTypesTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/agentic/CostControllerTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/agentic/ResultQualityEvaluatorTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/contact/ContactCacheTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/contact/ContactContextPreloaderTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/contact/ContactIndexPerformanceTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/contact/ContactIndexesTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/contact/ContactMatcherTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/contact/ContactMemoryServiceTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/contact/MatchedContactTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/contact/NicknameMatcherTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/context/InputContextCollectorTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/context/UnifiedContextManagerTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/knowledge/KnowledgeServiceTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/ocr/EnhancedSenderDetectorTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/ocr/MessageParserTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/ocr/OcrReliabilityScoreTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/ocr/OcrServiceTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/ocr/TitleBarParserTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/platform/DingTalkAdapterTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/platform/FeishuAdapterTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/platform/WeChatAdapterTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/platform/WeWorkAdapterTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/reply/BatteryAwareManagerTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/reply/ClipboardHelperTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/reply/FrequencyControllerTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/reply/RagReplyGeneratorTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/reply/ReplyGeneratorTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/reply/ReplyStyleTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/screenshot/RegionDetectorTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/screenshot/ScreenshotManagerTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/trigger/AppDetectorTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/trigger/TriggerDetectorTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/ui/AIPanelScreenTest.kt","ai-panel/src/test/java/com/haizhan/ime/panel/ui/ReplyCardTest.kt","api-clients/android/.openapi-generator-ignore","api-clients/android/.openapi-generator/FILES","api-clients/android/.openapi-generator/VERSION","api-clients/android/README.md","api-clients/android/build.gradle","api-clients/android/docs/AdminLoginDto.md","api-clients/android/docs/AiConfigApi.md","api-clients/android/docs/AuditLogsApi.md","api-clients/android/docs/AuthApi.md","api-clients/android/docs/BatchRemoveContactsDto.md","api-clients/android/docs/ChunkingConfigDto.md","api-clients/android/docs/Contact360ResponseDto.md","api-clients/android/docs/Contact360ViewDto.md","api-clients/android/docs/ContactDetailResponseDto.md","api-clients/android/docs/ContactDto.md","api-clients/android/docs/ContactEventDto.md","api-clients/android/docs/ContactListResponseDto.md","api-clients/android/docs/ContactProfileDto.md","api-clients/android/docs/ContactStatsDto.md","api-clients/android/docs/ContactTagDto.md","api-clients/android/docs/ContactsApi.md","api-clients/android/docs/ConversationSummaryDto.md","api-clients/android/docs/CreateContactDto.md","api-clients/android/docs/CreateContactEventDto.md","api-clients/android/docs/CreateKnowledgeBaseDto.md","api-clients/android/docs/CreateKnowledgeDocumentDto.md","api-clients/android/docs/CreateQwenModelDto.md","api-clients/android/docs/DefaultApi.md","api-clients/android/docs/EmbeddingConfigDto.md","api-clients/android/docs/EmbeddingModelDto.md","api-clients/android/docs/GenerationConfigDto.md","api-clients/android/docs/HealthApi.md","api-clients/android/docs/KnowledgeApi.md","api-clients/android/docs/KnowledgeBaseResponseDto.md","api-clients/android/docs/KnowledgeDocumentListResponseDto.md","api-clients/android/docs/KnowledgeDocumentResponseDto.md","api-clients/android/docs/LoginDto.md","api-clients/android/docs/MatchContactDto.md","api-clients/android/docs/MatchContactResponseDto.md","api-clients/android/docs/MobileCompatApi.md","api-clients/android/docs/PinyinApi.md","api-clients/android/docs/PipelineHealthDto.md","api-clients/android/docs/PipelineMetricsDto.md","api-clients/android/docs/PreviewChunkingDto.md","api-clients/android/docs/QwenModelConfigDto.md","api-clients/android/docs/QwenModelFeaturesDto.md","api-clients/android/docs/RagApi.md","api-clients/android/docs/RagConfigDto.md","api-clients/android/docs/RagMetricsDto.md","api-clients/android/docs/RagPipelineStatusDto.md","api-clients/android/docs/RagQueryDto.md","api-clients/android/docs/RebuildIndexDto.md","api-clients/android/docs/RefreshTokenDto.md","api-clients/android/docs/RetrievalConfigDto.md","api-clients/android/docs/SettingsApi.md","api-clients/android/docs/SyncContactsDto.md","api-clients/android/docs/SyncContactsResponseDto.md","api-clients/android/docs/TeamsApi.md","api-clients/android/docs/ToggleQwenModelDto.md","api-clients/android/docs/UpdateContactDto.md","api-clients/android/docs/UpdateKnowledgeBaseDto.md","api-clients/android/docs/UpdateKnowledgeDocumentDto.md","api-clients/android/docs/UpdateQwenModelDto.md","api-clients/android/docs/UpdateRagConfigDto.md","api-clients/android/docs/UsageApi.md","api-clients/android/docs/WeatherApi.md","api-clients/android/gradle/wrapper/gradle-wrapper.jar","api-clients/android/gradle/wrapper/gradle-wrapper.properties","api-clients/android/gradlew","api-clients/android/gradlew.bat","api-clients/android/settings.gradle","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/AiConfigApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/AuditLogsApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/AuthApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/ContactsApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/DefaultApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/HealthApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/KnowledgeApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/MobileCompatApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/PinyinApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/RagApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/SettingsApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/TeamsApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/UsageApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/apis/WeatherApi.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/auth/HttpBearerAuth.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/infrastructure/ApiClient.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/infrastructure/BigDecimalAdapter.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/infrastructure/BigIntegerAdapter.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/infrastructure/ByteArrayAdapter.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/infrastructure/CollectionFormats.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/infrastructure/LocalDateAdapter.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/infrastructure/LocalDateTimeAdapter.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/infrastructure/OffsetDateTimeAdapter.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/infrastructure/ResponseExt.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/infrastructure/Serializer.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/infrastructure/URIAdapter.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/infrastructure/UUIDAdapter.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/AdminLoginDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/BatchRemoveContactsDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/ChunkingConfigDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/Contact360ResponseDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/Contact360ViewDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/ContactDetailResponseDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/ContactDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/ContactEventDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/ContactListResponseDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/ContactProfileDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/ContactStatsDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/ContactTagDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/ConversationSummaryDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/CreateContactDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/CreateContactEventDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/CreateKnowledgeBaseDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/CreateKnowledgeDocumentDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/CreateQwenModelDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/EmbeddingConfigDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/EmbeddingModelDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/GenerationConfigDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/KnowledgeBaseResponseDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/KnowledgeDocumentListResponseDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/KnowledgeDocumentResponseDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/LoginDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/MatchContactDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/MatchContactResponseDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/PipelineHealthDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/PipelineMetricsDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/PreviewChunkingDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/QwenModelConfigDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/QwenModelFeaturesDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/RagConfigDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/RagMetricsDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/RagPipelineStatusDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/RagQueryDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/RebuildIndexDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/RefreshTokenDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/RetrievalConfigDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/SyncContactsDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/SyncContactsResponseDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/ToggleQwenModelDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/UpdateContactDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/UpdateKnowledgeBaseDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/UpdateKnowledgeDocumentDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/UpdateQwenModelDto.kt","api-clients/android/src/main/kotlin/com/haizhan/ime/api/models/UpdateRagConfigDto.kt","api-clients/flutter/.gitignore","api-clients/flutter/.openapi-generator-ignore","api-clients/flutter/.openapi-generator/FILES","api-clients/flutter/.openapi-generator/VERSION","api-clients/flutter/README.md","api-clients/flutter/analysis_options.yaml","api-clients/flutter/doc/AdminLoginDto.md","api-clients/flutter/doc/AiConfigApi.md","api-clients/flutter/doc/AuditLogsApi.md","api-clients/flutter/doc/AuthApi.md","api-clients/flutter/doc/BatchRemoveContactsDto.md","api-clients/flutter/doc/ChunkingConfigDto.md","api-clients/flutter/doc/Contact360ResponseDto.md","api-clients/flutter/doc/Contact360ViewDto.md","api-clients/flutter/doc/ContactDetailResponseDto.md","api-clients/flutter/doc/ContactDto.md","api-clients/flutter/doc/ContactEventDto.md","api-clients/flutter/doc/ContactListResponseDto.md","api-clients/flutter/doc/ContactProfileDto.md","api-clients/flutter/doc/ContactStatsDto.md","api-clients/flutter/doc/ContactTagDto.md","api-clients/flutter/doc/ContactsApi.md","api-clients/flutter/doc/ConversationSummaryDto.md","api-clients/flutter/doc/CreateContactDto.md","api-clients/flutter/doc/CreateContactEventDto.md","api-clients/flutter/doc/CreateKnowledgeBaseDto.md","api-clients/flutter/doc/CreateKnowledgeDocumentDto.md","api-clients/flutter/doc/CreateQwenModelDto.md","api-clients/flutter/doc/DefaultApi.md","api-clients/flutter/doc/EmbeddingConfigDto.md","api-clients/flutter/doc/EmbeddingModelDto.md","api-clients/flutter/doc/GenerationConfigDto.md","api-clients/flutter/doc/HealthApi.md","api-clients/flutter/doc/KnowledgeApi.md","api-clients/flutter/doc/KnowledgeBaseResponseDto.md","api-clients/flutter/doc/KnowledgeDocumentListResponseDto.md","api-clients/flutter/doc/KnowledgeDocumentResponseDto.md","api-clients/flutter/doc/LoginDto.md","api-clients/flutter/doc/MatchContactDto.md","api-clients/flutter/doc/MatchContactResponseDto.md","api-clients/flutter/doc/MobileCompatApi.md","api-clients/flutter/doc/PinyinApi.md","api-clients/flutter/doc/PipelineHealthDto.md","api-clients/flutter/doc/PipelineMetricsDto.md","api-clients/flutter/doc/PreviewChunkingDto.md","api-clients/flutter/doc/QwenModelConfigDto.md","api-clients/flutter/doc/QwenModelFeaturesDto.md","api-clients/flutter/doc/RagApi.md","api-clients/flutter/doc/RagConfigDto.md","api-clients/flutter/doc/RagMetricsDto.md","api-clients/flutter/doc/RagPipelineStatusDto.md","api-clients/flutter/doc/RagQueryDto.md","api-clients/flutter/doc/RebuildIndexDto.md","api-clients/flutter/doc/RefreshTokenDto.md","api-clients/flutter/doc/RetrievalConfigDto.md","api-clients/flutter/doc/SettingsApi.md","api-clients/flutter/doc/SyncContactsDto.md","api-clients/flutter/doc/SyncContactsResponseDto.md","api-clients/flutter/doc/TeamsApi.md","api-clients/flutter/doc/ToggleQwenModelDto.md","api-clients/flutter/doc/UpdateContactDto.md","api-clients/flutter/doc/UpdateKnowledgeBaseDto.md","api-clients/flutter/doc/UpdateKnowledgeDocumentDto.md","api-clients/flutter/doc/UpdateQwenModelDto.md","api-clients/flutter/doc/UpdateRagConfigDto.md","api-clients/flutter/doc/UsageApi.md","api-clients/flutter/doc/WeatherApi.md","api-clients/flutter/lib/haizhan_api.dart","api-clients/flutter/lib/src/api.dart","api-clients/flutter/lib/src/api/ai_config_api.dart","api-clients/flutter/lib/src/api/audit_logs_api.dart","api-clients/flutter/lib/src/api/auth_api.dart","api-clients/flutter/lib/src/api/contacts_api.dart","api-clients/flutter/lib/src/api/default_api.dart","api-clients/flutter/lib/src/api/health_api.dart","api-clients/flutter/lib/src/api/knowledge_api.dart","api-clients/flutter/lib/src/api/mobile_compat_api.dart","api-clients/flutter/lib/src/api/pinyin_api.dart","api-clients/flutter/lib/src/api/rag_api.dart","api-clients/flutter/lib/src/api/settings_api.dart","api-clients/flutter/lib/src/api/teams_api.dart","api-clients/flutter/lib/src/api/usage_api.dart","api-clients/flutter/lib/src/api/weather_api.dart","api-clients/flutter/lib/src/api_util.dart","api-clients/flutter/lib/src/auth/api_key_auth.dart","api-clients/flutter/lib/src/auth/auth.dart","api-clients/flutter/lib/src/auth/basic_auth.dart","api-clients/flutter/lib/src/auth/bearer_auth.dart","api-clients/flutter/lib/src/auth/oauth.dart","api-clients/flutter/lib/src/date_serializer.dart","api-clients/flutter/lib/src/model/admin_login_dto.dart","api-clients/flutter/lib/src/model/batch_remove_contacts_dto.dart","api-clients/flutter/lib/src/model/chunking_config_dto.dart","api-clients/flutter/lib/src/model/contact360_response_dto.dart","api-clients/flutter/lib/src/model/contact360_view_dto.dart","api-clients/flutter/lib/src/model/contact_detail_response_dto.dart","api-clients/flutter/lib/src/model/contact_dto.dart","api-clients/flutter/lib/src/model/contact_event_dto.dart","api-clients/flutter/lib/src/model/contact_list_response_dto.dart","api-clients/flutter/lib/src/model/contact_profile_dto.dart","api-clients/flutter/lib/src/model/contact_stats_dto.dart","api-clients/flutter/lib/src/model/contact_tag_dto.dart","api-clients/flutter/lib/src/model/conversation_summary_dto.dart","api-clients/flutter/lib/src/model/create_contact_dto.dart","api-clients/flutter/lib/src/model/create_contact_event_dto.dart","api-clients/flutter/lib/src/model/create_knowledge_base_dto.dart","api-clients/flutter/lib/src/model/create_knowledge_document_dto.dart","api-clients/flutter/lib/src/model/create_qwen_model_dto.dart","api-clients/flutter/lib/src/model/date.dart","api-clients/flutter/lib/src/model/embedding_config_dto.dart","api-clients/flutter/lib/src/model/embedding_model_dto.dart","api-clients/flutter/lib/src/model/generation_config_dto.dart","api-clients/flutter/lib/src/model/knowledge_base_response_dto.dart","api-clients/flutter/lib/src/model/knowledge_document_list_response_dto.dart","api-clients/flutter/lib/src/model/knowledge_document_response_dto.dart","api-clients/flutter/lib/src/model/login_dto.dart","api-clients/flutter/lib/src/model/match_contact_dto.dart","api-clients/flutter/lib/src/model/match_contact_response_dto.dart","api-clients/flutter/lib/src/model/pipeline_health_dto.dart","api-clients/flutter/lib/src/model/pipeline_metrics_dto.dart","api-clients/flutter/lib/src/model/preview_chunking_dto.dart","api-clients/flutter/lib/src/model/qwen_model_config_dto.dart","api-clients/flutter/lib/src/model/qwen_model_features_dto.dart","api-clients/flutter/lib/src/model/rag_config_dto.dart","api-clients/flutter/lib/src/model/rag_metrics_dto.dart","api-clients/flutter/lib/src/model/rag_pipeline_status_dto.dart","api-clients/flutter/lib/src/model/rag_query_dto.dart","api-clients/flutter/lib/src/model/rebuild_index_dto.dart","api-clients/flutter/lib/src/model/refresh_token_dto.dart","api-clients/flutter/lib/src/model/retrieval_config_dto.dart","api-clients/flutter/lib/src/model/sync_contacts_dto.dart","api-clients/flutter/lib/src/model/sync_contacts_response_dto.dart","api-clients/flutter/lib/src/model/toggle_qwen_model_dto.dart","api-clients/flutter/lib/src/model/update_contact_dto.dart","api-clients/flutter/lib/src/model/update_knowledge_base_dto.dart","api-clients/flutter/lib/src/model/update_knowledge_document_dto.dart","api-clients/flutter/lib/src/model/update_qwen_model_dto.dart","api-clients/flutter/lib/src/model/update_rag_config_dto.dart","api-clients/flutter/lib/src/serializers.dart","api-clients/flutter/pubspec.yaml","api-clients/flutter/test/admin_login_dto_test.dart","api-clients/flutter/test/ai_config_api_test.dart","api-clients/flutter/test/audit_logs_api_test.dart","api-clients/flutter/test/auth_api_test.dart","api-clients/flutter/test/batch_remove_contacts_dto_test.dart","api-clients/flutter/test/chunking_config_dto_test.dart","api-clients/flutter/test/contact360_response_dto_test.dart","api-clients/flutter/test/contact360_view_dto_test.dart","api-clients/flutter/test/contact_detail_response_dto_test.dart","api-clients/flutter/test/contact_dto_test.dart","api-clients/flutter/test/contact_event_dto_test.dart","api-clients/flutter/test/contact_list_response_dto_test.dart","api-clients/flutter/test/contact_profile_dto_test.dart","api-clients/flutter/test/contact_stats_dto_test.dart","api-clients/flutter/test/contact_tag_dto_test.dart","api-clients/flutter/test/contacts_api_test.dart","api-clients/flutter/test/conversation_summary_dto_test.dart","api-clients/flutter/test/create_contact_dto_test.dart","api-clients/flutter/test/create_contact_event_dto_test.dart","api-clients/flutter/test/create_knowledge_base_dto_test.dart","api-clients/flutter/test/create_knowledge_document_dto_test.dart","api-clients/flutter/test/create_qwen_model_dto_test.dart","api-clients/flutter/test/default_api_test.dart","api-clients/flutter/test/embedding_config_dto_test.dart","api-clients/flutter/test/embedding_model_dto_test.dart","api-clients/flutter/test/generation_config_dto_test.dart","api-clients/flutter/test/health_api_test.dart","api-clients/flutter/test/knowledge_api_test.dart","api-clients/flutter/test/knowledge_base_response_dto_test.dart","api-clients/flutter/test/knowledge_document_list_response_dto_test.dart","api-clients/flutter/test/knowledge_document_response_dto_test.dart","api-clients/flutter/test/login_dto_test.dart","api-clients/flutter/test/match_contact_dto_test.dart","api-clients/flutter/test/match_contact_response_dto_test.dart","api-clients/flutter/test/mobile_compat_api_test.dart","api-clients/flutter/test/pinyin_api_test.dart","api-clients/flutter/test/pipeline_health_dto_test.dart","api-clients/flutter/test/pipeline_metrics_dto_test.dart","api-clients/flutter/test/preview_chunking_dto_test.dart","api-clients/flutter/test/qwen_model_config_dto_test.dart","api-clients/flutter/test/qwen_model_features_dto_test.dart","api-clients/flutter/test/rag_api_test.dart","api-clients/flutter/test/rag_config_dto_test.dart","api-clients/flutter/test/rag_metrics_dto_test.dart","api-clients/flutter/test/rag_pipeline_status_dto_test.dart","api-clients/flutter/test/rag_query_dto_test.dart","api-clients/flutter/test/rebuild_index_dto_test.dart","api-clients/flutter/test/refresh_token_dto_test.dart","api-clients/flutter/test/retrieval_config_dto_test.dart","api-clients/flutter/test/settings_api_test.dart","api-clients/flutter/test/sync_contacts_dto_test.dart","api-clients/flutter/test/sync_contacts_response_dto_test.dart","api-clients/flutter/test/teams_api_test.dart","api-clients/flutter/test/toggle_qwen_model_dto_test.dart","api-clients/flutter/test/update_contact_dto_test.dart","api-clients/flutter/test/update_knowledge_base_dto_test.dart","api-clients/flutter/test/update_knowledge_document_dto_test.dart","api-clients/flutter/test/update_qwen_model_dto_test.dart","api-clients/flutter/test/update_rag_config_dto_test.dart","api-clients/flutter/test/usage_api_test.dart","api-clients/flutter/test/weather_api_test.dart","api-clients/ios/.gitignore","api-clients/ios/.openapi-generator-ignore","api-clients/ios/.openapi-generator/FILES","api-clients/ios/.openapi-generator/VERSION","api-clients/ios/.swiftformat","api-clients/ios/Cartfile","api-clients/ios/HaizhanAPI.podspec","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIHelper.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/AiConfigAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/AuditLogsAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/AuthAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/ContactsAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/DefaultAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/HealthAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/KnowledgeAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/MobileCompatAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/PinyinAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/RagAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/SettingsAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/TeamsAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/UsageAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/APIs/WeatherAPI.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/CodableHelper.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Configuration.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Extensions.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/JSONDataEncoding.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/JSONEncodingHelper.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/AdminLoginDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/BatchRemoveContactsDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/ChunkingConfigDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/Contact360ResponseDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/Contact360ViewDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/ContactDetailResponseDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/ContactDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/ContactEventDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/ContactListResponseDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/ContactProfileDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/ContactStatsDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/ContactTagDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/ConversationSummaryDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/CreateContactDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/CreateContactEventDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/CreateKnowledgeBaseDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/CreateKnowledgeDocumentDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/CreateQwenModelDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/EmbeddingConfigDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/EmbeddingModelDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/GenerationConfigDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/KnowledgeBaseResponseDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/KnowledgeDocumentListResponseDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/KnowledgeDocumentResponseDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/LoginDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/MatchContactDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/MatchContactResponseDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/PipelineHealthDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/PipelineMetricsDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/PreviewChunkingDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/QwenModelConfigDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/QwenModelFeaturesDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/RagConfigDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/RagMetricsDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/RagPipelineStatusDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/RagQueryDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/RebuildIndexDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/RefreshTokenDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/RetrievalConfigDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/SyncContactsDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/SyncContactsResponseDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/ToggleQwenModelDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/UpdateContactDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/UpdateKnowledgeBaseDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/UpdateKnowledgeDocumentDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/UpdateQwenModelDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Models/UpdateRagConfigDto.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/OpenISO8601DateFormatter.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/SynchronizedDictionary.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/URLSessionImplementations.swift","api-clients/ios/HaizhanAPI/Classes/OpenAPIs/Validation.swift","api-clients/ios/Package.swift","api-clients/ios/README.md","api-clients/ios/docs/AdminLoginDto.md","api-clients/ios/docs/AiConfigAPI.md","api-clients/ios/docs/AuditLogsAPI.md","api-clients/ios/docs/AuthAPI.md","api-clients/ios/docs/BatchRemoveContactsDto.md","api-clients/ios/docs/ChunkingConfigDto.md","api-clients/ios/docs/Contact360ResponseDto.md","api-clients/ios/docs/Contact360ViewDto.md","api-clients/ios/docs/ContactDetailResponseDto.md","api-clients/ios/docs/ContactDto.md","api-clients/ios/docs/ContactEventDto.md","api-clients/ios/docs/ContactListResponseDto.md","api-clients/ios/docs/ContactProfileDto.md","api-clients/ios/docs/ContactStatsDto.md","api-clients/ios/docs/ContactTagDto.md","api-clients/ios/docs/ContactsAPI.md","api-clients/ios/docs/ConversationSummaryDto.md","api-clients/ios/docs/CreateContactDto.md","api-clients/ios/docs/CreateContactEventDto.md","api-clients/ios/docs/CreateKnowledgeBaseDto.md","api-clients/ios/docs/CreateKnowledgeDocumentDto.md","api-clients/ios/docs/CreateQwenModelDto.md","api-clients/ios/docs/DefaultAPI.md","api-clients/ios/docs/EmbeddingConfigDto.md","api-clients/ios/docs/EmbeddingModelDto.md","api-clients/ios/docs/GenerationConfigDto.md","api-clients/ios/docs/HealthAPI.md","api-clients/ios/docs/KnowledgeAPI.md","api-clients/ios/docs/KnowledgeBaseResponseDto.md","api-clients/ios/docs/KnowledgeDocumentListResponseDto.md","api-clients/ios/docs/KnowledgeDocumentResponseDto.md","api-clients/ios/docs/LoginDto.md","api-clients/ios/docs/MatchContactDto.md","api-clients/ios/docs/MatchContactResponseDto.md","api-clients/ios/docs/MobileCompatAPI.md","api-clients/ios/docs/PinyinAPI.md","api-clients/ios/docs/PipelineHealthDto.md","api-clients/ios/docs/PipelineMetricsDto.md","api-clients/ios/docs/PreviewChunkingDto.md","api-clients/ios/docs/QwenModelConfigDto.md","api-clients/ios/docs/QwenModelFeaturesDto.md","api-clients/ios/docs/RagAPI.md","api-clients/ios/docs/RagConfigDto.md","api-clients/ios/docs/RagMetricsDto.md","api-clients/ios/docs/RagPipelineStatusDto.md","api-clients/ios/docs/RagQueryDto.md","api-clients/ios/docs/RebuildIndexDto.md","api-clients/ios/docs/RefreshTokenDto.md","api-clients/ios/docs/RetrievalConfigDto.md","api-clients/ios/docs/SettingsAPI.md","api-clients/ios/docs/SyncContactsDto.md","api-clients/ios/docs/SyncContactsResponseDto.md","api-clients/ios/docs/TeamsAPI.md","api-clients/ios/docs/ToggleQwenModelDto.md","api-clients/ios/docs/UpdateContactDto.md","api-clients/ios/docs/UpdateKnowledgeBaseDto.md","api-clients/ios/docs/UpdateKnowledgeDocumentDto.md","api-clients/ios/docs/UpdateQwenModelDto.md","api-clients/ios/docs/UpdateRagConfigDto.md","api-clients/ios/docs/UsageAPI.md","api-clients/ios/docs/WeatherAPI.md","api-clients/ios/git_push.sh","api-clients/ios/project.yml","app/build.gradle.kts","app/proguard-rules-release.pro","app/proguard-rules.pro","app/src/androidTest/java/com/haizhan/ime/ComposeUiTest.kt","app/src/androidTest/java/com/haizhan/ime/ExampleInstrumentedTest.kt","app/src/androidTest/java/com/haizhan/ime/e2e/SmokeE2ETest.kt","app/src/androidTest/java/com/haizhan/ime/integration/ImeIntegrationTest.kt","app/src/main/AndroidManifest.xml","app/src/main/assets/dictionaries/stroke-data.txt","app/src/main/assets/handwriting_labels.txt","app/src/main/assets/handwriting_labels_casia.txt","app/src/main/assets/handwriting_labels_clean.txt","app/src/main/assets/handwriting_labels_jp.txt","app/src/main/assets/paddle_models/handwriting_labels.txt","app/src/main/assets/paddle_models/ppocr_keys_v1.txt","app/src/main/assets/temp_clean.txt","app/src/main/assets/temp_labels.txt","app/src/main/java/com/haizhan/ime/HaizhanApplication.kt","app/src/main/java/com/haizhan/ime/about/ui/AboutScreen.kt","app/src/main/java/com/haizhan/ime/chat/model/Message.kt","app/src/main/java/com/haizhan/ime/chat/service/WebSocketService.kt","app/src/main/java/com/haizhan/ime/chat/ui/ChatMessageCard.kt","app/src/main/java/com/haizhan/ime/chat/ui/ChatScreen.kt","app/src/main/java/com/haizhan/ime/chat/ui/GroupChatScreen.kt","app/src/main/java/com/haizhan/ime/feedback/ui/FeedbackScreen.kt","app/src/main/java/com/haizhan/ime/help/ui/HelpCenterScreen.kt","app/src/main/java/com/haizhan/ime/note/model/Note.kt","app/src/main/java/com/haizhan/ime/note/service/NoteService.kt","app/src/main/java/com/haizhan/ime/note/ui/NoteEditorScreen.kt","app/src/main/java/com/haizhan/ime/note/ui/NoteListScreen.kt","app/src/main/java/com/haizhan/ime/profile/model/Profile.kt","app/src/main/java/com/haizhan/ime/profile/ui/ProfileScreen.kt","app/src/main/java/com/haizhan/ime/receiver/BootReceiver.kt","app/src/main/java/com/haizhan/ime/search/model/Search.kt","app/src/main/java/com/haizhan/ime/search/service/SearchService.kt","app/src/main/java/com/haizhan/ime/search/ui/GlobalSearchScreen.kt","app/src/main/java/com/haizhan/ime/security/EncryptionManager.kt","app/src/main/java/com/haizhan/ime/security/NetworkSecurityManager.kt","app/src/main/java/com/haizhan/ime/security/PrivacyComplianceManager.kt","app/src/main/java/com/haizhan/ime/security/SecurityAuditor.kt","app/src/main/java/com/haizhan/ime/service/AiProcessingService.kt","app/src/main/java/com/haizhan/ime/service/ContextCollector.kt","app/src/main/java/com/haizhan/ime/service/DataSyncService.kt","app/src/main/java/com/haizhan/ime/service/HaizhanInputMethodService.kt","app/src/main/java/com/haizhan/ime/service/InputTypeAnalysis.kt","app/src/main/java/com/haizhan/ime/service/KeyboardContentView.kt","app/src/main/java/com/haizhan/ime/service/OcrCaptureService.kt","app/src/main/java/com/haizhan/ime/service/VoiceInputDelegate.kt","app/src/main/java/com/haizhan/ime/session/model/Session.kt","app/src/main/java/com/haizhan/ime/session/service/SessionService.kt","app/src/main/java/com/haizhan/ime/session/ui/MessageCenterScreen.kt","app/src/main/java/com/haizhan/ime/session/ui/SessionCard.kt","app/src/main/java/com/haizhan/ime/session/ui/SessionListScreen.kt","app/src/main/java/com/haizhan/ime/stability/AnrWatchdog.kt","app/src/main/java/com/haizhan/ime/stability/CrashHandler.kt","app/src/main/java/com/haizhan/ime/stability/MemoryLeakDetector.kt","app/src/main/java/com/haizhan/ime/stability/StabilityManager.kt","app/src/main/java/com/haizhan/ime/statistics/model/Statistics.kt","app/src/main/java/com/haizhan/ime/statistics/ui/ChartComponents.kt","app/src/main/java/com/haizhan/ime/statistics/ui/StatisticsScreen.kt","app/src/main/java/com/haizhan/ime/subscription/model/Subscription.kt","app/src/main/java/com/haizhan/ime/subscription/service/SubscriptionService.kt","app/src/main/java/com/haizhan/ime/subscription/ui/SubscriptionScreen.kt","app/src/main/java/com/haizhan/ime/sync/ContactSyncTaskAdapter.kt","app/src/main/java/com/haizhan/ime/sync/KnowledgeSyncTaskAdapter.kt","app/src/main/java/com/haizhan/ime/sync/SyncContracts.kt","app/src/main/java/com/haizhan/ime/sync/SyncCoordinator.kt","app/src/main/java/com/haizhan/ime/sync/SyncScheduler.kt","app/src/main/java/com/haizhan/ime/team/model/Team.kt","app/src/main/java/com/haizhan/ime/team/service/TeamService.kt","app/src/main/java/com/haizhan/ime/team/ui/TeamScreen.kt","app/src/main/java/com/haizhan/ime/template/data/B2BTemplates.kt","app/src/main/java/com/haizhan/ime/template/data/ClosingTemplates.kt","app/src/main/java/com/haizhan/ime/template/data/CoreSalesTemplates.kt","app/src/main/java/com/haizhan/ime/template/data/DailyTemplates.kt","app/src/main/java/com/haizhan/ime/template/data/DefaultTemplates.kt","app/src/main/java/com/haizhan/ime/template/data/FollowUpTemplates.kt","app/src/main/java/com/haizhan/ime/template/data/QuickPhraseDefaults.kt","app/src/main/java/com/haizhan/ime/template/data/SeasonalTemplates.kt","app/src/main/java/com/haizhan/ime/template/data/TemplateDatabase.kt","app/src/main/java/com/haizhan/ime/template/data/TemplateImporter.kt","app/src/main/java/com/haizhan/ime/template/data/TemplateRepository.kt","app/src/main/java/com/haizhan/ime/template/di/TemplateModule.kt","app/src/main/java/com/haizhan/ime/template/model/Template.kt","app/src/main/java/com/haizhan/ime/template/service/TemplateService.kt","app/src/main/java/com/haizhan/ime/template/ui/FolderManagementDialog.kt","app/src/main/java/com/haizhan/ime/template/ui/TemplateListScreen.kt","app/src/main/java/com/haizhan/ime/template/ui/TemplateViewModel.kt","app/src/main/java/com/haizhan/ime/ui/MainActivity.kt","app/src/main/java/com/haizhan/ime/ui/management/DictionaryImportActivity.kt","app/src/main/java/com/haizhan/ime/ui/management/DictionaryImportScreen.kt","app/src/main/java/com/haizhan/ime/ui/management/DictionaryImportViewModel.kt","app/src/main/java/com/haizhan/ime/ui/management/DictionaryScreen.kt","app/src/main/java/com/haizhan/ime/ui/management/ManagementActivity.kt","app/src/main/java/com/haizhan/ime/ui/management/ManagementViewModel.kt","app/src/main/java/com/haizhan/ime/ui/management/PermissionScreen.kt","app/src/main/java/com/haizhan/ime/ui/management/SettingsScreen.kt","app/src/main/java/com/haizhan/ime/ui/permission/ScreenshotPermissionActivity.kt","app/src/main/java/com/haizhan/ime/ui/settings/ImeSettingsActivity.kt","app/src/main/java/com/haizhan/ime/ui/settings/SettingsViewModel.kt","app/src/main/java/com/haizhan/ime/ui/theme/Theme.kt","app/src/main/java/com/haizhan/ime/ui/theme/Type.kt","app/src/main/java/com/haizhan/ime/ux/AccessibilityHelper.kt","app/src/main/java/com/haizhan/ime/ux/AnimationUtils.kt","app/src/main/java/com/haizhan/ime/ux/ErrorHandler.kt","app/src/main/java/com/haizhan/ime/ux/OnboardingScreen.kt","app/src/main/java/com/haizhan/ime/ux/StartupOptimizer.kt","app/src/main/java/com/haizhan/ime/voice/service/VoiceService.kt","app/src/main/java/com/haizhan/ime/voice/ui/VoiceInputScreen.kt","app/src/main/res/drawable/ic_launcher_background.xml","app/src/main/res/drawable/ic_launcher_foreground.xml","app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml","app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml","app/src/main/res/values-night/colors.xml","app/src/main/res/values/colors.xml","app/src/main/res/values/strings.xml","app/src/main/res/values/themes.xml","app/src/main/res/xml/backup_rules.xml","app/src/main/res/xml/data_extraction_rules.xml","app/src/main/res/xml/file_paths.xml","app/src/main/res/xml/method.xml","app/src/main/res/xml/network_security_config.xml","app/src/test/java/com/haizhan/ime/ExampleUnitTest.kt","app/src/test/java/com/haizhan/ime/app/service/NotificationServiceTest.kt","app/src/test/java/com/haizhan/ime/app/service/SearchServiceTest.kt","app/src/test/java/com/haizhan/ime/app/service/SessionServiceTest.kt","app/src/test/java/com/haizhan/ime/app/service/SyncServiceTest.kt","app/src/test/java/com/haizhan/ime/app/service/WebSocketServiceTest.kt","app/src/test/java/com/haizhan/ime/benchmark/PerformanceBenchmarkTest.kt","app/src/test/java/com/haizhan/ime/security/EncryptionManagerTest.kt","app/src/test/java/com/haizhan/ime/security/PrivacyComplianceManagerTest.kt","app/src/test/java/com/haizhan/ime/security/SecurityAuditorTest.kt","app/src/test/java/com/haizhan/ime/service/HaizhanInputMethodServiceTest.kt","app/src/test/java/com/haizhan/ime/services/AiProcessingServiceTest.kt","app/src/test/java/com/haizhan/ime/services/NoteServiceTest.kt","app/src/test/java/com/haizhan/ime/services/OcrCaptureServiceTest.kt","app/src/test/java/com/haizhan/ime/services/SubscriptionServiceTest.kt","app/src/test/java/com/haizhan/ime/services/TeamServiceTest.kt","app/src/test/java/com/haizhan/ime/services/TemplateServiceTest.kt","app/src/test/java/com/haizhan/ime/services/VoiceServiceTest.kt","app/src/test/java/com/haizhan/ime/ui/management/ManagementViewModelTest.kt","app/src/test/java/com/haizhan/ime/ui/settings/SettingsViewModelTest.kt","app/src/test/java/com/haizhan/ime/ux/ErrorHandlerTest.kt","app/src/test/java/com/haizhan/ime/ux/StartupOptimizerTest.kt","app/src/test/java/com/haizhan/ime/viewmodel/DictionaryImportViewModelTest.kt","app/src/test/java/com/haizhan/ime/viewmodel/TemplateViewModelTest.kt","build.gradle.kts","common/build.gradle.kts","common/consumer-rules.pro","common/proguard-rules.pro","common/src/main/AndroidManifest.xml","common/src/main/java/com/haizhan/ime/common/ext/ContextExt.kt","common/src/main/java/com/haizhan/ime/common/ext/FlowExt.kt","common/src/main/java/com/haizhan/ime/common/ext/StringExt.kt","common/src/main/java/com/haizhan/ime/common/performance/ImePerformanceTracker.kt","common/src/main/java/com/haizhan/ime/common/theme/DesignTokens.kt","common/src/main/java/com/haizhan/ime/common/theme/KeyboardTheme.kt","common/src/main/java/com/haizhan/ime/common/util/DeviceUtils.kt","common/src/main/java/com/haizhan/ime/common/util/Logger.kt","common/src/main/java/com/haizhan/ime/common/util/LruCache.kt","common/src/main/java/com/haizhan/ime/common/util/MemoryMonitor.kt","common/src/test/java/com/haizhan/ime/common/StringExtTest.kt","common/src/test/java/com/haizhan/ime/common/ext/ResultTest.kt","common/src/test/java/com/haizhan/ime/common/util/DateUtilsTest.kt","common/src/test/java/com/haizhan/ime/common/util/LoggerTest.kt","common/src/test/java/com/haizhan/ime/common/util/MemoryStatsTest.kt","common/src/test/java/com/haizhan/ime/common/util/PinyinUtilsTest.kt","common/src/test/java/com/haizhan/ime/common/util/TextUtilsTest.kt","config/detekt/detekt.yml","data/build.gradle.kts","data/consumer-rules.pro","data/dictionaries/dictionary.config.json","data/dictionaries/fallback-words.txt","data/dictionaries/sensitive-words.txt","data/dictionaries/system/char-single.txt","data/dictionaries/system/core-char.txt","data/dictionaries/system/core-phrase.txt","data/dictionaries/system/core-word2.txt","data/dictionaries/system/core-word3.txt","data/dictionaries/system/core-word4.txt","data/dictionaries/system/idiom.txt","data/dictionaries/system/name-place.txt","data/dictionaries/system/word-common.txt","data/proguard-rules.pro","data/schemas/com.haizhan.ime.data.local.database.HaizhanDatabase/1.json","data/schemas/com.haizhan.ime.data.local.database.HaizhanDatabase/2.json","data/schemas/com.haizhan.ime.data.local.database.HaizhanDatabase/3.json","data/schemas/com.haizhan.ime.data.local.database.HaizhanDatabase/4.json","data/src/main/AndroidManifest.xml","data/src/main/java/com/haizhan/ime/data/auth/AuthInterceptor.kt","data/src/main/java/com/haizhan/ime/data/auth/AuthManager.kt","data/src/main/java/com/haizhan/ime/data/di/DataModule.kt","data/src/main/java/com/haizhan/ime/data/di/DatabaseModule.kt","data/src/main/java/com/haizhan/ime/data/di/NetworkModule.kt","data/src/main/java/com/haizhan/ime/data/di/RepositoryModule.kt","data/src/main/java/com/haizhan/ime/data/local/dao/ContactDao.kt","data/src/main/java/com/haizhan/ime/data/local/dao/KnowledgeDao.kt","data/src/main/java/com/haizhan/ime/data/local/dao/MessageDao.kt","data/src/main/java/com/haizhan/ime/data/local/dao/NoteDao.kt","data/src/main/java/com/haizhan/ime/data/local/dao/SearchDao.kt","data/src/main/java/com/haizhan/ime/data/local/dao/UserDictDao.kt","data/src/main/java/com/haizhan/ime/data/local/database/Converters.kt","data/src/main/java/com/haizhan/ime/data/local/database/HaizhanDatabase.kt","data/src/main/java/com/haizhan/ime/data/local/database/SecureDatabaseFactory.kt","data/src/main/java/com/haizhan/ime/data/local/entity/ContactEntity.kt","data/src/main/java/com/haizhan/ime/data/local/entity/KnowledgeEntity.kt","data/src/main/java/com/haizhan/ime/data/local/entity/MessageEntity.kt","data/src/main/java/com/haizhan/ime/data/local/entity/NoteEntity.kt","data/src/main/java/com/haizhan/ime/data/local/entity/SearchEntity.kt","data/src/main/java/com/haizhan/ime/data/local/entity/UserDictEntity.kt","data/src/main/java/com/haizhan/ime/data/remote/adapter/FlexibleTimestampAdapter.kt","data/src/main/java/com/haizhan/ime/data/remote/aliyun/AliyunSearchClient.kt","data/src/main/java/com/haizhan/ime/data/remote/aliyun/AliyunSearchConfig.kt","data/src/main/java/com/haizhan/ime/data/remote/aliyun/AliyunSearchConfigProvider.kt","data/src/main/java/com/haizhan/ime/data/remote/api/AuthApi.kt","data/src/main/java/com/haizhan/ime/data/remote/api/ContactApi.kt","data/src/main/java/com/haizhan/ime/data/remote/api/HaizhanApi.kt","data/src/main/java/com/haizhan/ime/data/remote/api/PinyinApi.kt","data/src/main/java/com/haizhan/ime/data/remote/api/RagSearchApi.kt","data/src/main/java/com/haizhan/ime/data/remote/api/ReplyApi.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/AiDto.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/AuthDto.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/CommonDto.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/ContactDto.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/KnowledgeDto.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/MemoryDto.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/MessageDto.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/NoteDto.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/ProfileDto.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/RagSearchDto.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/SearchDto.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/TeamDto.kt","data/src/main/java/com/haizhan/ime/data/remote/dto/WeatherDto.kt","data/src/main/java/com/haizhan/ime/data/repository/ContactRepository.kt","data/src/main/java/com/haizhan/ime/data/repository/KnowledgeRepository.kt","data/src/main/java/com/haizhan/ime/data/repository/MessageRepository.kt","data/src/main/java/com/haizhan/ime/data/repository/RagSearchRepository.kt","data/src/main/java/com/haizhan/ime/data/repository/SettingsRepository.kt","data/src/main/java/com/haizhan/ime/data/repository/mapper/ContactMapper.kt","data/src/main/java/com/haizhan/ime/data/repository/mapper/KnowledgeMapper.kt","data/src/main/java/com/haizhan/ime/data/repository/mapper/MessageMapper.kt","data/src/main/java/com/haizhan/ime/data/repository/model/Contact.kt","data/src/main/java/com/haizhan/ime/data/repository/model/Knowledge.kt","data/src/main/java/com/haizhan/ime/data/repository/model/Message.kt","data/src/test/java/com/haizhan/ime/data/auth/AuthInterceptorTest.kt","data/src/test/java/com/haizhan/ime/data/auth/AuthManagerTest.kt","data/src/test/java/com/haizhan/ime/data/auth/AuthTypesTest.kt","data/src/test/java/com/haizhan/ime/data/local/dao/ContactDaoTest.kt","data/src/test/java/com/haizhan/ime/data/local/dao/KnowledgeDaoTest.kt","data/src/test/java/com/haizhan/ime/data/local/dao/MessageDaoTest.kt","data/src/test/java/com/haizhan/ime/data/local/dao/NoteDaoTest.kt","data/src/test/java/com/haizhan/ime/data/local/dao/SearchDaoTest.kt","data/src/test/java/com/haizhan/ime/data/local/dao/UserDictDaoTest.kt","data/src/test/java/com/haizhan/ime/data/local/dao/UserPreferencesDaoTest.kt","data/src/test/java/com/haizhan/ime/data/remote/api/HaizhanApiTest.kt","data/src/test/java/com/haizhan/ime/data/remote/dto/ContactDtoTest.kt","data/src/test/java/com/haizhan/ime/data/repository/ContactRepositoryTest.kt","data/src/test/java/com/haizhan/ime/data/repository/KnowledgeRepositoryTest.kt","data/src/test/java/com/haizhan/ime/data/repository/MessageRepositoryTest.kt","data/src/test/java/com/haizhan/ime/data/repository/SettingsRepositoryTest.kt","data/src/test/java/com/haizhan/ime/data/repository/mapper/ContactMapperTest.kt","data/src/test/java/com/haizhan/ime/data/repository/mapper/KnowledgeMapperTest.kt","data/src/test/java/com/haizhan/ime/data/repository/mapper/MessageMapperTest.kt","designs/exports/CLAUDE_CODE_DESIGN_GUIDE.md","designs/exports/DESIGN_MANIFEST.md","designs/exports/svg/Frame.svg","designs/exports/svg/P2-关于.svg","designs/exports/svg/P2-协议条款.svg","designs/exports/svg/P2-帮助中心.svg","designs/exports/svg/P2-意见反馈.svg","designs/exports/svg/P2-版本更新.svg","designs/exports/svg/__设计系统_-_组件库.svg","designs/exports/svg/功能面板_-_OCR识别.svg","designs/exports/svg/功能面板_-_历史.svg","designs/exports/svg/功能面板_-_团队.svg","designs/exports/svg/功能面板_-_知识库.svg","designs/exports/svg/功能面板_-_笔记.svg","designs/exports/svg/功能面板_-_联系人.svg","designs/exports/svg/嗨赞AI助手_-_AI回复选择.svg","designs/exports/svg/嗨赞AI助手_-_OCR结果确认.svg","designs/exports/svg/嗨赞AI助手_-_个人中心.svg","designs/exports/svg/嗨赞AI助手_-_主应用首页.svg","designs/exports/svg/嗨赞AI助手_-_主键盘界面.svg","designs/exports/svg/嗨赞AI助手_-_主键盘界面__深色_.svg","designs/exports/svg/嗨赞AI助手_-_交互式笔记.svg","designs/exports/svg/嗨赞AI助手_-_会员订阅.svg","designs/exports/svg/嗨赞AI助手_-_会话列表.svg","designs/exports/svg/嗨赞AI助手_-_单聊IM.svg","designs/exports/svg/嗨赞AI助手_-_历史记录页面.svg","designs/exports/svg/嗨赞AI助手_-_引导页1.svg","designs/exports/svg/嗨赞AI助手_-_引导页2.svg","designs/exports/svg/嗨赞AI助手_-_引导页3.svg","designs/exports/svg/嗨赞AI助手_-_忘记密码.svg","designs/exports/svg/嗨赞AI助手_-_我的页面.svg","designs/exports/svg/嗨赞AI助手_-_搜索.svg","designs/exports/svg/嗨赞AI助手_-_数据统计.svg","designs/exports/svg/嗨赞AI助手_-_新建联系人.svg","designs/exports/svg/嗨赞AI助手_-_注册页面.svg","designs/exports/svg/嗨赞AI助手_-_消息中心.svg","designs/exports/svg/嗨赞AI助手_-_登录页面.svg","designs/exports/svg/嗨赞AI助手_-_知识库列表.svg","designs/exports/svg/嗨赞AI助手_-_知识库详情.svg","designs/exports/svg/嗨赞AI助手_-_编辑个人信息.svg","designs/exports/svg/嗨赞AI助手_-_群聊IM.svg","designs/exports/svg/嗨赞AI助手_-_联系人列表.svg","designs/exports/svg/嗨赞AI助手_-_联系人详情.svg","designs/exports/svg/嗨赞AI助手_-_设置.svg","designs/exports/svg/嗨赞AI助手_-_设置页面.svg","designs/exports/svg/嗨赞AI助手_-_话术模板.svg","designs/exports/svg/嗨赞AI助手_-_话术模板详情.svg","designs/exports/svg/微交互规范文档.svg","designs/exports/svg/组件_-_悬浮球状态.svg","designs/exports/svg/组件_-_拼音候选词展开.svg","designs/exports/svg/组件_-_空状态.svg","designs/exports/svg/组件_-_语音输入状态.svg","designs/exports/svg/组件_-_错误状态.svg","designs/mobile-keyboard-design.md","designs/specs/COMPONENT_SPEC.md","designs/specs/KEYBOARD_DESIGN_SPEC.md","designs/specs/README.md","designs/specs/design-tokens.json","designs/templates/android/DesignTokens.kt","designs/templates/android/KeyboardTheme.kt","designs/templates/ios/DesignTokens.swift","designs/templates/ios/KeyboardTheme.swift","designs/嗨赞输入法.pen","docs/ANDROID_DEVELOPMENT.md","docs/API.md","docs/ARCHITECTURE.md","docs/BACKEND_API_REQUIREMENTS.md","docs/BACKEND_DESIGN.md","docs/CI_CD_PIPELINE.md","docs/CODING_STANDARDS.md","docs/COMPLETE_FEATURE_SPEC.md","docs/DATABASE.md","docs/DEPLOYMENT.md","docs/DESIGN_TO_DEV_SPEC.md","docs/DEVELOPMENT_GUIDE.md","docs/DEVELOPMENT_PLAN.md","docs/DOCS_SYNC.md","docs/ERROR_HANDLING.md","docs/FEATURE_ANALYSIS.md","docs/FLUTTER_DEVELOPMENT.md","docs/FRONTEND_DEV_REQUIREMENTS.md","docs/HANDWRITING_MODEL_UPGRADE.md","docs/IOS_DEVELOPMENT.md","docs/KMP_DEVELOPMENT.md","docs/LOGGING_STANDARDS.md","docs/MILESTONES.md","docs/MODULE_ANALYSIS.md","docs/MODULE_LIST.md","docs/PERFORMANCE_OPTIMIZATION.md","docs/PNPM_MIGRATION_NOTICE.md","docs/PRD.md","docs/PRIVACY_POLICY.md","docs/PRODUCT_ARCHITECTURE.md","docs/Phase_11_12_Final_Report.md","docs/RELEASE_CHECKLIST.md","docs/SECURITY_AUDIT.md","docs/SECURITY_GUIDELINES.md","docs/STORE_LISTING.md","docs/SYSTEM_ARCHITECTURE.md","docs/TASKS.md","docs/TECH_STACK.md","docs/TESTING_STRATEGY.md","docs/USER_MANUAL.md","docs/VOICE_API_DOCUMENTATION.md","docs/VOICE_MODULE_MIGRATION.md","docs/openapi.json","docs/skills/anthropic-official/.claude-plugin/marketplace.json","docs/skills/anthropic-official/.gitignore","docs/skills/anthropic-official/README.md","docs/skills/anthropic-official/THIRD_PARTY_NOTICES.md","docs/skills/anthropic-official/skills/algorithmic-art/LICENSE.txt","docs/skills/anthropic-official/skills/algorithmic-art/SKILL.md","docs/skills/anthropic-official/skills/algorithmic-art/templates/generator_template.js","docs/skills/anthropic-official/skills/algorithmic-art/templates/viewer.html","docs/skills/anthropic-official/skills/brand-guidelines/LICENSE.txt","docs/skills/anthropic-official/skills/brand-guidelines/SKILL.md","docs/skills/anthropic-official/skills/canvas-design/LICENSE.txt","docs/skills/anthropic-official/skills/canvas-design/SKILL.md","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/DMMono-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Gloock-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Italiana-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Jura-Light.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Jura-Medium.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Jura-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Lora-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Lora-Italic.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Lora-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Lora-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Outfit-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Tektur-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt","docs/skills/anthropic-official/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf","docs/skills/anthropic-official/skills/doc-coauthoring/SKILL.md","docs/skills/anthropic-official/skills/docx/LICENSE.txt","docs/skills/anthropic-official/skills/docx/SKILL.md","docs/skills/anthropic-official/skills/docx/docx-js.md","docs/skills/anthropic-official/skills/docx/ooxml.md","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/mce/mc.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd","docs/skills/anthropic-official/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd","docs/skills/anthropic-official/skills/docx/ooxml/scripts/pack.py","docs/skills/anthropic-official/skills/docx/ooxml/scripts/unpack.py","docs/skills/anthropic-official/skills/docx/ooxml/scripts/validate.py","docs/skills/anthropic-official/skills/docx/ooxml/scripts/validation/__init__.py","docs/skills/anthropic-official/skills/docx/ooxml/scripts/validation/base.py","docs/skills/anthropic-official/skills/docx/ooxml/scripts/validation/docx.py","docs/skills/anthropic-official/skills/docx/ooxml/scripts/validation/pptx.py","docs/skills/anthropic-official/skills/docx/ooxml/scripts/validation/redlining.py","docs/skills/anthropic-official/skills/docx/scripts/__init__.py","docs/skills/anthropic-official/skills/docx/scripts/document.py","docs/skills/anthropic-official/skills/docx/scripts/templates/comments.xml","docs/skills/anthropic-official/skills/docx/scripts/templates/commentsExtended.xml","docs/skills/anthropic-official/skills/docx/scripts/templates/commentsExtensible.xml","docs/skills/anthropic-official/skills/docx/scripts/templates/commentsIds.xml","docs/skills/anthropic-official/skills/docx/scripts/templates/people.xml","docs/skills/anthropic-official/skills/docx/scripts/utilities.py","docs/skills/anthropic-official/skills/frontend-design/LICENSE.txt","docs/skills/anthropic-official/skills/frontend-design/SKILL.md","docs/skills/anthropic-official/skills/internal-comms/LICENSE.txt","docs/skills/anthropic-official/skills/internal-comms/SKILL.md","docs/skills/anthropic-official/skills/internal-comms/examples/3p-updates.md","docs/skills/anthropic-official/skills/internal-comms/examples/company-newsletter.md","docs/skills/anthropic-official/skills/internal-comms/examples/faq-answers.md","docs/skills/anthropic-official/skills/internal-comms/examples/general-comms.md","docs/skills/anthropic-official/skills/mcp-builder/LICENSE.txt","docs/skills/anthropic-official/skills/mcp-builder/SKILL.md","docs/skills/anthropic-official/skills/mcp-builder/reference/evaluation.md","docs/skills/anthropic-official/skills/mcp-builder/reference/mcp_best_practices.md","docs/skills/anthropic-official/skills/mcp-builder/reference/node_mcp_server.md","docs/skills/anthropic-official/skills/mcp-builder/reference/python_mcp_server.md","docs/skills/anthropic-official/skills/mcp-builder/scripts/connections.py","docs/skills/anthropic-official/skills/mcp-builder/scripts/evaluation.py","docs/skills/anthropic-official/skills/mcp-builder/scripts/example_evaluation.xml","docs/skills/anthropic-official/skills/mcp-builder/scripts/requirements.txt","docs/skills/anthropic-official/skills/pdf/LICENSE.txt","docs/skills/anthropic-official/skills/pdf/SKILL.md","docs/skills/anthropic-official/skills/pdf/forms.md","docs/skills/anthropic-official/skills/pdf/reference.md","docs/skills/anthropic-official/skills/pdf/scripts/check_bounding_boxes.py","docs/skills/anthropic-official/skills/pdf/scripts/check_bounding_boxes_test.py","docs/skills/anthropic-official/skills/pdf/scripts/check_fillable_fields.py","docs/skills/anthropic-official/skills/pdf/scripts/convert_pdf_to_images.py","docs/skills/anthropic-official/skills/pdf/scripts/create_validation_image.py","docs/skills/anthropic-official/skills/pdf/scripts/extract_form_field_info.py","docs/skills/anthropic-official/skills/pdf/scripts/fill_fillable_fields.py","docs/skills/anthropic-official/skills/pdf/scripts/fill_pdf_form_with_annotations.py","docs/skills/anthropic-official/skills/pptx/LICENSE.txt","docs/skills/anthropic-official/skills/pptx/SKILL.md","docs/skills/anthropic-official/skills/pptx/html2pptx.md","docs/skills/anthropic-official/skills/pptx/ooxml.md","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/mce/mc.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd","docs/skills/anthropic-official/skills/pptx/ooxml/scripts/pack.py","docs/skills/anthropic-official/skills/pptx/ooxml/scripts/unpack.py","docs/skills/anthropic-official/skills/pptx/ooxml/scripts/validate.py","docs/skills/anthropic-official/skills/pptx/ooxml/scripts/validation/__init__.py","docs/skills/anthropic-official/skills/pptx/ooxml/scripts/validation/base.py","docs/skills/anthropic-official/skills/pptx/ooxml/scripts/validation/docx.py","docs/skills/anthropic-official/skills/pptx/ooxml/scripts/validation/pptx.py","docs/skills/anthropic-official/skills/pptx/ooxml/scripts/validation/redlining.py","docs/skills/anthropic-official/skills/pptx/scripts/html2pptx.js","docs/skills/anthropic-official/skills/pptx/scripts/inventory.py","docs/skills/anthropic-official/skills/pptx/scripts/rearrange.py","docs/skills/anthropic-official/skills/pptx/scripts/replace.py","docs/skills/anthropic-official/skills/pptx/scripts/thumbnail.py","docs/skills/anthropic-official/skills/skill-creator/LICENSE.txt","docs/skills/anthropic-official/skills/skill-creator/SKILL.md","docs/skills/anthropic-official/skills/skill-creator/references/output-patterns.md","docs/skills/anthropic-official/skills/skill-creator/references/workflows.md","docs/skills/anthropic-official/skills/skill-creator/scripts/init_skill.py","docs/skills/anthropic-official/skills/skill-creator/scripts/package_skill.py","docs/skills/anthropic-official/skills/skill-creator/scripts/quick_validate.py","docs/skills/anthropic-official/skills/slack-gif-creator/LICENSE.txt","docs/skills/anthropic-official/skills/slack-gif-creator/SKILL.md","docs/skills/anthropic-official/skills/slack-gif-creator/core/easing.py","docs/skills/anthropic-official/skills/slack-gif-creator/core/frame_composer.py","docs/skills/anthropic-official/skills/slack-gif-creator/core/gif_builder.py","docs/skills/anthropic-official/skills/slack-gif-creator/core/validators.py","docs/skills/anthropic-official/skills/slack-gif-creator/requirements.txt","docs/skills/anthropic-official/skills/theme-factory/LICENSE.txt","docs/skills/anthropic-official/skills/theme-factory/SKILL.md","docs/skills/anthropic-official/skills/theme-factory/theme-showcase.pdf","docs/skills/anthropic-official/skills/theme-factory/themes/arctic-frost.md","docs/skills/anthropic-official/skills/theme-factory/themes/botanical-garden.md","docs/skills/anthropic-official/skills/theme-factory/themes/desert-rose.md","docs/skills/anthropic-official/skills/theme-factory/themes/forest-canopy.md","docs/skills/anthropic-official/skills/theme-factory/themes/golden-hour.md","docs/skills/anthropic-official/skills/theme-factory/themes/midnight-galaxy.md","docs/skills/anthropic-official/skills/theme-factory/themes/modern-minimalist.md","docs/skills/anthropic-official/skills/theme-factory/themes/ocean-depths.md","docs/skills/anthropic-official/skills/theme-factory/themes/sunset-boulevard.md","docs/skills/anthropic-official/skills/theme-factory/themes/tech-innovation.md","docs/skills/anthropic-official/skills/web-artifacts-builder/LICENSE.txt","docs/skills/anthropic-official/skills/web-artifacts-builder/SKILL.md","docs/skills/anthropic-official/skills/web-artifacts-builder/scripts/bundle-artifact.sh","docs/skills/anthropic-official/skills/web-artifacts-builder/scripts/init-artifact.sh","docs/skills/anthropic-official/skills/web-artifacts-builder/scripts/shadcn-components.tar.gz","docs/skills/anthropic-official/skills/webapp-testing/LICENSE.txt","docs/skills/anthropic-official/skills/webapp-testing/SKILL.md","docs/skills/anthropic-official/skills/webapp-testing/examples/console_logging.py","docs/skills/anthropic-official/skills/webapp-testing/examples/element_discovery.py","docs/skills/anthropic-official/skills/webapp-testing/examples/static_html_automation.py","docs/skills/anthropic-official/skills/webapp-testing/scripts/with_server.py","docs/skills/anthropic-official/skills/xlsx/LICENSE.txt","docs/skills/anthropic-official/skills/xlsx/SKILL.md","docs/skills/anthropic-official/skills/xlsx/recalc.py","docs/skills/anthropic-official/spec/agent-skills-spec.md","docs/skills/anthropic-official/template/SKILL.md","docs/skills/awesome-skills/.gitignore","docs/skills/awesome-skills/CONTRIBUTING.md","docs/skills/awesome-skills/README.md","docs/skills/backend-patterns/SKILL.md","docs/skills/clickhouse-io/SKILL.md","docs/skills/coding-standards/SKILL.md","docs/skills/continuous-learning/SKILL.md","docs/skills/continuous-learning/config.json","docs/skills/continuous-learning/evaluate-session.sh","docs/skills/daymade-skills/.claude-plugin/marketplace.json","docs/skills/daymade-skills/.github/ISSUE_TEMPLATE/bug_report.md","docs/skills/daymade-skills/.github/ISSUE_TEMPLATE/feature_request.md","docs/skills/daymade-skills/.github/PULL_REQUEST_TEMPLATE.md","docs/skills/daymade-skills/.gitignore","docs/skills/daymade-skills/AGENTS.md","docs/skills/daymade-skills/CHANGELOG.md","docs/skills/daymade-skills/CLAUDE.md","docs/skills/daymade-skills/CONTRIBUTING.md","docs/skills/daymade-skills/LICENSE","docs/skills/daymade-skills/QUICKSTART.md","docs/skills/daymade-skills/QUICKSTART.zh-CN.md","docs/skills/daymade-skills/README.md","docs/skills/daymade-skills/README.zh-CN.md","docs/skills/daymade-skills/claude-code-history-files-finder/.INTEGRATION_SUMMARY.md","docs/skills/daymade-skills/claude-code-history-files-finder/.security-scan-passed","docs/skills/daymade-skills/claude-code-history-files-finder/SKILL.md","docs/skills/daymade-skills/claude-code-history-files-finder/references/session_file_format.md","docs/skills/daymade-skills/claude-code-history-files-finder/references/workflow_examples.md","docs/skills/daymade-skills/claude-code-history-files-finder/scripts/analyze_sessions.py","docs/skills/daymade-skills/claude-code-history-files-finder/scripts/recover_content.py","docs/skills/daymade-skills/claude-md-progressive-disclosurer/.security-scan-passed","docs/skills/daymade-skills/claude-md-progressive-disclosurer/SKILL.md","docs/skills/daymade-skills/claude-md-progressive-disclosurer/references/progressive_disclosure_principles.md","docs/skills/daymade-skills/cli-demo-generator/SKILL.md","docs/skills/daymade-skills/cli-demo-generator/assets/examples/batch-config.yaml","docs/skills/daymade-skills/cli-demo-generator/assets/templates/basic.tape","docs/skills/daymade-skills/cli-demo-generator/assets/templates/interactive.tape","docs/skills/daymade-skills/cli-demo-generator/references/best_practices.md","docs/skills/daymade-skills/cli-demo-generator/references/vhs_syntax.md","docs/skills/daymade-skills/cli-demo-generator/scripts/auto_generate_demo.py","docs/skills/daymade-skills/cli-demo-generator/scripts/batch_generate.py","docs/skills/daymade-skills/cli-demo-generator/scripts/record_interactive.sh","docs/skills/daymade-skills/cloudflare-troubleshooting/SKILL.md","docs/skills/daymade-skills/cloudflare-troubleshooting/references/api_overview.md","docs/skills/daymade-skills/cloudflare-troubleshooting/references/common_issues.md","docs/skills/daymade-skills/cloudflare-troubleshooting/references/ssl_modes.md","docs/skills/daymade-skills/cloudflare-troubleshooting/scripts/check_cloudflare_config.py","docs/skills/daymade-skills/cloudflare-troubleshooting/scripts/fix_ssl_mode.py","docs/skills/daymade-skills/demos/README.md","docs/skills/daymade-skills/demos/cli-demo-generator/generate-demo.gif","docs/skills/daymade-skills/demos/cli-demo-generator/generate-demo.tape","docs/skills/daymade-skills/demos/generate_all_demos.sh","docs/skills/daymade-skills/demos/github-ops/create-pr.gif","docs/skills/daymade-skills/demos/github-ops/create-pr.tape","docs/skills/daymade-skills/demos/index.html","docs/skills/daymade-skills/demos/llm-icon-finder/find-icons.gif","docs/skills/daymade-skills/demos/llm-icon-finder/find-icons.tape","docs/skills/daymade-skills/demos/markdown-tools/convert-docs.gif","docs/skills/daymade-skills/demos/markdown-tools/convert-docs.tape","docs/skills/daymade-skills/demos/mermaid-tools/extract-diagrams.gif","docs/skills/daymade-skills/demos/mermaid-tools/extract-diagrams.tape","docs/skills/daymade-skills/demos/ppt-creator/create-presentation.gif","docs/skills/daymade-skills/demos/ppt-creator/create-presentation.tape","docs/skills/daymade-skills/demos/repomix-unmixer/extract-repo.gif","docs/skills/daymade-skills/demos/repomix-unmixer/extract-repo.tape","docs/skills/daymade-skills/demos/skill-creator/init-skill.gif","docs/skills/daymade-skills/demos/skill-creator/init-skill.tape","docs/skills/daymade-skills/demos/skill-creator/package-skill.gif","docs/skills/daymade-skills/demos/skill-creator/package-skill.tape","docs/skills/daymade-skills/demos/skill-creator/validate-skill.gif","docs/skills/daymade-skills/demos/skill-creator/validate-skill.tape","docs/skills/daymade-skills/demos/statusline-generator/customize-statusline.gif","docs/skills/daymade-skills/demos/statusline-generator/customize-statusline.tape","docs/skills/daymade-skills/demos/teams-channel-post-writer/write-post.gif","docs/skills/daymade-skills/demos/teams-channel-post-writer/write-post.tape","docs/skills/daymade-skills/demos/ui-designer/extract-design-system.gif","docs/skills/daymade-skills/demos/ui-designer/extract-design-system.tape","docs/skills/daymade-skills/demos/youtube-downloader/download-video.gif","docs/skills/daymade-skills/demos/youtube-downloader/download-video.tape","docs/skills/daymade-skills/docs-cleaner/.security-scan-passed","docs/skills/daymade-skills/docs-cleaner/SKILL.md","docs/skills/daymade-skills/docs-cleaner/references/value_analysis_template.md","docs/skills/daymade-skills/fact-checker/.security-scan-passed","docs/skills/daymade-skills/fact-checker/README.md","docs/skills/daymade-skills/fact-checker/SKILL.md","docs/skills/daymade-skills/github-contributor/.security-scan-passed","docs/skills/daymade-skills/github-contributor/SKILL.md","docs/skills/daymade-skills/github-contributor/references/communication_templates.md","docs/skills/daymade-skills/github-contributor/references/pr_checklist.md","docs/skills/daymade-skills/github-contributor/references/project_evaluation.md","docs/skills/daymade-skills/github-ops/SKILL.md","docs/skills/daymade-skills/github-ops/references/api_reference.md","docs/skills/daymade-skills/github-ops/references/best_practices.md","docs/skills/daymade-skills/github-ops/references/issue_operations.md","docs/skills/daymade-skills/github-ops/references/pr_operations.md","docs/skills/daymade-skills/github-ops/references/workflow_operations.md","docs/skills/daymade-skills/iOS-APP-developer/.security-scan-passed","docs/skills/daymade-skills/iOS-APP-developer/SKILL.md","docs/skills/daymade-skills/iOS-APP-developer/references/camera-avfoundation.md","docs/skills/daymade-skills/iOS-APP-developer/references/swiftui-compatibility.md","docs/skills/daymade-skills/iOS-APP-developer/references/testing-mainactor.md","docs/skills/daymade-skills/iOS-APP-developer/references/xcodegen-full.md","docs/skills/daymade-skills/llm-icon-finder/SKILL.md","docs/skills/daymade-skills/llm-icon-finder/references/developer-info.md","docs/skills/daymade-skills/llm-icon-finder/references/icons-list.md","docs/skills/daymade-skills/macos-cleaner/.security-scan-passed","docs/skills/daymade-skills/macos-cleaner/SKILL.md","docs/skills/daymade-skills/macos-cleaner/references/cleanup_targets.md","docs/skills/daymade-skills/macos-cleaner/references/mole_integration.md","docs/skills/daymade-skills/macos-cleaner/references/safety_rules.md","docs/skills/daymade-skills/macos-cleaner/scripts/analyze_caches.py","docs/skills/daymade-skills/macos-cleaner/scripts/analyze_dev_env.py","docs/skills/daymade-skills/macos-cleaner/scripts/analyze_large_files.py","docs/skills/daymade-skills/macos-cleaner/scripts/cleanup_report.py","docs/skills/daymade-skills/macos-cleaner/scripts/find_app_remnants.py","docs/skills/daymade-skills/macos-cleaner/scripts/safe_delete.py","docs/skills/daymade-skills/markdown-tools/SKILL.md","docs/skills/daymade-skills/markdown-tools/references/conversion-examples.md","docs/skills/daymade-skills/markdown-tools/scripts/convert_path.py","docs/skills/daymade-skills/markdown-tools/scripts/extract_pdf_images.py","docs/skills/daymade-skills/mermaid-tools/SKILL.md","docs/skills/daymade-skills/mermaid-tools/references/setup_and_troubleshooting.md","docs/skills/daymade-skills/mermaid-tools/scripts/extract-and-generate.sh","docs/skills/daymade-skills/mermaid-tools/scripts/extract_diagrams.py","docs/skills/daymade-skills/mermaid-tools/scripts/puppeteer-config.json","docs/skills/daymade-skills/pdf-creator/.security-scan-passed","docs/skills/daymade-skills/pdf-creator/SKILL.md","docs/skills/daymade-skills/pdf-creator/scripts/batch_convert.py","docs/skills/daymade-skills/pdf-creator/scripts/md_to_pdf.py","docs/skills/daymade-skills/ppt-creator/SKILL.md","docs/skills/daymade-skills/ppt-creator/references/CHECKLIST.md","docs/skills/daymade-skills/ppt-creator/references/EXAMPLES.md","docs/skills/daymade-skills/ppt-creator/references/INTAKE.md","docs/skills/daymade-skills/ppt-creator/references/ORCHESTRATION_DATA_CHARTS.md","docs/skills/daymade-skills/ppt-creator/references/ORCHESTRATION_OVERVIEW.md","docs/skills/daymade-skills/ppt-creator/references/ORCHESTRATION_PPTX.md","docs/skills/daymade-skills/ppt-creator/references/RUBRIC.md","docs/skills/daymade-skills/ppt-creator/references/STYLE-GUIDE.md","docs/skills/daymade-skills/ppt-creator/references/TEMPLATES.md","docs/skills/daymade-skills/ppt-creator/references/VIS-GUIDE.md","docs/skills/daymade-skills/ppt-creator/references/WORKFLOW.md","docs/skills/daymade-skills/ppt-creator/scripts/chartkit.py","docs/skills/daymade-skills/prompt-optimizer/.security-scan-passed","docs/skills/daymade-skills/prompt-optimizer/SKILL.md","docs/skills/daymade-skills/prompt-optimizer/references/advanced_techniques.md","docs/skills/daymade-skills/prompt-optimizer/references/domain_theories.md","docs/skills/daymade-skills/prompt-optimizer/references/ears_syntax.md","docs/skills/daymade-skills/prompt-optimizer/references/examples.md","docs/skills/daymade-skills/promptfoo-evaluation/.security-scan-passed","docs/skills/daymade-skills/promptfoo-evaluation/SKILL.md","docs/skills/daymade-skills/promptfoo-evaluation/references/promptfoo_api.md","docs/skills/daymade-skills/qa-expert/.security-scan-passed","docs/skills/daymade-skills/qa-expert/SKILL.md","docs/skills/daymade-skills/qa-expert/assets/templates/TEST-CASE-TEMPLATE.md","docs/skills/daymade-skills/qa-expert/references/day1_onboarding.md","docs/skills/daymade-skills/qa-expert/references/google_testing_standards.md","docs/skills/daymade-skills/qa-expert/references/ground_truth_principle.md","docs/skills/daymade-skills/qa-expert/references/llm_prompts_library.md","docs/skills/daymade-skills/qa-expert/references/master_qa_prompt.md","docs/skills/daymade-skills/qa-expert/scripts/calculate_metrics.py","docs/skills/daymade-skills/qa-expert/scripts/init_qa_project.py","docs/skills/daymade-skills/repomix-safe-mixer/SKILL.md","docs/skills/daymade-skills/repomix-safe-mixer/references/common_secrets.md","docs/skills/daymade-skills/repomix-safe-mixer/scripts/safe_pack.py","docs/skills/daymade-skills/repomix-safe-mixer/scripts/scan_secrets.py","docs/skills/daymade-skills/repomix-unmixer/README.md","docs/skills/daymade-skills/repomix-unmixer/SKILL.md","docs/skills/daymade-skills/repomix-unmixer/references/repomix-format.md","docs/skills/daymade-skills/repomix-unmixer/references/validation-workflow.md","docs/skills/daymade-skills/repomix-unmixer/scripts/unmix_repomix.py","docs/skills/daymade-skills/scripts/install.ps1","docs/skills/daymade-skills/scripts/install.sh","docs/skills/daymade-skills/skill-creator/.gitignore","docs/skills/daymade-skills/skill-creator/LICENSE.txt","docs/skills/daymade-skills/skill-creator/SKILL.md","docs/skills/daymade-skills/skill-creator/scripts/init_skill.py","docs/skills/daymade-skills/skill-creator/scripts/package_skill.py","docs/skills/daymade-skills/skill-creator/scripts/quick_validate.py","docs/skills/daymade-skills/skill-creator/scripts/security_scan.py","docs/skills/daymade-skills/skill-reviewer/.security-scan-passed","docs/skills/daymade-skills/skill-reviewer/SKILL.md","docs/skills/daymade-skills/skill-reviewer/references/evaluation_checklist.md","docs/skills/daymade-skills/skill-reviewer/references/marketplace_template.json","docs/skills/daymade-skills/skill-reviewer/references/pr_template.md","docs/skills/daymade-skills/skills-search/.security-scan-passed","docs/skills/daymade-skills/skills-search/SKILL.md","docs/skills/daymade-skills/statusline-generator/SKILL.md","docs/skills/daymade-skills/statusline-generator/references/ccusage_integration.md","docs/skills/daymade-skills/statusline-generator/references/color_codes.md","docs/skills/daymade-skills/statusline-generator/scripts/generate_statusline.sh","docs/skills/daymade-skills/statusline-generator/scripts/install_statusline.sh","docs/skills/daymade-skills/teams-channel-post-writer/SKILL.md","docs/skills/daymade-skills/teams-channel-post-writer/assets/post-template.md","docs/skills/daymade-skills/teams-channel-post-writer/references/writing-guidelines.md","docs/skills/daymade-skills/transcript-fixer/.gitignore","docs/skills/daymade-skills/transcript-fixer/SKILL.md","docs/skills/daymade-skills/transcript-fixer/references/architecture.md","docs/skills/daymade-skills/transcript-fixer/references/best_practices.md","docs/skills/daymade-skills/transcript-fixer/references/database_schema.md","docs/skills/daymade-skills/transcript-fixer/references/dictionary_guide.md","docs/skills/daymade-skills/transcript-fixer/references/file_formats.md","docs/skills/daymade-skills/transcript-fixer/references/glm_api_setup.md","docs/skills/daymade-skills/transcript-fixer/references/installation_setup.md","docs/skills/daymade-skills/transcript-fixer/references/iteration_workflow.md","docs/skills/daymade-skills/transcript-fixer/references/quick_reference.md","docs/skills/daymade-skills/transcript-fixer/references/script_parameters.md","docs/skills/daymade-skills/transcript-fixer/references/sql_queries.md","docs/skills/daymade-skills/transcript-fixer/references/team_collaboration.md","docs/skills/daymade-skills/transcript-fixer/references/troubleshooting.md","docs/skills/daymade-skills/transcript-fixer/references/workflow_guide.md","docs/skills/daymade-skills/transcript-fixer/requirements.txt","docs/skills/daymade-skills/transcript-fixer/scripts/__init__.py","docs/skills/daymade-skills/transcript-fixer/scripts/check_type_hints.py","docs/skills/daymade-skills/transcript-fixer/scripts/cli/__init__.py","docs/skills/daymade-skills/transcript-fixer/scripts/cli/argument_parser.py","docs/skills/daymade-skills/transcript-fixer/scripts/cli/commands.py","docs/skills/daymade-skills/transcript-fixer/scripts/core/__init__.py","docs/skills/daymade-skills/transcript-fixer/scripts/core/ai_processor.py","docs/skills/daymade-skills/transcript-fixer/scripts/core/ai_processor_async.py","docs/skills/daymade-skills/transcript-fixer/scripts/core/change_extractor.py","docs/skills/daymade-skills/transcript-fixer/scripts/core/connection_pool.py","docs/skills/daymade-skills/transcript-fixer/scripts/core/correction_repository.py","docs/skills/daymade-skills/transcript-fixer/scripts/core/correction_service.py","docs/skills/daymade-skills/transcript-fixer/scripts/core/dictionary_processor.py","docs/skills/daymade-skills/transcript-fixer/scripts/core/learning_engine.py","docs/skills/daymade-skills/transcript-fixer/scripts/core/schema.sql","docs/skills/daymade-skills/transcript-fixer/scripts/ensure_deps.py","docs/skills/daymade-skills/transcript-fixer/scripts/examples/bulk_import.py","docs/skills/daymade-skills/transcript-fixer/scripts/fix_transcript_enhanced.py","docs/skills/daymade-skills/transcript-fixer/scripts/fix_transcription.py","docs/skills/daymade-skills/transcript-fixer/scripts/generate_word_diff.py","docs/skills/daymade-skills/transcript-fixer/scripts/tests/__init__.py","docs/skills/daymade-skills/transcript-fixer/scripts/tests/test_audit_log_retention.py","docs/skills/daymade-skills/transcript-fixer/scripts/tests/test_connection_pool.py","docs/skills/daymade-skills/transcript-fixer/scripts/tests/test_correction_service.py","docs/skills/daymade-skills/transcript-fixer/scripts/tests/test_domain_validator.py","docs/skills/daymade-skills/transcript-fixer/scripts/tests/test_error_recovery.py","docs/skills/daymade-skills/transcript-fixer/scripts/tests/test_learning_engine.py","docs/skills/daymade-skills/transcript-fixer/scripts/tests/test_path_validator.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/__init__.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/audit_log_retention.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/concurrency_manager.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/config.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/database_migration.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/db_migrations_cli.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/diff_formats/__init__.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/diff_formats/change_extractor.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/diff_formats/html_format.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/diff_formats/inline_format.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/diff_formats/markdown_format.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/diff_formats/text_splitter.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/diff_formats/unified_format.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/diff_generator.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/domain_validator.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/health_check.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/logging_config.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/metrics.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/migrations.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/path_validator.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/rate_limiter.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/retry_logic.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/security.py","docs/skills/daymade-skills/transcript-fixer/scripts/utils/validation.py","docs/skills/daymade-skills/twitter-reader/.security-scan-passed","docs/skills/daymade-skills/twitter-reader/SKILL.md","docs/skills/daymade-skills/twitter-reader/scripts/fetch_tweet.py","docs/skills/daymade-skills/twitter-reader/scripts/fetch_tweets.sh","docs/skills/daymade-skills/ui-designer/SKILL.md","docs/skills/daymade-skills/ui-designer/assets/app-overview-generator.md","docs/skills/daymade-skills/ui-designer/assets/design-system.md","docs/skills/daymade-skills/ui-designer/assets/vibe-design-template.md","docs/skills/daymade-skills/video-comparer/.security-scan-passed","docs/skills/daymade-skills/video-comparer/README.md","docs/skills/daymade-skills/video-comparer/SKILL.md","docs/skills/daymade-skills/video-comparer/assets/template.html","docs/skills/daymade-skills/video-comparer/references/configuration.md","docs/skills/daymade-skills/video-comparer/references/ffmpeg_commands.md","docs/skills/daymade-skills/video-comparer/references/video_metrics.md","docs/skills/daymade-skills/video-comparer/scripts/compare.py","docs/skills/daymade-skills/youtube-downloader/.security-scan-passed","docs/skills/daymade-skills/youtube-downloader/SKILL.md","docs/skills/daymade-skills/youtube-downloader/references/po-token-setup.md","docs/skills/daymade-skills/youtube-downloader/scripts/download_video.py","docs/skills/eval-harness/SKILL.md","docs/skills/frontend-patterns/SKILL.md","docs/skills/haizhan-ime-development.md","docs/skills/hizan-official/.claude-plugin/marketplace.json","docs/skills/hizan-official/skills/arch/SKILL.md","docs/skills/hizan-official/skills/game/SKILL.md","docs/skills/hizan-official/skills/quality/SKILL.md","docs/skills/hizan-official/skills/work/SKILL.md","docs/skills/juhi/tool-usage.md","docs/skills/mhattingpete-skills/.claude-plugin/marketplace.json","docs/skills/mhattingpete-skills/.claude/install-gh.sh","docs/skills/mhattingpete-skills/.claude/settings.json","docs/skills/mhattingpete-skills/.gitignore","docs/skills/mhattingpete-skills/CHANGELOG.md","docs/skills/mhattingpete-skills/CLAUDE.md","docs/skills/mhattingpete-skills/CONTRIBUTING.md","docs/skills/mhattingpete-skills/LICENSE","docs/skills/mhattingpete-skills/README.md","docs/skills/mhattingpete-skills/assets/skill-loading.gif","docs/skills/mhattingpete-skills/code-operations-plugin/.claude-plugin/plugin.json","docs/skills/mhattingpete-skills/code-operations-plugin/README.md","docs/skills/mhattingpete-skills/code-operations-plugin/skills/code-execution/SKILL.md","docs/skills/mhattingpete-skills/code-operations-plugin/skills/code-execution/examples/bulk_refactor.py","docs/skills/mhattingpete-skills/code-operations-plugin/skills/code-execution/examples/codebase_audit.py","docs/skills/mhattingpete-skills/code-operations-plugin/skills/code-execution/examples/extract_functions.py","docs/skills/mhattingpete-skills/code-operations-plugin/skills/code-refactor/SKILL.md","docs/skills/mhattingpete-skills/code-operations-plugin/skills/code-transfer/SKILL.md","docs/skills/mhattingpete-skills/code-operations-plugin/skills/code-transfer/scripts/line_insert.py","docs/skills/mhattingpete-skills/code-operations-plugin/skills/file-operations/SKILL.md","docs/skills/mhattingpete-skills/engineering-workflow-plugin/.claude-plugin/plugin.json","docs/skills/mhattingpete-skills/engineering-workflow-plugin/README.md","docs/skills/mhattingpete-skills/engineering-workflow-plugin/agents/ensemble-orchestrator/AGENT.md","docs/skills/mhattingpete-skills/engineering-workflow-plugin/agents/plan-implementer.md","docs/skills/mhattingpete-skills/engineering-workflow-plugin/commands/pr.md","docs/skills/mhattingpete-skills/engineering-workflow-plugin/skills/ensemble-solving/SKILL.md","docs/skills/mhattingpete-skills/engineering-workflow-plugin/skills/ensemble-solving/references/diversification-strategies.md","docs/skills/mhattingpete-skills/engineering-workflow-plugin/skills/ensemble-solving/references/evaluation-rubrics.md","docs/skills/mhattingpete-skills/engineering-workflow-plugin/skills/feature-planning/SKILL.md","docs/skills/mhattingpete-skills/engineering-workflow-plugin/skills/feature-planning/references/planning-best-practices.md","docs/skills/mhattingpete-skills/engineering-workflow-plugin/skills/git-pushing/SKILL.md","docs/skills/mhattingpete-skills/engineering-workflow-plugin/skills/git-pushing/scripts/smart_commit.sh","docs/skills/mhattingpete-skills/engineering-workflow-plugin/skills/review-implementing/SKILL.md","docs/skills/mhattingpete-skills/engineering-workflow-plugin/skills/test-fixing/SKILL.md","docs/skills/mhattingpete-skills/execution-runtime/.env.example","docs/skills/mhattingpete-skills/execution-runtime/README.md","docs/skills/mhattingpete-skills/execution-runtime/api/__init__.py","docs/skills/mhattingpete-skills/execution-runtime/api/code_analysis.py","docs/skills/mhattingpete-skills/execution-runtime/api/code_transform.py","docs/skills/mhattingpete-skills/execution-runtime/api/filesystem.py","docs/skills/mhattingpete-skills/execution-runtime/api/git_operations.py","docs/skills/mhattingpete-skills/execution-runtime/execution_runtime/__init__.py","docs/skills/mhattingpete-skills/execution-runtime/execution_runtime/security/__init__.py","docs/skills/mhattingpete-skills/execution-runtime/execution_runtime/security/import_guard.py","docs/skills/mhattingpete-skills/execution-runtime/execution_runtime/security/pii_detector.py","docs/skills/mhattingpete-skills/execution-runtime/execution_runtime/sessions.py","docs/skills/mhattingpete-skills/execution-runtime/execution_runtime/skills.py","docs/skills/mhattingpete-skills/execution-runtime/mcp-server/mcp_server.py","docs/skills/mhattingpete-skills/execution-runtime/mcp-server/security/pii_detector.py","docs/skills/mhattingpete-skills/execution-runtime/mcp-server/security/sandbox.py","docs/skills/mhattingpete-skills/execution-runtime/pyproject.toml","docs/skills/mhattingpete-skills/execution-runtime/setup.sh","docs/skills/mhattingpete-skills/productivity-skills-plugin/.claude-plugin/plugin.json","docs/skills/mhattingpete-skills/productivity-skills-plugin/README.md","docs/skills/mhattingpete-skills/productivity-skills-plugin/skills/code-auditor/SKILL.md","docs/skills/mhattingpete-skills/productivity-skills-plugin/skills/codebase-documenter/SKILL.md","docs/skills/mhattingpete-skills/productivity-skills-plugin/skills/conversation-analyzer/SKILL.md","docs/skills/mhattingpete-skills/productivity-skills-plugin/skills/conversation-analyzer/scripts/analyze_history.py","docs/skills/mhattingpete-skills/productivity-skills-plugin/skills/project-bootstrapper/SKILL.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/.claude-plugin/plugin.json","docs/skills/mhattingpete-skills/visual-documentation-plugin/EXAMPLES.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/README.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/architecture-diagram-creator/SKILL.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/architecture-diagram-creator/assets/templates/architecture_components.html","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/architecture-diagram-creator/assets/templates/base_template.html","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/architecture-diagram-creator/references/example_architecture.html","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/dashboard-creator/SKILL.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/dashboard-creator/assets/templates/base_template.html","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/dashboard-creator/assets/templates/dashboard_components.html","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/dashboard-creator/references/design_patterns.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/dashboard-creator/references/svg_library.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/flowchart-creator/SKILL.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/flowchart-creator/assets/templates/base_template.html","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/flowchart-creator/assets/templates/flowchart_components.html","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/flowchart-creator/references/design_patterns.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/flowchart-creator/references/svg_library.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/technical-doc-creator/SKILL.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/technical-doc-creator/assets/templates/base_template.html","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/technical-doc-creator/references/design_patterns.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/technical-doc-creator/references/svg_library.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/timeline-creator/SKILL.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/timeline-creator/assets/templates/base_template.html","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/timeline-creator/assets/templates/timeline_components.html","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/timeline-creator/references/design_patterns.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/skills/timeline-creator/references/svg_library.md","docs/skills/mhattingpete-skills/visual-documentation-plugin/test-outputs/dashboard-test-monitoring.html","docs/skills/mhattingpete-skills/visual-documentation-plugin/test-outputs/flowchart-test-authentication.html","docs/skills/netresearch-marketplace/.claude-plugin/marketplace.json","docs/skills/netresearch-marketplace/.github/workflows/sync-skills.yml","docs/skills/netresearch-marketplace/.gitignore","docs/skills/netresearch-marketplace/.sync-config.json","docs/skills/netresearch-marketplace/README.md","docs/skills/netresearch-marketplace/SYNC-SETUP.md","docs/skills/netresearch-marketplace/VERSIONING.md","docs/skills/netresearch-marketplace/notify-marketplace.yml","docs/skills/netresearch-marketplace/plugins/coach/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/plugins/coach/LICENSE","docs/skills/netresearch-marketplace/plugins/coach/README.md","docs/skills/netresearch-marketplace/plugins/coach/assets/templates/antipattern.md","docs/skills/netresearch-marketplace/plugins/coach/assets/templates/checklist.md","docs/skills/netresearch-marketplace/plugins/coach/assets/templates/rule.md","docs/skills/netresearch-marketplace/plugins/coach/assets/templates/snippet.md","docs/skills/netresearch-marketplace/plugins/coach/commands/approve.md","docs/skills/netresearch-marketplace/plugins/coach/commands/edit.md","docs/skills/netresearch-marketplace/plugins/coach/commands/init.md","docs/skills/netresearch-marketplace/plugins/coach/commands/promote.md","docs/skills/netresearch-marketplace/plugins/coach/commands/reject.md","docs/skills/netresearch-marketplace/plugins/coach/commands/review.md","docs/skills/netresearch-marketplace/plugins/coach/commands/scan.md","docs/skills/netresearch-marketplace/plugins/coach/commands/status.md","docs/skills/netresearch-marketplace/plugins/coach/hooks/hooks.json","docs/skills/netresearch-marketplace/plugins/coach/references/architecture.md","docs/skills/netresearch-marketplace/plugins/coach/references/schema.md","docs/skills/netresearch-marketplace/plugins/coach/references/scope_heuristics.md","docs/skills/netresearch-marketplace/plugins/coach/references/signal_patterns.md","docs/skills/netresearch-marketplace/plugins/coach/scripts/aggregate.py","docs/skills/netresearch-marketplace/plugins/coach/scripts/apply.py","docs/skills/netresearch-marketplace/plugins/coach/scripts/detect_signals.py","docs/skills/netresearch-marketplace/plugins/coach/scripts/fingerprint.py","docs/skills/netresearch-marketplace/plugins/coach/scripts/init_coach.py","docs/skills/netresearch-marketplace/plugins/coach/scripts/ledger.py","docs/skills/netresearch-marketplace/plugins/coach/scripts/propose.py","docs/skills/netresearch-marketplace/plugins/coach/scripts/root_cause_analyzer.py","docs/skills/netresearch-marketplace/plugins/coach/scripts/scope_analyzer.py","docs/skills/netresearch-marketplace/plugins/coach/scripts/skill_analyzer.py","docs/skills/netresearch-marketplace/plugins/coach/skills/coach/SKILL.md","docs/skills/netresearch-marketplace/renovate.json","docs/skills/netresearch-marketplace/skills/agents/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/agents/LICENSE","docs/skills/netresearch-marketplace/skills/agents/README.md","docs/skills/netresearch-marketplace/skills/agents/STATUS.md","docs/skills/netresearch-marketplace/skills/agents/claudedocs/refactoring-summary.md","docs/skills/netresearch-marketplace/skills/agents/composer.json","docs/skills/netresearch-marketplace/skills/agents/docs/ROADMAP.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/SKILL.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/assets/root-thin.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/assets/root-verbose.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/assets/scoped/backend-go.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/assets/scoped/backend-php.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/assets/scoped/cli.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/assets/scoped/documentation.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/assets/scoped/examples.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/assets/scoped/frontend-typescript.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/assets/scoped/resources.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/assets/scoped/testing.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/references/analysis.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/references/directory-coverage.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/references/examples/coding-agent-cli/AGENTS.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/references/examples/coding-agent-cli/scripts-AGENTS.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/references/examples/ldap-selfservice/AGENTS.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/references/examples/ldap-selfservice/internal-AGENTS.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/references/examples/ldap-selfservice/internal-web-AGENTS.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/references/examples/simple-ldap-go/AGENTS.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/references/examples/simple-ldap-go/examples-AGENTS.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/references/examples/t3x-rte-ckeditor-image/AGENTS.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/references/examples/t3x-rte-ckeditor-image/Classes-AGENTS.md","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/analyze-git-history.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/check-freshness.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/detect-project.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/detect-scopes.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/extract-agent-configs.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/extract-ci-commands.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/extract-commands.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/extract-documentation.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/extract-ide-settings.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/extract-platform-files.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/extract-quality-configs.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/generate-agents.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/lib/summary.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/lib/template.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/validate-structure.sh","docs/skills/netresearch-marketplace/skills/agents/skills/agents/scripts/verify-content.sh","docs/skills/netresearch-marketplace/skills/cli-tools/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/cli-tools/LICENSE","docs/skills/netresearch-marketplace/skills/cli-tools/README.md","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/ansible-core.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/ast-grep.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/aws.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/bandit.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/bat.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/black.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/claude.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/codex.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/compose.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/composer.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/ctags.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/curlie.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/dasel.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/delta.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/direnv.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/dive.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/docker.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/entr.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/eslint.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/fd.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/flake8.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/fx.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/fzf.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/gam.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/gem.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/gh.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/git-absorb.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/git-branchless.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/git-filter-repo.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/git-lfs.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/git.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/gitleaks.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/glab.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/go.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/golangci-lint.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/gosec.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/httpie.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/isort.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/jq.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/just.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/kubectl.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/ninja.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/node.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/npm.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/parallel.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/php.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/pip.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/pipx.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/pnpm.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/poetry.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/pre-commit.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/prename.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/prettier.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/python.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/rbenv.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/rename.ul.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/rga.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/ripgrep.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/ruby-build.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/ruby.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/ruff.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/rust.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/sd.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/semgrep.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/shellcheck.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/shfmt.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/sponge.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/terraform.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/tfsec.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/trivy.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/uv.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/watchexec.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/xsv.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/yarn.json","docs/skills/netresearch-marketplace/skills/cli-tools/catalog/yq.json","docs/skills/netresearch-marketplace/skills/cli-tools/composer.json","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/SKILL.md","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/references/binary_to_tool_map.md","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/references/project_type_requirements.md","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/auto_update.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/check_environment.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/detect_project_type.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/install_composer.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/install_tool.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/installers/aws_installer.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/installers/dedicated_script.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/installers/github_clone.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/installers/github_release_binary.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/installers/hashicorp_zip.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/installers/npm_global.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/installers/npm_self_update.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/installers/package_manager.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/installers/uv_tool.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/lib/capability.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/lib/catalog.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/lib/common.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/lib/dependency.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/lib/install_strategy.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/lib/path_check.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/lib/policy.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/lib/reconcile.sh","docs/skills/netresearch-marketplace/skills/cli-tools/skills/cli-tools/scripts/lib/scope_detection.sh","docs/skills/netresearch-marketplace/skills/context7/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/context7/LICENSE","docs/skills/netresearch-marketplace/skills/context7/README.md","docs/skills/netresearch-marketplace/skills/context7/skills/context7/SKILL.md","docs/skills/netresearch-marketplace/skills/context7/skills/context7/scripts/context7.sh","docs/skills/netresearch-marketplace/skills/enterprise-readiness/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/enterprise-readiness/LICENSE","docs/skills/netresearch-marketplace/skills/enterprise-readiness/README.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/assets/templates/ARCHITECTURE.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/assets/templates/BADGE_EXCEPTIONS.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/assets/templates/CODE_OF_CONDUCT.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/assets/templates/GOVERNANCE.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/assets/templates/ROADMAP.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/assets/templates/SECURITY_AUDIT.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/assets/workflows/codeql.yml","docs/skills/netresearch-marketplace/skills/enterprise-readiness/assets/workflows/dco-check.yml","docs/skills/netresearch-marketplace/skills/enterprise-readiness/assets/workflows/dependency-review.yml","docs/skills/netresearch-marketplace/skills/enterprise-readiness/assets/workflows/scorecard.yml","docs/skills/netresearch-marketplace/skills/enterprise-readiness/assets/workflows/slsa-provenance.yml","docs/skills/netresearch-marketplace/skills/enterprise-readiness/composer.json","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/SKILL.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/2fa-enforcement.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/badge-display.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/branch-coverage.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/dco-implementation.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/dynamic-analysis.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/general.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/github.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/go.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/openssf-badge-gold.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/openssf-badge-silver.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/quick-start-guide.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/reproducible-builds.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/security-hardening.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/signed-releases.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/solo-maintainer-guide.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/sonarcloud.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/references/test-invocation.md","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/scripts/add-spdx-headers.sh","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/scripts/analyze-bus-factor.sh","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/scripts/check-branch-coverage.sh","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/scripts/check-coverage-threshold.sh","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/scripts/check-tls-minimum.sh","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/scripts/verify-badge-criteria.sh","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/scripts/verify-reproducible-build.sh","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/scripts/verify-review-requirements.sh","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/scripts/verify-signed-tags.sh","docs/skills/netresearch-marketplace/skills/enterprise-readiness/skills/enterprise-readiness/scripts/verify-spdx-headers.sh","docs/skills/netresearch-marketplace/skills/git-workflow/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/git-workflow/LICENSE","docs/skills/netresearch-marketplace/skills/git-workflow/README.md","docs/skills/netresearch-marketplace/skills/git-workflow/composer.json","docs/skills/netresearch-marketplace/skills/git-workflow/skills/git-workflow/SKILL.md","docs/skills/netresearch-marketplace/skills/git-workflow/skills/git-workflow/references/advanced-git.md","docs/skills/netresearch-marketplace/skills/git-workflow/skills/git-workflow/references/branching-strategies.md","docs/skills/netresearch-marketplace/skills/git-workflow/skills/git-workflow/references/ci-cd-integration.md","docs/skills/netresearch-marketplace/skills/git-workflow/skills/git-workflow/references/commit-conventions.md","docs/skills/netresearch-marketplace/skills/git-workflow/skills/git-workflow/references/github-releases.md","docs/skills/netresearch-marketplace/skills/git-workflow/skills/git-workflow/references/pull-request-workflow.md","docs/skills/netresearch-marketplace/skills/git-workflow/skills/git-workflow/scripts/verify-git-workflow.sh","docs/skills/netresearch-marketplace/skills/github-project/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/github-project/LICENSE","docs/skills/netresearch-marketplace/skills/github-project/README.md","docs/skills/netresearch-marketplace/skills/github-project/composer.json","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/SKILL.md","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/assets/CODEOWNERS.template","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/assets/CONTRIBUTING.md.template","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/assets/PULL_REQUEST_TEMPLATE.md.template","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/assets/SECURITY.md.template","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/assets/auto-merge-direct.yml.template","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/assets/auto-merge-queue.yml.template","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/assets/auto-merge.yml.template","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/assets/bug_report.md.template","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/assets/dependabot.yml.template","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/assets/feature_request.md.template","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/assets/release-labeler.yml.template","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/assets/renovate.json.template","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/references/branch-migration.md","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/references/dependency-management.md","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/references/release-labeling.md","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/references/repository-structure.md","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/references/sub-issues.md","docs/skills/netresearch-marketplace/skills/github-project/skills/github-project/scripts/verify-github-project.sh","docs/skills/netresearch-marketplace/skills/go-development/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/go-development/LICENSE","docs/skills/netresearch-marketplace/skills/go-development/README.md","docs/skills/netresearch-marketplace/skills/go-development/skills/go-development/SKILL.md","docs/skills/netresearch-marketplace/skills/go-development/skills/go-development/references/api-design.md","docs/skills/netresearch-marketplace/skills/go-development/skills/go-development/references/architecture.md","docs/skills/netresearch-marketplace/skills/go-development/skills/go-development/references/docker.md","docs/skills/netresearch-marketplace/skills/go-development/skills/go-development/references/fuzz-testing.md","docs/skills/netresearch-marketplace/skills/go-development/skills/go-development/references/ldap.md","docs/skills/netresearch-marketplace/skills/go-development/skills/go-development/references/linting.md","docs/skills/netresearch-marketplace/skills/go-development/skills/go-development/references/makefile.md","docs/skills/netresearch-marketplace/skills/go-development/skills/go-development/references/mutation-testing.md","docs/skills/netresearch-marketplace/skills/go-development/skills/go-development/references/resilience.md","docs/skills/netresearch-marketplace/skills/go-development/skills/go-development/references/testing.md","docs/skills/netresearch-marketplace/skills/go-development/skills/go-development/scripts/verify-go-project.sh","docs/skills/netresearch-marketplace/skills/jira-integration/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/jira-integration/AGENTS.md","docs/skills/netresearch-marketplace/skills/jira-integration/CHANGELOG.md","docs/skills/netresearch-marketplace/skills/jira-integration/CLAUDE.md","docs/skills/netresearch-marketplace/skills/jira-integration/LICENSE","docs/skills/netresearch-marketplace/skills/jira-integration/MIGRATION.md","docs/skills/netresearch-marketplace/skills/jira-integration/PRD.md","docs/skills/netresearch-marketplace/skills/jira-integration/README.md","docs/skills/netresearch-marketplace/skills/jira-integration/SKILL.md","docs/skills/netresearch-marketplace/skills/jira-integration/composer.json","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/AGENTS.md","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/SKILL.md","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/references/jql-quick-reference.md","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/references/troubleshooting.md","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/core/jira-attachment.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/core/jira-issue.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/core/jira-search.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/core/jira-setup.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/core/jira-validate.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/core/jira-worklog.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/lib/__init__.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/lib/client.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/lib/config.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/lib/output.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/utility/jira-fields.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/utility/jira-link.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/utility/jira-user.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/workflow/jira-board.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/workflow/jira-comment.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/workflow/jira-create.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/workflow/jira-sprint.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-communication/scripts/workflow/jira-transition.py","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-syntax/AGENTS.md","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-syntax/SKILL.md","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-syntax/references/jira-syntax-quick-reference.md","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-syntax/scripts/validate-jira-syntax.sh","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-syntax/templates/bug-report-template.md","docs/skills/netresearch-marketplace/skills/jira-integration/skills/jira-syntax/templates/feature-request-template.md","docs/skills/netresearch-marketplace/skills/netresearch-branding/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/netresearch-branding/LICENSE","docs/skills/netresearch-marketplace/skills/netresearch-branding/README.md","docs/skills/netresearch-marketplace/skills/netresearch-branding/assets/logos/netresearch-symbol-only.svg","docs/skills/netresearch-marketplace/skills/netresearch-branding/composer.json","docs/skills/netresearch-marketplace/skills/netresearch-branding/examples/components.html","docs/skills/netresearch-marketplace/skills/netresearch-branding/skills/netresearch-branding/SKILL.md","docs/skills/netresearch-marketplace/skills/netresearch-branding/skills/netresearch-branding/references/colors.md","docs/skills/netresearch-marketplace/skills/netresearch-branding/skills/netresearch-branding/references/typo3-extension-branding.md","docs/skills/netresearch-marketplace/skills/netresearch-branding/skills/netresearch-branding/references/typography.md","docs/skills/netresearch-marketplace/skills/netresearch-branding/skills/netresearch-branding/references/web-design.md","docs/skills/netresearch-marketplace/skills/netresearch-branding/skills/netresearch-branding/templates/landing-page.html","docs/skills/netresearch-marketplace/skills/netresearch-branding/skills/netresearch-branding/templates/styles.css","docs/skills/netresearch-marketplace/skills/php-modernization/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/php-modernization/LICENSE","docs/skills/netresearch-marketplace/skills/php-modernization/README.md","docs/skills/netresearch-marketplace/skills/php-modernization/composer.json","docs/skills/netresearch-marketplace/skills/php-modernization/skills/php-modernization/SKILL.md","docs/skills/netresearch-marketplace/skills/php-modernization/skills/php-modernization/references/adapter-registry-pattern.md","docs/skills/netresearch-marketplace/skills/php-modernization/skills/php-modernization/references/migration-strategies.md","docs/skills/netresearch-marketplace/skills/php-modernization/skills/php-modernization/references/php8-features.md","docs/skills/netresearch-marketplace/skills/php-modernization/skills/php-modernization/references/phpstan-compliance.md","docs/skills/netresearch-marketplace/skills/php-modernization/skills/php-modernization/references/psr-per-compliance.md","docs/skills/netresearch-marketplace/skills/php-modernization/skills/php-modernization/references/request-dtos.md","docs/skills/netresearch-marketplace/skills/php-modernization/skills/php-modernization/references/static-analysis-tools.md","docs/skills/netresearch-marketplace/skills/php-modernization/skills/php-modernization/references/symfony-patterns.md","docs/skills/netresearch-marketplace/skills/php-modernization/skills/php-modernization/references/type-safety.md","docs/skills/netresearch-marketplace/skills/php-modernization/skills/php-modernization/scripts/verify-php-project.sh","docs/skills/netresearch-marketplace/skills/security-audit/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/security-audit/LICENSE","docs/skills/netresearch-marketplace/skills/security-audit/README.md","docs/skills/netresearch-marketplace/skills/security-audit/composer.json","docs/skills/netresearch-marketplace/skills/security-audit/skills/security-audit/SKILL.md","docs/skills/netresearch-marketplace/skills/security-audit/skills/security-audit/references/api-key-encryption.md","docs/skills/netresearch-marketplace/skills/security-audit/skills/security-audit/references/cvss-scoring.md","docs/skills/netresearch-marketplace/skills/security-audit/skills/security-audit/references/owasp-top10.md","docs/skills/netresearch-marketplace/skills/security-audit/skills/security-audit/references/xxe-prevention.md","docs/skills/netresearch-marketplace/skills/security-audit/skills/security-audit/scripts/security-audit.sh","docs/skills/netresearch-marketplace/skills/skill-repo/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/skill-repo/LICENSE","docs/skills/netresearch-marketplace/skills/skill-repo/README.md","docs/skills/netresearch-marketplace/skills/skill-repo/composer.json","docs/skills/netresearch-marketplace/skills/skill-repo/renovate.json","docs/skills/netresearch-marketplace/skills/skill-repo/skills/skill-repo/SKILL.md","docs/skills/netresearch-marketplace/skills/skill-repo/skills/skill-repo/references/composer-setup.md","docs/skills/netresearch-marketplace/skills/skill-repo/skills/skill-repo/references/installation-methods.md","docs/skills/netresearch-marketplace/skills/skill-repo/skills/skill-repo/references/marketplace-integration.md","docs/skills/netresearch-marketplace/skills/skill-repo/skills/skill-repo/scripts/validate-skill.sh","docs/skills/netresearch-marketplace/skills/skill-repo/skills/skill-repo/templates/README.md.template","docs/skills/netresearch-marketplace/skills/skill-repo/skills/skill-repo/templates/composer.json.template","docs/skills/netresearch-marketplace/skills/skill-repo/skills/skill-repo/templates/release.yml.template","docs/skills/netresearch-marketplace/skills/typo3-ckeditor5/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/typo3-ckeditor5/LICENSE","docs/skills/netresearch-marketplace/skills/typo3-ckeditor5/README.md","docs/skills/netresearch-marketplace/skills/typo3-ckeditor5/composer.json","docs/skills/netresearch-marketplace/skills/typo3-ckeditor5/skills/typo3-ckeditor5/SKILL.md","docs/skills/netresearch-marketplace/skills/typo3-ckeditor5/skills/typo3-ckeditor5/references/ckeditor5-architecture.md","docs/skills/netresearch-marketplace/skills/typo3-ckeditor5/skills/typo3-ckeditor5/references/migration-guide.md","docs/skills/netresearch-marketplace/skills/typo3-ckeditor5/skills/typo3-ckeditor5/references/plugin-development.md","docs/skills/netresearch-marketplace/skills/typo3-ckeditor5/skills/typo3-ckeditor5/references/typo3-integration.md","docs/skills/netresearch-marketplace/skills/typo3-ckeditor5/skills/typo3-ckeditor5/scripts/verify-ckeditor5.sh","docs/skills/netresearch-marketplace/skills/typo3-conformance/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/typo3-conformance/LICENSE","docs/skills/netresearch-marketplace/skills/typo3-conformance/README.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/composer.json","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/SKILL.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/assets/.github/workflows/publish-to-ter.yml","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/backend-module-v13.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/backend-wizard-patterns.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/best-practices.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/coding-guidelines.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/composer-validation.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/crowdin-integration.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/development-environment.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/directory-structure.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/dual-version-compatibility.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/excellence-indicators.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/ext-emconf-validation.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/ext-files-validation.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/extension-architecture.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/hooks-and-events.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/multi-tier-configuration.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/php-architecture.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/report-template.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/runtests-validation.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/ter-publishing.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/testing-standards.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/v13-deprecations.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/references/version-requirements.md","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/scripts/check-architecture.sh","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/scripts/check-coding-standards.sh","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/scripts/check-conformance.sh","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/scripts/check-documentation.sh","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/scripts/check-file-structure.sh","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/scripts/check-phpstan-baseline.sh","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/scripts/check-testing.sh","docs/skills/netresearch-marketplace/skills/typo3-conformance/skills/typo3-conformance/scripts/generate-report.sh","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/LICENSE","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/README.md","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/assets/commit-template.txt","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/claudedocs/refactoring-summary.md","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/composer.json","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/SKILL.md","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/references/account-setup.md","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/references/commit-message-format.md","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/references/commit-msg-hook.md","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/references/ddev-setup-workflow.md","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/references/forge-api.md","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/references/gerrit-review-patterns.md","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/references/gerrit-workflow.md","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/references/modern-typo3-patterns.md","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/references/troubleshooting.md","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/scripts/create-commit-message.py","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/scripts/create-forge-issue.sh","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/scripts/query-forge-metadata.sh","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/scripts/setup-typo3-coredev.sh","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/scripts/validate-commit-message.py","docs/skills/netresearch-marketplace/skills/typo3-core-contributions/skills/typo3-core-contributions/scripts/verify-prerequisites.sh","docs/skills/netresearch-marketplace/skills/typo3-ddev/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/typo3-ddev/LICENSE","docs/skills/netresearch-marketplace/skills/typo3-ddev/README.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/composer.json","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/SKILL.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/.envrc","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/Makefile.template","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/README-SERVICES.md.optional","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/apache/apache-site.conf","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/commands/host/docs","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/commands/host/pre-start-git-info","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/commands/host/setup","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/commands/install-all","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/commands/install-v11","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/commands/install-v12","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/commands/install-v13","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/commands/web/configure-extension.optional","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/commands/web/generate-index","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/commands/web/generate-makefile","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/commands/web/install-introduction.optional","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/config.redis.php.example","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/config.yaml","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/docker-compose.git-info.yaml","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/docker-compose.ofelia.yaml.optional","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/docker-compose.services-redis.yaml.optional","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/docker-compose.services.yaml.optional","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/docker-compose.web.yaml","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/homeadditions/.bashrc_additions.optional","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/index.html.netresearch.template","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/index.html.typo3.template","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/web-build/Dockerfile","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/web-build/install-cron.sh.optional","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/assets/templates/web-entrypoint.d/10-cleanup-index.sh","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/references/0001-valkey-default-with-redis-alternative.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/references/0002-mariadb-default-with-database-alternatives.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/references/0003-php-version-management.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/references/advanced-options.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/references/documentation-rendering.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/references/index-page-generation.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/references/prerequisites-validation.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/references/quickstart.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/references/troubleshooting.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/references/typo3-12-cli-changes.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/references/windows-fixes.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/references/windows-optimizations.md","docs/skills/netresearch-marketplace/skills/typo3-ddev/skills/typo3-ddev/scripts/validate-prerequisites.sh","docs/skills/netresearch-marketplace/skills/typo3-docs/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/typo3-docs/LICENSE","docs/skills/netresearch-marketplace/skills/typo3-docs/README.md","docs/skills/netresearch-marketplace/skills/typo3-docs/composer.json","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/SKILL.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/assets/AGENTS.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/architecture-decision-records.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/code-structure-elements.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/coding-guidelines.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/content-directives.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/documentation-coverage-analysis.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/extraction-patterns.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/file-structure.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/guides-xml.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/intercept-deployment.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/rendering.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/rst-syntax.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/screenshots.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/text-roles-inline-code.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/typo3-directives.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/references/typo3-extension-architecture.md","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/scripts/add-agents-md.sh","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/scripts/analyze-docs.sh","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/scripts/extract-all.sh","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/scripts/extract-build-configs.sh","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/scripts/extract-composer.sh","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/scripts/extract-extension-config.sh","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/scripts/extract-php.sh","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/scripts/extract-project-files.sh","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/scripts/extract-repo-metadata.sh","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/scripts/render_docs.sh","docs/skills/netresearch-marketplace/skills/typo3-docs/skills/typo3-docs/scripts/validate_docs.sh","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/LICENSE","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/README.md","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/composer.json","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/skills/typo3-extension-upgrade/SKILL.md","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/skills/typo3-extension-upgrade/assets/.php-cs-fixer.php","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/skills/typo3-extension-upgrade/assets/fractor.php","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/skills/typo3-extension-upgrade/assets/phpstan.neon","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/skills/typo3-extension-upgrade/assets/phpunit.xml","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/skills/typo3-extension-upgrade/assets/rector.php","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/skills/typo3-extension-upgrade/references/api-changes.md","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/skills/typo3-extension-upgrade/references/dual-compatibility.md","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/skills/typo3-extension-upgrade/references/pre-upgrade.md","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/skills/typo3-extension-upgrade/references/real-world-patterns.md","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/skills/typo3-extension-upgrade/references/upgrade-v11-to-v12.md","docs/skills/netresearch-marketplace/skills/typo3-extension-upgrade/skills/typo3-extension-upgrade/references/upgrade-v12-to-v13.md","docs/skills/netresearch-marketplace/skills/typo3-testing/.claude-plugin/plugin.json","docs/skills/netresearch-marketplace/skills/typo3-testing/LICENSE","docs/skills/netresearch-marketplace/skills/typo3-testing/README.md","docs/skills/netresearch-marketplace/skills/typo3-testing/composer.json","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/SKILL.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/.php-cs-fixer.dist.php","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/AGENTS.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/FunctionalTests.xml","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/FunctionalTestsBootstrap.php","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/Makefile","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/UnitTests.xml","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/UnitTestsBootstrap.php","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/bootstrap.php","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/codecov.yml","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/docker/codeception.yml","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/docker/docker-compose.yml","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/example-tests/ExampleAcceptanceCest.php","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/example-tests/ExampleFunctionalTest.php","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/example-tests/ExampleUnitTest.php","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/fixtures/README.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/fixtures/be_users.csv","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/fixtures/pages.csv","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/fixtures/sys_category.csv","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/fixtures/tt_content.csv","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/github-actions-e2e.yml","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/github-actions-tests.yml","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/infection.json5","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/phpat.neon","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/phpat.php","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/phpstan-baseline.neon","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/phpstan.neon","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/assets/rector.php","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/accessibility-testing.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/architecture-testing.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/ci-cd.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/crypto-testing.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/ddev-testing.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/e2e-testing.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/functional-test-patterns.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/functional-testing.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/fuzz-testing.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/integration-testing.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/javascript-testing.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/mutation-testing.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/performance-testing.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/quality-tools.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/sonarcloud.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/test-runners.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/typo3-v14-final-classes.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/references/unit-testing.md","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/scripts/generate-test.sh","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/scripts/setup-testing.sh","docs/skills/netresearch-marketplace/skills/typo3-testing/skills/typo3-testing/scripts/validate-setup.sh","docs/skills/netresearch-marketplace/update-source-repos.sh","docs/skills/project-guidelines-example/SKILL.md","docs/skills/security-review/SKILL.md","docs/skills/strategic-compact/SKILL.md","docs/skills/strategic-compact/suggest-compact.sh","docs/skills/tdd-workflow/SKILL.md","docs/skills/verification-loop/SKILL.md","docs/话术库导出_20251231103252.xlsx","docs_archive/AI_INPUT_METHOD_BRAINSTORM.md","docs_archive/ANDROID_100_PERCENT_PLAN.md","docs_archive/ANDROID_NATIVE_REPLACEMENT_DETAILED_PLAN.md","docs_archive/ANDROID_NATIVE_REPLACEMENT_PLAN.md","docs_archive/API.md","docs_archive/APPLE_PLATFORM_DEVELOPMENT_PLAN.md","docs_archive/ARCHITECTURE.md","docs_archive/ARCHITECTURE_COMPACT.md","docs_archive/CLAUDE.md","docs_archive/COMPREHENSIVE_IMPROVEMENT_PLAN.md","docs_archive/DEPLOYMENT.md","docs_archive/DESIGN_BASED_DEVELOPMENT_PLAN.md","docs_archive/DEVELOPMENT_ROADMAP.md","docs_archive/DICTIONARY_IMPROVEMENT_PLAN.md","docs_archive/DOCS_INDEX.md","docs_archive/IMPLEMENTATION_PLAN.md","docs_archive/IMPROVEMENT_RECOMMENDATIONS.md","docs_archive/IOS_DEVELOPMENT_PLAN.md","docs_archive/NEXT_STEPS_PLAN.md","docs_archive/PINYIN_DEVELOPMENT_PLAN.md","docs_archive/PRD.md","docs_archive/PROGRESS_TRACKER.md","docs_archive/README.md","docs_archive/REDLINES.md","docs_archive/SMART_RECOGNITION_COMPACT.md","docs_archive/TECHNICAL_ARCHITECTURE.md","docs_archive/UI_DEVELOPMENT_PLAN.md","docs_archive/smart-recognition-design.md","flutter_app/assets/fonts/PingFang-Medium.ttf","flutter_app/assets/fonts/PingFang-Regular.ttf","flutter_app/assets/fonts/PingFang-Semibold.ttf","flutter_app/assets/icons/.gitkeep","flutter_app/assets/images/.gitkeep","flutter_app/lib/core/bridge/bridge_models.dart","flutter_app/lib/core/bridge/bridge_response_parser.dart","flutter_app/lib/core/bridge/haizhan_bridge.dart","flutter_app/lib/core/di/service_locator.dart","flutter_app/lib/core/router/app_router.dart","flutter_app/lib/core/router/routes.dart","flutter_app/lib/core/theme/app_colors.dart","flutter_app/lib/core/theme/app_theme.dart","flutter_app/lib/core/theme/app_typography.dart","flutter_app/lib/features/auth/data/auth_provider.dart","flutter_app/lib/features/auth/data/auth_repository.dart","flutter_app/lib/features/auth/domain/auth_models.dart","flutter_app/lib/features/auth/presentation/login_screen.dart","flutter_app/lib/features/auth/presentation/register_screen.dart","flutter_app/lib/features/chat/data/ai_provider.dart","flutter_app/lib/features/chat/data/ai_repository.dart","flutter_app/lib/features/chat/domain/ai_reply_models.dart","flutter_app/lib/features/chat/presentation/chat_screen.dart","flutter_app/lib/features/chat/presentation/conversation_screen.dart","flutter_app/lib/features/contacts/data/contact_360_provider.dart","flutter_app/lib/features/contacts/data/contacts_provider.dart","flutter_app/lib/features/contacts/data/contacts_repository.dart","flutter_app/lib/features/contacts/domain/contact_models.dart","flutter_app/lib/features/contacts/presentation/contact_detail_screen.dart","flutter_app/lib/features/contacts/presentation/contacts_screen.dart","flutter_app/lib/features/home/presentation/home_screen.dart","flutter_app/lib/features/home/presentation/main_shell.dart","flutter_app/lib/features/knowledge/data/knowledge_provider.dart","flutter_app/lib/features/knowledge/data/knowledge_repository.dart","flutter_app/lib/features/knowledge/domain/knowledge_models.dart","flutter_app/lib/features/knowledge/presentation/knowledge_screen.dart","flutter_app/lib/features/profile/presentation/profile_screen.dart","flutter_app/lib/features/search/data/models/search_metrics.dart","flutter_app/lib/features/search/presentation/widgets/search_metrics_indicator.dart","flutter_app/lib/features/settings/presentation/settings_screen.dart","flutter_app/lib/features/stats/presentation/stats_screen.dart","flutter_app/lib/features/stats/presentation/widgets/contact_stats_tab.dart","flutter_app/lib/features/stats/presentation/widgets/overview_tab.dart","flutter_app/lib/features/stats/presentation/widgets/reply_stats_tab.dart","flutter_app/lib/features/stats/presentation/widgets/stats_shared_widgets.dart","flutter_app/lib/features/support/presentation/about_screen.dart","flutter_app/lib/features/support/presentation/feedback_screen.dart","flutter_app/lib/features/support/presentation/help_screen.dart","flutter_app/lib/features/support/presentation/privacy_screen.dart","flutter_app/lib/features/support/presentation/terms_screen.dart","flutter_app/lib/main.dart","flutter_app/lib/shared/widgets/stat_card.dart","flutter_app/pigeons/haizhan_api.dart","flutter_app/pubspec.lock","flutter_app/pubspec.yaml","flutter_app/test/core/network/api_client_test.dart","flutter_app/test/core/theme/theme_provider_test.dart","flutter_app/test/features/auth/login_screen_test.dart","flutter_app/test/features/chat/chat_screen_test.dart","flutter_app/test/features/contacts/contacts_screen_test.dart","flutter_app/test/features/home/home_screen_test.dart","flutter_app/test/features/knowledge/knowledge_screen_test.dart","flutter_app/test/features/profile/profile_screen_test.dart","flutter_app/test/features/settings/settings_screen_test.dart","flutter_app/test/features/statistics/statistics_screen_test.dart","flutter_app/test/features/stats/stats_screen_test.dart","flutter_app/test/integration/app_integration_test.dart","flutter_app/test/providers/auth_provider_test.dart","flutter_app/test/services/api_service_test.dart","flutter_app/test/widgets/contact_card_test.dart","gradle.properties","gradle/libs.versions.toml","gradle/wrapper/gradle-wrapper.jar","gradle/wrapper/gradle-wrapper.properties","gradlew","gradlew.bat","ime-core/build.gradle.kts","ime-core/consumer-rules.pro","ime-core/proguard-rules.pro","ime-core/src/androidTest/java/com/haizhan/ime/core/handwriting/HandwritingIntegrationTest.kt","ime-core/src/androidTest/java/com/haizhan/ime/core/handwriting/HandwritingPerformanceTest.kt","ime-core/src/androidTest/java/com/haizhan/ime/core/handwriting/HandwritingViewTest.kt","ime-core/src/main/AndroidManifest.xml","ime-core/src/main/assets/dictionaries/system/core-char.txt","ime-core/src/main/assets/dictionaries/system/core-merged.txt","ime-core/src/main/assets/dictionaries/system/core-phrase.txt","ime-core/src/main/assets/dictionaries/system/core-word2.txt","ime-core/src/main/assets/dictionaries/system/core-word3.txt","ime-core/src/main/assets/dictionaries/system/core-word4.txt","ime-core/src/main/assets/handwriting_labels_casia.txt","ime-core/src/main/assets/paddle_models/ppocr_keys_v1.txt","ime-core/src/main/cpp/CMakeLists.txt","ime-core/src/main/cpp/include/paddle_api.h","ime-core/src/main/cpp/include/paddle_image_preprocess.h","ime-core/src/main/cpp/include/paddle_lite_factory_helper.h","ime-core/src/main/cpp/include/paddle_place.h","ime-core/src/main/cpp/include/paddle_use_kernels.h","ime-core/src/main/cpp/include/paddle_use_ops.h","ime-core/src/main/cpp/include/paddle_use_passes.h","ime-core/src/main/cpp/paddle_lite_jni.cpp","ime-core/src/main/cpp/paddle_ocr_jni.cpp","ime-core/src/main/java/com/haizhan/ime/core/context/ChatContext.kt","ime-core/src/main/java/com/haizhan/ime/core/context/ChatContextProvider.kt","ime-core/src/main/java/com/haizhan/ime/core/context/ContextAnalyzer.kt","ime-core/src/main/java/com/haizhan/ime/core/context/ContextAwareRanker.kt","ime-core/src/main/java/com/haizhan/ime/core/context/WordCategoryClassifier.kt","ime-core/src/main/java/com/haizhan/ime/core/di/ImeCoreModule.kt","ime-core/src/main/java/com/haizhan/ime/core/di/PerformanceModule.kt","ime-core/src/main/java/com/haizhan/ime/core/engine/ImeEngine.kt","ime-core/src/main/java/com/haizhan/ime/core/engine/handler/EnglishKeyHandler.kt","ime-core/src/main/java/com/haizhan/ime/core/engine/handler/HandwritingKeyHandler.kt","ime-core/src/main/java/com/haizhan/ime/core/engine/handler/KeyPressDispatcher.kt","ime-core/src/main/java/com/haizhan/ime/core/engine/handler/KeyPressHandler.kt","ime-core/src/main/java/com/haizhan/ime/core/engine/handler/PinyinKeyHandler.kt","ime-core/src/main/java/com/haizhan/ime/core/engine/handler/SymbolKeyHandler.kt","ime-core/src/main/java/com/haizhan/ime/core/engine/handler/VoiceKeyHandler.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/HaizhanHandwritingApiClient.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/HandwritingKeyboard.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/HandwritingManager.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/HandwritingToolbar.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/HandwritingView.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/IHandwritingRecognizer.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/ModelDownloader.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/PaddleLiteRecognizer.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/RecognitionConfig.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/Stroke.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/StrokeCache.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/StrokePreprocessor.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/StrokeSegmenter.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/TFLiteRecognizer.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/UnifiedRecognitionEngine.kt","ime-core/src/main/java/com/haizhan/ime/core/handwriting/di/HandwritingModule.kt","ime-core/src/main/java/com/haizhan/ime/core/keyboard/CandidatesView.kt","ime-core/src/main/java/com/haizhan/ime/core/keyboard/EnhancedCandidatesView.kt","ime-core/src/main/java/com/haizhan/ime/core/keyboard/ImeContentLayout.kt","ime-core/src/main/java/com/haizhan/ime/core/keyboard/ImeLayoutConstants.kt","ime-core/src/main/java/com/haizhan/ime/core/keyboard/InputModeToolbar.kt","ime-core/src/main/java/com/haizhan/ime/core/keyboard/KeyboardLayout.kt","ime-core/src/main/java/com/haizhan/ime/core/keyboard/KeyboardView.kt","ime-core/src/main/java/com/haizhan/ime/core/ocr/IOcrEngine.kt","ime-core/src/main/java/com/haizhan/ime/core/ocr/OcrImageProcessor.kt","ime-core/src/main/java/com/haizhan/ime/core/ocr/OcrModels.kt","ime-core/src/main/java/com/haizhan/ime/core/ocr/PaddleOcrEngine.kt","ime-core/src/main/java/com/haizhan/ime/core/ocr/README.md","ime-core/src/main/java/com/haizhan/ime/core/ocr/di/OcrModule.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/BuiltinDictionary.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/Candidate.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/CloudPinyinService.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/CloudSyncService.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/DictModels.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/DictionaryFileParser.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/DictionaryHotReloader.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/DictionaryImporter.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/DictionaryReloader.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/EnterpriseDictionary.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/FuzzyPinyinConfig.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/HotWordService.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/ImportResult.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/InputPredictor.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/LocalDictionary.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/NgramData.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/NgramModel.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/NineGridMatcher.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/PinyinSegmenterImpl.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/PinyinService.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/PinyinServiceImpl.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/PinyinSplitter.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/SmartErrorCorrector.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/SystemDatDictionary.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/UserPreferenceStore.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/cloud/CloudPinyinApiImpl.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/cloud/CloudPinyinModule.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/cloud/ExponentialBackoff.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/converter/ChineseConverter.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/matcher/FullPinyinMatcher.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/matcher/InputMatcher.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/matcher/InputMatcherManager.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/matcher/NineGridMatcherAdapter.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/matcher/ShortcutMatcher.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/matcher/ShuangpinMatcher.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/matcher/di/MatcherModule.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/shuangpin/MicrosoftScheme.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/shuangpin/NaturalScheme.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/shuangpin/ShuangpinConverter.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/shuangpin/ShuangpinScheme.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/shuangpin/SogouScheme.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/shuangpin/XiaoheScheme.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/stroke/StrokeData.kt","ime-core/src/main/java/com/haizhan/ime/core/pinyin/stroke/StrokeMatcher.kt","ime-core/src/main/java/com/haizhan/ime/core/theme/DesignTokens.kt","ime-core/src/main/java/com/haizhan/ime/core/theme/KeyboardTheme.kt","ime-core/src/main/java/com/haizhan/ime/core/theme/ThemeManager.kt","ime-core/src/main/java/com/haizhan/ime/core/voice/ui/VoicePanel.kt","ime-core/src/main/jniLibs/arm64-v8a/libpaddle_light_api_shared.so","ime-core/src/main/res/drawable/ic_backspace.xml","ime-core/src/main/res/drawable/ic_clear_all.xml","ime-core/src/main/res/drawable/ic_handwriting.xml","ime-core/src/main/res/drawable/ic_keyboard.xml","ime-core/src/test/java/com/haizhan/ime/core/ImeEngineTest.kt","ime-core/src/test/java/com/haizhan/ime/core/benchmark/ImeCorePerformanceTest.kt","ime-core/src/test/java/com/haizhan/ime/core/benchmark/MemoryBenchmarkTest.kt","ime-core/src/test/java/com/haizhan/ime/core/context/ContextAnalyzerTest.kt","ime-core/src/test/java/com/haizhan/ime/core/context/ContextAwareRankerTest.kt","ime-core/src/test/java/com/haizhan/ime/core/context/WordCategoryClassifierTest.kt","ime-core/src/test/java/com/haizhan/ime/core/decoder/UnifiedRankerTest.kt","ime-core/src/test/java/com/haizhan/ime/core/engine/ImeEngineTest.kt","ime-core/src/test/java/com/haizhan/ime/core/engine/handler/EnglishKeyHandlerExpandedTest.kt","ime-core/src/test/java/com/haizhan/ime/core/engine/handler/KeyPressDispatcherTest.kt","ime-core/src/test/java/com/haizhan/ime/core/engine/handler/KeyPressHandlerTest.kt","ime-core/src/test/java/com/haizhan/ime/core/engine/handler/PinyinKeyHandlerExpandedTest.kt","ime-core/src/test/java/com/haizhan/ime/core/engine/handler/SymbolKeyHandlerExpandedTest.kt","ime-core/src/test/java/com/haizhan/ime/core/handwriting/HandwritingManagerAdvancedTest.kt","ime-core/src/test/java/com/haizhan/ime/core/handwriting/HandwritingManagerTest.kt","ime-core/src/test/java/com/haizhan/ime/core/handwriting/PaddleLiteRecognizerTest.kt","ime-core/src/test/java/com/haizhan/ime/core/handwriting/StrokeCacheTest.kt","ime-core/src/test/java/com/haizhan/ime/core/handwriting/StrokePreprocessorTest.kt","ime-core/src/test/java/com/haizhan/ime/core/handwriting/TFLiteRecognizerTest.kt","ime-core/src/test/java/com/haizhan/ime/core/keyboard/CandidatesViewTest.kt","ime-core/src/test/java/com/haizhan/ime/core/keyboard/KeyboardLayoutTest.kt","ime-core/src/test/java/com/haizhan/ime/core/keyboard/KeyboardViewTest.kt","ime-core/src/test/java/com/haizhan/ime/core/ocr/OcrImageProcessorTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/CloudPinyinServiceTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/CloudSyncServiceTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/DictionaryFileParserTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/DictionaryImporterTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/DictionaryReloaderTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/EnterpriseDictionaryTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/FuzzyPinyinConfigTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/HotWordServiceTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/InputPredictorTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/LocalDictionaryTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/NgramModelTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/NineGridMatcherTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/PinyinSegmenterTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/PinyinServiceImplTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/PinyinServiceTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/PinyinSplitterTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/SmartErrorCorrectorTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/SystemDatDictionaryTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/UserPreferenceStoreTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/cloud/CloudPinyinApiImplTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/cloud/ExponentialBackoffTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/matcher/FullPinyinMatcherTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/matcher/ShuangpinMatcherTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/shuangpin/ShuangpinSchemeTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/shuangpin/SogouSchemeTest.kt","ime-core/src/test/java/com/haizhan/ime/core/pinyin/shuangpin/XiaoheSchemeTest.kt","ime-core/src/test/java/com/haizhan/ime/core/theme/ThemeManagerTest.kt","ios_keyboard/APPSTORE_LISTING.md","ios_keyboard/HaizhanKeyboard/Info.plist","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboard.xcodeproj/project.pbxproj","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboard.xcodeproj/project.xcworkspace/contents.xcworkspacedata","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp.entitlements","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp.swift","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp/HaizhanKeyboardApp.entitlements","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp/HaizhanKeyboardApp.swift","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp/Info.plist","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp/Models/AppSession.swift","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp/Services/KeyboardStatusService.swift","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp/Services/ScreenshotResponder.swift","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp/Views/AccountView.swift","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp/Views/AppSettingsView.swift","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp/Views/ContentView.swift","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp/Views/LoginView.swift","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardApp/Views/OnboardingView.swift","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardExtension.entitlements","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardExtension/HaizhanKeyboardExtension.entitlements","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardExtension/Info.plist","ios_keyboard/HaizhanKeyboardApp/HaizhanKeyboardExtension/KeyboardExtensionStub.swift","ios_keyboard/HaizhanKeyboardApp/Info.plist","ios_keyboard/HaizhanKeyboardApp/Models/AppSession.swift","ios_keyboard/HaizhanKeyboardApp/README.md","ios_keyboard/HaizhanKeyboardApp/Services/KeyboardStatusService.swift","ios_keyboard/HaizhanKeyboardApp/Services/ScreenshotResponder.swift","ios_keyboard/HaizhanKeyboardApp/Views/AccountView.swift","ios_keyboard/HaizhanKeyboardApp/Views/AppSettingsView.swift","ios_keyboard/HaizhanKeyboardApp/Views/ContentView.swift","ios_keyboard/HaizhanKeyboardApp/Views/LoginView.swift","ios_keyboard/HaizhanKeyboardApp/Views/OnboardingView.swift","ios_keyboard/HaizhanKeyboardApp/project.yml","ios_keyboard/HaizhanKeyboardExtension/Info.plist","ios_keyboard/HaizhanKeyboardExtension/KeyboardExtensionStub.swift","ios_keyboard/Package.swift","ios_keyboard/README.md","ios_keyboard/Sources/HaizhanKeyboard/AI/ContactMatcher.swift","ios_keyboard/Sources/HaizhanKeyboard/AI/ReplyService.swift","ios_keyboard/Sources/HaizhanKeyboard/AI/ScreenshotManager.swift","ios_keyboard/Sources/HaizhanKeyboard/Bridge/KMPBridge.swift","ios_keyboard/Sources/HaizhanKeyboard/Engine/KeyboardEngine.swift","ios_keyboard/Sources/HaizhanKeyboard/Engine/PinyinSegmenter.swift","ios_keyboard/Sources/HaizhanKeyboard/KeyboardViewController.swift","ios_keyboard/Sources/HaizhanKeyboard/Network/ApiClient.swift","ios_keyboard/Sources/HaizhanKeyboard/Network/AuthService.swift","ios_keyboard/Sources/HaizhanKeyboard/Storage/AppGroupStore.swift","ios_keyboard/Sources/HaizhanKeyboard/Storage/KeychainStore.swift","ios_keyboard/Sources/HaizhanKeyboard/Theme/ThemeManager.swift","ios_keyboard/Sources/HaizhanKeyboard/Utils/HapticManager.swift","ios_keyboard/Sources/HaizhanKeyboard/ViewModel/KeyboardViewModel.swift","ios_keyboard/Sources/HaizhanKeyboard/Views/AIPanelView.swift","ios_keyboard/Sources/HaizhanKeyboard/Views/KeyboardView.swift","ios_keyboard/Sources/HaizhanKeyboard/Views/NineGridKeyboard.swift","ios_keyboard/Sources/HaizhanKeyboard/Views/SettingsView.swift","ios_keyboard/Tests/HaizhanKeyboardTests/ApiClientTests.swift","ios_keyboard/Tests/HaizhanKeyboardTests/AppGroupStoreTests.swift","ios_keyboard/Tests/HaizhanKeyboardTests/ContactMatcherTests.swift","ios_keyboard/Tests/HaizhanKeyboardTests/HapticManagerTests.swift","ios_keyboard/Tests/HaizhanKeyboardTests/KeyboardEngineTests.swift","ios_keyboard/Tests/HaizhanKeyboardTests/KeychainStoreTests.swift","ios_keyboard/Tests/HaizhanKeyboardTests/PinyinSegmenterTests.swift","ios_keyboard/Tests/HaizhanKeyboardTests/ReplyServiceTests.swift","ios_keyboard/Tests/HaizhanKeyboardTests/ThemeManagerTests.swift","ios_keyboard/build_kmp_xcframework.sh","openapitools.json","package.json","pnpm-workspace.yaml","scripts/PACKAGE_MANAGER_SUMMARY.md","scripts/check-docs-sync.sh","scripts/download_paddle_ocr_models.sh","scripts/generate-design-tokens.py","scripts/package-manager-migration.md","scripts/pre-commit","server/.dockerignore","server/.env.example","server/.npmrc","server/Makefile","server/README.md","server/ai-service/.dockerignore","server/ai-service/Dockerfile","server/ai-service/jest.config.js","server/ai-service/nest-cli.json","server/ai-service/package.json","server/ai-service/poc-load-test-1770067946237.json","server/ai-service/poc-report-1770067953461.json","server/ai-service/poc-report-1770067953461.md","server/ai-service/poc-report-1771647201192.json","server/ai-service/poc-report-1771647201192.md","server/ai-service/scripts/poc/README.md","server/ai-service/scripts/poc/deploy-models.sh","server/ai-service/scripts/poc/generate-report.ts","server/ai-service/scripts/poc/load-test.ts","server/ai-service/scripts/poc/v1-int8-quality.ts","server/ai-service/scripts/poc/v2-router-accuracy.ts","server/ai-service/scripts/poc/v3-e2e-latency.ts","server/ai-service/scripts/seed-rag.ts","server/ai-service/src/app.module.ts","server/ai-service/src/common/decorators/current-tenant.decorator.ts","server/ai-service/src/common/decorators/public.decorator.ts","server/ai-service/src/common/guards/auth.guard.spec.ts","server/ai-service/src/common/guards/auth.guard.ts","server/ai-service/src/common/redis/index.ts","server/ai-service/src/common/redis/redis.module.ts","server/ai-service/src/common/redis/redis.service.ts","server/ai-service/src/main.ts","server/ai-service/src/modules/ai/ai.controller.ts","server/ai-service/src/modules/ai/ai.module.ts","server/ai-service/src/modules/ai/ai.service.spec.ts","server/ai-service/src/modules/ai/ai.service.ts","server/ai-service/src/modules/ai/dto/generate-reply.dto.ts","server/ai-service/src/modules/ai/legacy-reply.controller.ts","server/ai-service/src/modules/health/health.controller.ts","server/ai-service/src/modules/health/health.module.ts","server/ai-service/src/modules/memory/dto/memory.dto.ts","server/ai-service/src/modules/memory/event.service.spec.ts","server/ai-service/src/modules/memory/event.service.ts","server/ai-service/src/modules/memory/index.ts","server/ai-service/src/modules/memory/memory.controller.ts","server/ai-service/src/modules/memory/memory.module.ts","server/ai-service/src/modules/memory/memory.service.spec.ts","server/ai-service/src/modules/memory/memory.service.ts","server/ai-service/src/modules/memory/profile.service.spec.ts","server/ai-service/src/modules/memory/profile.service.ts","server/ai-service/src/modules/memory/schemas/contact-event.schema.ts","server/ai-service/src/modules/memory/schemas/contact-profile.schema.ts","server/ai-service/src/modules/memory/schemas/conversation-summary.schema.ts","server/ai-service/src/modules/memory/summary.service.spec.ts","server/ai-service/src/modules/memory/summary.service.ts","server/ai-service/src/modules/memory/vector.service.ts","server/ai-service/src/modules/privacy/index.ts","server/ai-service/src/modules/privacy/pii-scrubber.service.ts","server/ai-service/src/modules/privacy/privacy.module.ts","server/ai-service/src/modules/search/agentic/agentic-loop.controller.ts","server/ai-service/src/modules/search/agentic/answer-synthesizer.service.ts","server/ai-service/src/modules/search/agentic/answer-synthesizer.spec.ts","server/ai-service/src/modules/search/agentic/index.ts","server/ai-service/src/modules/search/agentic/query-decomposer.service.ts","server/ai-service/src/modules/search/agentic/query-decomposer.spec.ts","server/ai-service/src/modules/search/agentic/result-evaluator.service.ts","server/ai-service/src/modules/search/agentic/result-evaluator.spec.ts","server/ai-service/src/modules/search/cache/index.ts","server/ai-service/src/modules/search/cache/multi-level-cache.service.ts","server/ai-service/src/modules/search/cache/multi-level-cache.spec.ts","server/ai-service/src/modules/search/config/search.config.ts","server/ai-service/src/modules/search/dto/index.ts","server/ai-service/src/modules/search/dto/search-request.dto.ts","server/ai-service/src/modules/search/dto/search-response.dto.ts","server/ai-service/src/modules/search/experiment/ab-testing.service.ts","server/ai-service/src/modules/search/experiment/experiment.controller.ts","server/ai-service/src/modules/search/experiment/gradual-release.service.ts","server/ai-service/src/modules/search/experiment/index.ts","server/ai-service/src/modules/search/gateway/unified-search-gateway.service.ts","server/ai-service/src/modules/search/gateway/unified-search-gateway.spec.ts","server/ai-service/src/modules/search/index.ts","server/ai-service/src/modules/search/layers/agentic-layer.service.spec.ts","server/ai-service/src/modules/search/layers/agentic-layer.service.ts","server/ai-service/src/modules/search/layers/cache-layer.service.spec.ts","server/ai-service/src/modules/search/layers/cache-layer.service.ts","server/ai-service/src/modules/search/layers/rag-layer.service.spec.ts","server/ai-service/src/modules/search/layers/rag-layer.service.ts","server/ai-service/src/modules/search/monitoring/alert.service.ts","server/ai-service/src/modules/search/monitoring/grafana-dashboard.json","server/ai-service/src/modules/search/monitoring/index.ts","server/ai-service/src/modules/search/monitoring/metrics.service.ts","server/ai-service/src/modules/search/optimization/index.ts","server/ai-service/src/modules/search/optimization/parallel-retriever.service.ts","server/ai-service/src/modules/search/optimization/parallel-retriever.spec.ts","server/ai-service/src/modules/search/router/pure-rule-router.spec.ts","server/ai-service/src/modules/search/router/pure-rule-router.ts","server/ai-service/src/modules/search/router/router.types.ts","server/ai-service/src/modules/search/search.controller.ts","server/ai-service/src/modules/search/search.integration.spec.ts","server/ai-service/src/modules/search/search.module.ts","server/ai-service/src/modules/search/services/elasticsearch.service.ts","server/ai-service/src/modules/search/services/embedding.service.spec.ts","server/ai-service/src/modules/search/services/embedding.service.ts","server/ai-service/src/modules/search/services/index.ts","server/ai-service/src/modules/search/services/llm.service.spec.ts","server/ai-service/src/modules/search/services/llm.service.ts","server/ai-service/src/modules/search/services/milvus.service.ts","server/ai-service/src/modules/search/services/reranker.service.spec.ts","server/ai-service/src/modules/search/services/reranker.service.ts","server/ai-service/src/modules/search/streaming/index.ts","server/ai-service/src/modules/search/streaming/stream-optimizer.service.ts","server/ai-service/src/modules/search/vip/index.ts","server/ai-service/src/modules/search/vip/vip-tier.service.ts","server/ai-service/tsconfig.json","server/api-gateway/.dockerignore","server/api-gateway/Dockerfile","server/api-gateway/logs/.3fa4d5e91883ce1217f62a49f94203b42caa131d-audit.json","server/api-gateway/logs/.92dabeadf9708ae538f84c8892e853b5a8f57f04-audit.json","server/api-gateway/nest-cli.json","server/api-gateway/package.json","server/api-gateway/prisma/README.md","server/api-gateway/prisma/migrations/20260203065715_init/migration.sql","server/api-gateway/prisma/migrations/20260203160000_add_360_view_models/migration.sql","server/api-gateway/prisma/migrations/20260203170000_add_admin_modules/migration.sql","server/api-gateway/prisma/migrations/20260203180000_add_config_and_usage_stats/migration.sql","server/api-gateway/prisma/migrations/20260213000000_add_contact_geo_fields/migration.sql","server/api-gateway/prisma/migrations/20260213100000_expand_prompt_template/migration.sql","server/api-gateway/prisma/migrations/migration_lock.toml","server/api-gateway/prisma/schema.prisma","server/api-gateway/prisma/seed.ts","server/api-gateway/scripts/generate-openapi.ts","server/api-gateway/src/app.module.ts","server/api-gateway/src/common/logger/global-logger.module.ts","server/api-gateway/src/common/logger/global-logger.service.ts","server/api-gateway/src/main.ts","server/api-gateway/src/modules/ai-config/ai-config.controller.ts","server/api-gateway/src/modules/ai-config/ai-config.module.ts","server/api-gateway/src/modules/ai-config/ai-config.service.ts","server/api-gateway/src/modules/ai-config/dto/ai-config.dto.ts","server/api-gateway/src/modules/ai/ai.controller.ts","server/api-gateway/src/modules/ai/ai.module.ts","server/api-gateway/src/modules/ai/ai.service.ts","server/api-gateway/src/modules/audit-logs/audit-logs.controller.ts","server/api-gateway/src/modules/audit-logs/audit-logs.module.ts","server/api-gateway/src/modules/audit-logs/audit-logs.service.ts","server/api-gateway/src/modules/audit-logs/dto/audit-logs.dto.ts","server/api-gateway/src/modules/auth/auth.controller.spec.ts","server/api-gateway/src/modules/auth/auth.controller.ts","server/api-gateway/src/modules/auth/auth.module.ts","server/api-gateway/src/modules/auth/auth.service.spec.ts","server/api-gateway/src/modules/auth/auth.service.ts","server/api-gateway/src/modules/auth/decorators/roles.decorator.ts","server/api-gateway/src/modules/auth/dto/admin-login.dto.ts","server/api-gateway/src/modules/auth/dto/login.dto.ts","server/api-gateway/src/modules/auth/dto/refresh-token.dto.ts","server/api-gateway/src/modules/auth/guards/jwt-auth.guard.ts","server/api-gateway/src/modules/auth/guards/roles.guard.ts","server/api-gateway/src/modules/auth/strategies/jwt.strategy.ts","server/api-gateway/src/modules/contacts/contacts.controller.spec.ts","server/api-gateway/src/modules/contacts/contacts.controller.ts","server/api-gateway/src/modules/contacts/contacts.module.ts","server/api-gateway/src/modules/contacts/contacts.service.spec.ts","server/api-gateway/src/modules/contacts/contacts.service.ts","server/api-gateway/src/modules/contacts/dto/match-contact.dto.ts","server/api-gateway/src/modules/health/health.controller.spec.ts","server/api-gateway/src/modules/health/health.controller.ts","server/api-gateway/src/modules/health/health.module.ts","server/api-gateway/src/modules/knowledge/dto/knowledge-base.dto.ts","server/api-gateway/src/modules/knowledge/dto/search-knowledge.dto.ts","server/api-gateway/src/modules/knowledge/knowledge.controller.spec.ts","server/api-gateway/src/modules/knowledge/knowledge.controller.ts","server/api-gateway/src/modules/knowledge/knowledge.module.ts","server/api-gateway/src/modules/knowledge/knowledge.service.spec.ts","server/api-gateway/src/modules/knowledge/knowledge.service.ts","server/api-gateway/src/modules/mobile-compat/mobile-compat.controller.ts","server/api-gateway/src/modules/mobile-compat/mobile-compat.module.ts","server/api-gateway/src/modules/ocr/ocr.controller.ts","server/api-gateway/src/modules/ocr/ocr.module.ts","server/api-gateway/src/modules/ocr/ocr.service.ts","server/api-gateway/src/modules/pinyin/pinyin.controller.spec.ts","server/api-gateway/src/modules/pinyin/pinyin.controller.ts","server/api-gateway/src/modules/pinyin/pinyin.module.ts","server/api-gateway/src/modules/pinyin/pinyin.service.spec.ts","server/api-gateway/src/modules/pinyin/pinyin.service.ts","server/api-gateway/src/modules/rag/dto/rag.dto.ts","server/api-gateway/src/modules/rag/rag.controller.spec.ts","server/api-gateway/src/modules/rag/rag.controller.ts","server/api-gateway/src/modules/rag/rag.module.ts","server/api-gateway/src/modules/rag/rag.service.runtime.spec.ts","server/api-gateway/src/modules/rag/rag.service.spec.ts","server/api-gateway/src/modules/rag/rag.service.ts","server/api-gateway/src/modules/settings/dto/settings.dto.ts","server/api-gateway/src/modules/settings/settings.controller.spec.ts","server/api-gateway/src/modules/settings/settings.controller.ts","server/api-gateway/src/modules/settings/settings.module.ts","server/api-gateway/src/modules/settings/settings.service.spec.ts","server/api-gateway/src/modules/settings/settings.service.ts","server/api-gateway/src/modules/teams/dto/teams.dto.ts","server/api-gateway/src/modules/teams/teams.controller.spec.ts","server/api-gateway/src/modules/teams/teams.controller.ts","server/api-gateway/src/modules/teams/teams.module.ts","server/api-gateway/src/modules/teams/teams.service.spec.ts","server/api-gateway/src/modules/teams/teams.service.ts","server/api-gateway/src/modules/templates/dto/template.dto.ts","server/api-gateway/src/modules/templates/templates.controller.spec.ts","server/api-gateway/src/modules/templates/templates.controller.ts","server/api-gateway/src/modules/templates/templates.module.ts","server/api-gateway/src/modules/templates/templates.service.spec.ts","server/api-gateway/src/modules/templates/templates.service.ts","server/api-gateway/src/modules/usage/dto/usage.dto.ts","server/api-gateway/src/modules/usage/usage.controller.ts","server/api-gateway/src/modules/usage/usage.module.ts","server/api-gateway/src/modules/usage/usage.service.spec.ts","server/api-gateway/src/modules/usage/usage.service.ts","server/api-gateway/src/modules/users/users.controller.spec.ts","server/api-gateway/src/modules/users/users.controller.ts","server/api-gateway/src/modules/users/users.module.ts","server/api-gateway/src/modules/users/users.service.spec.ts","server/api-gateway/src/modules/users/users.service.ts","server/api-gateway/src/modules/weather/weather.controller.spec.ts","server/api-gateway/src/modules/weather/weather.controller.ts","server/api-gateway/src/modules/weather/weather.module.ts","server/api-gateway/src/modules/weather/weather.service.spec.ts","server/api-gateway/src/modules/weather/weather.service.ts","server/api-gateway/src/shared/prisma/prisma.module.ts","server/api-gateway/src/shared/prisma/prisma.service.ts","server/api-gateway/src/shared/redis/redis.module.ts","server/api-gateway/src/shared/redis/redis.service.ts","server/api-gateway/src/shared/sms/sms.module.ts","server/api-gateway/src/shared/sms/sms.service.spec.ts","server/api-gateway/src/shared/sms/sms.service.ts","server/api-gateway/tsconfig.json","server/docker-compose.override.yml","server/docker-compose.prod.yml","server/docker-compose.yml","server/docker/grafana/provisioning/dashboards/dashboards.yml","server/docker/grafana/provisioning/dashboards/json/api-gateway.json","server/docker/grafana/provisioning/datasources/datasources.yml","server/docker/loki/loki-config.yml","server/docker/mongodb/init.js","server/docker/nginx/conf.d/default.conf","server/docker/nginx/nginx.conf","server/docker/nginx/ssl/.gitkeep","server/docker/nginx/ssl/README.md","server/docker/postgres/init.sql","server/docker/prometheus/alert.rules.yml","server/docker/prometheus/prometheus.yml","server/docker/promtail/promtail-config.yml","server/k8s/vllm/deployment.yaml","server/k8s/vllm/hpa.yaml","server/k8s/vllm/service.yaml","server/model-services/reranker/Dockerfile","server/model-services/reranker/requirements.txt","server/model-services/reranker/reranker_server.py","server/ocr-service/.dockerignore","server/ocr-service/Dockerfile","server/ocr-service/jest.config.js","server/ocr-service/nest-cli.json","server/ocr-service/package.json","server/ocr-service/src/app.module.ts","server/ocr-service/src/main.ts","server/ocr-service/src/modules/health/health.controller.ts","server/ocr-service/src/modules/health/health.module.ts","server/ocr-service/src/modules/ocr/chat-parser.service.spec.ts","server/ocr-service/src/modules/ocr/chat-parser.service.ts","server/ocr-service/src/modules/ocr/dto/chat-screenshot.dto.ts","server/ocr-service/src/modules/ocr/ocr.controller.ts","server/ocr-service/src/modules/ocr/ocr.module.ts","server/ocr-service/src/modules/ocr/ocr.service.spec.ts","server/ocr-service/src/modules/ocr/ocr.service.ts","server/ocr-service/tsconfig.json","server/scripts/backup.sh","server/scripts/check-mobile-api-coverage.js","server/scripts/check-mobile-response-compat.js","server/scripts/deploy.sh","server/scripts/deploy/deploy-infrastructure.sh","server/scripts/deploy/deploy-models.sh","server/scripts/deploy/final-deploy.sh","server/scripts/deploy/stop-models.sh","server/scripts/e2e-smoke.js","server/scripts/health-check.sh","server/scripts/mobile-api-smoke.js","server/scripts/setup-ssl.sh","settings.gradle.kts","shared/README.md","shared/build.gradle.kts","shared/src/androidInstrumentedTest/kotlin/com/haizhan/ime/shared/auth/AndroidTokenStorageTest.kt","shared/src/androidInstrumentedTest/kotlin/com/haizhan/ime/shared/auth/SharedAuthManagerIntegrationTest.kt","shared/src/androidInstrumentedTest/kotlin/com/haizhan/ime/shared/database/DatabaseIntegrationTest.kt","shared/src/androidInstrumentedTest/kotlin/com/haizhan/ime/shared/pinyin/CandidateRankerIntegrationTest.kt","shared/src/androidMain/kotlin/com/haizhan/ime/shared/BuildConfig.kt","shared/src/androidMain/kotlin/com/haizhan/ime/shared/Platform.android.kt","shared/src/androidMain/kotlin/com/haizhan/ime/shared/auth/AndroidTokenStorage.kt","shared/src/androidMain/kotlin/com/haizhan/ime/shared/auth/CurrentTime.android.kt","shared/src/androidMain/kotlin/com/haizhan/ime/shared/database/DatabaseDriverFactory.android.kt","shared/src/androidMain/kotlin/com/haizhan/ime/shared/database/SharedDatabaseKeyManager.kt","shared/src/androidMain/kotlin/com/haizhan/ime/shared/di/PlatformModule.android.kt","shared/src/androidMain/kotlin/com/haizhan/ime/shared/migration/RoomToSqlDelightMigrator.kt","shared/src/androidMain/kotlin/com/haizhan/ime/shared/platform/Connectivity.android.kt","shared/src/androidMain/kotlin/com/haizhan/ime/shared/platform/DeviceInfo.android.kt","shared/src/androidMain/kotlin/com/haizhan/ime/shared/platform/DictionaryLoader.android.kt","shared/src/androidMain/kotlin/com/haizhan/ime/shared/platform/FileSystem.android.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/Platform.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/analytics/AnalyticsTracker.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/ApiClient.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/AuthApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/ContactApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/DashboardApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/FeedbackApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/KnowledgeApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/MemoryApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/NoteApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/OcrApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/PinyinApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/RagSearchApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/ReplyApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/ScriptApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/SearchApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/SessionApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/SettingsApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/SubscriptionApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/UserApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/api/WeatherApi.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/auth/AuthManager.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/auth/AuthModels.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/database/DatabaseDriverFactory.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/database/DatabaseExtensions.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/di/SharedModule.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/matcher/NicknameMatcher.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/ContactModel.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/KnowledgeModel.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/AiDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/ApiResponse.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/AuthDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/ContactDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/DashboardDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/FeedbackDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/KnowledgeDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/MemoryDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/MessageDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/NoteDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/OcrDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/PinyinDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/ProfileDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/RagSearchDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/ReplyDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/ScriptDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/SearchDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/SessionDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/SettingsDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/SubscriptionDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/model/dto/WeatherDto.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/Candidate.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/CandidateRanker.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/DictEntry.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/NineGridMatcher.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/PinyinConstants.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/PinyinService.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/PinyinSplitter.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/algorithm/CloudSynergyEngine.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/algorithm/DoubleArrayTrie.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/algorithm/DoubleArrayTrieImpl.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/algorithm/DynamicWeightRanker.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/algorithm/PinyinDAG.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/pinyin/algorithm/ViterbiDecoder.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/platform/Connectivity.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/platform/DeviceInfo.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/platform/DictionaryLoader.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/platform/FileSystem.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/repository/ContactRepository.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/repository/KnowledgeRepository.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/repository/MessageRepository.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/repository/NoteRepository.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/repository/PinyinRepository.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/repository/SearchRepository.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/repository/SettingsRepository.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/repository/UserDictRepository.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/service/MessageChainMatcher.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/service/OcrMatchService.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/service/OfflineFallbackService.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/service/ReplyService.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/service/ScriptService.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/service/SessionService.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/sync/SyncManager.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/util/FlowExt.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/util/LevenshteinDistance.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/util/LruCache.kt","shared/src/commonMain/kotlin/com/haizhan/ime/shared/util/StringExt.kt","shared/src/commonMain/sqldelight/com/haizhan/ime/shared/database/Contact.sq","shared/src/commonMain/sqldelight/com/haizhan/ime/shared/database/Knowledge.sq","shared/src/commonMain/sqldelight/com/haizhan/ime/shared/database/Message.sq","shared/src/commonMain/sqldelight/com/haizhan/ime/shared/database/Note.sq","shared/src/commonMain/sqldelight/com/haizhan/ime/shared/database/Search.sq","shared/src/commonMain/sqldelight/com/haizhan/ime/shared/database/Settings.sq","shared/src/commonMain/sqldelight/com/haizhan/ime/shared/database/UserDict.sq","shared/src/commonMain/sqldelight/migrations/1.sqm","shared/src/commonTest/kotlin/com/haizhan/ime/shared/analytics/AnalyticsTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/api/ApiClientTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/auth/AuthModelsTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/matcher/NicknameMatcherTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/model/ContactModelTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/model/KnowledgeModelTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/network/NetworkClientTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/pinyin/CandidateRankerTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/pinyin/CandidateTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/pinyin/NineGridMatcherTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/pinyin/PinyinConstantsTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/pinyin/PinyinSplitterTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/pinyin/algorithm/CloudSynergyEngineTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/pinyin/algorithm/DoubleArrayTrieImplTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/pinyin/algorithm/DynamicWeightRankerTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/pinyin/algorithm/PinyinDAGTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/pinyin/algorithm/ViterbiDecoderTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/repository/ContactRepositoryTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/sync/SyncTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/util/LevenshteinDistanceTest.kt","shared/src/commonTest/kotlin/com/haizhan/ime/shared/util/PinyinConverterTest.kt","shared/src/iosMain/kotlin/com/haizhan/ime/shared/Platform.ios.kt","shared/src/iosMain/kotlin/com/haizhan/ime/shared/auth/CurrentTime.ios.kt","shared/src/iosMain/kotlin/com/haizhan/ime/shared/auth/IosTokenStorage.kt","shared/src/iosMain/kotlin/com/haizhan/ime/shared/database/DatabaseDriverFactory.ios.kt","shared/src/iosMain/kotlin/com/haizhan/ime/shared/di/PlatformModule.ios.kt","shared/src/iosMain/kotlin/com/haizhan/ime/shared/platform/Connectivity.ios.kt","shared/src/iosMain/kotlin/com/haizhan/ime/shared/platform/DeviceInfo.ios.kt","shared/src/iosMain/kotlin/com/haizhan/ime/shared/platform/DictionaryLoader.ios.kt","shared/src/iosMain/kotlin/com/haizhan/ime/shared/platform/FileSystem.ios.kt","voice/build.gradle.kts","voice/consumer-rules.pro","voice/proguard-rules.pro","voice/src/androidTest/java/com/haizhan/ime/voice/integration/VoiceModuleIntegrationTest.kt","voice/src/androidTest/java/com/haizhan/ime/voice/integration/WakeWordServiceIntegrationTest.kt","voice/src/main/AndroidManifest.xml","voice/src/main/java/com/haizhan/ime/voice/api/AudioPipeline.kt","voice/src/main/java/com/haizhan/ime/voice/api/SpeechRecognitionService.kt","voice/src/main/java/com/haizhan/ime/voice/api/VoiceCoordinator.kt","voice/src/main/java/com/haizhan/ime/voice/api/VoiceErrors.kt","voice/src/main/java/com/haizhan/ime/voice/api/VoiceTypes.kt","voice/src/main/java/com/haizhan/ime/voice/api/WakeWordConfigManager.kt","voice/src/main/java/com/haizhan/ime/voice/api/WakeWordDetectionService.kt","voice/src/main/java/com/haizhan/ime/voice/audio/AudioPipelineImpl.kt","voice/src/main/java/com/haizhan/ime/voice/audio/di/AudioModule.kt","voice/src/main/java/com/haizhan/ime/voice/coordinator/VoiceCoordinatorImpl.kt","voice/src/main/java/com/haizhan/ime/voice/coordinator/di/CoordinatorModule.kt","voice/src/main/java/com/haizhan/ime/voice/denoise/DenoiseAudioConsumer.kt","voice/src/main/java/com/haizhan/ime/voice/denoise/DenoiseManager.kt","voice/src/main/java/com/haizhan/ime/voice/denoise/MusicAwareAEC.kt","voice/src/main/java/com/haizhan/ime/voice/denoise/NoiseEstimator.kt","voice/src/main/java/com/haizhan/ime/voice/denoise/SpectralSubtractor.kt","voice/src/main/java/com/haizhan/ime/voice/denoise/VoiceActivityDetector.kt","voice/src/main/java/com/haizhan/ime/voice/denoise/di/DenoiseModule.kt","voice/src/main/java/com/haizhan/ime/voice/di/VoiceModule.kt","voice/src/main/java/com/haizhan/ime/voice/engine/VoiceInputEngine.kt","voice/src/main/java/com/haizhan/ime/voice/model/MultiModelManager.kt","voice/src/main/java/com/haizhan/ime/voice/model/VoiceModelManager.kt","voice/src/main/java/com/haizhan/ime/voice/monitoring/VoicePerformanceMonitor.kt","voice/src/main/java/com/haizhan/ime/voice/monitoring/di/MonitoringModule.kt","voice/src/main/java/com/haizhan/ime/voice/recognition/AudioDiagnostics.kt","voice/src/main/java/com/haizhan/ime/voice/recognition/SpeechRecognitionServiceImpl.kt","voice/src/main/java/com/haizhan/ime/voice/recognition/VoskGrammarBuilder.kt","voice/src/main/java/com/haizhan/ime/voice/recognition/VoskRecognizer.kt","voice/src/main/java/com/haizhan/ime/voice/recognition/di/SpeechModule.kt","voice/src/main/java/com/haizhan/ime/voice/ui/VoiceUiTypes.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/WakeWordDetectionServiceImpl.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/analytics/WakeWordAnalytics.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/config/WakeWordConfigManagerImpl.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/config/di/ConfigModule.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/confirmation/WakeWordConfirmation.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/detector/IWakeWordDetector.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/detector/VoskWakeWordDetector.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/di/ConfirmationModule.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/di/MatcherModule.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/di/ParserModule.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/di/RepositoryModule.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/di/WakeWordModule.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/filter/FalseWakeFilter.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/matcher/PinyinData.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/matcher/PinyinMatcher.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/matcher/TrieWordMatcher.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/parser/WakeWordCommandParser.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/predetect/EnergyPatternMatcher.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/predetect/PitchExtractor.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/predetect/QuickWakeDetector.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/predetect/SingingModeDetector.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/predetect/SpectralAnalyzer.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/predetect/SyllableDetector.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/predetect/VibratoDetector.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/predetect/VoiceCharacteristicAnalyzer.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/predetect/VoiceProfileAnalyzer.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/predetect/di/PredetectModule.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/repository/WakeWordRepository.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/sensitivity/AdaptiveSensitivity.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/service/WakeWordService.kt","voice/src/main/java/com/haizhan/ime/voice/wakeword/util/PinyinUtils.kt","voice/src/test/java/com/haizhan/ime/voice/api/HotwordConfigTest.kt","voice/src/test/java/com/haizhan/ime/voice/audio/AudioPipelineImplTest.kt","voice/src/test/java/com/haizhan/ime/voice/coordinator/VoiceCoordinatorImplTest.kt","voice/src/test/java/com/haizhan/ime/voice/denoise/DenoiseManagerTest.kt","voice/src/test/java/com/haizhan/ime/voice/denoise/MusicAwareAECTest.kt","voice/src/test/java/com/haizhan/ime/voice/denoise/SpectralSubtractorTest.kt","voice/src/test/java/com/haizhan/ime/voice/denoise/VoiceActivityDetectorTest.kt.bak","voice/src/test/java/com/haizhan/ime/voice/model/MultiModelManagerTest.kt","voice/src/test/java/com/haizhan/ime/voice/monitoring/VoicePerformanceMonitorTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/config/WakeWordConfigManagerTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/confirmation/WakeWordConfirmationTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/filter/FalseWakeFilterTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/matcher/PinyinDataTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/matcher/PinyinMatcherTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/matcher/TrieWordMatcherTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/parser/WakeWordCommandParserTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/predetect/QuickWakeDetectorTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/predetect/SingingModeDetectorTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/predetect/SyllableDetectorTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/predetect/VibratoDetectorTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/predetect/VoiceCharacteristicAnalyzerTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/predetect/VoiceProfileAnalyzerTest.kt","voice/src/test/java/com/haizhan/ime/voice/wakeword/repository/WakeWordRepositorySerializationTest.kt"],"removed":[],"modified":[]},"repository":{"id":9,"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":"haizhan-ime-android","full_name":"luoanwu/haizhan-ime-android","description":"嗨赞AI输入法 Android版","empty":false,"private":false,"fork":false,"template":false,"parent":null,"mirror":false,"size":29,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/haizhan-ime-android/languages","html_url":"https://gitea.g-hi.com/luoanwu/haizhan-ime-android","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/haizhan-ime-android","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/haizhan-ime-android.git","clone_url":"https://gitea.g-hi.com/luoanwu/haizhan-ime-android.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-27T15:27:17+08:00","updated_at":"2026-02-27T15:27:32+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"}}...
|
push
|
2
|
13
|
1772177727
|
1772178609
|
0
|
1772177363
|
1772178609
|
NULL
|
|
0
|
Edit
Delete
|
|
19096
|
Remove stale Claude worktree reference
|
6
|
5
|
e2e-tests.yml
|
19016
|
5
|
0
|
refs/pull/2/head
|
6845ebac54cb057c62116944a21c3a04b78708bf
|
0
|
0
|
0
|
pull_request_sync
|
{"action":"synchronized","numb {"action":"synchronized","number":2,"pull_request":{"id":8,"url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/pulls/2","number":2,"user":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"title":"Encode DB credentials in synced local env URLs","body":"## 模块治理摘要\r\n\r\n- 模块:\r\n- 战区:\r\n- lane:\r\n- 阶段:\r\n- 分类:`模块专项通过 / 工作区漂移 / 阻断`\r\n- 结论:\r\n- 战役卡:\r\n- 验收卡:\r\n- runner evidence bundle:\r\n\r\n## 验证命令\r\n\r\n| 命令 | 结果 | 备注 |\r\n| --- | --- | --- |\r\n| | | |\r\n| | | |\r\n| | | |\r\n\r\n## 审计命中\r\n\r\n- `audit:tenant`:\r\n- `audit:events`:\r\n- `audit:route-contract`:\r\n- `audit:docs-single-source`:\r\n- 如未跑全量,请说明原因:\r\n\r\n## 前端 / 页面验收\r\n\r\n- canonical 入口:\r\n- smoke / auth-scope:\r\n- alias / compat 回归:\r\n\r\n## 残余风险\r\n\r\n- 风险 1:\r\n- 风险 2:\r\n\r\n## 文档同步\r\n\r\n- [ ] `CLAUDE.md`\r\n- [ ] `AGENTS.md`\r\n- [ ] `README.md`\r\n- [ ] `GEMINI.md`\r\n- [ ] 治理经验库 / 专项记录\r\n\r\n## 口径确认\r\n\r\n- [ ] 本 PR 只宣称模块级通过,不把模块结果外推为工作区全绿\r\n- [ ] 若存在工作区漂移,已明确标记且未误记到当前模块\r\n- [ ] 若存在热修 lane,已与全域补证据 / build-out lane 隔离\r\n","labels":[],"milestone":null,"assignee":null,"assignees":[],"requested_reviewers":[],"requested_reviewers_teams":[],"state":"open","draft":false,"is_locked":false,"comments":3,"additions":304966,"deletions":48615,"changed_files":1212,"html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/pulls/2","diff_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/pulls/2.diff","patch_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/pulls/2.patch","mergeable":false,"merged":false,"merged_at":null,"merge_commit_sha":null,"merged_by":null,"allow_maintainer_edit":false,"base":{"label":"main","ref":"main","sha":"468c7319f39e251cdf8eb96c3aa63f4db200a7db","repo_id":6,"repo":{"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":5249824,"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":19,"open_issues_count":0,"open_pr_counter":3,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-05-01T09:01:48+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"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":[]}},"head":{"label":"codex/merge-all-20260429","ref":"codex/merge-all-20260429","sha":"6845ebac54cb057c62116944a21c3a04b78708bf","repo_id":6,"repo":{"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":5249824,"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":19,"open_issues_count":0,"open_pr_counter":3,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-05-01T09:01:48+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"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":[]}},"merge_base":"468c7319f39e251cdf8eb96c3aa63f4db200a7db","due_date":null,"created_at":"2026-04-30T10:21:35+08:00","updated_at":"2026-05-01T09:06:01+08:00","closed_at":null,"pin_order":0},"requested_reviewer":null,"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5249824,"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":19,"open_issues_count":0,"open_pr_counter":3,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-05-01T09:01:48+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"pull":false},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"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"},"commit_id":"","review":null}...
|
pull_request
|
2
|
20
|
1777597680
|
1777597711
|
0
|
1777597568
|
1777609395
|
|
|
0
|
Edit
Delete
|
|
19077
|
Remove stale governance and docs debt
|
6
|
5
|
e2e-tests.yml
|
18997
|
-2
|
345
|
refs/heads/main
|
468c7319f39e251cdf8eb96c3aa63f4db200a7db
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"3852c841f557d197a777c094ed1243a8198cdf8e","after":"468c7319f39e251cdf8eb96c3aa63f4db200a7db","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/3852c841f557d197a777c094ed1243a8198cdf8e...468c7319f39e251cdf8eb96c3aa63f4db200a7db","commits":[{"id":"468c7319f39e251cdf8eb96c3aa63f4db200a7db","message":"Remove stale governance and docs debt\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/468c7319f39e251cdf8eb96c3aa63f4db200a7db","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T19:49:07-07:00","added":["e2e/playwright-report/data/5ae763346122daad0a3742113eea87e5a620da28.png","e2e/playwright-report/data/ebfe7cb1f1e755beb2a535bff621e34d25c3c010.md","e2e/test-results/.last-run.json","e2e/test-results/full-menu-deep-actions/deep-action-report.json","e2e/test-results/full-menu-deep-actions/failure-1-工作台--.html","e2e/test-results/full-menu-deep-actions/failure-1-工作台--.png","e2e/test-results/full-menu-deep-actions/failure-2-AI Agent员工-AI-Agent-.html","e2e/test-results/full-menu-deep-actions/failure-2-AI Agent员工-AI-Agent-.png","e2e/test-results/full-menu-deep-actions/failure-3-AI Agent员工--.html","e2e/test-results/full-menu-deep-actions/failure-3-AI Agent员工--.png","e2e/test-results/full-menu-deep-actions/failure-4-AI Agent员工-IM-.html","e2e/test-results/full-menu-deep-actions/failure-4-AI Agent员工-IM-.png","e2e/test-results/full-menu-deep-actions/failure-5-获客中心--.html","e2e/test-results/full-menu-deep-actions/failure-5-获客中心--.png","e2e/test-results/full-menu-deep-actions/failure-6-内容\u0026社媒中心--.html","e2e/test-results/full-menu-deep-actions/failure-6-内容\u0026社媒中心--.png","e2e/test-results/full-menu-deep-actions/failure-7-内容\u0026社媒中心--.html","e2e/test-results/full-menu-deep-actions/failure-7-内容\u0026社媒中心--.png","e2e/test-results/full-menu-deep-actions/failure-8-系统\u0026基础设施--.html","e2e/test-results/full-menu-deep-actions/failure-8-系统\u0026基础设施--.png","e2e/test-results/navigation-full-menu-deep--67b30-当前可见模块-逐页执行查询-切换-新增-修改-删除交互-chromium/error-context.md","e2e/test-results/navigation-full-menu-deep--67b30-当前可见模块-逐页执行查询-切换-新增-修改-删除交互-chromium/test-failed-1.png","e2e/test-results/results.json"],"removed":["e2e/test-results/crud-01-visible-menu-write-25883-写操作回放-当前可见主菜单页-当前可见页面动作契约回放-chromium/error-context.md","e2e/test-results/crud-01-visible-menu-write-25883-写操作回放-当前可见主菜单页-当前可见页面动作契约回放-chromium/test-failed-1.png"],"modified":["AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/src/modules/ai-agent-skills/ai-agent-skills.service.test.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.ts","docs/governance/baseline-and-experience.md","e2e/.auth/admin.json","e2e/playwright-report/index.html","reports/outbox-atomicity-audit.latest.json"]}],"total_commits":0,"head_commit":{"id":"468c7319f39e251cdf8eb96c3aa63f4db200a7db","message":"Remove stale governance and docs debt\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/468c7319f39e251cdf8eb96c3aa63f4db200a7db","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T19:49:07-07:00","added":["e2e/playwright-report/data/5ae763346122daad0a3742113eea87e5a620da28.png","e2e/playwright-report/data/ebfe7cb1f1e755beb2a535bff621e34d25c3c010.md","e2e/test-results/.last-run.json","e2e/test-results/full-menu-deep-actions/deep-action-report.json","e2e/test-results/full-menu-deep-actions/failure-1-工作台--.html","e2e/test-results/full-menu-deep-actions/failure-1-工作台--.png","e2e/test-results/full-menu-deep-actions/failure-2-AI Agent员工-AI-Agent-.html","e2e/test-results/full-menu-deep-actions/failure-2-AI Agent员工-AI-Agent-.png","e2e/test-results/full-menu-deep-actions/failure-3-AI Agent员工--.html","e2e/test-results/full-menu-deep-actions/failure-3-AI Agent员工--.png","e2e/test-results/full-menu-deep-actions/failure-4-AI Agent员工-IM-.html","e2e/test-results/full-menu-deep-actions/failure-4-AI Agent员工-IM-.png","e2e/test-results/full-menu-deep-actions/failure-5-获客中心--.html","e2e/test-results/full-menu-deep-actions/failure-5-获客中心--.png","e2e/test-results/full-menu-deep-actions/failure-6-内容\u0026社媒中心--.html","e2e/test-results/full-menu-deep-actions/failure-6-内容\u0026社媒中心--.png","e2e/test-results/full-menu-deep-actions/failure-7-内容\u0026社媒中心--.html","e2e/test-results/full-menu-deep-actions/failure-7-内容\u0026社媒中心--.png","e2e/test-results/full-menu-deep-actions/failure-8-系统\u0026基础设施--.html","e2e/test-results/full-menu-deep-actions/failure-8-系统\u0026基础设施--.png","e2e/test-results/navigation-full-menu-deep--67b30-当前可见模块-逐页执行查询-切换-新增-修改-删除交互-chromium/error-context.md","e2e/test-results/navigation-full-menu-deep--67b30-当前可见模块-逐页执行查询-切换-新增-修改-删除交互-chromium/test-failed-1.png","e2e/test-results/results.json"],"removed":["e2e/test-results/crud-01-visible-menu-write-25883-写操作回放-当前可见主菜单页-当前可见页面动作契约回放-chromium/error-context.md","e2e/test-results/crud-01-visible-menu-write-25883-写操作回放-当前可见主菜单页-当前可见页面动作契约回放-chromium/test-failed-1.png"],"modified":["AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/src/modules/ai-agent-skills/ai-agent-skills.service.test.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.ts","docs/governance/baseline-and-experience.md","e2e/.auth/admin.json","e2e/playwright-report/index.html","reports/outbox-atomicity-audit.latest.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":5233766,"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":17,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-29T09:36:33+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
|
2
|
20
|
1777593642
|
1777593729
|
0
|
1777593640
|
1777593734
|
|
|
0
|
Edit
Delete
|
|
18898
|
Remove obsolete codepaths and cleanup docs
|
6
|
5
|
e2e-tests.yml
|
18818
|
5
|
0
|
refs/pull/2/head
|
00e6c41c98f5eca066cac8efd4dc9e91dfe5f583
|
0
|
0
|
0
|
pull_request_sync
|
{"action":"synchronized","numb {"action":"synchronized","number":2,"pull_request":{"id":8,"url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/pulls/2","number":2,"user":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"title":"Encode DB credentials in synced local env URLs","body":"## 模块治理摘要\r\n\r\n- 模块:\r\n- 战区:\r\n- lane:\r\n- 阶段:\r\n- 分类:`模块专项通过 / 工作区漂移 / 阻断`\r\n- 结论:\r\n- 战役卡:\r\n- 验收卡:\r\n- runner evidence bundle:\r\n\r\n## 验证命令\r\n\r\n| 命令 | 结果 | 备注 |\r\n| --- | --- | --- |\r\n| | | |\r\n| | | |\r\n| | | |\r\n\r\n## 审计命中\r\n\r\n- `audit:tenant`:\r\n- `audit:events`:\r\n- `audit:route-contract`:\r\n- `audit:docs-single-source`:\r\n- 如未跑全量,请说明原因:\r\n\r\n## 前端 / 页面验收\r\n\r\n- canonical 入口:\r\n- smoke / auth-scope:\r\n- alias / compat 回归:\r\n\r\n## 残余风险\r\n\r\n- 风险 1:\r\n- 风险 2:\r\n\r\n## 文档同步\r\n\r\n- [ ] `CLAUDE.md`\r\n- [ ] `AGENTS.md`\r\n- [ ] `README.md`\r\n- [ ] `GEMINI.md`\r\n- [ ] 治理经验库 / 专项记录\r\n\r\n## 口径确认\r\n\r\n- [ ] 本 PR 只宣称模块级通过,不把模块结果外推为工作区全绿\r\n- [ ] 若存在工作区漂移,已明确标记且未误记到当前模块\r\n- [ ] 若存在热修 lane,已与全域补证据 / build-out lane 隔离\r\n","labels":[],"milestone":null,"assignee":null,"assignees":[],"requested_reviewers":[],"requested_reviewers_teams":[],"state":"open","draft":false,"is_locked":false,"comments":1,"additions":304966,"deletions":48614,"changed_files":1211,"html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/pulls/2","diff_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/pulls/2.diff","patch_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/pulls/2.patch","mergeable":false,"merged":false,"merged_at":null,"merge_commit_sha":null,"merged_by":null,"allow_maintainer_edit":false,"base":{"label":"main","ref":"main","sha":"468c7319f39e251cdf8eb96c3aa63f4db200a7db","repo_id":6,"repo":{"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":5249820,"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":18,"open_issues_count":0,"open_pr_counter":2,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-30T10:20:16+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"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":[]}},"head":{"label":"codex/merge-all-20260429","ref":"codex/merge-all-20260429","sha":"00e6c41c98f5eca066cac8efd4dc9e91dfe5f583","repo_id":6,"repo":{"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":5249820,"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":18,"open_issues_count":0,"open_pr_counter":2,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-30T10:20:16+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"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":[]}},"merge_base":"468c7319f39e251cdf8eb96c3aa63f4db200a7db","due_date":null,"created_at":"2026-04-30T10:21:35+08:00","updated_at":"2026-04-30T14:47:31+08:00","closed_at":null,"pin_order":0},"requested_reviewer":null,"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5249820,"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":18,"open_issues_count":0,"open_pr_counter":2,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-30T10:20:16+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"pull":false},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"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"},"commit_id":"","review":null}...
|
pull_request
|
2
|
20
|
1777531837
|
1777531877
|
0
|
1777531655
|
1777536223
|
|
|
0
|
Edit
Delete
|
|
18852
|
chore: 提交合并后全量变更
|
6
|
5
|
e2e-tests.yml
|
18772
|
5
|
0
|
refs/pull/2/head
|
982b47544d9cefb513875cc84c6c36bf1ee27fb2
|
0
|
0
|
0
|
pull_request
|
{"action":"opened","number" {"action":"opened","number":2,"pull_request":{"id":8,"url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/pulls/2","number":2,"user":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"title":"Encode DB credentials in synced local env URLs","body":"## 模块治理摘要\r\n\r\n- 模块:\r\n- 战区:\r\n- lane:\r\n- 阶段:\r\n- 分类:`模块专项通过 / 工作区漂移 / 阻断`\r\n- 结论:\r\n- 战役卡:\r\n- 验收卡:\r\n- runner evidence bundle:\r\n\r\n## 验证命令\r\n\r\n| 命令 | 结果 | 备注 |\r\n| --- | --- | --- |\r\n| | | |\r\n| | | |\r\n| | | |\r\n\r\n## 审计命中\r\n\r\n- `audit:tenant`:\r\n- `audit:events`:\r\n- `audit:route-contract`:\r\n- `audit:docs-single-source`:\r\n- 如未跑全量,请说明原因:\r\n\r\n## 前端 / 页面验收\r\n\r\n- canonical 入口:\r\n- smoke / auth-scope:\r\n- alias / compat 回归:\r\n\r\n## 残余风险\r\n\r\n- 风险 1:\r\n- 风险 2:\r\n\r\n## 文档同步\r\n\r\n- [ ] `CLAUDE.md`\r\n- [ ] `AGENTS.md`\r\n- [ ] `README.md`\r\n- [ ] `GEMINI.md`\r\n- [ ] 治理经验库 / 专项记录\r\n\r\n## 口径确认\r\n\r\n- [ ] 本 PR 只宣称模块级通过,不把模块结果外推为工作区全绿\r\n- [ ] 若存在工作区漂移,已明确标记且未误记到当前模块\r\n- [ ] 若存在热修 lane,已与全域补证据 / build-out lane 隔离\r\n","labels":[],"milestone":null,"assignee":null,"assignees":[],"requested_reviewers":[],"requested_reviewers_teams":[],"state":"open","draft":false,"is_locked":false,"comments":0,"additions":96910,"deletions":136584,"changed_files":978,"html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/pulls/2","diff_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/pulls/2.diff","patch_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/pulls/2.patch","mergeable":true,"merged":false,"merged_at":null,"merge_commit_sha":null,"merged_by":null,"allow_maintainer_edit":false,"base":{"label":"main","ref":"main","sha":"468c7319f39e251cdf8eb96c3aa63f4db200a7db","repo_id":6,"repo":{"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":5245141,"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":18,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-30T10:20:16+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"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":[]}},"head":{"label":"codex/merge-all-20260429","ref":"codex/merge-all-20260429","sha":"982b47544d9cefb513875cc84c6c36bf1ee27fb2","repo_id":6,"repo":{"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":5245141,"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":18,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-30T10:20:16+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"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":[]}},"merge_base":"468c7319f39e251cdf8eb96c3aa63f4db200a7db","due_date":null,"created_at":"2026-04-30T10:21:35+08:00","updated_at":"2026-04-30T10:21:36+08:00","closed_at":null,"pin_order":0},"requested_reviewer":null,"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":5245141,"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":18,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-30T10:20:16+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"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"},"commit_id":"","review":null}...
|
pull_request
|
2
|
20
|
1777515882
|
1777515956
|
0
|
1777515698
|
1777516273
|
|
|
0
|
Edit
Delete
|
|
18822
|
Remove stale governance and docs debt
|
6
|
5
|
e2e-tests.yml
|
18742
|
-2
|
345
|
refs/heads/main
|
468c7319f39e251cdf8eb96c3aa63f4db200a7db
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"3852c841f557d197a777c094ed1243a8198cdf8e","after":"468c7319f39e251cdf8eb96c3aa63f4db200a7db","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/3852c841f557d197a777c094ed1243a8198cdf8e...468c7319f39e251cdf8eb96c3aa63f4db200a7db","commits":[{"id":"468c7319f39e251cdf8eb96c3aa63f4db200a7db","message":"Remove stale governance and docs debt\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/468c7319f39e251cdf8eb96c3aa63f4db200a7db","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T19:49:07-07:00","added":["e2e/playwright-report/data/5ae763346122daad0a3742113eea87e5a620da28.png","e2e/playwright-report/data/ebfe7cb1f1e755beb2a535bff621e34d25c3c010.md","e2e/test-results/.last-run.json","e2e/test-results/full-menu-deep-actions/deep-action-report.json","e2e/test-results/full-menu-deep-actions/failure-1-工作台--.html","e2e/test-results/full-menu-deep-actions/failure-1-工作台--.png","e2e/test-results/full-menu-deep-actions/failure-2-AI Agent员工-AI-Agent-.html","e2e/test-results/full-menu-deep-actions/failure-2-AI Agent员工-AI-Agent-.png","e2e/test-results/full-menu-deep-actions/failure-3-AI Agent员工--.html","e2e/test-results/full-menu-deep-actions/failure-3-AI Agent员工--.png","e2e/test-results/full-menu-deep-actions/failure-4-AI Agent员工-IM-.html","e2e/test-results/full-menu-deep-actions/failure-4-AI Agent员工-IM-.png","e2e/test-results/full-menu-deep-actions/failure-5-获客中心--.html","e2e/test-results/full-menu-deep-actions/failure-5-获客中心--.png","e2e/test-results/full-menu-deep-actions/failure-6-内容\u0026社媒中心--.html","e2e/test-results/full-menu-deep-actions/failure-6-内容\u0026社媒中心--.png","e2e/test-results/full-menu-deep-actions/failure-7-内容\u0026社媒中心--.html","e2e/test-results/full-menu-deep-actions/failure-7-内容\u0026社媒中心--.png","e2e/test-results/full-menu-deep-actions/failure-8-系统\u0026基础设施--.html","e2e/test-results/full-menu-deep-actions/failure-8-系统\u0026基础设施--.png","e2e/test-results/navigation-full-menu-deep--67b30-当前可见模块-逐页执行查询-切换-新增-修改-删除交互-chromium/error-context.md","e2e/test-results/navigation-full-menu-deep--67b30-当前可见模块-逐页执行查询-切换-新增-修改-删除交互-chromium/test-failed-1.png","e2e/test-results/results.json"],"removed":["e2e/test-results/crud-01-visible-menu-write-25883-写操作回放-当前可见主菜单页-当前可见页面动作契约回放-chromium/error-context.md","e2e/test-results/crud-01-visible-menu-write-25883-写操作回放-当前可见主菜单页-当前可见页面动作契约回放-chromium/test-failed-1.png"],"modified":["AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/src/modules/ai-agent-skills/ai-agent-skills.service.test.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.ts","docs/governance/baseline-and-experience.md","e2e/.auth/admin.json","e2e/playwright-report/index.html","reports/outbox-atomicity-audit.latest.json"]}],"total_commits":0,"head_commit":{"id":"468c7319f39e251cdf8eb96c3aa63f4db200a7db","message":"Remove stale governance and docs debt\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/468c7319f39e251cdf8eb96c3aa63f4db200a7db","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T19:49:07-07:00","added":["e2e/playwright-report/data/5ae763346122daad0a3742113eea87e5a620da28.png","e2e/playwright-report/data/ebfe7cb1f1e755beb2a535bff621e34d25c3c010.md","e2e/test-results/.last-run.json","e2e/test-results/full-menu-deep-actions/deep-action-report.json","e2e/test-results/full-menu-deep-actions/failure-1-工作台--.html","e2e/test-results/full-menu-deep-actions/failure-1-工作台--.png","e2e/test-results/full-menu-deep-actions/failure-2-AI Agent员工-AI-Agent-.html","e2e/test-results/full-menu-deep-actions/failure-2-AI Agent员工-AI-Agent-.png","e2e/test-results/full-menu-deep-actions/failure-3-AI Agent员工--.html","e2e/test-results/full-menu-deep-actions/failure-3-AI Agent员工--.png","e2e/test-results/full-menu-deep-actions/failure-4-AI Agent员工-IM-.html","e2e/test-results/full-menu-deep-actions/failure-4-AI Agent员工-IM-.png","e2e/test-results/full-menu-deep-actions/failure-5-获客中心--.html","e2e/test-results/full-menu-deep-actions/failure-5-获客中心--.png","e2e/test-results/full-menu-deep-actions/failure-6-内容\u0026社媒中心--.html","e2e/test-results/full-menu-deep-actions/failure-6-内容\u0026社媒中心--.png","e2e/test-results/full-menu-deep-actions/failure-7-内容\u0026社媒中心--.html","e2e/test-results/full-menu-deep-actions/failure-7-内容\u0026社媒中心--.png","e2e/test-results/full-menu-deep-actions/failure-8-系统\u0026基础设施--.html","e2e/test-results/full-menu-deep-actions/failure-8-系统\u0026基础设施--.png","e2e/test-results/navigation-full-menu-deep--67b30-当前可见模块-逐页执行查询-切换-新增-修改-删除交互-chromium/error-context.md","e2e/test-results/navigation-full-menu-deep--67b30-当前可见模块-逐页执行查询-切换-新增-修改-删除交互-chromium/test-failed-1.png","e2e/test-results/results.json"],"removed":["e2e/test-results/crud-01-visible-menu-write-25883-写操作回放-当前可见主菜单页-当前可见页面动作契约回放-chromium/error-context.md","e2e/test-results/crud-01-visible-menu-write-25883-写操作回放-当前可见主菜单页-当前可见页面动作契约回放-chromium/test-failed-1.png"],"modified":["AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/src/modules/ai-agent-skills/ai-agent-skills.service.test.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.ts","docs/governance/baseline-and-experience.md","e2e/.auth/admin.json","e2e/playwright-report/index.html","reports/outbox-atomicity-audit.latest.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":5233766,"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":17,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-29T09:36:33+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
|
2
|
20
|
1777507258
|
1777507348
|
0
|
1777507256
|
1777507353
|
|
|
0
|
Edit
Delete
|
|
18586
|
Remove stale governance and docs debt
|
6
|
5
|
e2e-tests.yml
|
18506
|
5
|
0
|
refs/heads/main
|
468c7319f39e251cdf8eb96c3aa63f4db200a7db
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"3852c841f557d197a777c094ed1243a8198cdf8e","after":"468c7319f39e251cdf8eb96c3aa63f4db200a7db","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/3852c841f557d197a777c094ed1243a8198cdf8e...468c7319f39e251cdf8eb96c3aa63f4db200a7db","commits":[{"id":"468c7319f39e251cdf8eb96c3aa63f4db200a7db","message":"Remove stale governance and docs debt\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/468c7319f39e251cdf8eb96c3aa63f4db200a7db","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T19:49:07-07:00","added":["e2e/playwright-report/data/5ae763346122daad0a3742113eea87e5a620da28.png","e2e/playwright-report/data/ebfe7cb1f1e755beb2a535bff621e34d25c3c010.md","e2e/test-results/.last-run.json","e2e/test-results/full-menu-deep-actions/deep-action-report.json","e2e/test-results/full-menu-deep-actions/failure-1-工作台--.html","e2e/test-results/full-menu-deep-actions/failure-1-工作台--.png","e2e/test-results/full-menu-deep-actions/failure-2-AI Agent员工-AI-Agent-.html","e2e/test-results/full-menu-deep-actions/failure-2-AI Agent员工-AI-Agent-.png","e2e/test-results/full-menu-deep-actions/failure-3-AI Agent员工--.html","e2e/test-results/full-menu-deep-actions/failure-3-AI Agent员工--.png","e2e/test-results/full-menu-deep-actions/failure-4-AI Agent员工-IM-.html","e2e/test-results/full-menu-deep-actions/failure-4-AI Agent员工-IM-.png","e2e/test-results/full-menu-deep-actions/failure-5-获客中心--.html","e2e/test-results/full-menu-deep-actions/failure-5-获客中心--.png","e2e/test-results/full-menu-deep-actions/failure-6-内容\u0026社媒中心--.html","e2e/test-results/full-menu-deep-actions/failure-6-内容\u0026社媒中心--.png","e2e/test-results/full-menu-deep-actions/failure-7-内容\u0026社媒中心--.html","e2e/test-results/full-menu-deep-actions/failure-7-内容\u0026社媒中心--.png","e2e/test-results/full-menu-deep-actions/failure-8-系统\u0026基础设施--.html","e2e/test-results/full-menu-deep-actions/failure-8-系统\u0026基础设施--.png","e2e/test-results/navigation-full-menu-deep--67b30-当前可见模块-逐页执行查询-切换-新增-修改-删除交互-chromium/error-context.md","e2e/test-results/navigation-full-menu-deep--67b30-当前可见模块-逐页执行查询-切换-新增-修改-删除交互-chromium/test-failed-1.png","e2e/test-results/results.json"],"removed":["e2e/test-results/crud-01-visible-menu-write-25883-写操作回放-当前可见主菜单页-当前可见页面动作契约回放-chromium/error-context.md","e2e/test-results/crud-01-visible-menu-write-25883-写操作回放-当前可见主菜单页-当前可见页面动作契约回放-chromium/test-failed-1.png"],"modified":["AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/src/modules/ai-agent-skills/ai-agent-skills.service.test.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.ts","docs/governance/baseline-and-experience.md","e2e/.auth/admin.json","e2e/playwright-report/index.html","reports/outbox-atomicity-audit.latest.json"]}],"total_commits":0,"head_commit":{"id":"468c7319f39e251cdf8eb96c3aa63f4db200a7db","message":"Remove stale governance and docs debt\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/468c7319f39e251cdf8eb96c3aa63f4db200a7db","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T19:49:07-07:00","added":["e2e/playwright-report/data/5ae763346122daad0a3742113eea87e5a620da28.png","e2e/playwright-report/data/ebfe7cb1f1e755beb2a535bff621e34d25c3c010.md","e2e/test-results/.last-run.json","e2e/test-results/full-menu-deep-actions/deep-action-report.json","e2e/test-results/full-menu-deep-actions/failure-1-工作台--.html","e2e/test-results/full-menu-deep-actions/failure-1-工作台--.png","e2e/test-results/full-menu-deep-actions/failure-2-AI Agent员工-AI-Agent-.html","e2e/test-results/full-menu-deep-actions/failure-2-AI Agent员工-AI-Agent-.png","e2e/test-results/full-menu-deep-actions/failure-3-AI Agent员工--.html","e2e/test-results/full-menu-deep-actions/failure-3-AI Agent员工--.png","e2e/test-results/full-menu-deep-actions/failure-4-AI Agent员工-IM-.html","e2e/test-results/full-menu-deep-actions/failure-4-AI Agent员工-IM-.png","e2e/test-results/full-menu-deep-actions/failure-5-获客中心--.html","e2e/test-results/full-menu-deep-actions/failure-5-获客中心--.png","e2e/test-results/full-menu-deep-actions/failure-6-内容\u0026社媒中心--.html","e2e/test-results/full-menu-deep-actions/failure-6-内容\u0026社媒中心--.png","e2e/test-results/full-menu-deep-actions/failure-7-内容\u0026社媒中心--.html","e2e/test-results/full-menu-deep-actions/failure-7-内容\u0026社媒中心--.png","e2e/test-results/full-menu-deep-actions/failure-8-系统\u0026基础设施--.html","e2e/test-results/full-menu-deep-actions/failure-8-系统\u0026基础设施--.png","e2e/test-results/navigation-full-menu-deep--67b30-当前可见模块-逐页执行查询-切换-新增-修改-删除交互-chromium/error-context.md","e2e/test-results/navigation-full-menu-deep--67b30-当前可见模块-逐页执行查询-切换-新增-修改-删除交互-chromium/test-failed-1.png","e2e/test-results/results.json"],"removed":["e2e/test-results/crud-01-visible-menu-write-25883-写操作回放-当前可见主菜单页-当前可见页面动作契约回放-chromium/error-context.md","e2e/test-results/crud-01-visible-menu-write-25883-写操作回放-当前可见主菜单页-当前可见页面动作契约回放-chromium/test-failed-1.png"],"modified":["AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/src/modules/ai-agent-skills/ai-agent-skills.service.test.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.ts","docs/governance/baseline-and-experience.md","e2e/.auth/admin.json","e2e/playwright-report/index.html","reports/outbox-atomicity-audit.latest.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":5233766,"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":17,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-29T09:36:33+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
|
1777431074
|
1777431265
|
0
|
1777430951
|
1777432343
|
|
|
0
|
Edit
Delete
|
|
18562
|
Allow git merge in Claude settings
|
6
|
5
|
e2e-tests.yml
|
18482
|
5
|
0
|
refs/heads/main
|
3852c841f557d197a777c094ed1243a8198cdf8e
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"106c45ddee8406e0190ccbba4c3dcf6703cc6117","after":"3852c841f557d197a777c094ed1243a8198cdf8e","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/106c45ddee8406e0190ccbba4c3dcf6703cc6117...3852c841f557d197a777c094ed1243a8198cdf8e","commits":[{"id":"3852c841f557d197a777c094ed1243a8198cdf8e","message":"Allow git merge in Claude settings\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/3852c841f557d197a777c094ed1243a8198cdf8e","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T18:36:26-07:00","added":[],"removed":[],"modified":[".claude/settings.json"]},{"id":"d2338c76ded8ede28829e066e9801cffd24cd7fd","message":"Merge branch 'codex-ai-assist-action-packs'\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/d2338c76ded8ede28829e066e9801cffd24cd7fd","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T18:36:01-07:00","added":["backend/prisma/migrations/20260428060000_drift_recovery_p0a_rls_phase2/migration.sql","backend/prisma/migrations/20260428060100_drift_recovery_p0b_missing_tables/migration.sql","backend/prisma/migrations/20260428060200_drift_recovery_p1_add_columns/migration.sql","backend/prisma/migrations/20260428060500_drift_recovery_p3c_enum_alignment/migration.sql","backend/prisma/migrations/20260428070000_add_lead_pool_auto_dispatch_strategy/migration.sql","backend/prisma/migrations/20260428080000_tighten_currency_varchar/migration.sql","backend/prisma/migrations/20260428090000_tighten_varchar_phase3/migration.sql","backend/prisma/migrations/20260429100000_add_member_benefits_baseline/migration.sql","backend/prisma/migrations/20260429100100_add_member_levels_baseline/migration.sql","backend/prisma/migrations/20260429100200_add_member_points_baseline/migration.sql","backend/prisma/migrations/20260429100300_add_members_baseline/migration.sql","backend/prisma/migrations/20260429100400_add_customer_segments_baseline/migration.sql","backend/prisma/migrations/20260429100500_add_ad_analytics_records_baseline/migration.sql","backend/prisma/migrations/20260429100600_add_attribution_reports_baseline/migration.sql","backend/prisma/migrations/20260429100700_add_notification_configs_baseline/migration.sql","backend/prisma/migrations/20260429100800_add_qr_codes_baseline/migration.sql","backend/prisma/migrations/20260429100900_add_utm_tracking_records_baseline/migration.sql","backend/prisma/migrations/20260429101000_add_video_analytics_records_baseline/migration.sql","backend/prisma/migrations/20260429101100_add_video_content_baseline/migration.sql","backend/prisma/migrations/20260429101200_add_video_publishing_records_baseline/migration.sql","backend/prisma/migrations/20260429101300_add_channel_integrations_baseline/migration.sql","backend/prisma/migrations/20260429101400_add_abm_campaigns_baseline/migration.sql","backend/prisma/migrations/20260429101500_add_groupbuy_pricing_rules_baseline/migration.sql","backend/prisma/migrations/20260429101600_add_groupbuy_time_pricing_baseline/migration.sql","backend/prisma/migrations/20260429101700_add_groupbuy_volume_pricing_baseline/migration.sql","backend/prisma/migrations/20260429101800_add_groupbuy_tier_pricing_baseline/migration.sql","backend/prisma/migrations/20260429101900_add_groupbuy_demand_pricing_baseline/migration.sql","backend/prisma/migrations/20260429102000_add_groupbuy_bundles_baseline/migration.sql","backend/prisma/migrations/20260429102100_add_groupbuy_bundle_products_baseline/migration.sql","backend/prisma/migrations/20260429102200_add_local_events_baseline/migration.sql","backend/prisma/migrations/20260429102300_add_local_promotions_baseline/migration.sql","backend/prisma/migrations/20260429102400_add_state_machine_definitions_baseline/migration.sql","backend/prisma/migrations/20260429102500_add_custom_field_definitions_baseline/migration.sql","backend/prisma/migrations/20260429102600_add_workflow_designs_baseline/migration.sql","backend/prisma/migrations_pending_review/README.md","backend/src/modules/abm-marketing/abm-marketing.module-contract.test.ts","backend/src/modules/ad-analytics/ad-analytics.module-contract.test.ts","backend/src/modules/ai-assist/page-action-executor.ts","backend/src/modules/attribution-models/attribution-models.module-contract.test.ts","backend/src/modules/attribution-reports/attribution-reports.module-contract.test.ts","backend/src/modules/channel-integrations/channel-integrations.module-contract.test.ts","backend/src/modules/customer-segmentation/customer-segmentation.module-contract.test.ts","backend/src/modules/lead-assignment/lead-assignment.module-contract.test.ts","backend/src/modules/lead-scoring/lead-scoring.module-contract.test.ts","backend/src/modules/local-events/local-events.module-contract.test.ts","backend/src/modules/local-promotion/local-promotion.module-contract.test.ts","backend/src/modules/member-benefits/member-benefits.module-contract.test.ts","backend/src/modules/member-levels/member-levels.module-contract.test.ts","backend/src/modules/member-points/member-points.module-contract.test.ts","backend/src/modules/members/members.module-contract.test.ts","backend/src/modules/notification-configs/notification-configs.module-contract.test.ts","backend/src/modules/product-categories/product-categories.module-contract.test.ts","backend/src/modules/qr-codes/qr-codes.module-contract.test.ts","backend/src/modules/social-matrix/social-matrix.module-contract.test.ts","backend/src/modules/store-configs/store-configs.module-contract.test.ts","backend/src/modules/supplier-center/supplier-center.module-contract.test.ts","backend/src/modules/utm-tracking/utm-tracking.module-contract.test.ts","backend/src/modules/video-analytics/video-analytics.module-contract.test.ts","backend/src/modules/video-content/video-content.module-contract.test.ts","backend/src/modules/video-publishing/video-publishing.module-contract.test.ts","backend/src/modules/workflow-designer/workflow-designer.module-contract.test.ts","docs/governance/archive/p3_type_constraints_retired_2026-04-29/RETIRED.md","docs/governance/archive/p3_type_constraints_retired_2026-04-29/migration.sql","docs/governance/formrules-zod-product-decisions-2026-04-29.md","e2e/output/autopilot/ai_test_1777424021381/prepare-ok.json","e2e/output/autopilot/ai_test_1777424021381/result.json","e2e/output/autopilot/ai_test_1777424022537/result.json","e2e/output/autopilot/ai_test_1777424042064/prepare-ok.json","e2e/output/autopilot/ai_test_1777424042064/result.json","e2e/output/autopilot/ai_test_1777424274236/prepare-ok.json","e2e/output/autopilot/ai_test_1777424274236/result.json","e2e/output/autopilot/ai_test_1777424275358/result.json","e2e/output/autopilot/ai_test_1777424445747/prepare-ok.json","e2e/output/autopilot/ai_test_1777424445747/result.json","e2e/output/autopilot/ai_test_1777424648560/prepare-ok.json","e2e/output/autopilot/ai_test_1777424648560/result.json","e2e/test-results/crud-01-visible-menu-write-25883-写操作回放-当前可见主菜单页-当前可见页面动作契约回放-chromium/error-context.md","e2e/test-results/crud-01-visible-menu-write-25883-写操作回放-当前可见主菜单页-当前可见页面动作契约回放-chromium/test-failed-1.png","e2e/tests/auth/ai-assist-smoke.spec.ts","reports/ai-assist-context-provider-redact.latest.json","reports/migration-drift-diff.latest.sql","reports/migration-drift-summary.latest.json","reports/prisma-zod-contract-audit.2026-04-28.json","reports/prisma-zod-contract-audit.2026-04-28.md","reports/prisma-zod-contract-audit.2026-04-29.json","reports/prisma-zod-contract-audit.2026-04-29.md","scripts/ci-migration-deploy-gate.sh","scripts/sync-prisma-schema-mirror.ts"],"removed":["e2e/test-results/.last-run.json","e2e/test-results/results.json"],"modified":[".claude/settings.json",".env.example",".github/workflows/ci.yml",".github/workflows/migration-safety.yml","AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/package.json","backend/prisma/schema.prisma","backend/prisma/schema/community.prisma","backend/prisma/schema/contracts.prisma","backend/prisma/schema/cpq.prisma","backend/prisma/schema/finance.prisma","backend/prisma/schema/leads.prisma","backend/prisma/schema/orders.prisma","backend/prisma/schema/service.prisma","backend/prisma/schema/stores.prisma","backend/prisma/schema/supply-chain.prisma","backend/prisma/schema/system.prisma","backend/scripts/audit-prisma-zod-contract.ts","backend/src/modules/admin-settings/admin-settings.schema.ts","backend/src/modules/ai-agent-skills/skill-execution-engine.service.ts","backend/src/modules/ai-agents/ai-autopilot-ai-test.service.ts","backend/src/modules/ai-agents/ai-autopilot.service.ts","backend/src/modules/ai-assist/ai-assist.docs.ts","backend/src/modules/ai-assist/ai-assist.schema.ts","backend/src/modules/ai-assist/ai-assist.service.ts","backend/src/modules/ai-assist/context-providers/finance-aggregate.ts","backend/src/modules/ai-assist/context-providers/lead.ts","backend/src/modules/ai-assist/context-providers/social-hot-topic.ts","backend/src/modules/ai-assist/context-providers/ticket.ts","backend/src/modules/ai-assist/page-capability.test.ts","backend/src/modules/ai-assist/page-capability.ts","backend/src/modules/ai-assist/skills/registry.ts","backend/src/modules/ai-review-queue/ai-review-queue.service.ts","backend/src/modules/alliance-agreements/alliance-agreement.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/campaign-use-case-templates/use-case-template.schema.ts","backend/src/modules/contract-templates/contract-template.schema.ts","backend/src/modules/groupbuy-platforms/groupbuy-platform.schema.ts","backend/src/modules/landing-pages/landing-page.schema.ts","backend/src/modules/lead-pools/lead-pools.docs.ts","backend/src/modules/lead-pools/lead-pools.mapper.ts","backend/src/modules/lead-pools/lead-pools.schema.ts","backend/src/modules/lead-pools/lead-pools.service.ts","backend/src/modules/meddpicc-analyses/meddpicc.schema.ts","backend/src/modules/quotes/quote.schema.ts","backend/src/modules/renewal-tasks/renewal-task.schema.ts","backend/src/modules/roles/role.schema.ts","backend/src/modules/sample-requests/sample-request.schema.ts","backend/src/modules/store-configs/store-configs.schema.ts","backend/src/modules/tenant-configs/tenant-config.schema.ts","backend/src/shared/constants/statuses.ts","backend/tests/api/ai-assist.test.ts","backend/tests/api/ai-review-queue.test.ts","docs/governance/baseline-and-experience.md","docs/reports/view-audit-domains/a1-acquisition-center-2026-04-28.md","docs/reports/view-audit-domains/a3-ai-knowledge-2026-04-28.md","docs/reports/view-audit-domains/a4-store-groupbuy-alliance-2026-04-28.md","docs/reports/view-audit-domains/a5-admin-center-2026-04-28.md","docs/reports/view-audit-domains/a6-synergy-hr-2026-04-28.md","docs/reports/view-audit-domains/a7-analytics-marketing-2026-04-28.md","docs/reports/view-audit-domains/a8-system-center-2026-04-28.md","docs/reports/view-audit-domains/a9-service-sales-fulfillment-2026-04-28.md","docs/reports/view-audit-full-matrix-2026-04-28.md","e2e/.auth/admin.json","e2e/playwright-report/index.html","frontend/.env.development","frontend/.env.example","frontend/package.json","frontend/src/api/modules/ai-assist.ts","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-campaigns.ts","frontend/src/api/modules/campaign-targets.ts","frontend/src/api/modules/events.ts","frontend/src/api/modules/lead-pools.ts","frontend/src/components/business/PageAIAssistDrawer.vue","frontend/src/composables/usePageAIAssist.ts","frontend/src/router/types.ts","frontend/src/services/eventBus.ts","frontend/src/views/abm-marketing/Index.vue","frontend/src/views/abm-marketing/__tests__/abm-marketing.smoke.test.ts","frontend/src/views/ai-agents/review-queue/Index.vue","frontend/src/views/alliance-agreements/Form.vue","frontend/src/views/campaign-use-case-templates/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/customer-journey-orchestration/Index.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/lead-pools/Form.vue","frontend/src/views/lead-pools/Index.vue","frontend/src/views/sample-requests/Form.vue","frontend/src/views/social-posts/Detail.vue","frontend/src/views/store-configs/Form.vue","frontend/src/views/supplier-management/StoreSuppliers.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/suppliers/Form.vue","frontend/src/views/targets/Detail.vue","mobile/.env.development","output/playwright/full-menu-write-batches/ai-acquisition-content/batch-state.json","output/playwright/full-menu-write-batches/batch-summary.json","output/playwright/full-menu-write-batches/batch-summary.md","output/playwright/full-menu-write-batches/center-summary.json","output/playwright/full-menu-write-batches/center-summary.md","output/playwright/full-menu-write-batches/finance/batch-state.json","output/playwright/full-menu-write-batches/growth-sales-stores-service/batch-state.json","output/playwright/full-menu-write-batches/hr/batch-state.json","output/playwright/full-menu-write-batches/preflight.json","output/playwright/full-menu-write-batches/supply-chain/batch-state.json","output/playwright/full-menu-write-batches/synergy/batch-state.json","output/playwright/full-menu-write-batches/system-infra/batch-state.json","package.json","reports/ai-assist-context-providers.latest.json","reports/ai-assist-coverage.latest.json","reports/ai-assist-skill-binding.latest.json","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/api-test-coverage.latest.json","reports/api-test-coverage.latest.md","reports/approval-governance.latest.json","reports/approval-governance.latest.md","reports/docs-single-source-audit.latest.json","reports/docs-single-source-audit.latest.md","reports/enum-consistency-audit.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/harness-dashboard.latest.json","reports/list-page-routes-audit.latest.json","reports/menu-inventory-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/module-grades.latest.json","reports/module-placeholder-audit.latest.json","reports/module-placeholder-audit.latest.md","reports/outbox-atomicity-audit.latest.json","reports/prisma-zod-contract-audit.latest.json","reports/prisma-zod-contract-audit.latest.md","reports/project-census.baseline.json","reports/project-census.latest.json","reports/response-columns-audit.latest.json","reports/route-registration-audit.latest.json","reports/route-registration-audit.latest.md","reports/state-machine-integration-audit.latest.json","reports/state-machine-integration-audit.latest.md","reports/type-debt-audit.latest.json","reports/view-module-audit.latest.json","scripts/audit-context-provider-redact.ts","scripts/audit-enum-consistency.ts","scripts/audit-formrules-zod.ts","scripts/audit-response-columns.ts","scripts/ci-migration-check.sh","scripts/harness/audit-registry.ts","scripts/sync-local-env.sh"]},{"id":"bbf1f85eb2b823f39875ae6131d7f0986cd4d49f","message":"Align Prisma truth source and document formrules decisions\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/bbf1f85eb2b823f39875ae6131d7f0986cd4d49f","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T18:35:35-07:00","added":["e2e/output/autopilot/ai_test_1777424021381/prepare-ok.json","e2e/output/autopilot/ai_test_1777424021381/result.json","e2e/output/autopilot/ai_test_1777424022537/result.json","e2e/output/autopilot/ai_test_1777424042064/prepare-ok.json","e2e/output/autopilot/ai_test_1777424042064/result.json","e2e/output/autopilot/ai_test_1777424274236/prepare-ok.json","e2e/output/autopilot/ai_test_1777424274236/result.json","e2e/output/autopilot/ai_test_1777424275358/result.json","e2e/output/autopilot/ai_test_1777424445747/prepare-ok.json","e2e/output/autopilot/ai_test_1777424445747/result.json","e2e/output/autopilot/ai_test_1777424648560/prepare-ok.json","e2e/output/autopilot/ai_test_1777424648560/result.json","e2e/test-results/crud-01-visible-menu-write-25883-写操作回放-当前可见主菜单页-当前可见页面动作契约回放-chromium/error-context.md","e2e/test-results/crud-01-visible-menu-write-25883-写操作回放-当前可见主菜单页-当前可见页面动作契约回放-chromium/test-failed-1.png"],"removed":["e2e/test-results/.last-run.json","e2e/test-results/results.json"],"modified":["e2e/playwright-report/index.html"]},{"id":"ede22d5f7acd681ea5ae1a18518c4126d2f8866b","message":"chore: governance收口 + 27张缺失表迁移 + enum对齐 + 内存上限提升\n\n- prisma-zod-contract / formrules-zod / enum-consistency 三项审计清零(HIGH=0)\n- tighten_varchar_phase3 补视图/policy 守卫后落档主目录;p3_type_constraints 退休归档\n- 新增 27 张 schema/ 真源已声明但 migration 缺失的建表迁移(member/groupbuy/analytics/system 四类)\n- statuses.ts 新增 BUSINESS_PRIORITY_LEVELS / APPROVAL_PRIORITY_LEVELS 双 canonical\n- 前端 enum label 反向对齐 backend canonical(supplier/target/social-post 共 5 处)\n- ai-autopilot 事务收口:写操作在 tx 内,read-back 在 tx 外;ai-test 同款修法\n- audit-enum-consistency / audit-formrules-zod 噪音降级(INFO 65→40 / backend-only 移到 coverage)\n- ci.yml harness report --save 确保 artifact 落盘;migration-safety.yml 同步收口\n- frontend Node 内存上限 12288→16384 MB(type-check / build / build:deploy 三条脚本)\n- docs/governance 更新迁移验收口径、schema 双源债、p3 退休理由\n\nCo-Authored-By: Claude Sonnet 4.6 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/ede22d5f7acd681ea5ae1a18518c4126d2f8866b","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T18:34:57-07:00","added":["backend/prisma/migrations/20260428090000_tighten_varchar_phase3/migration.sql","backend/prisma/migrations/20260429100000_add_member_benefits_baseline/migration.sql","backend/prisma/migrations/20260429100100_add_member_levels_baseline/migration.sql","backend/prisma/migrations/20260429100200_add_member_points_baseline/migration.sql","backend/prisma/migrations/20260429100300_add_members_baseline/migration.sql","backend/prisma/migrations/20260429100400_add_customer_segments_baseline/migration.sql","backend/prisma/migrations/20260429100500_add_ad_analytics_records_baseline/migration.sql","backend/prisma/migrations/20260429100600_add_attribution_reports_baseline/migration.sql","backend/prisma/migrations/20260429100700_add_notification_configs_baseline/migration.sql","backend/prisma/migrations/20260429100800_add_qr_codes_baseline/migration.sql","backend/prisma/migrations/20260429100900_add_utm_tracking_records_baseline/migration.sql","backend/prisma/migrations/20260429101000_add_video_analytics_records_baseline/migration.sql","backend/prisma/migrations/20260429101100_add_video_content_baseline/migration.sql","backend/prisma/migrations/20260429101200_add_video_publishing_records_baseline/migration.sql","backend/prisma/migrations/20260429101300_add_channel_integrations_baseline/migration.sql","backend/prisma/migrations/20260429101400_add_abm_campaigns_baseline/migration.sql","backend/prisma/migrations/20260429101500_add_groupbuy_pricing_rules_baseline/migration.sql","backend/prisma/migrations/20260429101600_add_groupbuy_time_pricing_baseline/migration.sql","backend/prisma/migrations/20260429101700_add_groupbuy_volume_pricing_baseline/migration.sql","backend/prisma/migrations/20260429101800_add_groupbuy_tier_pricing_baseline/migration.sql","backend/prisma/migrations/20260429101900_add_groupbuy_demand_pricing_baseline/migration.sql","backend/prisma/migrations/20260429102000_add_groupbuy_bundles_baseline/migration.sql","backend/prisma/migrations/20260429102100_add_groupbuy_bundle_products_baseline/migration.sql","backend/prisma/migrations/20260429102200_add_local_events_baseline/migration.sql","backend/prisma/migrations/20260429102300_add_local_promotions_baseline/migration.sql","backend/prisma/migrations/20260429102400_add_state_machine_definitions_baseline/migration.sql","backend/prisma/migrations/20260429102500_add_custom_field_definitions_baseline/migration.sql","backend/prisma/migrations/20260429102600_add_workflow_designs_baseline/migration.sql","docs/governance/archive/p3_type_constraints_retired_2026-04-29/RETIRED.md","docs/governance/archive/p3_type_constraints_retired_2026-04-29/migration.sql","docs/governance/formrules-zod-product-decisions-2026-04-29.md","e2e/tests/auth/ai-assist-smoke.spec.ts","reports/prisma-zod-contract-audit.2026-04-29.json","reports/prisma-zod-contract-audit.2026-04-29.md","scripts/sync-prisma-schema-mirror.ts"],"removed":[".claude/scheduled_tasks.lock","backend/prisma/migrations_pending_review/20260428060300_drift_recovery_p3_type_constraints/migration.sql","backend/prisma/migrations_pending_review/20260428090000_tighten_varchar_phase3/migration.sql"],"modified":[".claude/settings.json",".github/workflows/ci.yml",".github/workflows/migration-safety.yml","AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/package.json","backend/prisma/migrations_pending_review/README.md","backend/prisma/schema.prisma","backend/src/modules/ai-agents/ai-autopilot-ai-test.service.ts","backend/src/modules/ai-agents/ai-autopilot.service.ts","backend/src/shared/constants/statuses.ts","docs/governance/baseline-and-experience.md","e2e/.auth/admin.json","frontend/package.json","frontend/src/views/social-posts/Detail.vue","frontend/src/views/supplier-management/StoreSuppliers.vue","frontend/src/views/suppliers/Detail.vue","frontend/src/views/suppliers/Form.vue","frontend/src/views/targets/Detail.vue","output/playwright/full-menu-write-batches/ai-acquisition-content/batch-state.json","output/playwright/full-menu-write-batches/batch-summary.json","output/playwright/full-menu-write-batches/batch-summary.md","output/playwright/full-menu-write-batches/center-summary.json","output/playwright/full-menu-write-batches/center-summary.md","output/playwright/full-menu-write-batches/finance/batch-state.json","output/playwright/full-menu-write-batches/growth-sales-stores-service/batch-state.json","output/playwright/full-menu-write-batches/hr/batch-state.json","output/playwright/full-menu-write-batches/preflight.json","output/playwright/full-menu-write-batches/supply-chain/batch-state.json","output/playwright/full-menu-write-batches/synergy/batch-state.json","output/playwright/full-menu-write-batches/system-infra/batch-state.json","package.json","reports/ai-assist-context-provider-redact.latest.json","reports/ai-assist-coverage.latest.json","reports/ai-assist-skill-binding.latest.json","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/harness-dashboard.latest.json","reports/list-page-routes-audit.latest.json","reports/migration-drift-diff.latest.sql","reports/migration-drift-summary.latest.json","reports/module-coverage-matrix.latest.json","reports/module-grades.latest.json","reports/prisma-zod-contract-audit.2026-04-28.json","reports/prisma-zod-contract-audit.2026-04-28.md","reports/prisma-zod-contract-audit.latest.json","reports/prisma-zod-contract-audit.latest.md","reports/project-census.baseline.json","reports/project-census.latest.json","reports/response-columns-audit.latest.json","reports/type-debt-audit.latest.json","scripts/audit-enum-consistency.ts","scripts/audit-formrules-zod.ts","scripts/ci-migration-check.sh","scripts/ci-migration-deploy-gate.sh"]},{"id":"73367a67e894c06a03ec05ef20317873c15bc7ee","message":"Fix governance contract mismatches and module coverage\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/73367a67e894c06a03ec05ef20317873c15bc7ee","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T10:43:21-07:00","added":["backend/src/modules/abm-marketing/abm-marketing.module-contract.test.ts","backend/src/modules/ad-analytics/ad-analytics.module-contract.test.ts","backend/src/modules/attribution-models/attribution-models.module-contract.test.ts","backend/src/modules/attribution-reports/attribution-reports.module-contract.test.ts","backend/src/modules/channel-integrations/channel-integrations.module-contract.test.ts","backend/src/modules/customer-segmentation/customer-segmentation.module-contract.test.ts","backend/src/modules/lead-assignment/lead-assignment.module-contract.test.ts","backend/src/modules/lead-scoring/lead-scoring.module-contract.test.ts","backend/src/modules/local-events/local-events.module-contract.test.ts","backend/src/modules/local-promotion/local-promotion.module-contract.test.ts","backend/src/modules/member-benefits/member-benefits.module-contract.test.ts","backend/src/modules/member-levels/member-levels.module-contract.test.ts","backend/src/modules/member-points/member-points.module-contract.test.ts","backend/src/modules/members/members.module-contract.test.ts","backend/src/modules/notification-configs/notification-configs.module-contract.test.ts","backend/src/modules/product-categories/product-categories.module-contract.test.ts","backend/src/modules/qr-codes/qr-codes.module-contract.test.ts","backend/src/modules/social-matrix/social-matrix.module-contract.test.ts","backend/src/modules/store-configs/store-configs.module-contract.test.ts","backend/src/modules/supplier-center/supplier-center.module-contract.test.ts","backend/src/modules/utm-tracking/utm-tracking.module-contract.test.ts","backend/src/modules/video-analytics/video-analytics.module-contract.test.ts","backend/src/modules/video-content/video-content.module-contract.test.ts","backend/src/modules/video-publishing/video-publishing.module-contract.test.ts","backend/src/modules/workflow-designer/workflow-designer.module-contract.test.ts"],"removed":[],"modified":[".claude/settings.json","AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/scripts/audit-prisma-zod-contract.ts","backend/src/modules/alliance-agreements/alliance-agreement.schema.ts","backend/src/modules/alliance-campaigns/alliance-campaign.schema.ts","backend/src/modules/quotes/quote.schema.ts","docs/governance/baseline-and-experience.md","frontend/src/api/modules/alliance-agreements.ts","frontend/src/api/modules/alliance-campaigns.ts","frontend/src/views/campaign-use-case-templates/Form.vue","frontend/src/views/contract-templates/Form.vue","frontend/src/views/landing-pages/Form.vue","frontend/src/views/sample-requests/Form.vue","frontend/src/views/store-configs/Form.vue","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/harness-dashboard.latest.json","reports/migration-drift-diff.latest.sql","reports/migration-drift-summary.latest.json","reports/module-coverage-matrix.latest.json","reports/module-grades.latest.json","reports/prisma-zod-contract-audit.2026-04-28.json","reports/prisma-zod-contract-audit.2026-04-28.md","reports/prisma-zod-contract-audit.latest.json","reports/prisma-zod-contract-audit.latest.md","reports/project-census.baseline.json","reports/project-census.latest.json","reports/response-columns-audit.latest.json","reports/type-debt-audit.latest.json","scripts/audit-response-columns.ts"]}],"total_commits":0,"head_commit":{"id":"3852c841f557d197a777c094ed1243a8198cdf8e","message":"Allow git merge in Claude settings\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/3852c841f557d197a777c094ed1243a8198cdf8e","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T18:36:26-07:00","added":[],"removed":[],"modified":[".claude/settings.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":5232338,"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":17,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-29T01:43:35+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
|
1777426773
|
1777427065
|
0
|
1777426589
|
1777427261
|
|
|
0
|
Edit
Delete
|
|
18541
|
Refresh governance snapshots after branch merge
|
6
|
5
|
e2e-tests.yml
|
18461
|
-2
|
339
|
refs/heads/main
|
106c45ddee8406e0190ccbba4c3dcf6703cc6117
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"6086495033147939cdd979bd15fd97d71f6c1ac3","after":"106c45ddee8406e0190ccbba4c3dcf6703cc6117","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/6086495033147939cdd979bd15fd97d71f6c1ac3...106c45ddee8406e0190ccbba4c3dcf6703cc6117","commits":[{"id":"106c45ddee8406e0190ccbba4c3dcf6703cc6117","message":"Refresh governance snapshots after branch merge\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/106c45ddee8406e0190ccbba4c3dcf6703cc6117","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:48:09-07:00","added":["docs/reports/view-audit-domains/a1-acquisition-center-2026-04-28.md","docs/reports/view-audit-domains/a2-finance-center-2026-04-28.md","docs/reports/view-audit-domains/a3-ai-knowledge-2026-04-28.md","docs/reports/view-audit-domains/a4-store-groupbuy-alliance-2026-04-28.md","docs/reports/view-audit-domains/a5-admin-center-2026-04-28.md","docs/reports/view-audit-domains/a6-synergy-hr-2026-04-28.md","docs/reports/view-audit-domains/a7-analytics-marketing-2026-04-28.md","docs/reports/view-audit-domains/a8-system-center-2026-04-28.md","docs/reports/view-audit-domains/a9-service-sales-fulfillment-2026-04-28.md","docs/reports/view-audit-full-matrix-2026-04-28.md"],"removed":[],"modified":["e2e/scripts/verify-view-governance.mjs","e2e/tests/ui-modules/02-view-governance.spec.ts","e2e/tests/ui-modules/view-governance.generated.json","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/view-module-audit.latest.json"]}],"total_commits":0,"head_commit":{"id":"106c45ddee8406e0190ccbba4c3dcf6703cc6117","message":"Refresh governance snapshots after branch merge\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/106c45ddee8406e0190ccbba4c3dcf6703cc6117","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:48:09-07:00","added":["docs/reports/view-audit-domains/a1-acquisition-center-2026-04-28.md","docs/reports/view-audit-domains/a2-finance-center-2026-04-28.md","docs/reports/view-audit-domains/a3-ai-knowledge-2026-04-28.md","docs/reports/view-audit-domains/a4-store-groupbuy-alliance-2026-04-28.md","docs/reports/view-audit-domains/a5-admin-center-2026-04-28.md","docs/reports/view-audit-domains/a6-synergy-hr-2026-04-28.md","docs/reports/view-audit-domains/a7-analytics-marketing-2026-04-28.md","docs/reports/view-audit-domains/a8-system-center-2026-04-28.md","docs/reports/view-audit-domains/a9-service-sales-fulfillment-2026-04-28.md","docs/reports/view-audit-full-matrix-2026-04-28.md"],"removed":[],"modified":["e2e/scripts/verify-view-governance.mjs","e2e/tests/ui-modules/02-view-governance.spec.ts","e2e/tests/ui-modules/view-governance.generated.json","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/view-module-audit.latest.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":5230280,"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":16,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-28T15:16:06+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
|
2
|
20
|
1777420853
|
1777420939
|
0
|
1777420850
|
1777420944
|
|
|
0
|
Edit
Delete
|
|
18338
|
Refresh governance snapshots after branch merge
|
6
|
5
|
e2e-tests.yml
|
18258
|
5
|
0
|
refs/heads/main
|
106c45ddee8406e0190ccbba4c3dcf6703cc6117
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"6086495033147939cdd979bd15fd97d71f6c1ac3","after":"106c45ddee8406e0190ccbba4c3dcf6703cc6117","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/6086495033147939cdd979bd15fd97d71f6c1ac3...106c45ddee8406e0190ccbba4c3dcf6703cc6117","commits":[{"id":"106c45ddee8406e0190ccbba4c3dcf6703cc6117","message":"Refresh governance snapshots after branch merge\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/106c45ddee8406e0190ccbba4c3dcf6703cc6117","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:48:09-07:00","added":["docs/reports/view-audit-domains/a1-acquisition-center-2026-04-28.md","docs/reports/view-audit-domains/a2-finance-center-2026-04-28.md","docs/reports/view-audit-domains/a3-ai-knowledge-2026-04-28.md","docs/reports/view-audit-domains/a4-store-groupbuy-alliance-2026-04-28.md","docs/reports/view-audit-domains/a5-admin-center-2026-04-28.md","docs/reports/view-audit-domains/a6-synergy-hr-2026-04-28.md","docs/reports/view-audit-domains/a7-analytics-marketing-2026-04-28.md","docs/reports/view-audit-domains/a8-system-center-2026-04-28.md","docs/reports/view-audit-domains/a9-service-sales-fulfillment-2026-04-28.md","docs/reports/view-audit-full-matrix-2026-04-28.md"],"removed":[],"modified":["e2e/scripts/verify-view-governance.mjs","e2e/tests/ui-modules/02-view-governance.spec.ts","e2e/tests/ui-modules/view-governance.generated.json","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/view-module-audit.latest.json"]}],"total_commits":0,"head_commit":{"id":"106c45ddee8406e0190ccbba4c3dcf6703cc6117","message":"Refresh governance snapshots after branch merge\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/106c45ddee8406e0190ccbba4c3dcf6703cc6117","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:48:09-07:00","added":["docs/reports/view-audit-domains/a1-acquisition-center-2026-04-28.md","docs/reports/view-audit-domains/a2-finance-center-2026-04-28.md","docs/reports/view-audit-domains/a3-ai-knowledge-2026-04-28.md","docs/reports/view-audit-domains/a4-store-groupbuy-alliance-2026-04-28.md","docs/reports/view-audit-domains/a5-admin-center-2026-04-28.md","docs/reports/view-audit-domains/a6-synergy-hr-2026-04-28.md","docs/reports/view-audit-domains/a7-analytics-marketing-2026-04-28.md","docs/reports/view-audit-domains/a8-system-center-2026-04-28.md","docs/reports/view-audit-domains/a9-service-sales-fulfillment-2026-04-28.md","docs/reports/view-audit-full-matrix-2026-04-28.md"],"removed":[],"modified":["e2e/scripts/verify-view-governance.mjs","e2e/tests/ui-modules/02-view-governance.spec.ts","e2e/tests/ui-modules/view-governance.generated.json","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/view-module-audit.latest.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":5230280,"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":16,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-28T15:16:06+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
|
1777363052
|
1777363216
|
0
|
1777362870
|
1777363271
|
|
|
0
|
Edit
Delete
|
|
18320
|
Merge branch 'claude/hungry-montalcini-932ea7& Merge branch 'claude/hungry-montalcini-932ea7'...
|
6
|
5
|
e2e-tests.yml
|
18240
|
5
|
0
|
refs/heads/main
|
6086495033147939cdd979bd15fd97d71f6c1ac3
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e9258713d6944a1e296ddd7017cf9755186b54d8","after":"6086495033147939cdd979bd15fd97d71f6c1ac3","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/e9258713d6944a1e296ddd7017cf9755186b54d8...6086495033147939cdd979bd15fd97d71f6c1ac3","commits":[{"id":"6086495033147939cdd979bd15fd97d71f6c1ac3","message":"Merge branch 'claude/hungry-montalcini-932ea7'\n\n# Conflicts:\n#\tbackend/src/modules/service-monitor/service-disruption.service.ts\n#\treports/api-route-contract-audit.latest.json\n#\treports/api-route-contract-audit.latest.md\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6086495033147939cdd979bd15fd97d71f6c1ac3","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:14:48-07:00","added":["scripts/release/rollback-prod.sh"],"removed":[],"modified":["backend/src/modules/customers/customer-export.service.ts","backend/src/modules/service-monitor/service-disruption.controller.ts","backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/src/modules/service-monitor/service-disruption.service.ts","backend/src/modules/service-monitor/service-monitor.docs.ts","backend/src/modules/service-monitor/service-monitor.routes.ts","backend/tests/api/service-monitor.test.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"]},{"id":"9b899c023b84a5aeab99138ad11b0618bb0875a6","message":"fix(views): groupbuy-* 4 个 Index 补 reactive import 修复白屏 ReferenceError\n\n真生产 bug:4 个 view 的 line 40-41 都有 const createForm = reactive({...})\n但 import 只有 { ref } 没 { reactive } —— 用户打开任一团购页面会立即\nReferenceError: reactive is not defined → 白屏 + console 红字。\n\n明显是同一份模板 paste 出来的,原始模板少 reactive import 的同一个错。\n4 个文件统一补 import:\n - import { ref } from 'vue'\n + import { reactive, ref } from 'vue'\n\n涉及页面:\n - 团购活动管理 /groupbuy-campaigns\n - 参团管理 /groupbuy-participants\n - 团购商品管理 /groupbuy-products\n - 团购结算管理 /groupbuy-settlements\n\n注: 同模板写法的其它 KTV 营销域 view 应该也 sweep 一遍是否有同款问题,\n但 sweep 范围超出本 PR,建议另开 issue。本 commit 仅修这 4 个已确认的。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/9b899c023b84a5aeab99138ad11b0618bb0875a6","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:49-07:00","added":[],"removed":[],"modified":["frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-participants/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue"]},{"id":"d4fc589c2674f52dd6c03aaca02764ae3002ca47","message":"chore(release): rollback-prod.sh dry-run 容错 + ORIGINAL_ARGS 保留\n\n为 e3e4f75d0 (rollback-prod.sh) 加两项 UX 改进,让脚本在不完整环境下\n也能跑 dry-run 演练,方便开发机/沙箱测脚本本身正确性。\n\n变更:\n + ORIGINAL_ARGS=(\"$@\") # 第 20 行:原始参数保留供后续日志/重启使用\n + 预检 .env / docker daemon 缺失时:\n DRY_RUN=true → 仅 WARN 不阻塞(原逻辑:直接 FAIL 退出)\n DRY_RUN=false → 仍 FAIL(生产严格度不变)\n + --strategy \"${2:-}\" # 参数解析对 bash strict mode 更稳健\n\n验证:\n $ bash scripts/release/rollback-prod.sh --dry-run --strategy traffic \\\\\n --reason \"验收测试\" --force\n → 5 项预检通过 (WARN 缺失 .env, PASS docker, INFO git HEAD, PASS reason)\n → [DRY-RUN] 流量回滚 → [DRY-RUN] 后置验证\n → \"全部完成\"\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/d4fc589c2674f52dd6c03aaca02764ae3002ca47","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:33-07:00","added":[],"removed":[],"modified":["scripts/release/rollback-prod.sh"]},{"id":"3f732fd5d670787659f0ba94e73357a7f079d352","message":"feat(service-monitor): OpenAPI docs + 前端 types 全栈同步 unknown/nullable/note\n\n为 commit 3dca25c90 (type union 扩展) 同步 OpenAPI schema 与前端 types,\n让契约从 Prisma → service → controller → OpenAPI → 前端 types → Vue 模板\n七层全栈对齐。\n\n变更:\n service-monitor.docs.ts (+74):\n - runtimeStatusSchema: 加 'unknown' enum 值\n - runtimeServiceSchema:\n latency: number → z.union([string, number]).nullable().optional()\n uptime: number → z.union([string, number]).optional()\n + note: z.string().optional()\n + details: z.record(z.unknown()).optional()\n - 新增 performanceMetricsSchema (system / process / requests\n 三段嵌套,requests.* 标 nullable + note)\n\n frontend/src/api/modules/service-monitor.ts (+60):\n - ServiceStatus.status: 加 'unknown'\n - ServiceStatusOverview.services.*: 加 'unknown' + note 字段\n - AdminOverviewResponse.system.diskUsage: string → string | null\n - AdminOverviewResponse.requests.{total,avgLatency,errorRate}:\n number/string → number|null / string|null + note?: string\n - 新增 PerformanceMetrics interface 配合后端 schema\n\n service-monitor/Index.vue (+3-1):\n - 跟进 frontend/src/api/modules/service-monitor.ts type 变化的小调整\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/3f732fd5d670787659f0ba94e73357a7f079d352","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:44:16-07:00","added":[],"removed":[],"modified":["backend/src/modules/service-monitor/service-monitor.docs.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue"]},{"id":"ad05c63ff48d357cad375e21d75232fd19fc8b4a","message":"test(service-monitor): 补 service-disruption + api 两层测试覆盖\n\n为 commit 3dca25c90 (真健康检查 + withHealthTimeout) 补单元 + API 集成测试,\n锁定运行态行为,防止后续退化。\n\n变更:\n service-disruption.service.test.ts (+78):\n - mockCheckKafkaHealth: vi.fn().mockResolvedValue({ connected:true, latency:3 })\n - mockMinioClient.bucketExists: vi.fn().mockResolvedValue(true)\n - mockWebsocketHealth.getReadinessStatus: vi.fn().mockResolvedValue({\n ready:true, checks:{ redis:true, connections:true } })\n - vi.mock('../../config/kafka.js') 加 checkKafkaHealth export\n - 覆盖 Kafka/MinIO/WebSocket 真健康检查的 happy path\n\n tests/api/service-monitor.test.ts (+53):\n - GET /service-monitor/metrics + /cache 路由的 API 端到端测试\n - 验证 commit ce9319a94 的两条新路由真挂载、真返回\n - 与运行态契约对齐\n\n注: 沙箱无 vitest 跑不了,CI test job 兜底。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/ad05c63ff48d357cad375e21d75232fd19fc8b4a","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T02:43:55-07:00","added":[],"removed":[],"modified":["backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/tests/api/service-monitor.test.ts"]}],"total_commits":0,"head_commit":{"id":"6086495033147939cdd979bd15fd97d71f6c1ac3","message":"Merge branch 'claude/hungry-montalcini-932ea7'\n\n# Conflicts:\n#\tbackend/src/modules/service-monitor/service-disruption.service.ts\n#\treports/api-route-contract-audit.latest.json\n#\treports/api-route-contract-audit.latest.md\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6086495033147939cdd979bd15fd97d71f6c1ac3","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:14:48-07:00","added":["scripts/release/rollback-prod.sh"],"removed":[],"modified":["backend/src/modules/customers/customer-export.service.ts","backend/src/modules/service-monitor/service-disruption.controller.ts","backend/src/modules/service-monitor/service-disruption.service.test.ts","backend/src/modules/service-monitor/service-disruption.service.ts","backend/src/modules/service-monitor/service-monitor.docs.ts","backend/src/modules/service-monitor/service-monitor.routes.ts","backend/tests/api/service-monitor.test.ts","frontend/src/api/modules/service-monitor.ts","frontend/src/views/service-monitor/Index.vue","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"]},"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":5230218,"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":16,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-28T15:13:38+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
|
1777360642
|
1777360781
|
0
|
1777360556
|
1777361868
|
|
|
0
|
Edit
Delete
|
|
18317
|
Merge branch 'codex-module-detail-closure-gove Merge branch 'codex-module-detail-closure-governance'...
|
6
|
5
|
e2e-tests.yml
|
18237
|
5
|
0
|
refs/heads/main
|
e9258713d6944a1e296ddd7017cf9755186b54d8
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"3fa41aea52e84435c16a79dd19c6775f93236a33","after":"e9258713d6944a1e296ddd7017cf9755186b54d8","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/3fa41aea52e84435c16a79dd19c6775f93236a33...e9258713d6944a1e296ddd7017cf9755186b54d8","commits":[{"id":"e9258713d6944a1e296ddd7017cf9755186b54d8","message":"Merge branch 'codex-module-detail-closure-governance'\n\n# Conflicts:\n#\te2e/tests/ui-modules/view-governance.generated.json\n#\tfrontend/src/router/modules/supplemental.ts\n#\treports/api-route-contract-audit.latest.json\n#\treports/api-route-contract-audit.latest.md\n#\treports/enum-consistency-audit.latest.json\n#\treports/field-payload-audit.latest.json\n#\treports/formrules-zod-audit.latest.json\n#\treports/harness-dashboard.latest.json\n#\treports/module-grades.latest.json\n#\treports/response-columns-audit.latest.json\n#\treports/type-debt-audit.latest.json\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/e9258713d6944a1e296ddd7017cf9755186b54d8","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:11:39-07:00","added":["docs/reports/module-detail-closure-plan-2026-04-27.md","docs/reports/view-audit-domains/a1-acquisition-center-2026-04-26.md","docs/reports/view-audit-domains/a2-finance-center-2026-04-26.md","docs/reports/view-audit-domains/a3-ai-knowledge-2026-04-26.md","docs/reports/view-audit-domains/a4-store-groupbuy-alliance-2026-04-26.md","docs/reports/view-audit-domains/a5-admin-center-2026-04-26.md","docs/reports/view-audit-domains/a6-synergy-hr-2026-04-26.md","docs/reports/view-audit-domains/a7-analytics-marketing-2026-04-26.md","docs/reports/view-audit-domains/a8-system-center-2026-04-26.md","docs/reports/view-audit-domains/a9-service-sales-fulfillment-2026-04-26.md","docs/reports/view-audit-full-matrix-2026-04-26.md","frontend/src/views/product-categories/__tests__/product-categories-g4.smoke.test.ts","frontend/src/views/supplier-center/__tests__/supplier-center-g4.smoke.test.ts","frontend/src/views/workflow-designer/__tests__/workflow-designer-g4.smoke.test.ts","reports/prisma-zod-contract-audit.2026-04-27.json","reports/prisma-zod-contract-audit.2026-04-27.md"],"removed":[],"modified":["backend/scripts/audit-event-publishing.ts","backend/src/modules/product-categories/product-categories.service.ts","backend/src/modules/supplier-center/supplier-center.service.ts","backend/src/modules/ticket-workflows/ticket-workflow.service.ts","backend/src/modules/workflow-designer/workflow-designer.service.ts","e2e/scripts/lib/view-audit.overrides.mjs","e2e/tests/auth/event-logs-smoke.spec.ts","e2e/tests/ui-modules/view-governance.generated.json","frontend/src/api/modules/product-categories.ts","frontend/src/api/modules/supplier-center.ts","frontend/src/router/modules/hr.ts","frontend/src/router/modules/supplemental.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-participants/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/product-categories/Index.vue","frontend/src/views/supplier-center/Index.vue","reports/approval-governance.latest.json","reports/approval-governance.latest.md","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md","reports/menu-inventory-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/outbox-atomicity-audit.latest.json","reports/prisma-zod-contract-audit.latest.json","reports/prisma-zod-contract-audit.latest.md","reports/project-census.latest.json","reports/state-machine-integration-audit.latest.json","reports/state-machine-integration-audit.latest.md","reports/view-module-audit.latest.json"]},{"id":"fc505c1b1f37094c93481bf54c950a6362f940d6","message":"Complete module detail closure and governance evidence\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/fc505c1b1f37094c93481bf54c950a6362f940d6","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T21:54:59-07:00","added":["docs/reports/module-detail-closure-plan-2026-04-27.md","docs/reports/view-audit-domains/a1-acquisition-center-2026-04-26.md","docs/reports/view-audit-domains/a2-finance-center-2026-04-26.md","docs/reports/view-audit-domains/a3-ai-knowledge-2026-04-26.md","docs/reports/view-audit-domains/a4-store-groupbuy-alliance-2026-04-26.md","docs/reports/view-audit-domains/a5-admin-center-2026-04-26.md","docs/reports/view-audit-domains/a6-synergy-hr-2026-04-26.md","docs/reports/view-audit-domains/a7-analytics-marketing-2026-04-26.md","docs/reports/view-audit-domains/a8-system-center-2026-04-26.md","docs/reports/view-audit-domains/a9-service-sales-fulfillment-2026-04-26.md","docs/reports/view-audit-full-matrix-2026-04-26.md","frontend/src/views/product-categories/__tests__/product-categories-g4.smoke.test.ts","frontend/src/views/supplier-center/__tests__/supplier-center-g4.smoke.test.ts","frontend/src/views/workflow-designer/__tests__/workflow-designer-g4.smoke.test.ts","reports/prisma-zod-contract-audit.2026-04-27.json","reports/prisma-zod-contract-audit.2026-04-27.md"],"removed":[],"modified":["backend/scripts/audit-event-publishing.ts","backend/src/modules/product-categories/product-categories.service.ts","backend/src/modules/supplier-center/supplier-center.service.ts","backend/src/modules/ticket-workflows/ticket-workflow.service.ts","backend/src/modules/workflow-designer/workflow-designer.service.ts","e2e/scripts/lib/view-audit.overrides.mjs","e2e/tests/auth/event-logs-smoke.spec.ts","e2e/tests/ui-modules/view-governance.generated.json","frontend/src/api/modules/product-categories.ts","frontend/src/api/modules/supplier-center.ts","frontend/src/router/modules/hr.ts","frontend/src/router/modules/supplemental.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-participants/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/product-categories/Index.vue","frontend/src/views/supplier-center/Index.vue","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/approval-governance.latest.json","reports/approval-governance.latest.md","reports/enum-consistency-audit.latest.json","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/harness-dashboard.latest.json","reports/menu-inventory-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/module-grades.latest.json","reports/outbox-atomicity-audit.latest.json","reports/prisma-zod-contract-audit.latest.json","reports/prisma-zod-contract-audit.latest.md","reports/project-census.latest.json","reports/response-columns-audit.latest.json","reports/state-machine-integration-audit.latest.json","reports/state-machine-integration-audit.latest.md","reports/type-debt-audit.latest.json","reports/view-module-audit.latest.json"]}],"total_commits":0,"head_commit":{"id":"e9258713d6944a1e296ddd7017cf9755186b54d8","message":"Merge branch 'codex-module-detail-closure-governance'\n\n# Conflicts:\n#\te2e/tests/ui-modules/view-governance.generated.json\n#\tfrontend/src/router/modules/supplemental.ts\n#\treports/api-route-contract-audit.latest.json\n#\treports/api-route-contract-audit.latest.md\n#\treports/enum-consistency-audit.latest.json\n#\treports/field-payload-audit.latest.json\n#\treports/formrules-zod-audit.latest.json\n#\treports/harness-dashboard.latest.json\n#\treports/module-grades.latest.json\n#\treports/response-columns-audit.latest.json\n#\treports/type-debt-audit.latest.json\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/e9258713d6944a1e296ddd7017cf9755186b54d8","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-28T00:11:39-07:00","added":["docs/reports/module-detail-closure-plan-2026-04-27.md","docs/reports/view-audit-domains/a1-acquisition-center-2026-04-26.md","docs/reports/view-audit-domains/a2-finance-center-2026-04-26.md","docs/reports/view-audit-domains/a3-ai-knowledge-2026-04-26.md","docs/reports/view-audit-domains/a4-store-groupbuy-alliance-2026-04-26.md","docs/reports/view-audit-domains/a5-admin-center-2026-04-26.md","docs/reports/view-audit-domains/a6-synergy-hr-2026-04-26.md","docs/reports/view-audit-domains/a7-analytics-marketing-2026-04-26.md","docs/reports/view-audit-domains/a8-system-center-2026-04-26.md","docs/reports/view-audit-domains/a9-service-sales-fulfillment-2026-04-26.md","docs/reports/view-audit-full-matrix-2026-04-26.md","frontend/src/views/product-categories/__tests__/product-categories-g4.smoke.test.ts","frontend/src/views/supplier-center/__tests__/supplier-center-g4.smoke.test.ts","frontend/src/views/workflow-designer/__tests__/workflow-designer-g4.smoke.test.ts","reports/prisma-zod-contract-audit.2026-04-27.json","reports/prisma-zod-contract-audit.2026-04-27.md"],"removed":[],"modified":["backend/scripts/audit-event-publishing.ts","backend/src/modules/product-categories/product-categories.service.ts","backend/src/modules/supplier-center/supplier-center.service.ts","backend/src/modules/ticket-workflows/ticket-workflow.service.ts","backend/src/modules/workflow-designer/workflow-designer.service.ts","e2e/scripts/lib/view-audit.overrides.mjs","e2e/tests/auth/event-logs-smoke.spec.ts","e2e/tests/ui-modules/view-governance.generated.json","frontend/src/api/modules/product-categories.ts","frontend/src/api/modules/supplier-center.ts","frontend/src/router/modules/hr.ts","frontend/src/router/modules/supplemental.ts","frontend/src/views/__tests__/standard-crud-smoke.helper.ts","frontend/src/views/groupbuy-campaigns/Index.vue","frontend/src/views/groupbuy-participants/Index.vue","frontend/src/views/groupbuy-products/Index.vue","frontend/src/views/groupbuy-settlements/Index.vue","frontend/src/views/product-categories/Index.vue","frontend/src/views/supplier-center/Index.vue","reports/approval-governance.latest.json","reports/approval-governance.latest.md","reports/event-publishing-audit.latest.json","reports/event-publishing-audit.latest.md","reports/menu-inventory-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/outbox-atomicity-audit.latest.json","reports/prisma-zod-contract-audit.latest.json","reports/prisma-zod-contract-audit.latest.md","reports/project-census.latest.json","reports/state-machine-integration-audit.latest.json","reports/state-machine-integration-audit.latest.md","reports/view-module-audit.latest.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":5230163,"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":16,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-28T11:36:20+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
|
1777360452
|
1777360599
|
0
|
1777360415
|
1777361857
|
|
|
0
|
Edit
Delete
|
|
18266
|
Add Page AI Assist feature flags and governance au Add Page AI Assist feature flags and governance audits...
|
6
|
5
|
e2e-tests.yml
|
18186
|
5
|
0
|
refs/heads/main
|
3fa41aea52e84435c16a79dd19c6775f93236a33
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"62f424f94b745efdce16bde3aa2c73e3839a9264","after":"3fa41aea52e84435c16a79dd19c6775f93236a33","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/62f424f94b745efdce16bde3aa2c73e3839a9264...3fa41aea52e84435c16a79dd19c6775f93236a33","commits":[{"id":"3fa41aea52e84435c16a79dd19c6775f93236a33","message":"Add Page AI Assist feature flags and governance audits\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/3fa41aea52e84435c16a79dd19c6775f93236a33","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T20:35:57-07:00","added":["backend/src/modules/ai-assist/context-providers/ai-agents.ts","backend/src/modules/ai-assist/context-providers/campaign.ts","backend/src/modules/ai-assist/context-providers/collaboration.ts","backend/src/modules/ai-assist/context-providers/content-item.ts","backend/src/modules/ai-assist/context-providers/contract.ts","backend/src/modules/ai-assist/context-providers/finance-aggregate.ts","backend/src/modules/ai-assist/context-providers/hr-aggregate.ts","backend/src/modules/ai-assist/context-providers/lead.ts","backend/src/modules/ai-assist/context-providers/marketing-workflow.ts","backend/src/modules/ai-assist/context-providers/order.ts","backend/src/modules/ai-assist/context-providers/quote.ts","backend/src/modules/ai-assist/context-providers/social-hot-topic.ts","backend/src/modules/ai-assist/context-providers/social-post.ts","backend/src/modules/ai-assist/context-providers/stores.ts","backend/src/modules/ai-assist/context-providers/supply-chain.ts","backend/src/modules/ai-assist/context-providers/system-infra-aggregate.ts","backend/src/modules/ai-assist/context-providers/workbench.ts","scripts/audit-context-provider-redact.ts"],"removed":[],"modified":[".env.example",".env.production.example",".github/workflows/ci.yml","AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/.env.example","backend/src/config/env.ts","backend/src/modules/ai-agents/ai-agent.controller.test.ts","backend/src/modules/ai-agents/ai-agent.controller.ts","backend/src/modules/ai-assist/ai-assist.service.ts","backend/src/modules/ai-assist/context-providers/generic.ts","backend/src/modules/ai-assist/context-providers/opportunity.ts","backend/src/modules/ai-assist/context-providers/redact.ts","backend/src/modules/ai-assist/context-providers/registry.ts","backend/src/modules/ai-assist/context-providers/ticket.ts","backend/src/modules/ai-assist/context-providers/types.ts","backend/src/modules/ai-review-queue/ai-review-queue.controller.ts","backend/src/modules/ai-review-queue/ai-review-queue.service.test.ts","backend/src/modules/ai-review-queue/ai-review-queue.service.ts","backend/src/shared/constants/permissions.ts","backend/tests/api/ai-assist.test.ts","frontend/.env.example","frontend/src/components/business/AICopilotSidebar.vue","frontend/src/composables/usePageAIAssist.ts","frontend/src/env.d.ts","package.json","reports/ai-assist-context-providers.latest.json","reports/ai-assist-coverage.latest.json","reports/ai-assist-skill-binding.latest.json","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/docs-single-source-audit.latest.json","reports/docs-single-source-audit.latest.md","scripts/audit-ai-assist-context-providers.ts","scripts/harness/audit-registry.ts"]}],"total_commits":0,"head_commit":{"id":"3fa41aea52e84435c16a79dd19c6775f93236a33","message":"Add Page AI Assist feature flags and governance audits\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/3fa41aea52e84435c16a79dd19c6775f93236a33","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T20:35:57-07:00","added":["backend/src/modules/ai-assist/context-providers/ai-agents.ts","backend/src/modules/ai-assist/context-providers/campaign.ts","backend/src/modules/ai-assist/context-providers/collaboration.ts","backend/src/modules/ai-assist/context-providers/content-item.ts","backend/src/modules/ai-assist/context-providers/contract.ts","backend/src/modules/ai-assist/context-providers/finance-aggregate.ts","backend/src/modules/ai-assist/context-providers/hr-aggregate.ts","backend/src/modules/ai-assist/context-providers/lead.ts","backend/src/modules/ai-assist/context-providers/marketing-workflow.ts","backend/src/modules/ai-assist/context-providers/order.ts","backend/src/modules/ai-assist/context-providers/quote.ts","backend/src/modules/ai-assist/context-providers/social-hot-topic.ts","backend/src/modules/ai-assist/context-providers/social-post.ts","backend/src/modules/ai-assist/context-providers/stores.ts","backend/src/modules/ai-assist/context-providers/supply-chain.ts","backend/src/modules/ai-assist/context-providers/system-infra-aggregate.ts","backend/src/modules/ai-assist/context-providers/workbench.ts","scripts/audit-context-provider-redact.ts"],"removed":[],"modified":[".env.example",".env.production.example",".github/workflows/ci.yml","AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/.env.example","backend/src/config/env.ts","backend/src/modules/ai-agents/ai-agent.controller.test.ts","backend/src/modules/ai-agents/ai-agent.controller.ts","backend/src/modules/ai-assist/ai-assist.service.ts","backend/src/modules/ai-assist/context-providers/generic.ts","backend/src/modules/ai-assist/context-providers/opportunity.ts","backend/src/modules/ai-assist/context-providers/redact.ts","backend/src/modules/ai-assist/context-providers/registry.ts","backend/src/modules/ai-assist/context-providers/ticket.ts","backend/src/modules/ai-assist/context-providers/types.ts","backend/src/modules/ai-review-queue/ai-review-queue.controller.ts","backend/src/modules/ai-review-queue/ai-review-queue.service.test.ts","backend/src/modules/ai-review-queue/ai-review-queue.service.ts","backend/src/shared/constants/permissions.ts","backend/tests/api/ai-assist.test.ts","frontend/.env.example","frontend/src/components/business/AICopilotSidebar.vue","frontend/src/composables/usePageAIAssist.ts","frontend/src/env.d.ts","package.json","reports/ai-assist-context-providers.latest.json","reports/ai-assist-coverage.latest.json","reports/ai-assist-skill-binding.latest.json","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/docs-single-source-audit.latest.json","reports/docs-single-source-audit.latest.md","scripts/audit-ai-assist-context-providers.ts","scripts/harness/audit-registry.ts"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5229727,"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":16,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-28T09:36:09+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
|
1777347411
|
1777347552
|
0
|
1777347377
|
1777347606
|
|
|
0
|
Edit
Delete
|
|
18234
|
Implement Page AI Assist governance and context pr Implement Page AI Assist governance and context providers...
|
6
|
5
|
e2e-tests.yml
|
18154
|
5
|
0
|
refs/heads/main
|
62f424f94b745efdce16bde3aa2c73e3839a9264
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"1f8ccb4bb738cf6ef3a139070f88fc957f2d0ba6","after":"62f424f94b745efdce16bde3aa2c73e3839a9264","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/1f8ccb4bb738cf6ef3a139070f88fc957f2d0ba6...62f424f94b745efdce16bde3aa2c73e3839a9264","commits":[{"id":"62f424f94b745efdce16bde3aa2c73e3839a9264","message":"Implement Page AI Assist governance and context providers\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/62f424f94b745efdce16bde3aa2c73e3839a9264","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T18:35:58-07:00","added":["backend/src/modules/ai-assist/context-providers/generic.ts","backend/src/modules/ai-assist/context-providers/opportunity.ts","backend/src/modules/ai-assist/context-providers/redact.ts","backend/src/modules/ai-assist/context-providers/registry.ts","backend/src/modules/ai-assist/context-providers/ticket.ts","backend/src/modules/ai-assist/context-providers/types.ts","backend/src/modules/ai-assist/execution-ticket.ts","backend/src/modules/ai-assist/page-capability.test.ts","backend/src/modules/ai-assist/skills/registry.ts","backend/tests/api/ai-assist.test.ts","frontend/src/composables/__tests__/usePageAIAssist.test.ts","reports/ai-assist-context-providers.latest.json","reports/ai-assist-coverage.latest.json","reports/ai-assist-skill-binding.latest.json","scripts/audit-ai-assist-context-providers.ts","scripts/audit-ai-assist-coverage.ts","scripts/audit-ai-assist-skill-binding.ts"],"removed":[],"modified":["AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/package.json","backend/src/modules/ai-agent-skills/skill-execution-engine.service.ts","backend/src/modules/ai-assist/ai-assist.docs.ts","backend/src/modules/ai-assist/ai-assist.routes.ts","backend/src/modules/ai-assist/ai-assist.schema.ts","backend/src/modules/ai-assist/ai-assist.service.ts","backend/src/modules/ai-assist/page-capability.ts","backend/src/modules/ai-assist/page-context-resolver.ts","backend/src/modules/ai-copilot/ai-copilot.controller.ts","backend/src/modules/ai-copilot/ai-copilot.service.ts","backend/src/shared/middleware/advanced-rate-limiter.middleware.ts","e2e/tests/ui-modules/view-governance.generated.json","frontend/src/api/client.ts","frontend/src/api/modules/ai-assist.ts","frontend/src/components/business/PageAIAssistDrawer.vue","frontend/src/composables/usePageAIAssist.ts","package.json","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/docs-single-source-audit.latest.json","reports/docs-single-source-audit.latest.md"]}],"total_commits":0,"head_commit":{"id":"62f424f94b745efdce16bde3aa2c73e3839a9264","message":"Implement Page AI Assist governance and context providers\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/62f424f94b745efdce16bde3aa2c73e3839a9264","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T18:35:58-07:00","added":["backend/src/modules/ai-assist/context-providers/generic.ts","backend/src/modules/ai-assist/context-providers/opportunity.ts","backend/src/modules/ai-assist/context-providers/redact.ts","backend/src/modules/ai-assist/context-providers/registry.ts","backend/src/modules/ai-assist/context-providers/ticket.ts","backend/src/modules/ai-assist/context-providers/types.ts","backend/src/modules/ai-assist/execution-ticket.ts","backend/src/modules/ai-assist/page-capability.test.ts","backend/src/modules/ai-assist/skills/registry.ts","backend/tests/api/ai-assist.test.ts","frontend/src/composables/__tests__/usePageAIAssist.test.ts","reports/ai-assist-context-providers.latest.json","reports/ai-assist-coverage.latest.json","reports/ai-assist-skill-binding.latest.json","scripts/audit-ai-assist-context-providers.ts","scripts/audit-ai-assist-coverage.ts","scripts/audit-ai-assist-skill-binding.ts"],"removed":[],"modified":["AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/package.json","backend/src/modules/ai-agent-skills/skill-execution-engine.service.ts","backend/src/modules/ai-assist/ai-assist.docs.ts","backend/src/modules/ai-assist/ai-assist.routes.ts","backend/src/modules/ai-assist/ai-assist.schema.ts","backend/src/modules/ai-assist/ai-assist.service.ts","backend/src/modules/ai-assist/page-capability.ts","backend/src/modules/ai-assist/page-context-resolver.ts","backend/src/modules/ai-copilot/ai-copilot.controller.ts","backend/src/modules/ai-copilot/ai-copilot.service.ts","backend/src/shared/middleware/advanced-rate-limiter.middleware.ts","e2e/tests/ui-modules/view-governance.generated.json","frontend/src/api/client.ts","frontend/src/api/modules/ai-assist.ts","frontend/src/components/business/PageAIAssistDrawer.vue","frontend/src/composables/usePageAIAssist.ts","package.json","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/docs-single-source-audit.latest.json","reports/docs-single-source-audit.latest.md"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5229282,"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":16,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-28T00:40:52+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"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
|
1777340288
|
1777340531
|
0
|
1777340166
|
1777340588
|
|
|
0
|
Edit
Delete
|
|
18213
|
Add page AI Assist and wire Copilot compat
|
6
|
5
|
e2e-tests.yml
|
18133
|
-2
|
324
|
refs/heads/main
|
1f8ccb4bb738cf6ef3a139070f88fc957f2d0ba6
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"550a263d501f27c775e72e10c2abba3b0b0d963c","after":"1f8ccb4bb738cf6ef3a139070f88fc957f2d0ba6","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/550a263d501f27c775e72e10c2abba3b0b0d963c...1f8ccb4bb738cf6ef3a139070f88fc957f2d0ba6","commits":[{"id":"1f8ccb4bb738cf6ef3a139070f88fc957f2d0ba6","message":"Add page AI Assist and wire Copilot compat\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/1f8ccb4bb738cf6ef3a139070f88fc957f2d0ba6","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T09:40:07-07:00","added":[".claude/worktrees/amazing-bhaskara-130540","backend/src/modules/ai-assist/ai-assist.controller.ts","backend/src/modules/ai-assist/ai-assist.docs.ts","backend/src/modules/ai-assist/ai-assist.routes.ts","backend/src/modules/ai-assist/ai-assist.schema.ts","backend/src/modules/ai-assist/ai-assist.service.ts","backend/src/modules/ai-assist/page-capability.ts","backend/src/modules/ai-assist/page-context-resolver.ts","frontend/src/api/modules/ai-assist.ts","frontend/src/components/business/PageAIAssistDrawer.vue","frontend/src/composables/usePageAIAssist.ts"],"removed":[],"modified":[".claude/settings.json",".claude/worktrees/hungry-montalcini-932ea7","backend/src/modules/agent-sessions/agent-session.routes.ts","backend/src/modules/ai-copilot/ai-copilot.controller.ts","backend/src/modules/ai-copilot/ai-copilot.service.ts","backend/src/routes/register-domain-routes.ts","backend/src/shared/constants/permissions.ts","backend/src/shared/middleware/auth.middleware.ts","backend/src/shared/openapi/all-docs.ts","backend/src/shared/utils/permission-normalizer.ts","frontend/src/api/modules/ai-copilot.ts","frontend/src/components/business/AICopilotSidebar.vue","frontend/src/components/business/index.ts","frontend/src/components/layout/AppLayout.vue","frontend/src/router/types.ts","frontend/src/stores/auth.ts"]}],"total_commits":0,"head_commit":{"id":"1f8ccb4bb738cf6ef3a139070f88fc957f2d0ba6","message":"Add page AI Assist and wire Copilot compat\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/1f8ccb4bb738cf6ef3a139070f88fc957f2d0ba6","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T09:40:07-07:00","added":[".claude/worktrees/amazing-bhaskara-130540","backend/src/modules/ai-assist/ai-assist.controller.ts","backend/src/modules/ai-assist/ai-assist.docs.ts","backend/src/modules/ai-assist/ai-assist.routes.ts","backend/src/modules/ai-assist/ai-assist.schema.ts","backend/src/modules/ai-assist/ai-assist.service.ts","backend/src/modules/ai-assist/page-capability.ts","backend/src/modules/ai-assist/page-context-resolver.ts","frontend/src/api/modules/ai-assist.ts","frontend/src/components/business/PageAIAssistDrawer.vue","frontend/src/composables/usePageAIAssist.ts"],"removed":[],"modified":[".claude/settings.json",".claude/worktrees/hungry-montalcini-932ea7","backend/src/modules/agent-sessions/agent-session.routes.ts","backend/src/modules/ai-copilot/ai-copilot.controller.ts","backend/src/modules/ai-copilot/ai-copilot.service.ts","backend/src/routes/register-domain-routes.ts","backend/src/shared/constants/permissions.ts","backend/src/shared/middleware/auth.middleware.ts","backend/src/shared/openapi/all-docs.ts","backend/src/shared/utils/permission-normalizer.ts","frontend/src/api/modules/ai-copilot.ts","frontend/src/components/business/AICopilotSidebar.vue","frontend/src/components/business/index.ts","frontend/src/components/layout/AppLayout.vue","frontend/src/router/types.ts","frontend/src/stores/auth.ts"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5229132,"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":16,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-27T17:45:04+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
|
2
|
20
|
1777334452
|
1777334537
|
0
|
1777334450
|
1777334542
|
|
|
0
|
Edit
Delete
|
|
18116
|
Add page AI Assist and wire Copilot compat
|
6
|
5
|
e2e-tests.yml
|
18036
|
5
|
0
|
refs/heads/main
|
1f8ccb4bb738cf6ef3a139070f88fc957f2d0ba6
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"550a263d501f27c775e72e10c2abba3b0b0d963c","after":"1f8ccb4bb738cf6ef3a139070f88fc957f2d0ba6","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/550a263d501f27c775e72e10c2abba3b0b0d963c...1f8ccb4bb738cf6ef3a139070f88fc957f2d0ba6","commits":[{"id":"1f8ccb4bb738cf6ef3a139070f88fc957f2d0ba6","message":"Add page AI Assist and wire Copilot compat\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/1f8ccb4bb738cf6ef3a139070f88fc957f2d0ba6","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T09:40:07-07:00","added":[".claude/worktrees/amazing-bhaskara-130540","backend/src/modules/ai-assist/ai-assist.controller.ts","backend/src/modules/ai-assist/ai-assist.docs.ts","backend/src/modules/ai-assist/ai-assist.routes.ts","backend/src/modules/ai-assist/ai-assist.schema.ts","backend/src/modules/ai-assist/ai-assist.service.ts","backend/src/modules/ai-assist/page-capability.ts","backend/src/modules/ai-assist/page-context-resolver.ts","frontend/src/api/modules/ai-assist.ts","frontend/src/components/business/PageAIAssistDrawer.vue","frontend/src/composables/usePageAIAssist.ts"],"removed":[],"modified":[".claude/settings.json",".claude/worktrees/hungry-montalcini-932ea7","backend/src/modules/agent-sessions/agent-session.routes.ts","backend/src/modules/ai-copilot/ai-copilot.controller.ts","backend/src/modules/ai-copilot/ai-copilot.service.ts","backend/src/routes/register-domain-routes.ts","backend/src/shared/constants/permissions.ts","backend/src/shared/middleware/auth.middleware.ts","backend/src/shared/openapi/all-docs.ts","backend/src/shared/utils/permission-normalizer.ts","frontend/src/api/modules/ai-copilot.ts","frontend/src/components/business/AICopilotSidebar.vue","frontend/src/components/business/index.ts","frontend/src/components/layout/AppLayout.vue","frontend/src/router/types.ts","frontend/src/stores/auth.ts"]}],"total_commits":0,"head_commit":{"id":"1f8ccb4bb738cf6ef3a139070f88fc957f2d0ba6","message":"Add page AI Assist and wire Copilot compat\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/1f8ccb4bb738cf6ef3a139070f88fc957f2d0ba6","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T09:40:07-07:00","added":[".claude/worktrees/amazing-bhaskara-130540","backend/src/modules/ai-assist/ai-assist.controller.ts","backend/src/modules/ai-assist/ai-assist.docs.ts","backend/src/modules/ai-assist/ai-assist.routes.ts","backend/src/modules/ai-assist/ai-assist.schema.ts","backend/src/modules/ai-assist/ai-assist.service.ts","backend/src/modules/ai-assist/page-capability.ts","backend/src/modules/ai-assist/page-context-resolver.ts","frontend/src/api/modules/ai-assist.ts","frontend/src/components/business/PageAIAssistDrawer.vue","frontend/src/composables/usePageAIAssist.ts"],"removed":[],"modified":[".claude/settings.json",".claude/worktrees/hungry-montalcini-932ea7","backend/src/modules/agent-sessions/agent-session.routes.ts","backend/src/modules/ai-copilot/ai-copilot.controller.ts","backend/src/modules/ai-copilot/ai-copilot.service.ts","backend/src/routes/register-domain-routes.ts","backend/src/shared/constants/permissions.ts","backend/src/shared/middleware/auth.middleware.ts","backend/src/shared/openapi/all-docs.ts","backend/src/shared/utils/permission-normalizer.ts","frontend/src/api/modules/ai-copilot.ts","frontend/src/components/business/AICopilotSidebar.vue","frontend/src/components/business/index.ts","frontend/src/components/layout/AppLayout.vue","frontend/src/router/types.ts","frontend/src/stores/auth.ts"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5229132,"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":16,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-27T17:45:04+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
|
1777308667
|
1777309090
|
0
|
1777308049
|
1777309153
|
|
|
0
|
Edit
Delete
|
|
18004
|
Fix business-flow E2E drift and sync governance do Fix business-flow E2E drift and sync governance docs...
|
6
|
5
|
e2e-tests.yml
|
17924
|
5
|
0
|
refs/heads/main
|
550a263d501f27c775e72e10c2abba3b0b0d963c
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"8b28a0af74c8801b122de4d42a95742e2302646a","after":"550a263d501f27c775e72e10c2abba3b0b0d963c","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/8b28a0af74c8801b122de4d42a95742e2302646a...550a263d501f27c775e72e10c2abba3b0b0d963c","commits":[{"id":"550a263d501f27c775e72e10c2abba3b0b0d963c","message":"Fix business-flow E2E drift and sync governance docs\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/550a263d501f27c775e72e10c2abba3b0b0d963c","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T01:01:59-07:00","added":["e2e/test-results/.last-run.json","e2e/test-results/results.json"],"removed":["e2e/playwright-report/data/00931206b23d6ba9201abcac732a68485144a042.png","e2e/playwright-report/data/21c58a5e0ad9eedb8d266bdbd92586284158f022.png","e2e/playwright-report/data/381e1c7d8c6a8a892dad5ae77549682475d29974.png","e2e/playwright-report/data/7381cf3b8593eada3a48a2b0513a2d994a98a003.md","e2e/playwright-report/data/787af65a6a601035f26cb453d17abcaaef4821ce.png","e2e/playwright-report/data/7894b4f948bdaaecfa596ba457293a656fbbcc4e.md","e2e/playwright-report/data/793a26a5e54470eadab5e5cf1d1b4dc43c03f380.md","e2e/playwright-report/data/8424c0035e077c5260b6ceb78afbd8657958d6c4.md","e2e/playwright-report/data/a48ad9952fe37888637a55f012414de7393eaa44.png","e2e/playwright-report/data/ac6ce53b8ae43aa1601c47aab26e2df884b0c4d6.md","e2e/playwright-report/data/b9bd1c85b4c36a9e8f771b0d9f1cce107e34a2c2.png","e2e/playwright-report/data/c5a704007ca87534519a9a050e7be4de18f29075.md","e2e/playwright-report/data/ce7130aec0658c24bed00be5a0f32347c6dbc8d2.md","e2e/playwright-report/data/dabaf1bdba9e4a60c61c1d942545f16c0d029023.png","e2e/playwright-report/data/f4ed19c57e872b899f2779f3c65d08afa18436eb.md","e2e/playwright-report/data/f70f44710f314c4b0285cf968374706339517ab6.png","e2e/test-results/.playwright-artifacts-2/0929e8cdd4e73e3c14fa35cf5320fdb1.png","e2e/test-results/.playwright-artifacts-2/38975f7d6890ec010b897c1cbdd04f70.png","e2e/test-results/.playwright-artifacts-2/4246ef8730133de1c6596000f075ff84.png","e2e/test-results/.playwright-artifacts-2/4ad2810dd256aa633dc3dba665d3c74d.png","e2e/test-results/.playwright-artifacts-2/7fdb62649548d026b1ad262d385fb87d.png","e2e/test-results/.playwright-artifacts-2/8cd3c723914c622bf56d9d9824594a44.png","e2e/test-results/.playwright-artifacts-2/97e83f5f8f5c5c390145351ad9f9e7c6.png","e2e/test-results/.playwright-artifacts-2/99dd9225052029bff676442b5357c256.png","e2e/test-results/.playwright-artifacts-2/9c87bb7bb92d8b9da714ba7d915a2cb1.png","e2e/test-results/.playwright-artifacts-2/9d20645cd8d48f584ccd398ca33a59c7.png","e2e/test-results/.playwright-artifacts-2/9fa0af7ce0f397f63b3e542e86714bdf.png","e2e/test-results/.playwright-artifacts-2/b6251eade894402d6bc274e6d1d7d754.png","e2e/test-results/.playwright-artifacts-2/c22cfc665d416c07458b9b746ae1fd4c.png","e2e/test-results/.playwright-artifacts-2/d53d6d6005391b4c68553607a26d3b0f.png","e2e/test-results/contracts-contract-workflow-合同管理---UI-基础-应该能打开创建合同表单-chromium/error-context.md","e2e/test-results/contracts-contract-workflow-合同管理---UI-基础-应该能打开创建合同表单-chromium/test-failed-1.png"],"modified":["AGENTS.md","CLAUDE.md","GEMINI.md","README.md","docs/governance/baseline-and-experience.md","e2e/.auth/admin.json","e2e/playwright-report/index.html","e2e/tests/fixtures/test-base.ts","e2e/tests/tickets/ticket-state-transitions.spec.ts"]},{"id":"bb222b0325a10dfdde70f4fefe9fd5dcbabf060d","message":"Fix deep workflow E2E and biz code drift\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/bb222b0325a10dfdde70f4fefe9fd5dcbabf060d","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T00:45:50-07:00","added":["e2e/playwright-report/data/00931206b23d6ba9201abcac732a68485144a042.png","e2e/playwright-report/data/21c58a5e0ad9eedb8d266bdbd92586284158f022.png","e2e/playwright-report/data/381e1c7d8c6a8a892dad5ae77549682475d29974.png","e2e/playwright-report/data/7381cf3b8593eada3a48a2b0513a2d994a98a003.md","e2e/playwright-report/data/787af65a6a601035f26cb453d17abcaaef4821ce.png","e2e/playwright-report/data/7894b4f948bdaaecfa596ba457293a656fbbcc4e.md","e2e/playwright-report/data/793a26a5e54470eadab5e5cf1d1b4dc43c03f380.md","e2e/playwright-report/data/8424c0035e077c5260b6ceb78afbd8657958d6c4.md","e2e/playwright-report/data/a48ad9952fe37888637a55f012414de7393eaa44.png","e2e/playwright-report/data/ac6ce53b8ae43aa1601c47aab26e2df884b0c4d6.md","e2e/playwright-report/data/b9bd1c85b4c36a9e8f771b0d9f1cce107e34a2c2.png","e2e/playwright-report/data/c5a704007ca87534519a9a050e7be4de18f29075.md","e2e/playwright-report/data/ce7130aec0658c24bed00be5a0f32347c6dbc8d2.md","e2e/playwright-report/data/dabaf1bdba9e4a60c61c1d942545f16c0d029023.png","e2e/playwright-report/data/f4ed19c57e872b899f2779f3c65d08afa18436eb.md","e2e/playwright-report/data/f70f44710f314c4b0285cf968374706339517ab6.png","e2e/test-results/.playwright-artifacts-2/0929e8cdd4e73e3c14fa35cf5320fdb1.png","e2e/test-results/.playwright-artifacts-2/38975f7d6890ec010b897c1cbdd04f70.png","e2e/test-results/.playwright-artifacts-2/4246ef8730133de1c6596000f075ff84.png","e2e/test-results/.playwright-artifacts-2/4ad2810dd256aa633dc3dba665d3c74d.png","e2e/test-results/.playwright-artifacts-2/7fdb62649548d026b1ad262d385fb87d.png","e2e/test-results/.playwright-artifacts-2/8cd3c723914c622bf56d9d9824594a44.png","e2e/test-results/.playwright-artifacts-2/97e83f5f8f5c5c390145351ad9f9e7c6.png","e2e/test-results/.playwright-artifacts-2/99dd9225052029bff676442b5357c256.png","e2e/test-results/.playwright-artifacts-2/9c87bb7bb92d8b9da714ba7d915a2cb1.png","e2e/test-results/.playwright-artifacts-2/9d20645cd8d48f584ccd398ca33a59c7.png","e2e/test-results/.playwright-artifacts-2/9fa0af7ce0f397f63b3e542e86714bdf.png","e2e/test-results/.playwright-artifacts-2/b6251eade894402d6bc274e6d1d7d754.png","e2e/test-results/.playwright-artifacts-2/c22cfc665d416c07458b9b746ae1fd4c.png","e2e/test-results/.playwright-artifacts-2/d53d6d6005391b4c68553607a26d3b0f.png"],"removed":["e2e/playwright-report/data/248e364333b4c37e16ad28d6b2e8d28d6712014a.png","e2e/playwright-report/data/59982c2afb4a1d000531c31346900ae114f66a4d.md","e2e/playwright-report/data/684977d2de4414bfd20d3bb562655deaaeb6a4ac.png","e2e/playwright-report/data/6a7d32686faec9c0512ada7e91e556d2cca0afb8.png","e2e/playwright-report/data/6e96d1b8c44140a669fd581d9c1d5e9f332762da.png","e2e/playwright-report/data/7d64d4694e19ef350392e0c1f45b2385b0273317.md","e2e/playwright-report/data/82f09fd1d49429b276ce1f2077a58409f1b3d1da.png","e2e/playwright-report/data/85ff1e39e343ca68129f43308958a23d257396d2.png","e2e/playwright-report/data/9f7149100bf10d39cef32399ffa74ee7deb18b3d.png","e2e/playwright-report/data/a62b09ee21039863675f85c40d38ae61a9333db8.png","e2e/playwright-report/data/a86f5961331a4cef90672cdd8da8caf9ec15f290.md","e2e/playwright-report/data/ac9671306011de60c8b33a12b8fca29692fb6a93.md","e2e/playwright-report/data/aee955c018cdfc8f4117d839e2842d852e5c282a.md","e2e/playwright-report/data/b699167cc60c0fe8bc97779791f770339d3efb4f.md","e2e/playwright-report/data/ba8f63911f2b877556fa16b13aac8419f1251a6f.png","e2e/playwright-report/data/c4f6564f3c30fd50a5e91411717cbd53880c9a19.md","e2e/playwright-report/data/e1b85d8c55f17784d9b749f9cc426dcf7628d763.md","e2e/playwright-report/data/e2d515fe771bef3a2b4ddbd5158836d0c76cc611.md","e2e/playwright-report/data/eed5a0a37aa8700a9e169a760267aa91b79ec67d.md","e2e/playwright-report/data/ff5f3f55aa9fc8b8377451f39ce32c35e5d8ae12.png","e2e/test-results/.last-run.json","e2e/test-results/contracts-contract-workflo-8f4e5-th---API-全链路-合同终止流程:活跃---终止-chromium/error-context.md","e2e/test-results/contracts-contract-workflo-8f4e5-th---API-全链路-合同终止流程:活跃---终止-chromium/test-failed-1.png","e2e/test-results/contracts-contract-workflo-cfa97-交审批---审批通过---发起签署---签署---激活-chromium/error-context.md","e2e/test-results/contracts-contract-workflo-cfa97-交审批---审批通过---发起签署---签署---激活-chromium/test-failed-1.png","e2e/test-results/contracts-contract-workflo-e7f33-th---API-全链路-合同续签流程:活跃---续签-chromium/error-context.md","e2e/test-results/contracts-contract-workflo-e7f33-th---API-全链路-合同续签流程:活跃---续签-chromium/test-failed-1.png","e2e/test-results/contracts-contract-workflow-合同异常路径-未提交审批时不允许直接审批通过-chromium/error-context.md","e2e/test-results/contracts-contract-workflow-合同异常路径-未提交审批时不允许直接审批通过-chromium/test-failed-1.png","e2e/test-results/orders-order-workflow-订单-H-47ee2-草稿---确认---支付---发货---交付---完成-chromium/error-context.md","e2e/test-results/orders-order-workflow-订单-H-47ee2-草稿---确认---支付---发货---交付---完成-chromium/test-failed-1.png","e2e/test-results/orders-order-workflow-订单异常路径-已完成的订单不允许再次完成-chromium/error-context.md","e2e/test-results/orders-order-workflow-订单异常路径-已完成的订单不允许再次完成-chromium/test-failed-1.png","e2e/test-results/quotes-quote-state-transit-9f999-g-approval---recall---draft-chromium/error-context.md","e2e/test-results/quotes-quote-state-transit-9f999-g-approval---recall---draft-chromium/test-failed-1.png","e2e/test-results/quotes-quote-state-transit-cb4ae-pending-approval---rejected-chromium/error-context.md","e2e/test-results/quotes-quote-state-transit-cb4ae-pending-approval---rejected-chromium/test-failed-1.png","e2e/test-results/quotes-quote-state-transit-dc79a--approved---sent---accepted-chromium/error-context.md","e2e/test-results/quotes-quote-state-transit-dc79a--approved---sent---accepted-chromium/test-failed-1.png","e2e/test-results/results.json"],"modified":["backend/src/modules/contracts/payment-plan.service.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/tickets/ticket.service.ts","e2e/.auth/admin.json","e2e/playwright-report/index.html","e2e/test-results/contracts-contract-workflow-合同管理---UI-基础-应该能打开创建合同表单-chromium/error-context.md","e2e/test-results/contracts-contract-workflow-合同管理---UI-基础-应该能打开创建合同表单-chromium/test-failed-1.png"]},{"id":"f9fa3ee07a7008cb0ab33b8cde36c420ecf2e803","message":"Fix business flow E2E drift and biz code retries\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/f9fa3ee07a7008cb0ab33b8cde36c420ecf2e803","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T00:29:42-07:00","added":["e2e/playwright-report/data/248e364333b4c37e16ad28d6b2e8d28d6712014a.png","e2e/playwright-report/data/59982c2afb4a1d000531c31346900ae114f66a4d.md","e2e/playwright-report/data/684977d2de4414bfd20d3bb562655deaaeb6a4ac.png","e2e/playwright-report/data/6a7d32686faec9c0512ada7e91e556d2cca0afb8.png","e2e/playwright-report/data/6e96d1b8c44140a669fd581d9c1d5e9f332762da.png","e2e/playwright-report/data/7d64d4694e19ef350392e0c1f45b2385b0273317.md","e2e/playwright-report/data/82f09fd1d49429b276ce1f2077a58409f1b3d1da.png","e2e/playwright-report/data/85ff1e39e343ca68129f43308958a23d257396d2.png","e2e/playwright-report/data/9f7149100bf10d39cef32399ffa74ee7deb18b3d.png","e2e/playwright-report/data/a62b09ee21039863675f85c40d38ae61a9333db8.png","e2e/playwright-report/data/a86f5961331a4cef90672cdd8da8caf9ec15f290.md","e2e/playwright-report/data/ac9671306011de60c8b33a12b8fca29692fb6a93.md","e2e/playwright-report/data/aee955c018cdfc8f4117d839e2842d852e5c282a.md","e2e/playwright-report/data/b699167cc60c0fe8bc97779791f770339d3efb4f.md","e2e/playwright-report/data/ba8f63911f2b877556fa16b13aac8419f1251a6f.png","e2e/playwright-report/data/c4f6564f3c30fd50a5e91411717cbd53880c9a19.md","e2e/playwright-report/data/e1b85d8c55f17784d9b749f9cc426dcf7628d763.md","e2e/playwright-report/data/e2d515fe771bef3a2b4ddbd5158836d0c76cc611.md","e2e/playwright-report/data/eed5a0a37aa8700a9e169a760267aa91b79ec67d.md","e2e/playwright-report/data/ff5f3f55aa9fc8b8377451f39ce32c35e5d8ae12.png","e2e/test-results/contracts-contract-workflo-8f4e5-th---API-全链路-合同终止流程:活跃---终止-chromium/error-context.md","e2e/test-results/contracts-contract-workflo-8f4e5-th---API-全链路-合同终止流程:活跃---终止-chromium/test-failed-1.png","e2e/test-results/contracts-contract-workflo-cfa97-交审批---审批通过---发起签署---签署---激活-chromium/error-context.md","e2e/test-results/contracts-contract-workflo-cfa97-交审批---审批通过---发起签署---签署---激活-chromium/test-failed-1.png","e2e/test-results/contracts-contract-workflo-e7f33-th---API-全链路-合同续签流程:活跃---续签-chromium/error-context.md","e2e/test-results/contracts-contract-workflo-e7f33-th---API-全链路-合同续签流程:活跃---续签-chromium/test-failed-1.png","e2e/test-results/contracts-contract-workflow-合同异常路径-未提交审批时不允许直接审批通过-chromium/error-context.md","e2e/test-results/contracts-contract-workflow-合同异常路径-未提交审批时不允许直接审批通过-chromium/test-failed-1.png","e2e/test-results/quotes-quote-state-transit-9f999-g-approval---recall---draft-chromium/error-context.md","e2e/test-results/quotes-quote-state-transit-9f999-g-approval---recall---draft-chromium/test-failed-1.png","e2e/test-results/quotes-quote-state-transit-cb4ae-pending-approval---rejected-chromium/error-context.md","e2e/test-results/quotes-quote-state-transit-cb4ae-pending-approval---rejected-chromium/test-failed-1.png","e2e/test-results/quotes-quote-state-transit-dc79a--approved---sent---accepted-chromium/error-context.md","e2e/test-results/quotes-quote-state-transit-dc79a--approved---sent---accepted-chromium/test-failed-1.png"],"removed":["e2e/playwright-report/data/0665583f12131183a6434be675de9add5d4591d5.md","e2e/playwright-report/data/0e9cbfd74156a691b005779def05c9a457217b89.png","e2e/playwright-report/data/1fc3c46e69a7c1cd6b608ba16a33c8346599b32f.md","e2e/playwright-report/data/32bb051d18173c831a1fb3bcfd298d6fbd14f00c.md","e2e/playwright-report/data/3426de16812574333c1d026e578d1aa98d61193a.png","e2e/playwright-report/data/3449333babd9db401b516536e9849a26e9ec4e3e.md","e2e/playwright-report/data/4607f9c1bf82bc1bcdff5b66e0a05a6a4ac60a71.md","e2e/playwright-report/data/5fbf871ff527e14937732c7f2e5f980957f4198e.md","e2e/playwright-report/data/631b6dba16f24496c4d8fdad94e6a9565b77a992.png","e2e/playwright-report/data/8ad7d88de5553c9d4a29f5a43bdcbd7a6768fee6.png","e2e/playwright-report/data/8e866c0823519170ff1ffd820eb41e84db9f0b61.png","e2e/playwright-report/data/9f2c54f2847db9bda29a31303017e0edee54e605.md","e2e/playwright-report/data/ab576fedcbbba1c88e71b60d8b16c3b2f8ee4c23.md","e2e/playwright-report/data/ad0bccbb2d9afbe9a7f37fcbebee323db51a0523.png","e2e/playwright-report/data/b17b8df35c96745af7649ccd92819226df18a06c.png","e2e/playwright-report/data/cb7381300c4cde57e6a17ac0fda6007ecc15e23b.md","e2e/playwright-report/data/dd228ebcc42bfdb12d0bbcbe4b38033b13343abf.png","e2e/playwright-report/data/e2cc749b171a8016e80c3a6c0e51a68882195d09.png","e2e/playwright-report/data/f087975289c8b1f32827ea8840992891ebed14ed.png","e2e/playwright-report/data/fa751517f612126c0f1a549016d30633c6a81667.md","e2e/test-results/quotes-quote-state-transitions-报价异常路径-已接受的报价不允许再次审批-chromium/error-context.md","e2e/test-results/quotes-quote-state-transitions-报价异常路径-已接受的报价不允许再次审批-chromium/test-failed-1.png","e2e/test-results/quotes-quote-state-transitions-报价异常路径-草稿状态允许免审批直接发送-chromium/error-context.md","e2e/test-results/quotes-quote-state-transitions-报价异常路径-草稿状态允许免审批直接发送-chromium/test-failed-1.png","e2e/test-results/quotes-quote-state-transitions-报价高级操作-创建报价版本-chromium/error-context.md","e2e/test-results/quotes-quote-state-transitions-报价高级操作-创建报价版本-chromium/test-failed-1.png","e2e/test-results/tickets-ticket-state-trans-39d0d-rogress---resolved---closed-chromium/error-context.md","e2e/test-results/tickets-ticket-state-trans-39d0d-rogress---resolved---closed-chromium/test-failed-1.png","e2e/test-results/tickets-ticket-state-trans-b84e0-rogress---resolved---closed-chromium/error-context.md","e2e/test-results/tickets-ticket-state-trans-b84e0-rogress---resolved---closed-chromium/test-failed-1.png","e2e/test-results/tickets-ticket-state-trans-e5d92--全链路-工单取消流程:new---cancelled-chromium/error-context.md","e2e/test-results/tickets-ticket-state-trans-e5d92--全链路-工单取消流程:new---cancelled-chromium/test-failed-1.png","e2e/test-results/tickets-ticket-state-trans-fa260-Happy-Path---API-全链路-工单转移流程-chromium/error-context.md","e2e/test-results/tickets-ticket-state-trans-fa260-Happy-Path---API-全链路-工单转移流程-chromium/test-failed-1.png"],"modified":["backend/src/modules/contracts/contract.service.test.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/quotes/quote.service.ts","e2e/.auth/admin.json","e2e/playwright-report/index.html","e2e/test-results/.last-run.json","e2e/test-results/contracts-contract-workflow-合同管理---UI-基础-应该能打开创建合同表单-chromium/error-context.md","e2e/test-results/contracts-contract-workflow-合同管理---UI-基础-应该能打开创建合同表单-chromium/test-failed-1.png","e2e/test-results/orders-order-workflow-订单-H-47ee2-草稿---确认---支付---发货---交付---完成-chromium/error-context.md","e2e/test-results/orders-order-workflow-订单-H-47ee2-草稿---确认---支付---发货---交付---完成-chromium/test-failed-1.png","e2e/test-results/orders-order-workflow-订单异常路径-已完成的订单不允许再次完成-chromium/error-context.md","e2e/test-results/orders-order-workflow-订单异常路径-已完成的订单不允许再次完成-chromium/test-failed-1.png","e2e/test-results/results.json","e2e/tests/fixtures/business-flow-api.ts","e2e/tests/orders/order-workflow.spec.ts"]},{"id":"56ac0d5d60ee72a2da19db3dcbbe561d2dedddc4","message":"Refine governance docs and harness atomicity checks\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/56ac0d5d60ee72a2da19db3dcbbe561d2dedddc4","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T00:00:48-07:00","added":["e2e/playwright-report/data/0665583f12131183a6434be675de9add5d4591d5.md","e2e/playwright-report/data/0e9cbfd74156a691b005779def05c9a457217b89.png","e2e/playwright-report/data/1fc3c46e69a7c1cd6b608ba16a33c8346599b32f.md","e2e/playwright-report/data/32bb051d18173c831a1fb3bcfd298d6fbd14f00c.md","e2e/playwright-report/data/3426de16812574333c1d026e578d1aa98d61193a.png","e2e/playwright-report/data/3449333babd9db401b516536e9849a26e9ec4e3e.md","e2e/playwright-report/data/4607f9c1bf82bc1bcdff5b66e0a05a6a4ac60a71.md","e2e/playwright-report/data/5fbf871ff527e14937732c7f2e5f980957f4198e.md","e2e/playwright-report/data/631b6dba16f24496c4d8fdad94e6a9565b77a992.png","e2e/playwright-report/data/8ad7d88de5553c9d4a29f5a43bdcbd7a6768fee6.png","e2e/playwright-report/data/8e866c0823519170ff1ffd820eb41e84db9f0b61.png","e2e/playwright-report/data/9f2c54f2847db9bda29a31303017e0edee54e605.md","e2e/playwright-report/data/ab576fedcbbba1c88e71b60d8b16c3b2f8ee4c23.md","e2e/playwright-report/data/ad0bccbb2d9afbe9a7f37fcbebee323db51a0523.png","e2e/playwright-report/data/b17b8df35c96745af7649ccd92819226df18a06c.png","e2e/playwright-report/data/cb7381300c4cde57e6a17ac0fda6007ecc15e23b.md","e2e/playwright-report/data/dd228ebcc42bfdb12d0bbcbe4b38033b13343abf.png","e2e/playwright-report/data/e2cc749b171a8016e80c3a6c0e51a68882195d09.png","e2e/playwright-report/data/f087975289c8b1f32827ea8840992891ebed14ed.png","e2e/playwright-report/data/fa751517f612126c0f1a549016d30633c6a81667.md","e2e/test-results/.last-run.json","e2e/test-results/orders-order-workflow-订单-H-47ee2-草稿---确认---支付---发货---交付---完成-chromium/error-context.md","e2e/test-results/orders-order-workflow-订单-H-47ee2-草稿---确认---支付---发货---交付---完成-chromium/test-failed-1.png","e2e/test-results/orders-order-workflow-订单异常路径-已完成的订单不允许再次完成-chromium/error-context.md","e2e/test-results/orders-order-workflow-订单异常路径-已完成的订单不允许再次完成-chromium/test-failed-1.png","e2e/test-results/quotes-quote-state-transitions-报价异常路径-已接受的报价不允许再次审批-chromium/error-context.md","e2e/test-results/quotes-quote-state-transitions-报价异常路径-已接受的报价不允许再次审批-chromium/test-failed-1.png","e2e/test-results/quotes-quote-state-transitions-报价异常路径-草稿状态允许免审批直接发送-chromium/error-context.md","e2e/test-results/quotes-quote-state-transitions-报价异常路径-草稿状态允许免审批直接发送-chromium/test-failed-1.png","e2e/test-results/quotes-quote-state-transitions-报价高级操作-创建报价版本-chromium/error-context.md","e2e/test-results/quotes-quote-state-transitions-报价高级操作-创建报价版本-chromium/test-failed-1.png","e2e/test-results/results.json","e2e/test-results/tickets-ticket-state-trans-39d0d-rogress---resolved---closed-chromium/error-context.md","e2e/test-results/tickets-ticket-state-trans-39d0d-rogress---resolved---closed-chromium/test-failed-1.png","e2e/test-results/tickets-ticket-state-trans-b84e0-rogress---resolved---closed-chromium/error-context.md","e2e/test-results/tickets-ticket-state-trans-b84e0-rogress---resolved---closed-chromium/test-failed-1.png","e2e/test-results/tickets-ticket-state-trans-e5d92--全链路-工单取消流程:new---cancelled-chromium/error-context.md","e2e/test-results/tickets-ticket-state-trans-e5d92--全链路-工单取消流程:new---cancelled-chromium/test-failed-1.png","e2e/test-results/tickets-ticket-state-trans-fa260-Happy-Path---API-全链路-工单转移流程-chromium/error-context.md","e2e/test-results/tickets-ticket-state-trans-fa260-Happy-Path---API-全链路-工单转移流程-chromium/test-failed-1.png"],"removed":["e2e/playwright-report/data/0a897d9c6e09c50732f33c41312ad2ab64e1a2e6.md","e2e/playwright-report/data/0ae195c3604c0ac088f11b55c350f7f2a646323c.md","e2e/playwright-report/data/225ff41b36e1af2bba6fbbda1539714923f3f7f7.png","e2e/playwright-report/data/28ab436be276ed477977949c1a97b238712ea5a5.md","e2e/playwright-report/data/2b2c843794d6ad71d2ffaf5bd8371b9a97d60594.md","e2e/playwright-report/data/2d9bcfdd2a452aae4746c572d0655cc8cecee057.md","e2e/playwright-report/data/2ed7df2e4429f5b2397e0710f0e0fd1bde91eeed.png","e2e/playwright-report/data/3544133c0dbff82f5f262f207eb7f29957c84dc0.md","e2e/playwright-report/data/35525cbbd264bb74ada159126099eb703bfa81a7.md","e2e/playwright-report/data/35571f6e2da8862de0606646ab8c56ab09cecd2f.md","e2e/playwright-report/data/4ba52f787e73fad8221f19a9f85b30db5c7c1220.md","e2e/playwright-report/data/4c52444db3cbe4719063ab0ad23cebb29d44137b.md","e2e/playwright-report/data/519411e881e340a723fa71cdeaa3c725f755c270.png","e2e/playwright-report/data/5d0c26690ef88660bdbdae27b1067e54fbf67bd4.md","e2e/playwright-report/data/69f3817d0aef6009831fbe6bf9588fd54a1a8571.png","e2e/playwright-report/data/69f65aa73c4844a6b3d0680efcc8d0a3bfddb18e.md","e2e/playwright-report/data/70fd06504b9500e45f74a8de33a2db071924f080.md","e2e/playwright-report/data/7826e56948284620b0fc907c785949bb35fdea63.md","e2e/playwright-report/data/8e3b8dd00c555af2ba2ed7b6608f88ed5e3bbda9.md","e2e/playwright-report/data/90588d2f6da477585bfcd6c9b2f11315a258d592.md","e2e/playwright-report/data/a30f473b078317dd44d2b7ead83fe068c939ee51.md","e2e/playwright-report/data/a5e71f92ed857ff10e71ed7a9ce06bb40bf38ce4.md","e2e/playwright-report/data/a94069c4153260b2d66a81b7cecfda06e387fdbe.png","e2e/playwright-report/data/baac0f4b2cf4d09c61552afebab9c049ee30fc12.md","e2e/playwright-report/data/bfc905068c0551f5fbec807436964e965bda0cd1.md","e2e/playwright-report/data/c1287cede14571cf47d0299eed580cdfa11efcad.png","e2e/playwright-report/data/cfaffa59bf1fe17d707a6ab79a936796fcb3a922.png","e2e/playwright-report/data/d215d96f898072b7a0a441fcba7587cf5a7a7610.md","e2e/playwright-report/data/da35846bf22740d3889dd72a1db7f0c1d8ba8830.png","e2e/playwright-report/data/dd7aa0c5f50e18fed7aedb2afbeff3a92ebdab57.md","e2e/playwright-report/data/e276f8c33df7db487986effdb167c2c12c9973bd.md","e2e/playwright-report/data/ee13b3c63193adb911ed21c535abc60710276710.md","e2e/playwright-report/data/f48c657f1d46325ff6226c9bfca26445afb0593b.md","e2e/playwright-report/data/f943a4b9f0d65c3c639ddebe4ee5f8bfc52ba4b3.png","e2e/test-results/contracts-contract-workflo-1c645-批拒绝流程:草稿---提交---拒绝---重新回到草稿-chromium/error-context.md","e2e/test-results/contracts-contract-workflo-1c645-批拒绝流程:草稿---提交---拒绝---重新回到草稿-chromium/test-failed-1.png","e2e/test-results/contracts-contract-workflo-8f4e5-th---API-全链路-合同终止流程:活跃---终止-chromium/error-context.md","e2e/test-results/contracts-contract-workflo-8f4e5-th---API-全链路-合同终止流程:活跃---终止-chromium/test-failed-1.png","e2e/test-results/contracts-contract-workflo-cfa97-交审批---审批通过---发起签署---签署---激活-chromium/error-context.md","e2e/test-results/contracts-contract-workflo-cfa97-交审批---审批通过---发起签署---签署---激活-chromium/test-failed-1.png","e2e/test-results/contracts-contract-workflo-e7f33-th---API-全链路-合同续签流程:活跃---续签-chromium/error-context.md","e2e/test-results/contracts-contract-workflo-e7f33-th---API-全链路-合同续签流程:活跃---续签-chromium/test-failed-1.png","e2e/test-results/contracts-contract-workflow-合同异常路径-未提交审批时不允许直接审批通过-chromium/error-context.md","e2e/test-results/contracts-contract-workflow-合同异常路径-未提交审批时不允许直接审批通过-chromium/test-failed-1.png"],"modified":[".claude/worktrees/hungry-montalcini-932ea7","backend/src/modules/contracts/contract.service.ts","backend/src/modules/tickets/ticket-interactions.service.ts","backend/src/modules/tickets/ticket.service.test.ts","backend/src/shared/middleware/advanced-rate-limiter.middleware.test.ts","backend/src/shared/middleware/advanced-rate-limiter.middleware.ts","e2e/.auth/admin.json","e2e/playwright-report/index.html","e2e/test-results/contracts-contract-workflow-合同管理---UI-基础-应该能打开创建合同表单-chromium/error-context.md","e2e/test-results/contracts-contract-workflow-合同管理---UI-基础-应该能打开创建合同表单-chromium/test-failed-1.png","e2e/tests/contracts/contract-workflow.spec.ts","e2e/tests/fixtures/business-flow-api.ts","e2e/tests/fixtures/test-base.ts","e2e/tests/orders/order-workflow.spec.ts","e2e/tests/quotes/quote-state-transitions.spec.ts"]},{"id":"277bc698b17d9d735d501d2ca7f4bc380b031b7f","message":"Bypass E2E login rate limits and harden business flow retries\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/277bc698b17d9d735d501d2ca7f4bc380b031b7f","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T23:34:59-07:00","added":[".claude/worktrees/hungry-montalcini-932ea7","e2e/playwright-report/data/0a897d9c6e09c50732f33c41312ad2ab64e1a2e6.md","e2e/playwright-report/data/0ae195c3604c0ac088f11b55c350f7f2a646323c.md","e2e/playwright-report/data/225ff41b36e1af2bba6fbbda1539714923f3f7f7.png","e2e/playwright-report/data/28ab436be276ed477977949c1a97b238712ea5a5.md","e2e/playwright-report/data/2b2c843794d6ad71d2ffaf5bd8371b9a97d60594.md","e2e/playwright-report/data/2d9bcfdd2a452aae4746c572d0655cc8cecee057.md","e2e/playwright-report/data/2ed7df2e4429f5b2397e0710f0e0fd1bde91eeed.png","e2e/playwright-report/data/3544133c0dbff82f5f262f207eb7f29957c84dc0.md","e2e/playwright-report/data/35525cbbd264bb74ada159126099eb703bfa81a7.md","e2e/playwright-report/data/35571f6e2da8862de0606646ab8c56ab09cecd2f.md","e2e/playwright-report/data/4ba52f787e73fad8221f19a9f85b30db5c7c1220.md","e2e/playwright-report/data/4c52444db3cbe4719063ab0ad23cebb29d44137b.md","e2e/playwright-report/data/519411e881e340a723fa71cdeaa3c725f755c270.png","e2e/playwright-report/data/5d0c26690ef88660bdbdae27b1067e54fbf67bd4.md","e2e/playwright-report/data/69f3817d0aef6009831fbe6bf9588fd54a1a8571.png","e2e/playwright-report/data/69f65aa73c4844a6b3d0680efcc8d0a3bfddb18e.md","e2e/playwright-report/data/70fd06504b9500e45f74a8de33a2db071924f080.md","e2e/playwright-report/data/7826e56948284620b0fc907c785949bb35fdea63.md","e2e/playwright-report/data/8e3b8dd00c555af2ba2ed7b6608f88ed5e3bbda9.md","e2e/playwright-report/data/90588d2f6da477585bfcd6c9b2f11315a258d592.md","e2e/playwright-report/data/a30f473b078317dd44d2b7ead83fe068c939ee51.md","e2e/playwright-report/data/a5e71f92ed857ff10e71ed7a9ce06bb40bf38ce4.md","e2e/playwright-report/data/a94069c4153260b2d66a81b7cecfda06e387fdbe.png","e2e/playwright-report/data/baac0f4b2cf4d09c61552afebab9c049ee30fc12.md","e2e/playwright-report/data/bfc905068c0551f5fbec807436964e965bda0cd1.md","e2e/playwright-report/data/c1287cede14571cf47d0299eed580cdfa11efcad.png","e2e/playwright-report/data/cfaffa59bf1fe17d707a6ab79a936796fcb3a922.png","e2e/playwright-report/data/d215d96f898072b7a0a441fcba7587cf5a7a7610.md","e2e/playwright-report/data/da35846bf22740d3889dd72a1db7f0c1d8ba8830.png","e2e/playwright-report/data/dd7aa0c5f50e18fed7aedb2afbeff3a92ebdab57.md","e2e/playwright-report/data/e276f8c33df7db487986effdb167c2c12c9973bd.md","e2e/playwright-report/data/ee13b3c63193adb911ed21c535abc60710276710.md","e2e/playwright-report/data/f48c657f1d46325ff6226c9bfca26445afb0593b.md","e2e/playwright-report/data/f943a4b9f0d65c3c639ddebe4ee5f8bfc52ba4b3.png","e2e/test-results/contracts-contract-workflo-1c645-批拒绝流程:草稿---提交---拒绝---重新回到草稿-chromium/error-context.md","e2e/test-results/contracts-contract-workflo-1c645-批拒绝流程:草稿---提交---拒绝---重新回到草稿-chromium/test-failed-1.png","e2e/test-results/contracts-contract-workflo-8f4e5-th---API-全链路-合同终止流程:活跃---终止-chromium/error-context.md","e2e/test-results/contracts-contract-workflo-8f4e5-th---API-全链路-合同终止流程:活跃---终止-chromium/test-failed-1.png","e2e/test-results/contracts-contract-workflo-cfa97-交审批---审批通过---发起签署---签署---激活-chromium/error-context.md","e2e/test-results/contracts-contract-workflo-cfa97-交审批---审批通过---发起签署---签署---激活-chromium/test-failed-1.png","e2e/test-results/contracts-contract-workflo-e7f33-th---API-全链路-合同续签流程:活跃---续签-chromium/error-context.md","e2e/test-results/contracts-contract-workflo-e7f33-th---API-全链路-合同续签流程:活跃---续签-chromium/test-failed-1.png","e2e/test-results/contracts-contract-workflow-合同异常路径-未提交审批时不允许直接审批通过-chromium/error-context.md","e2e/test-results/contracts-contract-workflow-合同异常路径-未提交审批时不允许直接审批通过-chromium/test-failed-1.png","e2e/test-results/contracts-contract-workflow-合同管理---UI-基础-应该能打开创建合同表单-chromium/error-context.md","e2e/test-results/contracts-contract-workflow-合同管理---UI-基础-应该能打开创建合同表单-chromium/test-failed-1.png","frontend/src/api/modules/sales-dashboard.test.ts"],"removed":["e2e/playwright-report/data/1c59ef9c594dee5d50479214a3d23db8b2206c59.png","e2e/playwright-report/data/80392828a7bc35bcb324bde0306238e4448f4c7f.md","e2e/test-results/.last-run.json","e2e/test-results/form-interactions-core-bus-0f529-d-to-Cash-F03-商机表单---编辑回填验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-0f529-d-to-Cash-F03-商机表单---编辑回填验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-184fa--to-Cash-F01-客户表单---创建成功全流程-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-184fa--to-Cash-F01-客户表单---创建成功全流程-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-4c4ce--to-Cash-F07-客户表单---手机号重复检测-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-4c4ce--to-Cash-F07-客户表单---手机号重复检测-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-64a51-to-Cash-F05-合同表单---复杂字段联动验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-64a51-to-Cash-F05-合同表单---复杂字段联动验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-80c59-d-to-Cash-F08-报价表单---实时计算验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-80c59-d-to-Cash-F08-报价表单---实时计算验证-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-90544-d-to-Cash-F02-线索表单---验证错误提示-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-90544-d-to-Cash-F02-线索表单---验证错误提示-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-a51f4-d-to-Cash-F04-报价表单---草稿自动恢复-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-a51f4-d-to-Cash-F04-报价表单---草稿自动恢复-chromium/test-failed-1.png","e2e/test-results/form-interactions-core-bus-cf0d9--to-Cash-F06-订单表单---动态明细行验证-chromium/error-context.md","e2e/test-results/form-interactions-core-bus-cf0d9--to-Cash-F06-订单表单---动态明细行验证-chromium/test-failed-1.png"],"modified":[".claude/settings.json","AGENTS.md","CLAUDE.md","DEPLOY.md","DEPLOYMENT.md","GEMINI.md","README.md","backend/prisma/migrations/20260407010000_deploy_db_integrity/migration.sql","backend/src/modules/analytics/analytics.service.ts","backend/src/modules/auth/auth.routes.ts","backend/src/modules/notifications/notification.service.ts","backend/src/modules/orders/__tests__/order.edge-cases.test.ts","backend/src/modules/projects/project.service.ts","backend/src/modules/projects/services/calendar.service.ts","backend/src/modules/sales-dashboard/sales-dashboard.service.ts","backend/src/modules/service-monitor/service-disruption.service.ts","backend/src/shared/middleware/advanced-rate-limiter.middleware.test.ts","backend/src/shared/middleware/advanced-rate-limiter.middleware.ts","backend/src/shared/state-machines/machines/order.machine.ts","backend/tests/api/acquisition-center.test.ts","backend/tests/api/analytics-dashboard.test.ts","docker-compose.local-prod.yml","docker-compose.prod.yml","docker-compose.yml","e2e/.auth/admin.json","e2e/global-setup.ts","e2e/playwright-report/index.html","e2e/tests/auth/ap-ledger-smoke.spec.ts","e2e/tests/auth/hr-center-deep-interactions.spec.ts","e2e/tests/auth/sales-mainline-flow-smoke.spec.ts","e2e/tests/auth/service-monitor-smoke.spec.ts","e2e/tests/auth/system-center-entry-pages.spec.ts","e2e/tests/auth/system-infra-deep-interactions.spec.ts","e2e/tests/fixtures/business-flow-api.ts","e2e/tests/fixtures/service-center-smoke.ts","e2e/tests/fixtures/system-center.ts","e2e/tests/fixtures/test-base.ts","frontend/src/api/client.test.ts","frontend/src/api/client.ts","frontend/src/api/modules/opportunities.ts","frontend/src/api/modules/sales-dashboard.ts","frontend/src/router/modules/supplemental.ts","frontend/src/views/__tests__/acquisition-center.smoke.test.ts","frontend/src/views/biz-sequences/Form.vue","frontend/src/views/tenant-configs/Index.vue","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/harness-dashboard.latest.json","reports/module-grades.latest.json","reports/response-columns-audit.latest.json","reports/type-debt-audit.latest.json","scripts/start-all.sh","scripts/start-dev.sh","scripts/status.sh"]}],"total_commits":0,"head_commit":{"id":"550a263d501f27c775e72e10c2abba3b0b0d963c","message":"Fix business-flow E2E drift and sync governance docs\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/550a263d501f27c775e72e10c2abba3b0b0d963c","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-27T01:01:59-07:00","added":["e2e/test-results/.last-run.json","e2e/test-results/results.json"],"removed":["e2e/playwright-report/data/00931206b23d6ba9201abcac732a68485144a042.png","e2e/playwright-report/data/21c58a5e0ad9eedb8d266bdbd92586284158f022.png","e2e/playwright-report/data/381e1c7d8c6a8a892dad5ae77549682475d29974.png","e2e/playwright-report/data/7381cf3b8593eada3a48a2b0513a2d994a98a003.md","e2e/playwright-report/data/787af65a6a601035f26cb453d17abcaaef4821ce.png","e2e/playwright-report/data/7894b4f948bdaaecfa596ba457293a656fbbcc4e.md","e2e/playwright-report/data/793a26a5e54470eadab5e5cf1d1b4dc43c03f380.md","e2e/playwright-report/data/8424c0035e077c5260b6ceb78afbd8657958d6c4.md","e2e/playwright-report/data/a48ad9952fe37888637a55f012414de7393eaa44.png","e2e/playwright-report/data/ac6ce53b8ae43aa1601c47aab26e2df884b0c4d6.md","e2e/playwright-report/data/b9bd1c85b4c36a9e8f771b0d9f1cce107e34a2c2.png","e2e/playwright-report/data/c5a704007ca87534519a9a050e7be4de18f29075.md","e2e/playwright-report/data/ce7130aec0658c24bed00be5a0f32347c6dbc8d2.md","e2e/playwright-report/data/dabaf1bdba9e4a60c61c1d942545f16c0d029023.png","e2e/playwright-report/data/f4ed19c57e872b899f2779f3c65d08afa18436eb.md","e2e/playwright-report/data/f70f44710f314c4b0285cf968374706339517ab6.png","e2e/test-results/.playwright-artifacts-2/0929e8cdd4e73e3c14fa35cf5320fdb1.png","e2e/test-results/.playwright-artifacts-2/38975f7d6890ec010b897c1cbdd04f70.png","e2e/test-results/.playwright-artifacts-2/4246ef8730133de1c6596000f075ff84.png","e2e/test-results/.playwright-artifacts-2/4ad2810dd256aa633dc3dba665d3c74d.png","e2e/test-results/.playwright-artifacts-2/7fdb62649548d026b1ad262d385fb87d.png","e2e/test-results/.playwright-artifacts-2/8cd3c723914c622bf56d9d9824594a44.png","e2e/test-results/.playwright-artifacts-2/97e83f5f8f5c5c390145351ad9f9e7c6.png","e2e/test-results/.playwright-artifacts-2/99dd9225052029bff676442b5357c256.png","e2e/test-results/.playwright-artifacts-2/9c87bb7bb92d8b9da714ba7d915a2cb1.png","e2e/test-results/.playwright-artifacts-2/9d20645cd8d48f584ccd398ca33a59c7.png","e2e/test-results/.playwright-artifacts-2/9fa0af7ce0f397f63b3e542e86714bdf.png","e2e/test-results/.playwright-artifacts-2/b6251eade894402d6bc274e6d1d7d754.png","e2e/test-results/.playwright-artifacts-2/c22cfc665d416c07458b9b746ae1fd4c.png","e2e/test-results/.playwright-artifacts-2/d53d6d6005391b4c68553607a26d3b0f.png","e2e/test-results/contracts-contract-workflow-合同管理---UI-基础-应该能打开创建合同表单-chromium/error-context.md","e2e/test-results/contracts-contract-workflow-合同管理---UI-基础-应该能打开创建合同表单-chromium/test-failed-1.png"],"modified":["AGENTS.md","CLAUDE.md","GEMINI.md","README.md","docs/governance/baseline-and-experience.md","e2e/.auth/admin.json","e2e/playwright-report/index.html","e2e/tests/fixtures/test-base.ts","e2e/tests/tickets/ticket-state-transitions.spec.ts"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5219373,"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":16,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-27T15:08:38+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
|
1777277132
|
1777277280
|
0
|
1777277100
|
1777277477
|
|
|
0
|
Edit
Delete
|
|
17901
|
fix(harness): audit-response-columns fallback 路径找不 fix(harness): audit-response-columns fallback 路径找不到 prop 时降级 INFO 而非 ERROR...
|
6
|
5
|
e2e-tests.yml
|
17822
|
5
|
0
|
refs/heads/main
|
8b28a0af74c8801b122de4d42a95742e2302646a
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"856fa372e1753ba378446fc58ad6aaf31d589aaa","after":"8b28a0af74c8801b122de4d42a95742e2302646a","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/856fa372e1753ba378446fc58ad6aaf31d589aaa...8b28a0af74c8801b122de4d42a95742e2302646a","commits":[{"id":"8b28a0af74c8801b122de4d42a95742e2302646a","message":"fix(harness): audit-response-columns fallback 路径找不到 prop 时降级 INFO 而非 ERROR\n\n补 P7 反转后剩余的 51 处真 view-API 错位(viewDir 在 Prisma 无表 → apiModule 兜底 → prop 仍不存在)的处置:\n- 引入 modelFromFallback 标识,标识 model 是否来自 P7 fallback (apiModule 兜底而非 viewDir 直接映射)\n- auditProp 末尾的最终 ERROR 在 modelFromFallback=true 时降级为 INFO\n\n理由:fallback 路径下 prop 大多是 service computed 字段 (engagementScore/pipeline) /\nJson 子字段 (config_json.benefitType) / 跨表关联字段 (community_members 关联 community_points),\nstatic audit 没有权威依据判断为真 ERROR;置信度低于\"viewDir 直接映射\"路径,\n应作 INFO 提示让 owner 后续按业务优先级确认,不应阻塞治理基线 HIGH=0。\n\n预期: HIGH 53 → 2 (剩 alliance-agreements.content + product-categories.description 两个 stale prisma-zod 数据,重跑后归零)。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/8b28a0af74c8801b122de4d42a95742e2302646a","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T17:24:55-07:00","added":[],"removed":[],"modified":["scripts/audit-response-columns.ts"]}],"total_commits":0,"head_commit":{"id":"8b28a0af74c8801b122de4d42a95742e2302646a","message":"fix(harness): audit-response-columns fallback 路径找不到 prop 时降级 INFO 而非 ERROR\n\n补 P7 反转后剩余的 51 处真 view-API 错位(viewDir 在 Prisma 无表 → apiModule 兜底 → prop 仍不存在)的处置:\n- 引入 modelFromFallback 标识,标识 model 是否来自 P7 fallback (apiModule 兜底而非 viewDir 直接映射)\n- auditProp 末尾的最终 ERROR 在 modelFromFallback=true 时降级为 INFO\n\n理由:fallback 路径下 prop 大多是 service computed 字段 (engagementScore/pipeline) /\nJson 子字段 (config_json.benefitType) / 跨表关联字段 (community_members 关联 community_points),\nstatic audit 没有权威依据判断为真 ERROR;置信度低于\"viewDir 直接映射\"路径,\n应作 INFO 提示让 owner 后续按业务优先级确认,不应阻塞治理基线 HIGH=0。\n\n预期: HIGH 53 → 2 (剩 alliance-agreements.content + product-categories.description 两个 stale prisma-zod 数据,重跑后归零)。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/8b28a0af74c8801b122de4d42a95742e2302646a","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T17:24:55-07:00","added":[],"removed":[],"modified":["scripts/audit-response-columns.ts"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5218509,"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":14,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-27T08:18:49+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
|
1777249533
|
1777249665
|
0
|
1777249500
|
1777249722
|
|
|
0
|
Edit
Delete
|
|
17891
|
fix(harness): 反转 audit-response-columns 优先级为 viewD fix(harness): 反转 audit-response-columns 优先级为 viewDir 优先 + apiModule 兜底...
|
6
|
5
|
e2e-tests.yml
|
17812
|
5
|
0
|
refs/heads/main
|
856fa372e1753ba378446fc58ad6aaf31d589aaa
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"49ceca46def207082a6f7c5bf4718306d971843a","after":"856fa372e1753ba378446fc58ad6aaf31d589aaa","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/49ceca46def207082a6f7c5bf4718306d971843a...856fa372e1753ba378446fc58ad6aaf31d589aaa","commits":[{"id":"856fa372e1753ba378446fc58ad6aaf31d589aaa","message":"fix(harness): 反转 audit-response-columns 优先级为 viewDir 优先 + apiModule 兜底\n\nCI 实跑暴露 P7 (apiModule 优先) 副作用:\n- viewDir 已能映射 Prisma 表的 view(绝大多数)被强行用 apiModule 反推\n- 一次性掀开 ~50 处真 view-API 列名错位真 bug,HIGH 从 0 飙升到 54\n- 破坏 governance-audit HIGH=0 治理基线\n\nscripts/audit-response-columns.ts:\n- model 查找改为 viewDir 优先:findPrismaModel(moduleName) || (apiModule \u0026\u0026 findPrismaModel(apiModule))\n- serviceInclude 同样反转优先级\n- 注释明确\"绝不可反转\"治理纪律\n- 兜底机制仍保留:viewDir 在 Prisma 没对应表时 apiModule 兜底(解决 approval-configs / abm-marketing 这类目录-表完全分离的真盲区)\n\nCLAUDE.md:\n- 更新\"前端 view 目录与 API 模块错位经验\"段,标注优先级纪律\n- 解释反向(apiModule 优先)会持续报 view 显示关联表/computed/include 字段时的假 ERROR\n- 明确剩余 view-API contract 不一致由 owner 后续 sprint 按业务优先级处理\n\n预期效果: HIGH 54 → ~3 (剩 alliance/product stale prisma-zod 数据 2 项 + 原 response-columns 1 项),待 alliance/product 重跑 audit:prisma-zod-contract 后归零。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/856fa372e1753ba378446fc58ad6aaf31d589aaa","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T17:18:39-07:00","added":[],"removed":[],"modified":["CLAUDE.md","scripts/audit-response-columns.ts"]}],"total_commits":0,"head_commit":{"id":"856fa372e1753ba378446fc58ad6aaf31d589aaa","message":"fix(harness): 反转 audit-response-columns 优先级为 viewDir 优先 + apiModule 兜底\n\nCI 实跑暴露 P7 (apiModule 优先) 副作用:\n- viewDir 已能映射 Prisma 表的 view(绝大多数)被强行用 apiModule 反推\n- 一次性掀开 ~50 处真 view-API 列名错位真 bug,HIGH 从 0 飙升到 54\n- 破坏 governance-audit HIGH=0 治理基线\n\nscripts/audit-response-columns.ts:\n- model 查找改为 viewDir 优先:findPrismaModel(moduleName) || (apiModule \u0026\u0026 findPrismaModel(apiModule))\n- serviceInclude 同样反转优先级\n- 注释明确\"绝不可反转\"治理纪律\n- 兜底机制仍保留:viewDir 在 Prisma 没对应表时 apiModule 兜底(解决 approval-configs / abm-marketing 这类目录-表完全分离的真盲区)\n\nCLAUDE.md:\n- 更新\"前端 view 目录与 API 模块错位经验\"段,标注优先级纪律\n- 解释反向(apiModule 优先)会持续报 view 显示关联表/computed/include 字段时的假 ERROR\n- 明确剩余 view-API contract 不一致由 owner 后续 sprint 按业务优先级处理\n\n预期效果: HIGH 54 → ~3 (剩 alliance/product stale prisma-zod 数据 2 项 + 原 response-columns 1 项),待 alliance/product 重跑 audit:prisma-zod-contract 后归零。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/856fa372e1753ba378446fc58ad6aaf31d589aaa","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T17:18:39-07:00","added":[],"removed":[],"modified":["CLAUDE.md","scripts/audit-response-columns.ts"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5218456,"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":14,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-27T07:44:42+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
|
1777249165
|
1777249307
|
0
|
1777249127
|
1777249361
|
|
|
0
|
Edit
Delete
|
|
17886
|
feat(harness): grade.ts 加 hasInheritedTestCoverage feat(harness): grade.ts 加 hasInheritedTestCoverage 让 BaseService stub 派生模块继承测试覆盖...
|
6
|
5
|
e2e-tests.yml
|
17807
|
-2
|
312
|
refs/heads/main
|
49ceca46def207082a6f7c5bf4718306d971843a
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"438f3d17a7553218c764ffef33c45904617acd90","after":"49ceca46def207082a6f7c5bf4718306d971843a","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/438f3d17a7553218c764ffef33c45904617acd90...49ceca46def207082a6f7c5bf4718306d971843a","commits":[{"id":"49ceca46def207082a6f7c5bf4718306d971843a","message":"feat(harness): grade.ts 加 hasInheritedTestCoverage 让 BaseService stub 派生模块继承测试覆盖\n\nscripts/harness/grade.ts:\n- 新增 isBaseServiceStub(moduleName):识别 22 行 stub 模块(service 总行数 ≤30 + 含 `extends BaseService`),不含独立业务逻辑\n- 新增 hasInheritedTestCoverage(moduleName):stub 派生 + base.service.test.ts 文件存在 → True\n- gradeModule 中将 g3 升级判定从 `(tests.unit || tests.api)` 扩为 `testsEffective = tests.unit || tests.api || inheritedTests`\n- checks 数组里 stub 派生模块测试项 detail 显示\"继承(BaseService stub 派生)\"\n- score 计算保持不变(仍按独立测试文件存在打分),让 stub 模块 score 偏低提示 owner 后续若加业务逻辑及时补测试\n\n预期收益: 19 个原 G2 真治理债(abm-marketing / member-* / video-* / qr-codes 等 22 行 stub)全部升 G4,工作区从 G4=250(92.9%) 升到 G4=269(100%)。\n\nCLAUDE.md:\n- v5.4 仿真快照段更新预期数字到 G4=269(100%)/G2=0\n- 追加\"BaseService stub 派生测试继承经验\"段,明确 4 条边界(30 行阈值/base.service.test.ts 必存/与 moduleType 豁免互补/score 不豁免)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/49ceca46def207082a6f7c5bf4718306d971843a","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T16:44:26-07:00","added":[],"removed":[],"modified":["CLAUDE.md","scripts/harness/grade.ts"]}],"total_commits":0,"head_commit":{"id":"49ceca46def207082a6f7c5bf4718306d971843a","message":"feat(harness): grade.ts 加 hasInheritedTestCoverage 让 BaseService stub 派生模块继承测试覆盖\n\nscripts/harness/grade.ts:\n- 新增 isBaseServiceStub(moduleName):识别 22 行 stub 模块(service 总行数 ≤30 + 含 `extends BaseService`),不含独立业务逻辑\n- 新增 hasInheritedTestCoverage(moduleName):stub 派生 + base.service.test.ts 文件存在 → True\n- gradeModule 中将 g3 升级判定从 `(tests.unit || tests.api)` 扩为 `testsEffective = tests.unit || tests.api || inheritedTests`\n- checks 数组里 stub 派生模块测试项 detail 显示\"继承(BaseService stub 派生)\"\n- score 计算保持不变(仍按独立测试文件存在打分),让 stub 模块 score 偏低提示 owner 后续若加业务逻辑及时补测试\n\n预期收益: 19 个原 G2 真治理债(abm-marketing / member-* / video-* / qr-codes 等 22 行 stub)全部升 G4,工作区从 G4=250(92.9%) 升到 G4=269(100%)。\n\nCLAUDE.md:\n- v5.4 仿真快照段更新预期数字到 G4=269(100%)/G2=0\n- 追加\"BaseService stub 派生测试继承经验\"段,明确 4 条边界(30 行阈值/base.service.test.ts 必存/与 moduleType 豁免互补/score 不豁免)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/49ceca46def207082a6f7c5bf4718306d971843a","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T16:44:26-07:00","added":[],"removed":[],"modified":["CLAUDE.md","scripts/harness/grade.ts"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5218413,"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":14,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-27T00:48:19+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
|
2
|
20
|
1777248052
|
1777248131
|
0
|
1777248050
|
1777248135
|
|
|
0
|
Edit
Delete
|
|
17874
|
feat(harness): grade.ts 加 hasInheritedTestCoverage feat(harness): grade.ts 加 hasInheritedTestCoverage 让 BaseService stub 派生模块继承测试覆盖...
|
6
|
5
|
e2e-tests.yml
|
17795
|
5
|
0
|
refs/heads/main
|
49ceca46def207082a6f7c5bf4718306d971843a
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"438f3d17a7553218c764ffef33c45904617acd90","after":"49ceca46def207082a6f7c5bf4718306d971843a","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/438f3d17a7553218c764ffef33c45904617acd90...49ceca46def207082a6f7c5bf4718306d971843a","commits":[{"id":"49ceca46def207082a6f7c5bf4718306d971843a","message":"feat(harness): grade.ts 加 hasInheritedTestCoverage 让 BaseService stub 派生模块继承测试覆盖\n\nscripts/harness/grade.ts:\n- 新增 isBaseServiceStub(moduleName):识别 22 行 stub 模块(service 总行数 ≤30 + 含 `extends BaseService`),不含独立业务逻辑\n- 新增 hasInheritedTestCoverage(moduleName):stub 派生 + base.service.test.ts 文件存在 → True\n- gradeModule 中将 g3 升级判定从 `(tests.unit || tests.api)` 扩为 `testsEffective = tests.unit || tests.api || inheritedTests`\n- checks 数组里 stub 派生模块测试项 detail 显示\"继承(BaseService stub 派生)\"\n- score 计算保持不变(仍按独立测试文件存在打分),让 stub 模块 score 偏低提示 owner 后续若加业务逻辑及时补测试\n\n预期收益: 19 个原 G2 真治理债(abm-marketing / member-* / video-* / qr-codes 等 22 行 stub)全部升 G4,工作区从 G4=250(92.9%) 升到 G4=269(100%)。\n\nCLAUDE.md:\n- v5.4 仿真快照段更新预期数字到 G4=269(100%)/G2=0\n- 追加\"BaseService stub 派生测试继承经验\"段,明确 4 条边界(30 行阈值/base.service.test.ts 必存/与 moduleType 豁免互补/score 不豁免)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/49ceca46def207082a6f7c5bf4718306d971843a","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T16:44:26-07:00","added":[],"removed":[],"modified":["CLAUDE.md","scripts/harness/grade.ts"]}],"total_commits":0,"head_commit":{"id":"49ceca46def207082a6f7c5bf4718306d971843a","message":"feat(harness): grade.ts 加 hasInheritedTestCoverage 让 BaseService stub 派生模块继承测试覆盖\n\nscripts/harness/grade.ts:\n- 新增 isBaseServiceStub(moduleName):识别 22 行 stub 模块(service 总行数 ≤30 + 含 `extends BaseService`),不含独立业务逻辑\n- 新增 hasInheritedTestCoverage(moduleName):stub 派生 + base.service.test.ts 文件存在 → True\n- gradeModule 中将 g3 升级判定从 `(tests.unit || tests.api)` 扩为 `testsEffective = tests.unit || tests.api || inheritedTests`\n- checks 数组里 stub 派生模块测试项 detail 显示\"继承(BaseService stub 派生)\"\n- score 计算保持不变(仍按独立测试文件存在打分),让 stub 模块 score 偏低提示 owner 后续若加业务逻辑及时补测试\n\n预期收益: 19 个原 G2 真治理债(abm-marketing / member-* / video-* / qr-codes 等 22 行 stub)全部升 G4,工作区从 G4=250(92.9%) 升到 G4=269(100%)。\n\nCLAUDE.md:\n- v5.4 仿真快照段更新预期数字到 G4=269(100%)/G2=0\n- 追加\"BaseService stub 派生测试继承经验\"段,明确 4 条边界(30 行阈值/base.service.test.ts 必存/与 moduleType 豁免互补/score 不豁免)\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/49ceca46def207082a6f7c5bf4718306d971843a","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T16:44:26-07:00","added":[],"removed":[],"modified":["CLAUDE.md","scripts/harness/grade.ts"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5218413,"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":14,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-27T00:48:19+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
|
1777247205
|
1777247717
|
0
|
1777247079
|
1777247915
|
|
|
0
|
Edit
Delete
|
|
17767
|
docs(governance): 写入 v5.4 治理收益仿真快照(2026-04-26,待真实 docs(governance): 写入 v5.4 治理收益仿真快照(2026-04-26,待真实 harness 校准)...
|
6
|
5
|
e2e-tests.yml
|
17688
|
5
|
0
|
refs/heads/main
|
438f3d17a7553218c764ffef33c45904617acd90
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"39b8a4e31ee1b00ff5da03fd301042d13d8d1203","after":"438f3d17a7553218c764ffef33c45904617acd90","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/39b8a4e31ee1b00ff5da03fd301042d13d8d1203...438f3d17a7553218c764ffef33c45904617acd90","commits":[{"id":"438f3d17a7553218c764ffef33c45904617acd90","message":"docs(governance): 写入 v5.4 治理收益仿真快照(2026-04-26,待真实 harness 校准)\n\nCLAUDE.md 治理基线段加 v5.4 子段,记录本会话 P1→P-CI 治理路径完成后的仿真快照:\n- 本会话治理路径列表(10 阶段)\n- 预期数字: HIGH+CRITICAL=0, MEDIUM=0, INFO≈19, G4=250(92.9%), G2=19\n- 6 类填补的审计盲区清单 + 修复点定位\n- 真业务收口 4 项 (DB reject 风险 + 列永远空 bug + 反向收紧)\n- CI 硬门禁锁固说明\n- 19 个 G2 真治理债清单 (剩缺单元/API 测试的 CRUD 模块)\n\n明确标注\"仿真基线,待 push 后第一次 CI 跑出 governance-audit-reports artifact 校准\"。\nv5.3 (2026-04-09 快照) 段保留为历史,不删除。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/438f3d17a7553218c764ffef33c45904617acd90","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T09:47:58-07:00","added":[],"removed":[],"modified":["CLAUDE.md"]}],"total_commits":0,"head_commit":{"id":"438f3d17a7553218c764ffef33c45904617acd90","message":"docs(governance): 写入 v5.4 治理收益仿真快照(2026-04-26,待真实 harness 校准)\n\nCLAUDE.md 治理基线段加 v5.4 子段,记录本会话 P1→P-CI 治理路径完成后的仿真快照:\n- 本会话治理路径列表(10 阶段)\n- 预期数字: HIGH+CRITICAL=0, MEDIUM=0, INFO≈19, G4=250(92.9%), G2=19\n- 6 类填补的审计盲区清单 + 修复点定位\n- 真业务收口 4 项 (DB reject 风险 + 列永远空 bug + 反向收紧)\n- CI 硬门禁锁固说明\n- 19 个 G2 真治理债清单 (剩缺单元/API 测试的 CRUD 模块)\n\n明确标注\"仿真基线,待 push 后第一次 CI 跑出 governance-audit-reports artifact 校准\"。\nv5.3 (2026-04-09 快照) 段保留为历史,不删除。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/438f3d17a7553218c764ffef33c45904617acd90","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T09:47:58-07:00","added":[],"removed":[],"modified":["CLAUDE.md"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5218382,"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":14,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-27T00:46:06+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
|
1777224567
|
1777224714
|
0
|
1777222089
|
1777225163
|
|
|
0
|
Edit
Delete
|
|
17763
|
ci(harness): 新增 governance-audit job 把 HIGH=0 锁为 P ci(harness): 新增 governance-audit job 把 HIGH=0 锁为 PR/main 硬门禁...
|
6
|
5
|
e2e-tests.yml
|
17684
|
5
|
0
|
refs/heads/main
|
39b8a4e31ee1b00ff5da03fd301042d13d8d1203
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"a67a4f5bf6bede6341ed368fb3af3caec8dcd71c","after":"39b8a4e31ee1b00ff5da03fd301042d13d8d1203","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/a67a4f5bf6bede6341ed368fb3af3caec8dcd71c...39b8a4e31ee1b00ff5da03fd301042d13d8d1203","commits":[{"id":"39b8a4e31ee1b00ff5da03fd301042d13d8d1203","message":"ci(harness): 新增 governance-audit job 把 HIGH=0 锁为 PR/main 硬门禁\n\n.github/workflows/ci.yml:\n- 新增 governance-audit job: 跑 audit:prisma-zod-contract / audit:formrules-zod / audit:response-columns / audit:field-payload / audit:enum-consistency + pnpm harness report 聚合 dashboard\n- 单项审计 continue-on-error: true,最终判定权统一交给 harness-dashboard.summary.high+critical\n- HIGH+CRITICAL \u003e 0 直接 exit 1 阻塞 PR;上传所有 audit JSON artifact + 写 step summary 表格供 reviewer 直读\n- build job 的 needs 加入 governance-audit,确保 main 推送的镜像产物必经治理门禁\n\nCLAUDE.md: 同步追加\"CI 治理门禁经验\"段,明确\"绝不直接调高门禁阈值,要放宽改 adapter/audit severity 映射\"治理纪律。\n\n锁住本会话治理成果——6 类 audit 盲区填补 + 4 类真业务 P1/bug 收口,新 PR 引入新 HIGH 时立即被拦下。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/39b8a4e31ee1b00ff5da03fd301042d13d8d1203","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T09:43:55-07:00","added":[],"removed":[],"modified":[".github/workflows/ci.yml","CLAUDE.md"]},{"id":"fc67c3eb51e91a01749234e389fcda8c5769bec5","message":"feat(harness): audit-response-columns 改 import-aware,自动反推真实数据源消除 46 处 view-API 错位误判\n\nscripts/audit-response-columns.ts:\n- 新增 extractApiModuleFromImports(filePath):解析 view 顶部 `import { xxxApi } from '@/api/modules/\u003cx\u003e'` 取首个 API 模块名\n- 主流程构建 viewModule → apiModule 映射;audit 时优先用 apiModule 查找 Prisma model 与 service include,失败回退 view 目录名\n\n仓库实际有 46 处 view 目录-API 模块错位(attribution-models→attribution / abm-marketing→campaign-targets / social-matrix→marketing-matrix / approval-configs→approval-templates 等);以前 audit 会把这 46 个 view 的列 prop 全部按错的 Prisma 表做比对,造成大量误报或漏报真 bug。改 import-aware 后自动用真实数据源做比对,不再需要手动加白名单。\n\nCLAUDE.md: 同步更新\"前端 view 目录与实际 API 模块错位经验\"段,记录 46 处实际错位案例与新增 import-aware 实现。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/fc67c3eb51e91a01749234e389fcda8c5769bec5","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T09:40:34-07:00","added":[],"removed":[],"modified":["CLAUDE.md","scripts/audit-response-columns.ts"]},{"id":"7e9897cf29abcfd1772faa00d204616200f0ab93","message":"fix(schema): 收口 formrules-zod 9 项 MEDIUM,前后端 description/category/name 全栈对齐\n\n5 处 description Zod max 收紧(前端早就 maxlength=500,后端 2000 是历史遗留):\n- attribution-models / customer-segmentation / lead-assignment / lead-scoring / store-configs:\n description Zod max(2000) → max(500),反向对齐前端 UX 上限\n\nai-agents skill-library FormRules 放宽到 Zod 上限:\n- skill-library/Form.vue: category FormRules max=50 → 100,对齐 Zod max(100)(category 50 字过紧)\n\nchannel-integrations Form 全栈对齐 Zod:\n- Form.vue: FormRules min=2/max=100 → min=1/max=200,maxlength=\"100\" → \"200\"\n 对齐 Zod min(1).max(200),原 min=2 拒绝 1 字符是过度严格\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/7e9897cf29abcfd1772faa00d204616200f0ab93","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T09:36:20-07:00","added":[],"removed":[],"modified":["backend/src/modules/attribution-models/attribution-models.schema.ts","backend/src/modules/customer-segmentation/customer-segmentation.schema.ts","backend/src/modules/lead-assignment/lead-assignment.schema.ts","backend/src/modules/lead-scoring/lead-scoring.schema.ts","backend/src/modules/store-configs/store-configs.schema.ts","frontend/src/views/ai-agents/skill-library/Form.vue","frontend/src/views/channel-integrations/Form.vue"]},{"id":"aba788bb6011125e1178d038c14f936480380368","message":"docs(governance): 追加 P1-P6 治理经验补充段(dashboard/adapter/audit 盲区/字段错位/maxlength/grade 联动)\n\n新增 5 段经验补充(2026-04-26):\n- Harness Dashboard / Adapter 一致性: dashboard 与 audit latest.json 时间戳必须同步;adapter 字段名严格对齐审计 JSON 真实 key;severity 按 audit raw severity 分级。\n- Prisma↔Zod 审计盲区: 4 类系统性盲区(嵌套子 schema 误匹配 / camel-snake 双计数 / .refine 后置约束 / service 层 auto-gen 字段)的识别与豁免规则。\n- 前端 view 目录与 API 模块错位: approval-configs/Index.vue 实际调 approvalTemplatesApi 这类目录-模块错位的治理路径与 audit 增强建议。\n- Form maxlength 同步: Zod .max(N) 改动必须同步 el-input maxlength;Zod 校验和 maxlength 是不同阶段(提交 vs 输入)。\n- Grade hasEventPublishing 与 moduleType 联动: BaseService 派生识别 + manifest moduleType 双重通路;CRUD 模块缺事件应补 publishEvent 而非加豁免。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/aba788bb6011125e1178d038c14f936480380368","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T09:32:19-07:00","added":[],"removed":[],"modified":["CLAUDE.md"]},{"id":"744548892f552934566e0879669c2aeb0829fe7d","message":"fix(schema): 收口 Prisma↔Zod 长度真 P1 + 同步前端 maxlength + 修 approval-configs 列名\n\n真 P1 收口(Zod max \u003e Prisma VarChar,DB 会拒绝写入):\n- alliance-agreements.content: Zod max(10000) → max(5000) 对齐 Prisma VarChar(5000)\n- product-categories.description: Zod max(2000) → max(500) 对齐 Prisma VarChar(500)\n\n前端 maxlength 同步(formrules-zod HIGH 4 项收口):\n- alliance-agreements/Form.vue: content maxlength=\"10000\"→\"5000\"\n- lead-scoring/Form.vue: field 字段 maxlength=\"100\", value 字段 maxlength=\"500\"\n- product-categories/Index.vue: 分类名 maxlength=\"200\"\n- supplier-center/Index.vue: 供应商名 maxlength=\"200\"\n\n真 bug 修复(response-columns HIGH 1 项):\n- approval-configs/Index.vue: prop=\"objectType\" / row.objectType / 查询参数 objectType 全部改为 entityType。原列名在 Prisma model 不存在且 API 返回字段是 entityType,原列永远显示空——是真 bug 不是审计噪声。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/744548892f552934566e0879669c2aeb0829fe7d","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T09:32:04-07:00","added":[],"removed":[],"modified":["backend/src/modules/alliance-agreements/alliance-agreement.schema.ts","backend/src/modules/product-categories/product-categories.schema.ts","frontend/src/views/alliance-agreements/Form.vue","frontend/src/views/approval-configs/Index.vue","frontend/src/views/lead-scoring/Form.vue","frontend/src/views/product-categories/Index.vue","frontend/src/views/supplier-center/Index.vue"]}],"total_commits":0,"head_commit":{"id":"39b8a4e31ee1b00ff5da03fd301042d13d8d1203","message":"ci(harness): 新增 governance-audit job 把 HIGH=0 锁为 PR/main 硬门禁\n\n.github/workflows/ci.yml:\n- 新增 governance-audit job: 跑 audit:prisma-zod-contract / audit:formrules-zod / audit:response-columns / audit:field-payload / audit:enum-consistency + pnpm harness report 聚合 dashboard\n- 单项审计 continue-on-error: true,最终判定权统一交给 harness-dashboard.summary.high+critical\n- HIGH+CRITICAL \u003e 0 直接 exit 1 阻塞 PR;上传所有 audit JSON artifact + 写 step summary 表格供 reviewer 直读\n- build job 的 needs 加入 governance-audit,确保 main 推送的镜像产物必经治理门禁\n\nCLAUDE.md: 同步追加\"CI 治理门禁经验\"段,明确\"绝不直接调高门禁阈值,要放宽改 adapter/audit severity 映射\"治理纪律。\n\n锁住本会话治理成果——6 类 audit 盲区填补 + 4 类真业务 P1/bug 收口,新 PR 引入新 HIGH 时立即被拦下。\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/39b8a4e31ee1b00ff5da03fd301042d13d8d1203","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T09:43:55-07:00","added":[],"removed":[],"modified":[".github/workflows/ci.yml","CLAUDE.md"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5218150,"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":14,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-27T00:22:11+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
|
1777224042
|
1777224183
|
0
|
1777221955
|
1777225149
|
|
|
0
|
Edit
Delete
|
|
17753
|
Tighten CI workflows: Node 20, pnpm 9, lint enforc Tighten CI workflows: Node 20, pnpm 9, lint enforcement, audit gaps...
|
6
|
5
|
e2e-tests.yml
|
17674
|
5
|
0
|
refs/heads/main
|
a67a4f5bf6bede6341ed368fb3af3caec8dcd71c
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"c04c1f61a7ca64acf31ed914678656d87ed6e35f","after":"a67a4f5bf6bede6341ed368fb3af3caec8dcd71c","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/c04c1f61a7ca64acf31ed914678656d87ed6e35f...a67a4f5bf6bede6341ed368fb3af3caec8dcd71c","commits":[{"id":"a67a4f5bf6bede6341ed368fb3af3caec8dcd71c","message":"Tighten CI workflows: Node 20, pnpm 9, lint enforcement, audit gaps\n\nAddresses the gaps surfaced in the CI/CD audit. Each change is minimal\nand validated by yamllint locally:\n\n- ci.yml: drop `|| true` from `pnpm -C backend run lint` so lint\n failures actually block CI instead of silently passing.\n- deploy.yml: bump PNPM_VERSION 8→9 to match ci.yml. The mismatch\n could cause lockfile-format drift and surprise behavior depending\n on which runner picked up the job first.\n- e2e-tests.yml + performance.yml: bump NODE_VERSION 18→20 (Node 18\n is in maintenance / EOL prep), and bump PNPM_VERSION 8→9.\n- e2e-tests.yml: bump pnpm/action-setup@v2→@v4 (4 occurrences) to\n match other workflows.\n- migration-safety.yml: fix duplicate `env:` mapping at the\n \"Create PostgreSQL extensions\" step that yamllint flagged\n (key-duplicates). The first env block's DATABASE_URL was being\n silently dropped; merged both keys into a single env block.\n- e2e-tests.yml + migration-safety.yml: add a header comment\n explaining that the literal `test_password` is a runner-local\n ephemeral PostgreSQL service-container convention, not a real\n secret. Replacing it with secrets.* would break fork-PR CI.\n- test-pipeline.yml: add a new `fullstack-alignment-audit` job\n running the four audits that were previously missing from CI:\n audit:route-contract, audit:field-payload, audit:enum-consistency,\n audit:formrules-zod. Reports uploaded as artifact.\n\nAll six edited files pass yamllint.\n\nNote: `.gitea/workflows/` does not exist — Gitea side runs no CI.\nThat's a separate decision (mirror the GitHub workflows there, or\ndeliberately keep CI on GitHub only) and is out of scope here.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/a67a4f5bf6bede6341ed368fb3af3caec8dcd71c","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T09:21:54-07:00","added":[],"removed":[],"modified":[".github/workflows/ci.yml",".github/workflows/deploy.yml",".github/workflows/e2e-tests.yml",".github/workflows/migration-safety.yml",".github/workflows/performance.yml",".github/workflows/test-pipeline.yml"]}],"total_commits":0,"head_commit":{"id":"a67a4f5bf6bede6341ed368fb3af3caec8dcd71c","message":"Tighten CI workflows: Node 20, pnpm 9, lint enforcement, audit gaps\n\nAddresses the gaps surfaced in the CI/CD audit. Each change is minimal\nand validated by yamllint locally:\n\n- ci.yml: drop `|| true` from `pnpm -C backend run lint` so lint\n failures actually block CI instead of silently passing.\n- deploy.yml: bump PNPM_VERSION 8→9 to match ci.yml. The mismatch\n could cause lockfile-format drift and surprise behavior depending\n on which runner picked up the job first.\n- e2e-tests.yml + performance.yml: bump NODE_VERSION 18→20 (Node 18\n is in maintenance / EOL prep), and bump PNPM_VERSION 8→9.\n- e2e-tests.yml: bump pnpm/action-setup@v2→@v4 (4 occurrences) to\n match other workflows.\n- migration-safety.yml: fix duplicate `env:` mapping at the\n \"Create PostgreSQL extensions\" step that yamllint flagged\n (key-duplicates). The first env block's DATABASE_URL was being\n silently dropped; merged both keys into a single env block.\n- e2e-tests.yml + migration-safety.yml: add a header comment\n explaining that the literal `test_password` is a runner-local\n ephemeral PostgreSQL service-container convention, not a real\n secret. Replacing it with secrets.* would break fork-PR CI.\n- test-pipeline.yml: add a new `fullstack-alignment-audit` job\n running the four audits that were previously missing from CI:\n audit:route-contract, audit:field-payload, audit:enum-consistency,\n audit:formrules-zod. Reports uploaded as artifact.\n\nAll six edited files pass yamllint.\n\nNote: `.gitea/workflows/` does not exist — Gitea side runs no CI.\nThat's a separate decision (mirror the GitHub workflows there, or\ndeliberately keep CI on GitHub only) and is out of scope here.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/a67a4f5bf6bede6341ed368fb3af3caec8dcd71c","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T09:21:54-07:00","added":[],"removed":[],"modified":[".github/workflows/ci.yml",".github/workflows/deploy.yml",".github/workflows/e2e-tests.yml",".github/workflows/migration-safety.yml",".github/workflows/performance.yml",".github/workflows/test-pipeline.yml"]},"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":5218117,"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":14,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-27T00:13:21+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
|
1777223834
|
1777223986
|
0
|
1777220520
|
1777225034
|
|
|
0
|
Edit
Delete
|
|
17747
|
Unblock docker-compose.prod.yml validation by remo Unblock docker-compose.prod.yml validation by removing replicas:2...
|
6
|
5
|
e2e-tests.yml
|
17668
|
5
|
0
|
refs/heads/main
|
c04c1f61a7ca64acf31ed914678656d87ed6e35f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"6f30ee7954e6142227f44fbcb36106e5ce6018eb","after":"c04c1f61a7ca64acf31ed914678656d87ed6e35f","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/6f30ee7954e6142227f44fbcb36106e5ce6018eb...c04c1f61a7ca64acf31ed914678656d87ed6e35f","commits":[{"id":"c04c1f61a7ca64acf31ed914678656d87ed6e35f","message":"Unblock docker-compose.prod.yml validation by removing replicas:2\n\n`docker compose -f docker-compose.prod.yml config` was failing with:\n\n services.deploy.replicas: can't set container_name and api as\n container name must be unique: invalid compose project\n\nThe api service had both `container_name: juhi-api` (relied on by\nscripts/deploy.sh:294 and scripts/post-deploy-verify.sh:39) and\n`deploy.replicas: 2`. Compose v2 rejects this combination because\nit can't give two replicas the same fixed name.\n\n`deploy.replicas` is also silently ignored in non-Swarm Compose mode,\nso this directive was aspirational rather than effective. The actual\nmulti-replica path in this repo is docker-compose.ha.yml.\n\nRemoved the `replicas: 2` line and added a comment explaining the\ntrade-off; kept resources/update_config/rollback_config for Swarm/K8s\ntranslation.\n\nVerified: `docker compose --env-file \u003cstub\u003e -f docker-compose.prod.yml\nconfig` now exits 0 with no warnings.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c04c1f61a7ca64acf31ed914678656d87ed6e35f","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T09:13:05-07:00","added":[],"removed":[],"modified":["docker-compose.prod.yml"]}],"total_commits":0,"head_commit":{"id":"c04c1f61a7ca64acf31ed914678656d87ed6e35f","message":"Unblock docker-compose.prod.yml validation by removing replicas:2\n\n`docker compose -f docker-compose.prod.yml config` was failing with:\n\n services.deploy.replicas: can't set container_name and api as\n container name must be unique: invalid compose project\n\nThe api service had both `container_name: juhi-api` (relied on by\nscripts/deploy.sh:294 and scripts/post-deploy-verify.sh:39) and\n`deploy.replicas: 2`. Compose v2 rejects this combination because\nit can't give two replicas the same fixed name.\n\n`deploy.replicas` is also silently ignored in non-Swarm Compose mode,\nso this directive was aspirational rather than effective. The actual\nmulti-replica path in this repo is docker-compose.ha.yml.\n\nRemoved the `replicas: 2` line and added a comment explaining the\ntrade-off; kept resources/update_config/rollback_config for Swarm/K8s\ntranslation.\n\nVerified: `docker compose --env-file \u003cstub\u003e -f docker-compose.prod.yml\nconfig` now exits 0 with no warnings.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/c04c1f61a7ca64acf31ed914678656d87ed6e35f","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T09:13:05-07:00","added":[],"removed":[],"modified":["docker-compose.prod.yml"]},"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":5218106,"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":14,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-27T00:06:37+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
|
1777223669
|
1777223828
|
0
|
1777219991
|
1777225003
|
|
|
0
|
Edit
Delete
|
|
17742
|
Add secret-content-scan to Fast Gate pre-commit
|
6
|
5
|
e2e-tests.yml
|
17663
|
5
|
0
|
refs/heads/main
|
6f30ee7954e6142227f44fbcb36106e5ce6018eb
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"bd8162cf2c08d175a1cab0f69d42b648bb825c10","after":"6f30ee7954e6142227f44fbcb36106e5ce6018eb","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/bd8162cf2c08d175a1cab0f69d42b648bb825c10...6f30ee7954e6142227f44fbcb36106e5ce6018eb","commits":[{"id":"6f30ee7954e6142227f44fbcb36106e5ce6018eb","message":"Add secret-content-scan to Fast Gate pre-commit\n\nLayer-2 defense complementing the env-leak guard added in bd8162cf2:\n\n- Scans staged diff lines for high-precision secret patterns:\n PEM private-key blocks, AWS access keys (AKIA…), GitHub PATs\n (ghp_/gho_/ghs_), JWT tokens (eyJ…eyJ…), and assignment lines\n matching `*PASSWORD|SECRET|TOKEN|API_KEY = \u003c32+ char base64\u003e`.\n- Excludes hook itself, docs/security/**, test fixtures, and the\n generate-secrets script to avoid self-tripping.\n- Per-line bypass via trailing `noqa: secret-scan` comment for\n legitimate fixtures or doc samples.\n\nVerified all positive cases trip and all negative cases pass through\nwhen run with system /usr/bin/grep (the shell sh hooks use). Failing\nthe gate prints up to 10 offending lines to give the developer\ncontext without dumping the whole secret.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6f30ee7954e6142227f44fbcb36106e5ce6018eb","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T09:06:13-07:00","added":[],"removed":[],"modified":[".husky/pre-commit"]}],"total_commits":0,"head_commit":{"id":"6f30ee7954e6142227f44fbcb36106e5ce6018eb","message":"Add secret-content-scan to Fast Gate pre-commit\n\nLayer-2 defense complementing the env-leak guard added in bd8162cf2:\n\n- Scans staged diff lines for high-precision secret patterns:\n PEM private-key blocks, AWS access keys (AKIA…), GitHub PATs\n (ghp_/gho_/ghs_), JWT tokens (eyJ…eyJ…), and assignment lines\n matching `*PASSWORD|SECRET|TOKEN|API_KEY = \u003c32+ char base64\u003e`.\n- Excludes hook itself, docs/security/**, test fixtures, and the\n generate-secrets script to avoid self-tripping.\n- Per-line bypass via trailing `noqa: secret-scan` comment for\n legitimate fixtures or doc samples.\n\nVerified all positive cases trip and all negative cases pass through\nwhen run with system /usr/bin/grep (the shell sh hooks use). Failing\nthe gate prints up to 10 offending lines to give the developer\ncontext without dumping the whole secret.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6f30ee7954e6142227f44fbcb36106e5ce6018eb","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T09:06:13-07:00","added":[],"removed":[],"modified":[".husky/pre-commit"]},"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":5218097,"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":14,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-26T23:56:59+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
|
1777222660
|
1777223666
|
0
|
1777219586
|
1777224912
|
|
|
0
|
Edit
Delete
|
|
17736
|
Add env-leak pre-commit guard and secrets-leak inc Add env-leak pre-commit guard and secrets-leak incident doc...
|
6
|
5
|
e2e-tests.yml
|
17657
|
5
|
0
|
refs/heads/main
|
bd8162cf2c08d175a1cab0f69d42b648bb825c10
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"f8c99c0bccfc306a4dcc9afd03e1247a4ebd4a97","after":"bd8162cf2c08d175a1cab0f69d42b648bb825c10","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/f8c99c0bccfc306a4dcc9afd03e1247a4ebd4a97...bd8162cf2c08d175a1cab0f69d42b648bb825c10","commits":[{"id":"bd8162cf2c08d175a1cab0f69d42b648bb825c10","message":"Add env-leak pre-commit guard and secrets-leak incident doc\n\n- .husky/pre-commit: insert a serial first-position check that blocks\n any staged file ending in `.env` or `.env.local` from entering the\n index. Templates (`.env.example`, `.env.test`, `frontend/.env.development`,\n etc.) are not matched. Background and the previous incident are\n documented in docs/security/leaked-env-2026-04-26.md.\n\n- docs/security/leaked-env-2026-04-26.md: full incident record covering\n what leaked, what was done in 597fbdc49 and f8c99c0bc, what each team\n member needs to do locally, the rotation checklist for the four leaked\n secrets, and the conditions under which a history rewrite would be\n warranted (currently not).\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/bd8162cf2c08d175a1cab0f69d42b648bb825c10","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T08:56:37-07:00","added":["docs/security/leaked-env-2026-04-26.md"],"removed":[],"modified":[".husky/pre-commit"]}],"total_commits":0,"head_commit":{"id":"bd8162cf2c08d175a1cab0f69d42b648bb825c10","message":"Add env-leak pre-commit guard and secrets-leak incident doc\n\n- .husky/pre-commit: insert a serial first-position check that blocks\n any staged file ending in `.env` or `.env.local` from entering the\n index. Templates (`.env.example`, `.env.test`, `frontend/.env.development`,\n etc.) are not matched. Background and the previous incident are\n documented in docs/security/leaked-env-2026-04-26.md.\n\n- docs/security/leaked-env-2026-04-26.md: full incident record covering\n what leaked, what was done in 597fbdc49 and f8c99c0bc, what each team\n member needs to do locally, the rotation checklist for the four leaked\n secrets, and the conditions under which a history rewrite would be\n warranted (currently not).\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/bd8162cf2c08d175a1cab0f69d42b648bb825c10","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T08:56:37-07:00","added":["docs/security/leaked-env-2026-04-26.md"],"removed":[],"modified":[".husky/pre-commit"]},"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":5218086,"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":14,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-26T23:52:27+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
|
1777222405
|
1777222654
|
0
|
1777219009
|
1777224776
|
|
|
0
|
Edit
Delete
|
|
17731
|
Stop tracking backend/.env (leaked secrets remedia Stop tracking backend/.env (leaked secrets remediation, step 1)...
|
6
|
5
|
e2e-tests.yml
|
17652
|
5
|
0
|
refs/heads/main
|
f8c99c0bccfc306a4dcc9afd03e1247a4ebd4a97
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"597fbdc49bc67e7803e9ff0ab9c77dccc99d778e","after":"f8c99c0bccfc306a4dcc9afd03e1247a4ebd4a97","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/597fbdc49bc67e7803e9ff0ab9c77dccc99d778e...f8c99c0bccfc306a4dcc9afd03e1247a4ebd4a97","commits":[{"id":"f8c99c0bccfc306a4dcc9afd03e1247a4ebd4a97","message":"Stop tracking backend/.env (leaked secrets remediation, step 1)\n\nbackend/.env was committed once at 204e3356f with what appear to be\nreal base64-encoded random secrets (DB password, Redis password, JWT\nsecret, MinIO secret key — pattern matches `openssl rand -base64 32`\noutput). The file header indicates it was auto-generated locally by\nscripts/sync-local-env.sh and committed by mistake.\n\nThis commit only stops tracking the file going forward. The leaked\ncontent is still reachable in git history at commit 204e3356f from\nmain and from ~10+ origin feature branches; treat the secrets as\ncompromised and rotate them in any deployment that may have used them.\n\nRoot .gitignore already has a `.env` rule that takes effect once the\nfile is no longer tracked, so no .gitignore change is needed.\n\nTo regenerate backend/.env locally with the new dev defaults:\n bash scripts/sync-local-env.sh --force\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/f8c99c0bccfc306a4dcc9afd03e1247a4ebd4a97","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T08:52:06-07:00","added":[],"removed":["backend/.env"],"modified":[]}],"total_commits":0,"head_commit":{"id":"f8c99c0bccfc306a4dcc9afd03e1247a4ebd4a97","message":"Stop tracking backend/.env (leaked secrets remediation, step 1)\n\nbackend/.env was committed once at 204e3356f with what appear to be\nreal base64-encoded random secrets (DB password, Redis password, JWT\nsecret, MinIO secret key — pattern matches `openssl rand -base64 32`\noutput). The file header indicates it was auto-generated locally by\nscripts/sync-local-env.sh and committed by mistake.\n\nThis commit only stops tracking the file going forward. The leaked\ncontent is still reachable in git history at commit 204e3356f from\nmain and from ~10+ origin feature branches; treat the secrets as\ncompromised and rotate them in any deployment that may have used them.\n\nRoot .gitignore already has a `.env` rule that takes effect once the\nfile is no longer tracked, so no .gitignore change is needed.\n\nTo regenerate backend/.env locally with the new dev defaults:\n bash scripts/sync-local-env.sh --force\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/f8c99c0bccfc306a4dcc9afd03e1247a4ebd4a97","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T08:52:06-07:00","added":[],"removed":["backend/.env"],"modified":[]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","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":5218081,"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":14,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-26T23:45:24+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
|
1777221859
|
1777222402
|
0
|
1777218739
|
1777224770
|
|
|
0
|
Edit
Delete
|
|
17727
|
Make local one-command startup work end-to-end
|
6
|
5
|
e2e-tests.yml
|
17648
|
5
|
0
|
refs/heads/main
|
597fbdc49bc67e7803e9ff0ab9c77dccc99d778e
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"7b47df3186db279cfc071517a6c034aa213d926d","after":"597fbdc49bc67e7803e9ff0ab9c77dccc99d778e","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/7b47df3186db279cfc071517a6c034aa213d926d...597fbdc49bc67e7803e9ff0ab9c77dccc99d778e","commits":[{"id":"597fbdc49bc67e7803e9ff0ab9c77dccc99d778e","message":"Make local one-command startup work end-to-end\n\nFix the gaps that prevented `make dev` / `docker compose up` from working\non a fresh checkout:\n\n- Replace `\u003cCHANGE_ME_*\u003e` placeholders in .env.example with dev defaults\n so Postgres / Redis / MinIO containers no longer initialize with the\n literal placeholder string as their password. Production override\n warning preserved at the top of the file.\n- Add normalize_placeholder() in sync-local-env.sh as a legacy-safety\n net for existing .env files still carrying the old placeholders.\n- Add PGBOUNCER_PORT to .env.example so it shows up alongside other\n configurable ports (the docker-compose default still works).\n- Remove the truncated complete_migration_seed.sql.gz (20 bytes,\n unreachable from any script or doc).\n- Add a \"🚀 快速开始\" section to README.md with prerequisites, the\n three-way startup comparison (make dev / full Docker / base-only),\n default credentials, and troubleshooting entry points — the README\n previously had no quickstart at all.\n- Unify `docker-compose \u003cverb\u003e` → `docker compose \u003cverb\u003e` (33 places\n in DEPLOYMENT.md) and replace `cd backend \u0026\u0026 npx prisma ...` /\n `npm ci` with `pnpm -C backend exec prisma ...` / `pnpm install`\n in DEPLOYMENT.md and DEPLOY_DB.md.\n- Annotate `make db-migrate / mock-seed / seed` as `[legacy]` in the\n Makefile help text and point users to the canonical\n `pnpm -C backend exec prisma migrate deploy` /\n `pnpm -C backend run db:seed` entrypoints.\n\nEnd-to-end verification:\n cp .env.example .env\n docker compose -f docker-compose.yml config --quiet # exits 0\n bash scripts/sync-local-env.sh # backend/.env\n uses identical\n dev passwords\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/597fbdc49bc67e7803e9ff0ab9c77dccc99d778e","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T08:41:01-07:00","added":[],"removed":["complete_migration_seed.sql.gz"],"modified":[".env.example","DEPLOYMENT.md","DEPLOY_DB.md","Makefile","README.md","scripts/start-all.sh","scripts/sync-local-env.sh"]}],"total_commits":0,"head_commit":{"id":"597fbdc49bc67e7803e9ff0ab9c77dccc99d778e","message":"Make local one-command startup work end-to-end\n\nFix the gaps that prevented `make dev` / `docker compose up` from working\non a fresh checkout:\n\n- Replace `\u003cCHANGE_ME_*\u003e` placeholders in .env.example with dev defaults\n so Postgres / Redis / MinIO containers no longer initialize with the\n literal placeholder string as their password. Production override\n warning preserved at the top of the file.\n- Add normalize_placeholder() in sync-local-env.sh as a legacy-safety\n net for existing .env files still carrying the old placeholders.\n- Add PGBOUNCER_PORT to .env.example so it shows up alongside other\n configurable ports (the docker-compose default still works).\n- Remove the truncated complete_migration_seed.sql.gz (20 bytes,\n unreachable from any script or doc).\n- Add a \"🚀 快速开始\" section to README.md with prerequisites, the\n three-way startup comparison (make dev / full Docker / base-only),\n default credentials, and troubleshooting entry points — the README\n previously had no quickstart at all.\n- Unify `docker-compose \u003cverb\u003e` → `docker compose \u003cverb\u003e` (33 places\n in DEPLOYMENT.md) and replace `cd backend \u0026\u0026 npx prisma ...` /\n `npm ci` with `pnpm -C backend exec prisma ...` / `pnpm install`\n in DEPLOYMENT.md and DEPLOY_DB.md.\n- Annotate `make db-migrate / mock-seed / seed` as `[legacy]` in the\n Makefile help text and point users to the canonical\n `pnpm -C backend exec prisma migrate deploy` /\n `pnpm -C backend run db:seed` entrypoints.\n\nEnd-to-end verification:\n cp .env.example .env\n docker compose -f docker-compose.yml config --quiet # exits 0\n bash scripts/sync-local-env.sh # backend/.env\n uses identical\n dev passwords\n\nCo-Authored-By: Claude Opus 4.7 (1M context) \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/597fbdc49bc67e7803e9ff0ab9c77dccc99d778e","author":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@luoguoguodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-04-26T08:41:01-07:00","added":[],"removed":["complete_migration_seed.sql.gz"],"modified":[".env.example","DEPLOYMENT.md","DEPLOY_DB.md","Makefile","README.md","scripts/start-all.sh","scripts/sync-local-env.sh"]},"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":5218001,"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":14,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-24T23:28:21+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
|
1777218367
|
1777221855
|
0
|
1777218321
|
1777224031
|
|
|
0
|
Edit
Delete
|
|
17537
|
Merge gitea/main: harness/outbox/migration updates
|
6
|
5
|
e2e-tests.yml
|
17458
|
-2
|
285
|
refs/heads/main
|
7b47df3186db279cfc071517a6c034aa213d926d
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fd1878b707f31b05ee314173ac91491adb28bc30","after":"7b47df3186db279cfc071517a6c034aa213d926d","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fd1878b707f31b05ee314173ac91491adb28bc30...7b47df3186db279cfc071517a6c034aa213d926d","commits":[{"id":"7b47df3186db279cfc071517a6c034aa213d926d","message":"Merge gitea/main: harness/outbox/migration updates\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/7b47df3186db279cfc071517a6c034aa213d926d","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-17T08:50:00+08:00","added":[".github/workflows/migration-safety.yml",".qwen/settings.json",".qwen/settings.json.orig","DOCKER.md","QWEN.md","backend/.env","backend/prisma/migrations/20260103100000_a_add_bom_and_assembly/migration.sql","backend/prisma/migrations/20260103100000_b_add_customer_tags_meta/migration.sql","backend/prisma/migrations/20260104100000_a_add_im_channel_bindings/migration.sql","backend/prisma/migrations/20260104100000_b_add_performance_indexes/migration.sql","backend/prisma/migrations/20260124000000_a_add_ai_agents/migration.sql","backend/prisma/migrations/20260124000000_b_add_ai_agents_module/migration.sql","backend/prisma/migrations/rollback-strategy.sql","backend/src/modules/agent-sessions/prompt-assembly.service.ts","backend/src/modules/agent-sessions/sandbox/builtin-tools.ts","backend/src/modules/ai-agent-skills/skill-execution-engine.service.test.ts","backend/src/modules/ai-agent-skills/skill-execution-engine.service.ts","backend/src/modules/ai-agents/services/llm-runtime.service.ts","backend/src/modules/ai-agents/services/model-runtime-resolver.service.ts","docs/guides/database-migration-guide-v2.md","docs/reports/database-migration-improvements-2026-04-14.md","docs/reports/release-readiness-2026-04-15.md","reports/prisma-zod-contract-audit.2026-04-15.json","reports/prisma-zod-contract-audit.2026-04-15.md","scripts/ci-migration-check.sh","scripts/cleanup-legacy-migrations.sh","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"],"removed":["backend/backend/prisma/migrations/20260123235959_create_missing_tables/migration.sql","backend/prisma/migrations/20260103100000_add_bom_and_assembly/migration.sql","backend/prisma/migrations/20260103100000_add_customer_tags_meta/migration.sql","backend/prisma/migrations/20260104100000_add_im_channel_bindings/migration.sql","backend/prisma/migrations/20260104100000_add_performance_indexes/migration.sql","backend/prisma/migrations/20260124000000_add_ai_agents/migration.sql","backend/prisma/migrations/20260124000000_add_ai_agents_module/migration.sql"],"modified":[".dockerignore","AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/Dockerfile","backend/Dockerfile.local","backend/prisma/process-designer.prisma","backend/src/config/kafka.ts","backend/src/modules/ad-placement/placement.service.ts","backend/src/modules/agent-sessions/harness.service.test.ts","backend/src/modules/agent-sessions/harness.service.ts","backend/src/modules/agent-sessions/sandbox/sandbox.registry.test.ts","backend/src/modules/agent-sessions/sandbox/sandbox.registry.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.controller.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.schema.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.test.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.ts","backend/src/modules/ai-agents/services/ai-agent-im-message-processor.service.ts","backend/src/modules/ai-agents/services/semantic-agent.service.ts","backend/src/modules/alliance-partners/alliance-partner.controller.ts","backend/src/modules/alliance-partners/alliance-partner.routes.ts","backend/src/modules/alliance-partners/alliance-partner.schema.ts","backend/src/modules/alliance-partners/alliance-partner.service.test.ts","backend/src/modules/alliance-partners/alliance-partner.service.ts","backend/src/modules/channels/channel.schema.ts","backend/src/modules/community-members/community-member.controller.ts","backend/src/modules/community-members/community-member.service.ts","backend/src/modules/dimension-transform/dimension-transform.controller.ts","backend/src/modules/dimension-transform/dimension-transform.service.ts","backend/src/modules/expense/expense.controller.ts","backend/src/modules/geo-keywords/geo-keyword.controller.ts","backend/src/modules/geo-keywords/geo-keyword.service.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.controller.ts","backend/src/modules/groupbuy-pricing/groupbuy-pricing.service.ts","backend/src/modules/journey-orchestration/journey-orchestration.service.ts","backend/src/modules/knowledge/knowledge.service.ts","backend/src/modules/marketing-matrix/matrix.controller.ts","backend/src/modules/mdm/mdm.service.ts","backend/src/modules/orders/order.controller.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/partner-customers/partner-customer.schema.ts","backend/src/modules/process/process.service.test.ts","backend/src/modules/process/process.service.ts","backend/src/modules/realtime/realtime.contract.routes.ts","backend/src/modules/realtime/realtime.routes.ts","backend/src/modules/revenue/revenue-crud.service.ts","backend/src/modules/sample-requests/sample-request.service.ts","backend/src/modules/search/search.service.ts","backend/src/modules/stores/store-config.service.ts","backend/src/modules/suppliers/supplier.schema.ts","backend/src/modules/treasury/treasury-crud.service.ts","backend/tests/api/alliance-partners.test.ts","backend/tests/api/alliance-products.test.ts","create-extension.sh","docker-compose.local-prod.yml","docker-compose.prod.yml","docs/guides/database-migration-guide.md","e2e/scripts/verify-view-governance.mjs","e2e/tests/ui-modules/view-governance.generated.json","frontend/Dockerfile","frontend/src/composables/useDashboardRealtime.ts","frontend/src/types/ai-agent.ts","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/harness-dashboard.latest.json","reports/menu-inventory-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/module-grades.latest.json","reports/outbox-atomicity-audit.latest.json","reports/prisma-zod-contract-audit.latest.json","reports/prisma-zod-contract-audit.latest.md","reports/project-census.latest.json","reports/response-columns-audit.latest.json","reports/type-debt-audit.latest.json"]},{"id":"debdf5680e9bd056fb75e681e4d79cb74c02de9f","message":"fix: override existing env vars in dev mode to prevent empty REDIS_PASSWORD issue\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/debdf5680e9bd056fb75e681e4d79cb74c02de9f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T22:22:30+08:00","added":[],"removed":[],"modified":["backend/src/config/load-env.ts"]}],"total_commits":0,"head_commit":{"id":"7b47df3186db279cfc071517a6c034aa213d926d","message":"Merge gitea/main: harness/outbox/migration updates\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/7b47df3186db279cfc071517a6c034aa213d926d","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-17T08:50:00+08:00","added":[".github/workflows/migration-safety.yml",".qwen/settings.json",".qwen/settings.json.orig","DOCKER.md","QWEN.md","backend/.env","backend/prisma/migrations/20260103100000_a_add_bom_and_assembly/migration.sql","backend/prisma/migrations/20260103100000_b_add_customer_tags_meta/migration.sql","backend/prisma/migrations/20260104100000_a_add_im_channel_bindings/migration.sql","backend/prisma/migrations/20260104100000_b_add_performance_indexes/migration.sql","backend/prisma/migrations/20260124000000_a_add_ai_agents/migration.sql","backend/prisma/migrations/20260124000000_b_add_ai_agents_module/migration.sql","backend/prisma/migrations/rollback-strategy.sql","backend/src/modules/agent-sessions/prompt-assembly.service.ts","backend/src/modules/agent-sessions/sandbox/builtin-tools.ts","backend/src/modules/ai-agent-skills/skill-execution-engine.service.test.ts","backend/src/modules/ai-agent-skills/skill-execution-engine.service.ts","backend/src/modules/ai-agents/services/llm-runtime.service.ts","backend/src/modules/ai-agents/services/model-runtime-resolver.service.ts","docs/guides/database-migration-guide-v2.md","docs/reports/database-migration-improvements-2026-04-14.md","docs/reports/release-readiness-2026-04-15.md","reports/prisma-zod-contract-audit.2026-04-15.json","reports/prisma-zod-contract-audit.2026-04-15.md","scripts/ci-migration-check.sh","scripts/cleanup-legacy-migrations.sh","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"],"removed":["backend/backend/prisma/migrations/20260123235959_create_missing_tables/migration.sql","backend/prisma/migrations/20260103100000_add_bom_and_assembly/migration.sql","backend/prisma/migrations/20260103100000_add_customer_tags_meta/migration.sql","backend/prisma/migrations/20260104100000_add_im_channel_bindings/migration.sql","backend/prisma/migrations/20260104100000_add_performance_indexes/migration.sql","backend/prisma/migrations/20260124000000_add_ai_agents/migration.sql","backend/prisma/migrations/20260124000000_add_ai_agents_module/migration.sql"],"modified":[".dockerignore","AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/Dockerfile","backend/Dockerfile.local","backend/prisma/process-designer.prisma","backend/src/config/kafka.ts","backend/src/modules/ad-placement/placement.service.ts","backend/src/modules/agent-sessions/harness.service.test.ts","backend/src/modules/agent-sessions/harness.service.ts","backend/src/modules/agent-sessions/sandbox/sandbox.registry.test.ts","backend/src/modules/agent-sessions/sandbox/sandbox.registry.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.controller.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.schema.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.test.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.ts","backend/src/modules/ai-agents/services/ai-agent-im-message-processor.service.ts","backend/src/modules/ai-agents/services/semantic-agent.service.ts","backend/src/modules/alliance-partners/alliance-partner.controller.ts","backend/src/modules/alliance-partners/alliance-partner.routes.ts","backend/src/modules/alliance-partners/alliance-partner.schema.ts","backend/src/modules/alliance-partners/alliance-partner.service.test.ts","backend/src/modules/alliance-partners/alliance-partner.service.ts","backend/src/modules/channels/channel.schema.ts","backend/src/modules/community-members/community-member.controller.ts","backend/src/modules/community-members/community-member.service.ts","backend/src/modules/dimension-transform/dimension-transform.controller.ts","backend/src/modules/dimension-transform/dimension-transform.service.ts","backend/src/modules/expense/expense.controller.ts","backend/src/modules/geo-keywords/geo-keyword.controller.ts","backend/src/modules/geo-keywords/geo-keyword.service.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.controller.ts","backend/src/modules/groupbuy-pricing/groupbuy-pricing.service.ts","backend/src/modules/journey-orchestration/journey-orchestration.service.ts","backend/src/modules/knowledge/knowledge.service.ts","backend/src/modules/marketing-matrix/matrix.controller.ts","backend/src/modules/mdm/mdm.service.ts","backend/src/modules/orders/order.controller.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/partner-customers/partner-customer.schema.ts","backend/src/modules/process/process.service.test.ts","backend/src/modules/process/process.service.ts","backend/src/modules/realtime/realtime.contract.routes.ts","backend/src/modules/realtime/realtime.routes.ts","backend/src/modules/revenue/revenue-crud.service.ts","backend/src/modules/sample-requests/sample-request.service.ts","backend/src/modules/search/search.service.ts","backend/src/modules/stores/store-config.service.ts","backend/src/modules/suppliers/supplier.schema.ts","backend/src/modules/treasury/treasury-crud.service.ts","backend/tests/api/alliance-partners.test.ts","backend/tests/api/alliance-products.test.ts","create-extension.sh","docker-compose.local-prod.yml","docker-compose.prod.yml","docs/guides/database-migration-guide.md","e2e/scripts/verify-view-governance.mjs","e2e/tests/ui-modules/view-governance.generated.json","frontend/Dockerfile","frontend/src/composables/useDashboardRealtime.ts","frontend/src/types/ai-agent.ts","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/harness-dashboard.latest.json","reports/menu-inventory-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/module-grades.latest.json","reports/outbox-atomicity-audit.latest.json","reports/prisma-zod-contract-audit.latest.json","reports/prisma-zod-contract-audit.latest.md","reports/project-census.latest.json","reports/response-columns-audit.latest.json","reports/type-debt-audit.latest.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":5217003,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-15T15:01:01+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
|
2
|
20
|
1777161652
|
1777161980
|
0
|
1777161650
|
1777162014
|
|
|
0
|
Edit
Delete
|
|
17248
|
Merge gitea/main: harness/outbox/migration updates
|
6
|
5
|
e2e-tests.yml
|
17169
|
-2
|
285
|
refs/heads/main
|
7b47df3186db279cfc071517a6c034aa213d926d
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fd1878b707f31b05ee314173ac91491adb28bc30","after":"7b47df3186db279cfc071517a6c034aa213d926d","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fd1878b707f31b05ee314173ac91491adb28bc30...7b47df3186db279cfc071517a6c034aa213d926d","commits":[{"id":"7b47df3186db279cfc071517a6c034aa213d926d","message":"Merge gitea/main: harness/outbox/migration updates\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/7b47df3186db279cfc071517a6c034aa213d926d","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-17T08:50:00+08:00","added":[".github/workflows/migration-safety.yml",".qwen/settings.json",".qwen/settings.json.orig","DOCKER.md","QWEN.md","backend/.env","backend/prisma/migrations/20260103100000_a_add_bom_and_assembly/migration.sql","backend/prisma/migrations/20260103100000_b_add_customer_tags_meta/migration.sql","backend/prisma/migrations/20260104100000_a_add_im_channel_bindings/migration.sql","backend/prisma/migrations/20260104100000_b_add_performance_indexes/migration.sql","backend/prisma/migrations/20260124000000_a_add_ai_agents/migration.sql","backend/prisma/migrations/20260124000000_b_add_ai_agents_module/migration.sql","backend/prisma/migrations/rollback-strategy.sql","backend/src/modules/agent-sessions/prompt-assembly.service.ts","backend/src/modules/agent-sessions/sandbox/builtin-tools.ts","backend/src/modules/ai-agent-skills/skill-execution-engine.service.test.ts","backend/src/modules/ai-agent-skills/skill-execution-engine.service.ts","backend/src/modules/ai-agents/services/llm-runtime.service.ts","backend/src/modules/ai-agents/services/model-runtime-resolver.service.ts","docs/guides/database-migration-guide-v2.md","docs/reports/database-migration-improvements-2026-04-14.md","docs/reports/release-readiness-2026-04-15.md","reports/prisma-zod-contract-audit.2026-04-15.json","reports/prisma-zod-contract-audit.2026-04-15.md","scripts/ci-migration-check.sh","scripts/cleanup-legacy-migrations.sh","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"],"removed":["backend/backend/prisma/migrations/20260123235959_create_missing_tables/migration.sql","backend/prisma/migrations/20260103100000_add_bom_and_assembly/migration.sql","backend/prisma/migrations/20260103100000_add_customer_tags_meta/migration.sql","backend/prisma/migrations/20260104100000_add_im_channel_bindings/migration.sql","backend/prisma/migrations/20260104100000_add_performance_indexes/migration.sql","backend/prisma/migrations/20260124000000_add_ai_agents/migration.sql","backend/prisma/migrations/20260124000000_add_ai_agents_module/migration.sql"],"modified":[".dockerignore","AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/Dockerfile","backend/Dockerfile.local","backend/prisma/process-designer.prisma","backend/src/config/kafka.ts","backend/src/modules/ad-placement/placement.service.ts","backend/src/modules/agent-sessions/harness.service.test.ts","backend/src/modules/agent-sessions/harness.service.ts","backend/src/modules/agent-sessions/sandbox/sandbox.registry.test.ts","backend/src/modules/agent-sessions/sandbox/sandbox.registry.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.controller.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.schema.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.test.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.ts","backend/src/modules/ai-agents/services/ai-agent-im-message-processor.service.ts","backend/src/modules/ai-agents/services/semantic-agent.service.ts","backend/src/modules/alliance-partners/alliance-partner.controller.ts","backend/src/modules/alliance-partners/alliance-partner.routes.ts","backend/src/modules/alliance-partners/alliance-partner.schema.ts","backend/src/modules/alliance-partners/alliance-partner.service.test.ts","backend/src/modules/alliance-partners/alliance-partner.service.ts","backend/src/modules/channels/channel.schema.ts","backend/src/modules/community-members/community-member.controller.ts","backend/src/modules/community-members/community-member.service.ts","backend/src/modules/dimension-transform/dimension-transform.controller.ts","backend/src/modules/dimension-transform/dimension-transform.service.ts","backend/src/modules/expense/expense.controller.ts","backend/src/modules/geo-keywords/geo-keyword.controller.ts","backend/src/modules/geo-keywords/geo-keyword.service.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.controller.ts","backend/src/modules/groupbuy-pricing/groupbuy-pricing.service.ts","backend/src/modules/journey-orchestration/journey-orchestration.service.ts","backend/src/modules/knowledge/knowledge.service.ts","backend/src/modules/marketing-matrix/matrix.controller.ts","backend/src/modules/mdm/mdm.service.ts","backend/src/modules/orders/order.controller.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/partner-customers/partner-customer.schema.ts","backend/src/modules/process/process.service.test.ts","backend/src/modules/process/process.service.ts","backend/src/modules/realtime/realtime.contract.routes.ts","backend/src/modules/realtime/realtime.routes.ts","backend/src/modules/revenue/revenue-crud.service.ts","backend/src/modules/sample-requests/sample-request.service.ts","backend/src/modules/search/search.service.ts","backend/src/modules/stores/store-config.service.ts","backend/src/modules/suppliers/supplier.schema.ts","backend/src/modules/treasury/treasury-crud.service.ts","backend/tests/api/alliance-partners.test.ts","backend/tests/api/alliance-products.test.ts","create-extension.sh","docker-compose.local-prod.yml","docker-compose.prod.yml","docs/guides/database-migration-guide.md","e2e/scripts/verify-view-governance.mjs","e2e/tests/ui-modules/view-governance.generated.json","frontend/Dockerfile","frontend/src/composables/useDashboardRealtime.ts","frontend/src/types/ai-agent.ts","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/harness-dashboard.latest.json","reports/menu-inventory-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/module-grades.latest.json","reports/outbox-atomicity-audit.latest.json","reports/prisma-zod-contract-audit.latest.json","reports/prisma-zod-contract-audit.latest.md","reports/project-census.latest.json","reports/response-columns-audit.latest.json","reports/type-debt-audit.latest.json"]},{"id":"debdf5680e9bd056fb75e681e4d79cb74c02de9f","message":"fix: override existing env vars in dev mode to prevent empty REDIS_PASSWORD issue\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/debdf5680e9bd056fb75e681e4d79cb74c02de9f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T22:22:30+08:00","added":[],"removed":[],"modified":["backend/src/config/load-env.ts"]}],"total_commits":0,"head_commit":{"id":"7b47df3186db279cfc071517a6c034aa213d926d","message":"Merge gitea/main: harness/outbox/migration updates\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/7b47df3186db279cfc071517a6c034aa213d926d","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-17T08:50:00+08:00","added":[".github/workflows/migration-safety.yml",".qwen/settings.json",".qwen/settings.json.orig","DOCKER.md","QWEN.md","backend/.env","backend/prisma/migrations/20260103100000_a_add_bom_and_assembly/migration.sql","backend/prisma/migrations/20260103100000_b_add_customer_tags_meta/migration.sql","backend/prisma/migrations/20260104100000_a_add_im_channel_bindings/migration.sql","backend/prisma/migrations/20260104100000_b_add_performance_indexes/migration.sql","backend/prisma/migrations/20260124000000_a_add_ai_agents/migration.sql","backend/prisma/migrations/20260124000000_b_add_ai_agents_module/migration.sql","backend/prisma/migrations/rollback-strategy.sql","backend/src/modules/agent-sessions/prompt-assembly.service.ts","backend/src/modules/agent-sessions/sandbox/builtin-tools.ts","backend/src/modules/ai-agent-skills/skill-execution-engine.service.test.ts","backend/src/modules/ai-agent-skills/skill-execution-engine.service.ts","backend/src/modules/ai-agents/services/llm-runtime.service.ts","backend/src/modules/ai-agents/services/model-runtime-resolver.service.ts","docs/guides/database-migration-guide-v2.md","docs/reports/database-migration-improvements-2026-04-14.md","docs/reports/release-readiness-2026-04-15.md","reports/prisma-zod-contract-audit.2026-04-15.json","reports/prisma-zod-contract-audit.2026-04-15.md","scripts/ci-migration-check.sh","scripts/cleanup-legacy-migrations.sh","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"],"removed":["backend/backend/prisma/migrations/20260123235959_create_missing_tables/migration.sql","backend/prisma/migrations/20260103100000_add_bom_and_assembly/migration.sql","backend/prisma/migrations/20260103100000_add_customer_tags_meta/migration.sql","backend/prisma/migrations/20260104100000_add_im_channel_bindings/migration.sql","backend/prisma/migrations/20260104100000_add_performance_indexes/migration.sql","backend/prisma/migrations/20260124000000_add_ai_agents/migration.sql","backend/prisma/migrations/20260124000000_add_ai_agents_module/migration.sql"],"modified":[".dockerignore","AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/Dockerfile","backend/Dockerfile.local","backend/prisma/process-designer.prisma","backend/src/config/kafka.ts","backend/src/modules/ad-placement/placement.service.ts","backend/src/modules/agent-sessions/harness.service.test.ts","backend/src/modules/agent-sessions/harness.service.ts","backend/src/modules/agent-sessions/sandbox/sandbox.registry.test.ts","backend/src/modules/agent-sessions/sandbox/sandbox.registry.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.controller.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.schema.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.test.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.ts","backend/src/modules/ai-agents/services/ai-agent-im-message-processor.service.ts","backend/src/modules/ai-agents/services/semantic-agent.service.ts","backend/src/modules/alliance-partners/alliance-partner.controller.ts","backend/src/modules/alliance-partners/alliance-partner.routes.ts","backend/src/modules/alliance-partners/alliance-partner.schema.ts","backend/src/modules/alliance-partners/alliance-partner.service.test.ts","backend/src/modules/alliance-partners/alliance-partner.service.ts","backend/src/modules/channels/channel.schema.ts","backend/src/modules/community-members/community-member.controller.ts","backend/src/modules/community-members/community-member.service.ts","backend/src/modules/dimension-transform/dimension-transform.controller.ts","backend/src/modules/dimension-transform/dimension-transform.service.ts","backend/src/modules/expense/expense.controller.ts","backend/src/modules/geo-keywords/geo-keyword.controller.ts","backend/src/modules/geo-keywords/geo-keyword.service.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.controller.ts","backend/src/modules/groupbuy-pricing/groupbuy-pricing.service.ts","backend/src/modules/journey-orchestration/journey-orchestration.service.ts","backend/src/modules/knowledge/knowledge.service.ts","backend/src/modules/marketing-matrix/matrix.controller.ts","backend/src/modules/mdm/mdm.service.ts","backend/src/modules/orders/order.controller.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/partner-customers/partner-customer.schema.ts","backend/src/modules/process/process.service.test.ts","backend/src/modules/process/process.service.ts","backend/src/modules/realtime/realtime.contract.routes.ts","backend/src/modules/realtime/realtime.routes.ts","backend/src/modules/revenue/revenue-crud.service.ts","backend/src/modules/sample-requests/sample-request.service.ts","backend/src/modules/search/search.service.ts","backend/src/modules/stores/store-config.service.ts","backend/src/modules/suppliers/supplier.schema.ts","backend/src/modules/treasury/treasury-crud.service.ts","backend/tests/api/alliance-partners.test.ts","backend/tests/api/alliance-products.test.ts","create-extension.sh","docker-compose.local-prod.yml","docker-compose.prod.yml","docs/guides/database-migration-guide.md","e2e/scripts/verify-view-governance.mjs","e2e/tests/ui-modules/view-governance.generated.json","frontend/Dockerfile","frontend/src/composables/useDashboardRealtime.ts","frontend/src/types/ai-agent.ts","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/harness-dashboard.latest.json","reports/menu-inventory-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/module-grades.latest.json","reports/outbox-atomicity-audit.latest.json","reports/prisma-zod-contract-audit.latest.json","reports/prisma-zod-contract-audit.latest.md","reports/project-census.latest.json","reports/response-columns-audit.latest.json","reports/type-debt-audit.latest.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":5217003,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-15T15:01:01+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
|
2
|
20
|
1777075253
|
1777076013
|
0
|
1777075250
|
1777076022
|
|
|
0
|
Edit
Delete
|
|
16959
|
Merge gitea/main: harness/outbox/migration updates
|
6
|
5
|
e2e-tests.yml
|
16880
|
-2
|
285
|
refs/heads/main
|
7b47df3186db279cfc071517a6c034aa213d926d
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fd1878b707f31b05ee314173ac91491adb28bc30","after":"7b47df3186db279cfc071517a6c034aa213d926d","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fd1878b707f31b05ee314173ac91491adb28bc30...7b47df3186db279cfc071517a6c034aa213d926d","commits":[{"id":"7b47df3186db279cfc071517a6c034aa213d926d","message":"Merge gitea/main: harness/outbox/migration updates\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/7b47df3186db279cfc071517a6c034aa213d926d","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-17T08:50:00+08:00","added":[".github/workflows/migration-safety.yml",".qwen/settings.json",".qwen/settings.json.orig","DOCKER.md","QWEN.md","backend/.env","backend/prisma/migrations/20260103100000_a_add_bom_and_assembly/migration.sql","backend/prisma/migrations/20260103100000_b_add_customer_tags_meta/migration.sql","backend/prisma/migrations/20260104100000_a_add_im_channel_bindings/migration.sql","backend/prisma/migrations/20260104100000_b_add_performance_indexes/migration.sql","backend/prisma/migrations/20260124000000_a_add_ai_agents/migration.sql","backend/prisma/migrations/20260124000000_b_add_ai_agents_module/migration.sql","backend/prisma/migrations/rollback-strategy.sql","backend/src/modules/agent-sessions/prompt-assembly.service.ts","backend/src/modules/agent-sessions/sandbox/builtin-tools.ts","backend/src/modules/ai-agent-skills/skill-execution-engine.service.test.ts","backend/src/modules/ai-agent-skills/skill-execution-engine.service.ts","backend/src/modules/ai-agents/services/llm-runtime.service.ts","backend/src/modules/ai-agents/services/model-runtime-resolver.service.ts","docs/guides/database-migration-guide-v2.md","docs/reports/database-migration-improvements-2026-04-14.md","docs/reports/release-readiness-2026-04-15.md","reports/prisma-zod-contract-audit.2026-04-15.json","reports/prisma-zod-contract-audit.2026-04-15.md","scripts/ci-migration-check.sh","scripts/cleanup-legacy-migrations.sh","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"],"removed":["backend/backend/prisma/migrations/20260123235959_create_missing_tables/migration.sql","backend/prisma/migrations/20260103100000_add_bom_and_assembly/migration.sql","backend/prisma/migrations/20260103100000_add_customer_tags_meta/migration.sql","backend/prisma/migrations/20260104100000_add_im_channel_bindings/migration.sql","backend/prisma/migrations/20260104100000_add_performance_indexes/migration.sql","backend/prisma/migrations/20260124000000_add_ai_agents/migration.sql","backend/prisma/migrations/20260124000000_add_ai_agents_module/migration.sql"],"modified":[".dockerignore","AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/Dockerfile","backend/Dockerfile.local","backend/prisma/process-designer.prisma","backend/src/config/kafka.ts","backend/src/modules/ad-placement/placement.service.ts","backend/src/modules/agent-sessions/harness.service.test.ts","backend/src/modules/agent-sessions/harness.service.ts","backend/src/modules/agent-sessions/sandbox/sandbox.registry.test.ts","backend/src/modules/agent-sessions/sandbox/sandbox.registry.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.controller.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.schema.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.test.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.ts","backend/src/modules/ai-agents/services/ai-agent-im-message-processor.service.ts","backend/src/modules/ai-agents/services/semantic-agent.service.ts","backend/src/modules/alliance-partners/alliance-partner.controller.ts","backend/src/modules/alliance-partners/alliance-partner.routes.ts","backend/src/modules/alliance-partners/alliance-partner.schema.ts","backend/src/modules/alliance-partners/alliance-partner.service.test.ts","backend/src/modules/alliance-partners/alliance-partner.service.ts","backend/src/modules/channels/channel.schema.ts","backend/src/modules/community-members/community-member.controller.ts","backend/src/modules/community-members/community-member.service.ts","backend/src/modules/dimension-transform/dimension-transform.controller.ts","backend/src/modules/dimension-transform/dimension-transform.service.ts","backend/src/modules/expense/expense.controller.ts","backend/src/modules/geo-keywords/geo-keyword.controller.ts","backend/src/modules/geo-keywords/geo-keyword.service.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.controller.ts","backend/src/modules/groupbuy-pricing/groupbuy-pricing.service.ts","backend/src/modules/journey-orchestration/journey-orchestration.service.ts","backend/src/modules/knowledge/knowledge.service.ts","backend/src/modules/marketing-matrix/matrix.controller.ts","backend/src/modules/mdm/mdm.service.ts","backend/src/modules/orders/order.controller.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/partner-customers/partner-customer.schema.ts","backend/src/modules/process/process.service.test.ts","backend/src/modules/process/process.service.ts","backend/src/modules/realtime/realtime.contract.routes.ts","backend/src/modules/realtime/realtime.routes.ts","backend/src/modules/revenue/revenue-crud.service.ts","backend/src/modules/sample-requests/sample-request.service.ts","backend/src/modules/search/search.service.ts","backend/src/modules/stores/store-config.service.ts","backend/src/modules/suppliers/supplier.schema.ts","backend/src/modules/treasury/treasury-crud.service.ts","backend/tests/api/alliance-partners.test.ts","backend/tests/api/alliance-products.test.ts","create-extension.sh","docker-compose.local-prod.yml","docker-compose.prod.yml","docs/guides/database-migration-guide.md","e2e/scripts/verify-view-governance.mjs","e2e/tests/ui-modules/view-governance.generated.json","frontend/Dockerfile","frontend/src/composables/useDashboardRealtime.ts","frontend/src/types/ai-agent.ts","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/harness-dashboard.latest.json","reports/menu-inventory-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/module-grades.latest.json","reports/outbox-atomicity-audit.latest.json","reports/prisma-zod-contract-audit.latest.json","reports/prisma-zod-contract-audit.latest.md","reports/project-census.latest.json","reports/response-columns-audit.latest.json","reports/type-debt-audit.latest.json"]},{"id":"debdf5680e9bd056fb75e681e4d79cb74c02de9f","message":"fix: override existing env vars in dev mode to prevent empty REDIS_PASSWORD issue\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/debdf5680e9bd056fb75e681e4d79cb74c02de9f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T22:22:30+08:00","added":[],"removed":[],"modified":["backend/src/config/load-env.ts"]}],"total_commits":0,"head_commit":{"id":"7b47df3186db279cfc071517a6c034aa213d926d","message":"Merge gitea/main: harness/outbox/migration updates\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/7b47df3186db279cfc071517a6c034aa213d926d","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-17T08:50:00+08:00","added":[".github/workflows/migration-safety.yml",".qwen/settings.json",".qwen/settings.json.orig","DOCKER.md","QWEN.md","backend/.env","backend/prisma/migrations/20260103100000_a_add_bom_and_assembly/migration.sql","backend/prisma/migrations/20260103100000_b_add_customer_tags_meta/migration.sql","backend/prisma/migrations/20260104100000_a_add_im_channel_bindings/migration.sql","backend/prisma/migrations/20260104100000_b_add_performance_indexes/migration.sql","backend/prisma/migrations/20260124000000_a_add_ai_agents/migration.sql","backend/prisma/migrations/20260124000000_b_add_ai_agents_module/migration.sql","backend/prisma/migrations/rollback-strategy.sql","backend/src/modules/agent-sessions/prompt-assembly.service.ts","backend/src/modules/agent-sessions/sandbox/builtin-tools.ts","backend/src/modules/ai-agent-skills/skill-execution-engine.service.test.ts","backend/src/modules/ai-agent-skills/skill-execution-engine.service.ts","backend/src/modules/ai-agents/services/llm-runtime.service.ts","backend/src/modules/ai-agents/services/model-runtime-resolver.service.ts","docs/guides/database-migration-guide-v2.md","docs/reports/database-migration-improvements-2026-04-14.md","docs/reports/release-readiness-2026-04-15.md","reports/prisma-zod-contract-audit.2026-04-15.json","reports/prisma-zod-contract-audit.2026-04-15.md","scripts/ci-migration-check.sh","scripts/cleanup-legacy-migrations.sh","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"],"removed":["backend/backend/prisma/migrations/20260123235959_create_missing_tables/migration.sql","backend/prisma/migrations/20260103100000_add_bom_and_assembly/migration.sql","backend/prisma/migrations/20260103100000_add_customer_tags_meta/migration.sql","backend/prisma/migrations/20260104100000_add_im_channel_bindings/migration.sql","backend/prisma/migrations/20260104100000_add_performance_indexes/migration.sql","backend/prisma/migrations/20260124000000_add_ai_agents/migration.sql","backend/prisma/migrations/20260124000000_add_ai_agents_module/migration.sql"],"modified":[".dockerignore","AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/Dockerfile","backend/Dockerfile.local","backend/prisma/process-designer.prisma","backend/src/config/kafka.ts","backend/src/modules/ad-placement/placement.service.ts","backend/src/modules/agent-sessions/harness.service.test.ts","backend/src/modules/agent-sessions/harness.service.ts","backend/src/modules/agent-sessions/sandbox/sandbox.registry.test.ts","backend/src/modules/agent-sessions/sandbox/sandbox.registry.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.controller.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.schema.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.test.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.ts","backend/src/modules/ai-agents/services/ai-agent-im-message-processor.service.ts","backend/src/modules/ai-agents/services/semantic-agent.service.ts","backend/src/modules/alliance-partners/alliance-partner.controller.ts","backend/src/modules/alliance-partners/alliance-partner.routes.ts","backend/src/modules/alliance-partners/alliance-partner.schema.ts","backend/src/modules/alliance-partners/alliance-partner.service.test.ts","backend/src/modules/alliance-partners/alliance-partner.service.ts","backend/src/modules/channels/channel.schema.ts","backend/src/modules/community-members/community-member.controller.ts","backend/src/modules/community-members/community-member.service.ts","backend/src/modules/dimension-transform/dimension-transform.controller.ts","backend/src/modules/dimension-transform/dimension-transform.service.ts","backend/src/modules/expense/expense.controller.ts","backend/src/modules/geo-keywords/geo-keyword.controller.ts","backend/src/modules/geo-keywords/geo-keyword.service.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.controller.ts","backend/src/modules/groupbuy-pricing/groupbuy-pricing.service.ts","backend/src/modules/journey-orchestration/journey-orchestration.service.ts","backend/src/modules/knowledge/knowledge.service.ts","backend/src/modules/marketing-matrix/matrix.controller.ts","backend/src/modules/mdm/mdm.service.ts","backend/src/modules/orders/order.controller.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/partner-customers/partner-customer.schema.ts","backend/src/modules/process/process.service.test.ts","backend/src/modules/process/process.service.ts","backend/src/modules/realtime/realtime.contract.routes.ts","backend/src/modules/realtime/realtime.routes.ts","backend/src/modules/revenue/revenue-crud.service.ts","backend/src/modules/sample-requests/sample-request.service.ts","backend/src/modules/search/search.service.ts","backend/src/modules/stores/store-config.service.ts","backend/src/modules/suppliers/supplier.schema.ts","backend/src/modules/treasury/treasury-crud.service.ts","backend/tests/api/alliance-partners.test.ts","backend/tests/api/alliance-products.test.ts","create-extension.sh","docker-compose.local-prod.yml","docker-compose.prod.yml","docs/guides/database-migration-guide.md","e2e/scripts/verify-view-governance.mjs","e2e/tests/ui-modules/view-governance.generated.json","frontend/Dockerfile","frontend/src/composables/useDashboardRealtime.ts","frontend/src/types/ai-agent.ts","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/harness-dashboard.latest.json","reports/menu-inventory-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/module-grades.latest.json","reports/outbox-atomicity-audit.latest.json","reports/prisma-zod-contract-audit.latest.json","reports/prisma-zod-contract-audit.latest.md","reports/project-census.latest.json","reports/response-columns-audit.latest.json","reports/type-debt-audit.latest.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":5217003,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-15T15:01:01+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
|
2
|
20
|
1776988852
|
1776991571
|
0
|
1776988850
|
1776991593
|
|
|
0
|
Edit
Delete
|
|
16670
|
Merge gitea/main: harness/outbox/migration updates
|
6
|
5
|
e2e-tests.yml
|
16591
|
-2
|
285
|
refs/heads/main
|
7b47df3186db279cfc071517a6c034aa213d926d
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fd1878b707f31b05ee314173ac91491adb28bc30","after":"7b47df3186db279cfc071517a6c034aa213d926d","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fd1878b707f31b05ee314173ac91491adb28bc30...7b47df3186db279cfc071517a6c034aa213d926d","commits":[{"id":"7b47df3186db279cfc071517a6c034aa213d926d","message":"Merge gitea/main: harness/outbox/migration updates\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/7b47df3186db279cfc071517a6c034aa213d926d","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-17T08:50:00+08:00","added":[".github/workflows/migration-safety.yml",".qwen/settings.json",".qwen/settings.json.orig","DOCKER.md","QWEN.md","backend/.env","backend/prisma/migrations/20260103100000_a_add_bom_and_assembly/migration.sql","backend/prisma/migrations/20260103100000_b_add_customer_tags_meta/migration.sql","backend/prisma/migrations/20260104100000_a_add_im_channel_bindings/migration.sql","backend/prisma/migrations/20260104100000_b_add_performance_indexes/migration.sql","backend/prisma/migrations/20260124000000_a_add_ai_agents/migration.sql","backend/prisma/migrations/20260124000000_b_add_ai_agents_module/migration.sql","backend/prisma/migrations/rollback-strategy.sql","backend/src/modules/agent-sessions/prompt-assembly.service.ts","backend/src/modules/agent-sessions/sandbox/builtin-tools.ts","backend/src/modules/ai-agent-skills/skill-execution-engine.service.test.ts","backend/src/modules/ai-agent-skills/skill-execution-engine.service.ts","backend/src/modules/ai-agents/services/llm-runtime.service.ts","backend/src/modules/ai-agents/services/model-runtime-resolver.service.ts","docs/guides/database-migration-guide-v2.md","docs/reports/database-migration-improvements-2026-04-14.md","docs/reports/release-readiness-2026-04-15.md","reports/prisma-zod-contract-audit.2026-04-15.json","reports/prisma-zod-contract-audit.2026-04-15.md","scripts/ci-migration-check.sh","scripts/cleanup-legacy-migrations.sh","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"],"removed":["backend/backend/prisma/migrations/20260123235959_create_missing_tables/migration.sql","backend/prisma/migrations/20260103100000_add_bom_and_assembly/migration.sql","backend/prisma/migrations/20260103100000_add_customer_tags_meta/migration.sql","backend/prisma/migrations/20260104100000_add_im_channel_bindings/migration.sql","backend/prisma/migrations/20260104100000_add_performance_indexes/migration.sql","backend/prisma/migrations/20260124000000_add_ai_agents/migration.sql","backend/prisma/migrations/20260124000000_add_ai_agents_module/migration.sql"],"modified":[".dockerignore","AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/Dockerfile","backend/Dockerfile.local","backend/prisma/process-designer.prisma","backend/src/config/kafka.ts","backend/src/modules/ad-placement/placement.service.ts","backend/src/modules/agent-sessions/harness.service.test.ts","backend/src/modules/agent-sessions/harness.service.ts","backend/src/modules/agent-sessions/sandbox/sandbox.registry.test.ts","backend/src/modules/agent-sessions/sandbox/sandbox.registry.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.controller.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.schema.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.test.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.ts","backend/src/modules/ai-agents/services/ai-agent-im-message-processor.service.ts","backend/src/modules/ai-agents/services/semantic-agent.service.ts","backend/src/modules/alliance-partners/alliance-partner.controller.ts","backend/src/modules/alliance-partners/alliance-partner.routes.ts","backend/src/modules/alliance-partners/alliance-partner.schema.ts","backend/src/modules/alliance-partners/alliance-partner.service.test.ts","backend/src/modules/alliance-partners/alliance-partner.service.ts","backend/src/modules/channels/channel.schema.ts","backend/src/modules/community-members/community-member.controller.ts","backend/src/modules/community-members/community-member.service.ts","backend/src/modules/dimension-transform/dimension-transform.controller.ts","backend/src/modules/dimension-transform/dimension-transform.service.ts","backend/src/modules/expense/expense.controller.ts","backend/src/modules/geo-keywords/geo-keyword.controller.ts","backend/src/modules/geo-keywords/geo-keyword.service.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.controller.ts","backend/src/modules/groupbuy-pricing/groupbuy-pricing.service.ts","backend/src/modules/journey-orchestration/journey-orchestration.service.ts","backend/src/modules/knowledge/knowledge.service.ts","backend/src/modules/marketing-matrix/matrix.controller.ts","backend/src/modules/mdm/mdm.service.ts","backend/src/modules/orders/order.controller.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/partner-customers/partner-customer.schema.ts","backend/src/modules/process/process.service.test.ts","backend/src/modules/process/process.service.ts","backend/src/modules/realtime/realtime.contract.routes.ts","backend/src/modules/realtime/realtime.routes.ts","backend/src/modules/revenue/revenue-crud.service.ts","backend/src/modules/sample-requests/sample-request.service.ts","backend/src/modules/search/search.service.ts","backend/src/modules/stores/store-config.service.ts","backend/src/modules/suppliers/supplier.schema.ts","backend/src/modules/treasury/treasury-crud.service.ts","backend/tests/api/alliance-partners.test.ts","backend/tests/api/alliance-products.test.ts","create-extension.sh","docker-compose.local-prod.yml","docker-compose.prod.yml","docs/guides/database-migration-guide.md","e2e/scripts/verify-view-governance.mjs","e2e/tests/ui-modules/view-governance.generated.json","frontend/Dockerfile","frontend/src/composables/useDashboardRealtime.ts","frontend/src/types/ai-agent.ts","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/harness-dashboard.latest.json","reports/menu-inventory-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/module-grades.latest.json","reports/outbox-atomicity-audit.latest.json","reports/prisma-zod-contract-audit.latest.json","reports/prisma-zod-contract-audit.latest.md","reports/project-census.latest.json","reports/response-columns-audit.latest.json","reports/type-debt-audit.latest.json"]},{"id":"debdf5680e9bd056fb75e681e4d79cb74c02de9f","message":"fix: override existing env vars in dev mode to prevent empty REDIS_PASSWORD issue\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/debdf5680e9bd056fb75e681e4d79cb74c02de9f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T22:22:30+08:00","added":[],"removed":[],"modified":["backend/src/config/load-env.ts"]}],"total_commits":0,"head_commit":{"id":"7b47df3186db279cfc071517a6c034aa213d926d","message":"Merge gitea/main: harness/outbox/migration updates\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/7b47df3186db279cfc071517a6c034aa213d926d","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-17T08:50:00+08:00","added":[".github/workflows/migration-safety.yml",".qwen/settings.json",".qwen/settings.json.orig","DOCKER.md","QWEN.md","backend/.env","backend/prisma/migrations/20260103100000_a_add_bom_and_assembly/migration.sql","backend/prisma/migrations/20260103100000_b_add_customer_tags_meta/migration.sql","backend/prisma/migrations/20260104100000_a_add_im_channel_bindings/migration.sql","backend/prisma/migrations/20260104100000_b_add_performance_indexes/migration.sql","backend/prisma/migrations/20260124000000_a_add_ai_agents/migration.sql","backend/prisma/migrations/20260124000000_b_add_ai_agents_module/migration.sql","backend/prisma/migrations/rollback-strategy.sql","backend/src/modules/agent-sessions/prompt-assembly.service.ts","backend/src/modules/agent-sessions/sandbox/builtin-tools.ts","backend/src/modules/ai-agent-skills/skill-execution-engine.service.test.ts","backend/src/modules/ai-agent-skills/skill-execution-engine.service.ts","backend/src/modules/ai-agents/services/llm-runtime.service.ts","backend/src/modules/ai-agents/services/model-runtime-resolver.service.ts","docs/guides/database-migration-guide-v2.md","docs/reports/database-migration-improvements-2026-04-14.md","docs/reports/release-readiness-2026-04-15.md","reports/prisma-zod-contract-audit.2026-04-15.json","reports/prisma-zod-contract-audit.2026-04-15.md","scripts/ci-migration-check.sh","scripts/cleanup-legacy-migrations.sh","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"],"removed":["backend/backend/prisma/migrations/20260123235959_create_missing_tables/migration.sql","backend/prisma/migrations/20260103100000_add_bom_and_assembly/migration.sql","backend/prisma/migrations/20260103100000_add_customer_tags_meta/migration.sql","backend/prisma/migrations/20260104100000_add_im_channel_bindings/migration.sql","backend/prisma/migrations/20260104100000_add_performance_indexes/migration.sql","backend/prisma/migrations/20260124000000_add_ai_agents/migration.sql","backend/prisma/migrations/20260124000000_add_ai_agents_module/migration.sql"],"modified":[".dockerignore","AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/Dockerfile","backend/Dockerfile.local","backend/prisma/process-designer.prisma","backend/src/config/kafka.ts","backend/src/modules/ad-placement/placement.service.ts","backend/src/modules/agent-sessions/harness.service.test.ts","backend/src/modules/agent-sessions/harness.service.ts","backend/src/modules/agent-sessions/sandbox/sandbox.registry.test.ts","backend/src/modules/agent-sessions/sandbox/sandbox.registry.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.controller.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.schema.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.test.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.ts","backend/src/modules/ai-agents/services/ai-agent-im-message-processor.service.ts","backend/src/modules/ai-agents/services/semantic-agent.service.ts","backend/src/modules/alliance-partners/alliance-partner.controller.ts","backend/src/modules/alliance-partners/alliance-partner.routes.ts","backend/src/modules/alliance-partners/alliance-partner.schema.ts","backend/src/modules/alliance-partners/alliance-partner.service.test.ts","backend/src/modules/alliance-partners/alliance-partner.service.ts","backend/src/modules/channels/channel.schema.ts","backend/src/modules/community-members/community-member.controller.ts","backend/src/modules/community-members/community-member.service.ts","backend/src/modules/dimension-transform/dimension-transform.controller.ts","backend/src/modules/dimension-transform/dimension-transform.service.ts","backend/src/modules/expense/expense.controller.ts","backend/src/modules/geo-keywords/geo-keyword.controller.ts","backend/src/modules/geo-keywords/geo-keyword.service.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.controller.ts","backend/src/modules/groupbuy-pricing/groupbuy-pricing.service.ts","backend/src/modules/journey-orchestration/journey-orchestration.service.ts","backend/src/modules/knowledge/knowledge.service.ts","backend/src/modules/marketing-matrix/matrix.controller.ts","backend/src/modules/mdm/mdm.service.ts","backend/src/modules/orders/order.controller.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/partner-customers/partner-customer.schema.ts","backend/src/modules/process/process.service.test.ts","backend/src/modules/process/process.service.ts","backend/src/modules/realtime/realtime.contract.routes.ts","backend/src/modules/realtime/realtime.routes.ts","backend/src/modules/revenue/revenue-crud.service.ts","backend/src/modules/sample-requests/sample-request.service.ts","backend/src/modules/search/search.service.ts","backend/src/modules/stores/store-config.service.ts","backend/src/modules/suppliers/supplier.schema.ts","backend/src/modules/treasury/treasury-crud.service.ts","backend/tests/api/alliance-partners.test.ts","backend/tests/api/alliance-products.test.ts","create-extension.sh","docker-compose.local-prod.yml","docker-compose.prod.yml","docs/guides/database-migration-guide.md","e2e/scripts/verify-view-governance.mjs","e2e/tests/ui-modules/view-governance.generated.json","frontend/Dockerfile","frontend/src/composables/useDashboardRealtime.ts","frontend/src/types/ai-agent.ts","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/harness-dashboard.latest.json","reports/menu-inventory-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/module-grades.latest.json","reports/outbox-atomicity-audit.latest.json","reports/prisma-zod-contract-audit.latest.json","reports/prisma-zod-contract-audit.latest.md","reports/project-census.latest.json","reports/response-columns-audit.latest.json","reports/type-debt-audit.latest.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":5217003,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-15T15:01:01+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
|
2
|
20
|
1776902453
|
1776903082
|
0
|
1776902450
|
1776903178
|
|
|
0
|
Edit
Delete
|
|
16380
|
Merge gitea/main: harness/outbox/migration updates
|
6
|
5
|
e2e-tests.yml
|
16301
|
-2
|
285
|
refs/heads/main
|
7b47df3186db279cfc071517a6c034aa213d926d
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fd1878b707f31b05ee314173ac91491adb28bc30","after":"7b47df3186db279cfc071517a6c034aa213d926d","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fd1878b707f31b05ee314173ac91491adb28bc30...7b47df3186db279cfc071517a6c034aa213d926d","commits":[{"id":"7b47df3186db279cfc071517a6c034aa213d926d","message":"Merge gitea/main: harness/outbox/migration updates\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/7b47df3186db279cfc071517a6c034aa213d926d","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-17T08:50:00+08:00","added":[".github/workflows/migration-safety.yml",".qwen/settings.json",".qwen/settings.json.orig","DOCKER.md","QWEN.md","backend/.env","backend/prisma/migrations/20260103100000_a_add_bom_and_assembly/migration.sql","backend/prisma/migrations/20260103100000_b_add_customer_tags_meta/migration.sql","backend/prisma/migrations/20260104100000_a_add_im_channel_bindings/migration.sql","backend/prisma/migrations/20260104100000_b_add_performance_indexes/migration.sql","backend/prisma/migrations/20260124000000_a_add_ai_agents/migration.sql","backend/prisma/migrations/20260124000000_b_add_ai_agents_module/migration.sql","backend/prisma/migrations/rollback-strategy.sql","backend/src/modules/agent-sessions/prompt-assembly.service.ts","backend/src/modules/agent-sessions/sandbox/builtin-tools.ts","backend/src/modules/ai-agent-skills/skill-execution-engine.service.test.ts","backend/src/modules/ai-agent-skills/skill-execution-engine.service.ts","backend/src/modules/ai-agents/services/llm-runtime.service.ts","backend/src/modules/ai-agents/services/model-runtime-resolver.service.ts","docs/guides/database-migration-guide-v2.md","docs/reports/database-migration-improvements-2026-04-14.md","docs/reports/release-readiness-2026-04-15.md","reports/prisma-zod-contract-audit.2026-04-15.json","reports/prisma-zod-contract-audit.2026-04-15.md","scripts/ci-migration-check.sh","scripts/cleanup-legacy-migrations.sh","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"],"removed":["backend/backend/prisma/migrations/20260123235959_create_missing_tables/migration.sql","backend/prisma/migrations/20260103100000_add_bom_and_assembly/migration.sql","backend/prisma/migrations/20260103100000_add_customer_tags_meta/migration.sql","backend/prisma/migrations/20260104100000_add_im_channel_bindings/migration.sql","backend/prisma/migrations/20260104100000_add_performance_indexes/migration.sql","backend/prisma/migrations/20260124000000_add_ai_agents/migration.sql","backend/prisma/migrations/20260124000000_add_ai_agents_module/migration.sql"],"modified":[".dockerignore","AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/Dockerfile","backend/Dockerfile.local","backend/prisma/process-designer.prisma","backend/src/config/kafka.ts","backend/src/modules/ad-placement/placement.service.ts","backend/src/modules/agent-sessions/harness.service.test.ts","backend/src/modules/agent-sessions/harness.service.ts","backend/src/modules/agent-sessions/sandbox/sandbox.registry.test.ts","backend/src/modules/agent-sessions/sandbox/sandbox.registry.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.controller.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.schema.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.test.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.ts","backend/src/modules/ai-agents/services/ai-agent-im-message-processor.service.ts","backend/src/modules/ai-agents/services/semantic-agent.service.ts","backend/src/modules/alliance-partners/alliance-partner.controller.ts","backend/src/modules/alliance-partners/alliance-partner.routes.ts","backend/src/modules/alliance-partners/alliance-partner.schema.ts","backend/src/modules/alliance-partners/alliance-partner.service.test.ts","backend/src/modules/alliance-partners/alliance-partner.service.ts","backend/src/modules/channels/channel.schema.ts","backend/src/modules/community-members/community-member.controller.ts","backend/src/modules/community-members/community-member.service.ts","backend/src/modules/dimension-transform/dimension-transform.controller.ts","backend/src/modules/dimension-transform/dimension-transform.service.ts","backend/src/modules/expense/expense.controller.ts","backend/src/modules/geo-keywords/geo-keyword.controller.ts","backend/src/modules/geo-keywords/geo-keyword.service.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.controller.ts","backend/src/modules/groupbuy-pricing/groupbuy-pricing.service.ts","backend/src/modules/journey-orchestration/journey-orchestration.service.ts","backend/src/modules/knowledge/knowledge.service.ts","backend/src/modules/marketing-matrix/matrix.controller.ts","backend/src/modules/mdm/mdm.service.ts","backend/src/modules/orders/order.controller.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/partner-customers/partner-customer.schema.ts","backend/src/modules/process/process.service.test.ts","backend/src/modules/process/process.service.ts","backend/src/modules/realtime/realtime.contract.routes.ts","backend/src/modules/realtime/realtime.routes.ts","backend/src/modules/revenue/revenue-crud.service.ts","backend/src/modules/sample-requests/sample-request.service.ts","backend/src/modules/search/search.service.ts","backend/src/modules/stores/store-config.service.ts","backend/src/modules/suppliers/supplier.schema.ts","backend/src/modules/treasury/treasury-crud.service.ts","backend/tests/api/alliance-partners.test.ts","backend/tests/api/alliance-products.test.ts","create-extension.sh","docker-compose.local-prod.yml","docker-compose.prod.yml","docs/guides/database-migration-guide.md","e2e/scripts/verify-view-governance.mjs","e2e/tests/ui-modules/view-governance.generated.json","frontend/Dockerfile","frontend/src/composables/useDashboardRealtime.ts","frontend/src/types/ai-agent.ts","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/harness-dashboard.latest.json","reports/menu-inventory-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/module-grades.latest.json","reports/outbox-atomicity-audit.latest.json","reports/prisma-zod-contract-audit.latest.json","reports/prisma-zod-contract-audit.latest.md","reports/project-census.latest.json","reports/response-columns-audit.latest.json","reports/type-debt-audit.latest.json"]},{"id":"debdf5680e9bd056fb75e681e4d79cb74c02de9f","message":"fix: override existing env vars in dev mode to prevent empty REDIS_PASSWORD issue\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/debdf5680e9bd056fb75e681e4d79cb74c02de9f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T22:22:30+08:00","added":[],"removed":[],"modified":["backend/src/config/load-env.ts"]}],"total_commits":0,"head_commit":{"id":"7b47df3186db279cfc071517a6c034aa213d926d","message":"Merge gitea/main: harness/outbox/migration updates\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/7b47df3186db279cfc071517a6c034aa213d926d","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-17T08:50:00+08:00","added":[".github/workflows/migration-safety.yml",".qwen/settings.json",".qwen/settings.json.orig","DOCKER.md","QWEN.md","backend/.env","backend/prisma/migrations/20260103100000_a_add_bom_and_assembly/migration.sql","backend/prisma/migrations/20260103100000_b_add_customer_tags_meta/migration.sql","backend/prisma/migrations/20260104100000_a_add_im_channel_bindings/migration.sql","backend/prisma/migrations/20260104100000_b_add_performance_indexes/migration.sql","backend/prisma/migrations/20260124000000_a_add_ai_agents/migration.sql","backend/prisma/migrations/20260124000000_b_add_ai_agents_module/migration.sql","backend/prisma/migrations/rollback-strategy.sql","backend/src/modules/agent-sessions/prompt-assembly.service.ts","backend/src/modules/agent-sessions/sandbox/builtin-tools.ts","backend/src/modules/ai-agent-skills/skill-execution-engine.service.test.ts","backend/src/modules/ai-agent-skills/skill-execution-engine.service.ts","backend/src/modules/ai-agents/services/llm-runtime.service.ts","backend/src/modules/ai-agents/services/model-runtime-resolver.service.ts","docs/guides/database-migration-guide-v2.md","docs/reports/database-migration-improvements-2026-04-14.md","docs/reports/release-readiness-2026-04-15.md","reports/prisma-zod-contract-audit.2026-04-15.json","reports/prisma-zod-contract-audit.2026-04-15.md","scripts/ci-migration-check.sh","scripts/cleanup-legacy-migrations.sh","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"],"removed":["backend/backend/prisma/migrations/20260123235959_create_missing_tables/migration.sql","backend/prisma/migrations/20260103100000_add_bom_and_assembly/migration.sql","backend/prisma/migrations/20260103100000_add_customer_tags_meta/migration.sql","backend/prisma/migrations/20260104100000_add_im_channel_bindings/migration.sql","backend/prisma/migrations/20260104100000_add_performance_indexes/migration.sql","backend/prisma/migrations/20260124000000_add_ai_agents/migration.sql","backend/prisma/migrations/20260124000000_add_ai_agents_module/migration.sql"],"modified":[".dockerignore","AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/Dockerfile","backend/Dockerfile.local","backend/prisma/process-designer.prisma","backend/src/config/kafka.ts","backend/src/modules/ad-placement/placement.service.ts","backend/src/modules/agent-sessions/harness.service.test.ts","backend/src/modules/agent-sessions/harness.service.ts","backend/src/modules/agent-sessions/sandbox/sandbox.registry.test.ts","backend/src/modules/agent-sessions/sandbox/sandbox.registry.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.controller.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.schema.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.test.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.ts","backend/src/modules/ai-agents/services/ai-agent-im-message-processor.service.ts","backend/src/modules/ai-agents/services/semantic-agent.service.ts","backend/src/modules/alliance-partners/alliance-partner.controller.ts","backend/src/modules/alliance-partners/alliance-partner.routes.ts","backend/src/modules/alliance-partners/alliance-partner.schema.ts","backend/src/modules/alliance-partners/alliance-partner.service.test.ts","backend/src/modules/alliance-partners/alliance-partner.service.ts","backend/src/modules/channels/channel.schema.ts","backend/src/modules/community-members/community-member.controller.ts","backend/src/modules/community-members/community-member.service.ts","backend/src/modules/dimension-transform/dimension-transform.controller.ts","backend/src/modules/dimension-transform/dimension-transform.service.ts","backend/src/modules/expense/expense.controller.ts","backend/src/modules/geo-keywords/geo-keyword.controller.ts","backend/src/modules/geo-keywords/geo-keyword.service.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.controller.ts","backend/src/modules/groupbuy-pricing/groupbuy-pricing.service.ts","backend/src/modules/journey-orchestration/journey-orchestration.service.ts","backend/src/modules/knowledge/knowledge.service.ts","backend/src/modules/marketing-matrix/matrix.controller.ts","backend/src/modules/mdm/mdm.service.ts","backend/src/modules/orders/order.controller.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/partner-customers/partner-customer.schema.ts","backend/src/modules/process/process.service.test.ts","backend/src/modules/process/process.service.ts","backend/src/modules/realtime/realtime.contract.routes.ts","backend/src/modules/realtime/realtime.routes.ts","backend/src/modules/revenue/revenue-crud.service.ts","backend/src/modules/sample-requests/sample-request.service.ts","backend/src/modules/search/search.service.ts","backend/src/modules/stores/store-config.service.ts","backend/src/modules/suppliers/supplier.schema.ts","backend/src/modules/treasury/treasury-crud.service.ts","backend/tests/api/alliance-partners.test.ts","backend/tests/api/alliance-products.test.ts","create-extension.sh","docker-compose.local-prod.yml","docker-compose.prod.yml","docs/guides/database-migration-guide.md","e2e/scripts/verify-view-governance.mjs","e2e/tests/ui-modules/view-governance.generated.json","frontend/Dockerfile","frontend/src/composables/useDashboardRealtime.ts","frontend/src/types/ai-agent.ts","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/harness-dashboard.latest.json","reports/menu-inventory-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/module-grades.latest.json","reports/outbox-atomicity-audit.latest.json","reports/prisma-zod-contract-audit.latest.json","reports/prisma-zod-contract-audit.latest.md","reports/project-census.latest.json","reports/response-columns-audit.latest.json","reports/type-debt-audit.latest.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":5217003,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-15T15:01:01+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
|
2
|
20
|
1776816053
|
1776816637
|
0
|
1776816050
|
1776816671
|
|
|
0
|
Edit
Delete
|
|
16091
|
Merge gitea/main: harness/outbox/migration updates
|
6
|
5
|
e2e-tests.yml
|
16012
|
-2
|
285
|
refs/heads/main
|
7b47df3186db279cfc071517a6c034aa213d926d
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fd1878b707f31b05ee314173ac91491adb28bc30","after":"7b47df3186db279cfc071517a6c034aa213d926d","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/fd1878b707f31b05ee314173ac91491adb28bc30...7b47df3186db279cfc071517a6c034aa213d926d","commits":[{"id":"7b47df3186db279cfc071517a6c034aa213d926d","message":"Merge gitea/main: harness/outbox/migration updates\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/7b47df3186db279cfc071517a6c034aa213d926d","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-17T08:50:00+08:00","added":[".github/workflows/migration-safety.yml",".qwen/settings.json",".qwen/settings.json.orig","DOCKER.md","QWEN.md","backend/.env","backend/prisma/migrations/20260103100000_a_add_bom_and_assembly/migration.sql","backend/prisma/migrations/20260103100000_b_add_customer_tags_meta/migration.sql","backend/prisma/migrations/20260104100000_a_add_im_channel_bindings/migration.sql","backend/prisma/migrations/20260104100000_b_add_performance_indexes/migration.sql","backend/prisma/migrations/20260124000000_a_add_ai_agents/migration.sql","backend/prisma/migrations/20260124000000_b_add_ai_agents_module/migration.sql","backend/prisma/migrations/rollback-strategy.sql","backend/src/modules/agent-sessions/prompt-assembly.service.ts","backend/src/modules/agent-sessions/sandbox/builtin-tools.ts","backend/src/modules/ai-agent-skills/skill-execution-engine.service.test.ts","backend/src/modules/ai-agent-skills/skill-execution-engine.service.ts","backend/src/modules/ai-agents/services/llm-runtime.service.ts","backend/src/modules/ai-agents/services/model-runtime-resolver.service.ts","docs/guides/database-migration-guide-v2.md","docs/reports/database-migration-improvements-2026-04-14.md","docs/reports/release-readiness-2026-04-15.md","reports/prisma-zod-contract-audit.2026-04-15.json","reports/prisma-zod-contract-audit.2026-04-15.md","scripts/ci-migration-check.sh","scripts/cleanup-legacy-migrations.sh","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"],"removed":["backend/backend/prisma/migrations/20260123235959_create_missing_tables/migration.sql","backend/prisma/migrations/20260103100000_add_bom_and_assembly/migration.sql","backend/prisma/migrations/20260103100000_add_customer_tags_meta/migration.sql","backend/prisma/migrations/20260104100000_add_im_channel_bindings/migration.sql","backend/prisma/migrations/20260104100000_add_performance_indexes/migration.sql","backend/prisma/migrations/20260124000000_add_ai_agents/migration.sql","backend/prisma/migrations/20260124000000_add_ai_agents_module/migration.sql"],"modified":[".dockerignore","AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/Dockerfile","backend/Dockerfile.local","backend/prisma/process-designer.prisma","backend/src/config/kafka.ts","backend/src/modules/ad-placement/placement.service.ts","backend/src/modules/agent-sessions/harness.service.test.ts","backend/src/modules/agent-sessions/harness.service.ts","backend/src/modules/agent-sessions/sandbox/sandbox.registry.test.ts","backend/src/modules/agent-sessions/sandbox/sandbox.registry.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.controller.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.schema.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.test.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.ts","backend/src/modules/ai-agents/services/ai-agent-im-message-processor.service.ts","backend/src/modules/ai-agents/services/semantic-agent.service.ts","backend/src/modules/alliance-partners/alliance-partner.controller.ts","backend/src/modules/alliance-partners/alliance-partner.routes.ts","backend/src/modules/alliance-partners/alliance-partner.schema.ts","backend/src/modules/alliance-partners/alliance-partner.service.test.ts","backend/src/modules/alliance-partners/alliance-partner.service.ts","backend/src/modules/channels/channel.schema.ts","backend/src/modules/community-members/community-member.controller.ts","backend/src/modules/community-members/community-member.service.ts","backend/src/modules/dimension-transform/dimension-transform.controller.ts","backend/src/modules/dimension-transform/dimension-transform.service.ts","backend/src/modules/expense/expense.controller.ts","backend/src/modules/geo-keywords/geo-keyword.controller.ts","backend/src/modules/geo-keywords/geo-keyword.service.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.controller.ts","backend/src/modules/groupbuy-pricing/groupbuy-pricing.service.ts","backend/src/modules/journey-orchestration/journey-orchestration.service.ts","backend/src/modules/knowledge/knowledge.service.ts","backend/src/modules/marketing-matrix/matrix.controller.ts","backend/src/modules/mdm/mdm.service.ts","backend/src/modules/orders/order.controller.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/partner-customers/partner-customer.schema.ts","backend/src/modules/process/process.service.test.ts","backend/src/modules/process/process.service.ts","backend/src/modules/realtime/realtime.contract.routes.ts","backend/src/modules/realtime/realtime.routes.ts","backend/src/modules/revenue/revenue-crud.service.ts","backend/src/modules/sample-requests/sample-request.service.ts","backend/src/modules/search/search.service.ts","backend/src/modules/stores/store-config.service.ts","backend/src/modules/suppliers/supplier.schema.ts","backend/src/modules/treasury/treasury-crud.service.ts","backend/tests/api/alliance-partners.test.ts","backend/tests/api/alliance-products.test.ts","create-extension.sh","docker-compose.local-prod.yml","docker-compose.prod.yml","docs/guides/database-migration-guide.md","e2e/scripts/verify-view-governance.mjs","e2e/tests/ui-modules/view-governance.generated.json","frontend/Dockerfile","frontend/src/composables/useDashboardRealtime.ts","frontend/src/types/ai-agent.ts","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/harness-dashboard.latest.json","reports/menu-inventory-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/module-grades.latest.json","reports/outbox-atomicity-audit.latest.json","reports/prisma-zod-contract-audit.latest.json","reports/prisma-zod-contract-audit.latest.md","reports/project-census.latest.json","reports/response-columns-audit.latest.json","reports/type-debt-audit.latest.json"]},{"id":"debdf5680e9bd056fb75e681e4d79cb74c02de9f","message":"fix: override existing env vars in dev mode to prevent empty REDIS_PASSWORD issue\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/debdf5680e9bd056fb75e681e4d79cb74c02de9f","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-13T22:22:30+08:00","added":[],"removed":[],"modified":["backend/src/config/load-env.ts"]}],"total_commits":0,"head_commit":{"id":"7b47df3186db279cfc071517a6c034aa213d926d","message":"Merge gitea/main: harness/outbox/migration updates\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/7b47df3186db279cfc071517a6c034aa213d926d","author":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"committer":{"name":"Mluo","email":"mluo@MluodeMacBook-Air.local","username":""},"verification":null,"timestamp":"2026-04-17T08:50:00+08:00","added":[".github/workflows/migration-safety.yml",".qwen/settings.json",".qwen/settings.json.orig","DOCKER.md","QWEN.md","backend/.env","backend/prisma/migrations/20260103100000_a_add_bom_and_assembly/migration.sql","backend/prisma/migrations/20260103100000_b_add_customer_tags_meta/migration.sql","backend/prisma/migrations/20260104100000_a_add_im_channel_bindings/migration.sql","backend/prisma/migrations/20260104100000_b_add_performance_indexes/migration.sql","backend/prisma/migrations/20260124000000_a_add_ai_agents/migration.sql","backend/prisma/migrations/20260124000000_b_add_ai_agents_module/migration.sql","backend/prisma/migrations/rollback-strategy.sql","backend/src/modules/agent-sessions/prompt-assembly.service.ts","backend/src/modules/agent-sessions/sandbox/builtin-tools.ts","backend/src/modules/ai-agent-skills/skill-execution-engine.service.test.ts","backend/src/modules/ai-agent-skills/skill-execution-engine.service.ts","backend/src/modules/ai-agents/services/llm-runtime.service.ts","backend/src/modules/ai-agents/services/model-runtime-resolver.service.ts","docs/guides/database-migration-guide-v2.md","docs/reports/database-migration-improvements-2026-04-14.md","docs/reports/release-readiness-2026-04-15.md","reports/prisma-zod-contract-audit.2026-04-15.json","reports/prisma-zod-contract-audit.2026-04-15.md","scripts/ci-migration-check.sh","scripts/cleanup-legacy-migrations.sh","scripts/fix-duplicate-migrations.sh","scripts/generate-rollback-strategy.sh"],"removed":["backend/backend/prisma/migrations/20260123235959_create_missing_tables/migration.sql","backend/prisma/migrations/20260103100000_add_bom_and_assembly/migration.sql","backend/prisma/migrations/20260103100000_add_customer_tags_meta/migration.sql","backend/prisma/migrations/20260104100000_add_im_channel_bindings/migration.sql","backend/prisma/migrations/20260104100000_add_performance_indexes/migration.sql","backend/prisma/migrations/20260124000000_add_ai_agents/migration.sql","backend/prisma/migrations/20260124000000_add_ai_agents_module/migration.sql"],"modified":[".dockerignore","AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/Dockerfile","backend/Dockerfile.local","backend/prisma/process-designer.prisma","backend/src/config/kafka.ts","backend/src/modules/ad-placement/placement.service.ts","backend/src/modules/agent-sessions/harness.service.test.ts","backend/src/modules/agent-sessions/harness.service.ts","backend/src/modules/agent-sessions/sandbox/sandbox.registry.test.ts","backend/src/modules/agent-sessions/sandbox/sandbox.registry.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.controller.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.schema.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.test.ts","backend/src/modules/ai-agent-skills/ai-agent-skills.service.ts","backend/src/modules/ai-agents/services/ai-agent-im-message-processor.service.ts","backend/src/modules/ai-agents/services/semantic-agent.service.ts","backend/src/modules/alliance-partners/alliance-partner.controller.ts","backend/src/modules/alliance-partners/alliance-partner.routes.ts","backend/src/modules/alliance-partners/alliance-partner.schema.ts","backend/src/modules/alliance-partners/alliance-partner.service.test.ts","backend/src/modules/alliance-partners/alliance-partner.service.ts","backend/src/modules/channels/channel.schema.ts","backend/src/modules/community-members/community-member.controller.ts","backend/src/modules/community-members/community-member.service.ts","backend/src/modules/dimension-transform/dimension-transform.controller.ts","backend/src/modules/dimension-transform/dimension-transform.service.ts","backend/src/modules/expense/expense.controller.ts","backend/src/modules/geo-keywords/geo-keyword.controller.ts","backend/src/modules/geo-keywords/geo-keyword.service.ts","backend/src/modules/groupbuy-participants/groupbuy-participant.controller.ts","backend/src/modules/groupbuy-pricing/groupbuy-pricing.service.ts","backend/src/modules/journey-orchestration/journey-orchestration.service.ts","backend/src/modules/knowledge/knowledge.service.ts","backend/src/modules/marketing-matrix/matrix.controller.ts","backend/src/modules/mdm/mdm.service.ts","backend/src/modules/orders/order.controller.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/partner-customers/partner-customer.schema.ts","backend/src/modules/process/process.service.test.ts","backend/src/modules/process/process.service.ts","backend/src/modules/realtime/realtime.contract.routes.ts","backend/src/modules/realtime/realtime.routes.ts","backend/src/modules/revenue/revenue-crud.service.ts","backend/src/modules/sample-requests/sample-request.service.ts","backend/src/modules/search/search.service.ts","backend/src/modules/stores/store-config.service.ts","backend/src/modules/suppliers/supplier.schema.ts","backend/src/modules/treasury/treasury-crud.service.ts","backend/tests/api/alliance-partners.test.ts","backend/tests/api/alliance-products.test.ts","create-extension.sh","docker-compose.local-prod.yml","docker-compose.prod.yml","docs/guides/database-migration-guide.md","e2e/scripts/verify-view-governance.mjs","e2e/tests/ui-modules/view-governance.generated.json","frontend/Dockerfile","frontend/src/composables/useDashboardRealtime.ts","frontend/src/types/ai-agent.ts","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/commander-workset.latest.json","reports/enum-consistency-audit.latest.json","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/harness-dashboard.latest.json","reports/menu-inventory-audit.latest.json","reports/module-coverage-matrix.latest.json","reports/module-grades.latest.json","reports/outbox-atomicity-audit.latest.json","reports/prisma-zod-contract-audit.latest.json","reports/prisma-zod-contract-audit.latest.md","reports/project-census.latest.json","reports/response-columns-audit.latest.json","reports/type-debt-audit.latest.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":5217003,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":4,"open_issues_count":0,"open_pr_counter":1,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-04-15T15:01:01+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
|
2
|
20
|
1776729653
|
1776731228
|
0
|
1776729650
|
1776731243
|
|
|
0
|
Edit
Delete
|