|
17732
|
Stop tracking backend/.env (leaked secrets remedia Stop tracking backend/.env (leaked secrets remediation, step 1)...
|
6
|
5
|
deploy.yml
|
17654
|
5
|
0
|
refs/heads/main
|
f8c99c0bccfc306a4dcc9afd03e1247a4ebd4a97
|
0
|
0
|
0
|
workflow_run
|
{"action":"completed","workflo {"action":"completed","workflow":{"id":"test-pipeline.yml","name":"Test Pipeline","path":".github/workflows/test-pipeline.yml","state":"active","created_at":"2026-04-26T08:52:06-07:00","updated_at":"2026-04-26T08:52:06-07:00","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/src/branch/main/.github/workflows/test-pipeline.yml","badge_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml/badge.svg?branch=main","deleted_at":"0001-01-01T00:00:00Z"},"workflow_run":{"id":17728,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/17728","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/17728","display_title":"Make local one-command startup work end-to-end","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":17649,"head_sha":"597fbdc49bc67e7803e9ff0ab9c77dccc99d778e","head_branch":"main","status":"completed","actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"trigger_actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5218086,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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":false,"push":false,"pull":false},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"conclusion":"cancelled","started_at":"1970-01-01T08:00:00+08:00","completed_at":"2026-04-26T23:52:20+08:00"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5218086,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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":[]},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
workflow_run
|
3
|
12
|
0
|
1777219015
|
0
|
1777218745
|
1777219017
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "true"
...
|
deploy-refs/heads/main
|
1
|
Edit
Delete
|
|
17730
|
Stop tracking backend/.env (leaked secrets remedia Stop tracking backend/.env (leaked secrets remediation, step 1)...
|
6
|
5
|
ci.yml
|
17651
|
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
|
3
|
6
|
0
|
1777219007
|
0
|
1777218738
|
1777219007
|
group: ci-${{ github.ref }}
cancel-in-progress: group: ci-${{ github.ref }}
cancel-in-progress: "true"
...
|
ci-refs/heads/main
|
1
|
Edit
Delete
|
|
17728
|
Make local one-command startup work end-to-end
|
6
|
5
|
test-pipeline.yml
|
17649
|
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
|
3
|
24
|
0
|
1777218740
|
0
|
1777218322
|
1777218744
|
group: test-pipeline-${{ github.ref }}
cancel-in-p group: test-pipeline-${{ github.ref }}
cancel-in-progress: "true"
...
|
test-pipeline-refs/heads/main
|
1
|
Edit
Delete
|
|
17726
|
Make local one-command startup work end-to-end
|
6
|
5
|
ci.yml
|
17647
|
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
|
3
|
11
|
1777218321
|
1777218365
|
0
|
1777218320
|
1777218737
|
group: ci-${{ github.ref }}
cancel-in-progress: group: ci-${{ github.ref }}
cancel-in-progress: "true"
...
|
ci-refs/heads/main
|
1
|
Edit
Delete
|
|
14947
|
Merge gitea/main: harness/outbox/migration updates
|
6
|
5
|
deploy.yml
|
14869
|
5
|
0
|
refs/heads/main
|
7b47df3186db279cfc071517a6c034aa213d926d
|
0
|
0
|
0
|
workflow_run
|
{"action":"completed","workflo {"action":"completed","workflow":{"id":"test-pipeline.yml","name":"Test Pipeline","path":".github/workflows/test-pipeline.yml","state":"active","created_at":"2026-04-17T08:50:00+08:00","updated_at":"2026-04-17T08:50:00+08:00","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/src/branch/main/.github/workflows/test-pipeline.yml","badge_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml/badge.svg?branch=main","deleted_at":"0001-01-01T00:00:00Z"},"workflow_run":{"id":14938,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/14938","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/14938","display_title":"Merge gitea/main: harness/outbox/migration updates","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":14860,"head_sha":"7b47df3186db279cfc071517a6c034aa213d926d","head_branch":"main","status":"completed","actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"trigger_actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5217014,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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-17T08:53:06+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"pull":false},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"conclusion":"failure","started_at":"2026-04-17T09:16:36+08:00","completed_at":"2026-04-17T09:17:38+08:00"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5217014,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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-17T08:53: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":[]},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
workflow_run
|
3
|
12
|
0
|
1776388772
|
0
|
1776388770
|
1776388774
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "true"
...
|
deploy-refs/heads/main
|
1
|
Edit
Delete
|
|
14945
|
Merge gitea/main: harness/outbox/migration updates
|
6
|
5
|
deploy.yml
|
14867
|
5
|
0
|
refs/heads/main
|
7b47df3186db279cfc071517a6c034aa213d926d
|
0
|
0
|
0
|
workflow_run
|
{"action":"completed","workflo {"action":"completed","workflow":{"id":"test-pipeline.yml","name":"Test Pipeline","path":".github/workflows/test-pipeline.yml","state":"active","created_at":"2026-04-17T08:50:00+08:00","updated_at":"2026-04-17T08:50:00+08:00","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/src/branch/main/.github/workflows/test-pipeline.yml","badge_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml/badge.svg?branch=main","deleted_at":"0001-01-01T00:00:00Z"},"workflow_run":{"id":14938,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/14938","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/14938","display_title":"Merge gitea/main: harness/outbox/migration updates","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":14860,"head_sha":"7b47df3186db279cfc071517a6c034aa213d926d","head_branch":"main","status":"completed","actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"trigger_actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5217014,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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-17T08:53:06+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"pull":false},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"conclusion":"failure","started_at":"2026-04-17T09:16:36+08:00","completed_at":"2026-04-17T09:17:38+08:00"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5217014,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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-17T08:53: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":[]},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
workflow_run
|
3
|
26
|
1776388708
|
1776388769
|
0
|
1776388658
|
1776388769
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "true"
...
|
deploy-refs/heads/main
|
1
|
Edit
Delete
|
|
14432
|
Tighten outbox atomicity and refresh readiness aud Tighten outbox atomicity and refresh readiness audits...
|
6
|
5
|
deploy.yml
|
14354
|
5
|
0
|
refs/heads/main
|
fd1878b707f31b05ee314173ac91491adb28bc30
|
0
|
0
|
0
|
workflow_run
|
{"action":"completed","workflo {"action":"completed","workflow":{"id":"test-pipeline.yml","name":"Test Pipeline","path":".github/workflows/test-pipeline.yml","state":"active","created_at":"2026-04-15T15:00:11+08:00","updated_at":"2026-04-15T15:00:11+08:00","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/src/branch/main/.github/workflows/test-pipeline.yml","badge_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml/badge.svg?branch=main","deleted_at":"0001-01-01T00:00:00Z"},"workflow_run":{"id":14426,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/14426","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/14426","display_title":"Tighten outbox atomicity and refresh readiness audits","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":14348,"head_sha":"fd1878b707f31b05ee314173ac91491adb28bc30","head_branch":"main","status":"completed","actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"trigger_actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5217003,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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":false,"push":false,"pull":false},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"conclusion":"failure","started_at":"2026-04-15T15:08:52+08:00","completed_at":"2026-04-15T15:09:46+08:00"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5217003,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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":[]},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
workflow_run
|
3
|
12
|
0
|
1776237059
|
0
|
1776237055
|
1776237061
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "true"
...
|
deploy-refs/heads/main
|
1
|
Edit
Delete
|
|
14429
|
Tighten outbox atomicity and refresh readiness aud Tighten outbox atomicity and refresh readiness audits...
|
6
|
5
|
deploy.yml
|
14351
|
5
|
0
|
refs/heads/main
|
fd1878b707f31b05ee314173ac91491adb28bc30
|
0
|
0
|
0
|
workflow_run
|
{"action":"completed","workflo {"action":"completed","workflow":{"id":"test-pipeline.yml","name":"Test Pipeline","path":".github/workflows/test-pipeline.yml","state":"active","created_at":"2026-04-15T15:00:11+08:00","updated_at":"2026-04-15T15:00:11+08:00","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/src/branch/main/.github/workflows/test-pipeline.yml","badge_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml/badge.svg?branch=main","deleted_at":"0001-01-01T00:00:00Z"},"workflow_run":{"id":14426,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/14426","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/14426","display_title":"Tighten outbox atomicity and refresh readiness audits","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":14348,"head_sha":"fd1878b707f31b05ee314173ac91491adb28bc30","head_branch":"main","status":"completed","actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"trigger_actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5217003,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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":false,"push":false,"pull":false},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"conclusion":"failure","started_at":"2026-04-15T15:08:52+08:00","completed_at":"2026-04-15T15:09:46+08:00"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5217003,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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":[]},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
workflow_run
|
3
|
26
|
1776236997
|
1776237054
|
0
|
1776236986
|
1776237054
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "true"
...
|
deploy-refs/heads/main
|
1
|
Edit
Delete
|
|
14352
|
Implement Hermes-style harness context and fix all Implement Hermes-style harness context and fix alliance API tests...
|
6
|
5
|
deploy.yml
|
14274
|
5
|
0
|
refs/heads/main
|
110abcc02b429bfac3ebe16a02a876c0ba2f4f62
|
0
|
0
|
0
|
workflow_run
|
{"action":"completed","workflo {"action":"completed","workflow":{"id":"test-pipeline.yml","name":"Test Pipeline","path":".github/workflows/test-pipeline.yml","state":"active","created_at":"2026-04-15T09:04:03+08:00","updated_at":"2026-04-15T09:04:03+08:00","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/src/branch/main/.github/workflows/test-pipeline.yml","badge_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml/badge.svg?branch=main","deleted_at":"0001-01-01T00:00:00Z"},"workflow_run":{"id":14344,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/14344","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/14344","display_title":"Implement Hermes-style harness context and fix alliance API tests","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":14266,"head_sha":"110abcc02b429bfac3ebe16a02a876c0ba2f4f62","head_branch":"main","status":"completed","actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"trigger_actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5216674,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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-15T09:04:19+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"pull":false},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"conclusion":"failure","started_at":"2026-04-15T09:11:37+08:00","completed_at":"2026-04-15T09:12:21+08:00"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5216674,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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-15T09:04: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":[]},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
workflow_run
|
3
|
12
|
0
|
1776215628
|
0
|
1776215627
|
1776215629
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "true"
...
|
deploy-refs/heads/main
|
1
|
Edit
Delete
|
|
14351
|
Implement Hermes-style harness context and fix all Implement Hermes-style harness context and fix alliance API tests...
|
6
|
5
|
deploy.yml
|
14273
|
5
|
0
|
refs/heads/main
|
110abcc02b429bfac3ebe16a02a876c0ba2f4f62
|
0
|
0
|
0
|
workflow_run
|
{"action":"completed","workflo {"action":"completed","workflow":{"id":"test-pipeline.yml","name":"Test Pipeline","path":".github/workflows/test-pipeline.yml","state":"active","created_at":"2026-04-15T09:04:03+08:00","updated_at":"2026-04-15T09:04:03+08:00","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/src/branch/main/.github/workflows/test-pipeline.yml","badge_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml/badge.svg?branch=main","deleted_at":"0001-01-01T00:00:00Z"},"workflow_run":{"id":14344,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/14344","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/14344","display_title":"Implement Hermes-style harness context and fix alliance API tests","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":14266,"head_sha":"110abcc02b429bfac3ebe16a02a876c0ba2f4f62","head_branch":"main","status":"completed","actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"trigger_actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5216674,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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-15T09:04:19+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"pull":false},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"conclusion":"failure","started_at":"2026-04-15T09:11:37+08:00","completed_at":"2026-04-15T09:12:21+08:00"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5216674,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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-15T09:04: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":[]},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
workflow_run
|
3
|
12
|
0
|
1776215625
|
0
|
1776215623
|
1776215627
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "true"
...
|
deploy-refs/heads/main
|
1
|
Edit
Delete
|
|
14348
|
Implement Hermes-style harness context and fix all Implement Hermes-style harness context and fix alliance API tests...
|
6
|
5
|
deploy.yml
|
14270
|
5
|
0
|
refs/heads/main
|
110abcc02b429bfac3ebe16a02a876c0ba2f4f62
|
0
|
0
|
0
|
workflow_run
|
{"action":"completed","workflo {"action":"completed","workflow":{"id":"test-pipeline.yml","name":"Test Pipeline","path":".github/workflows/test-pipeline.yml","state":"active","created_at":"2026-04-15T09:04:03+08:00","updated_at":"2026-04-15T09:04:03+08:00","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/src/branch/main/.github/workflows/test-pipeline.yml","badge_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml/badge.svg?branch=main","deleted_at":"0001-01-01T00:00:00Z"},"workflow_run":{"id":14344,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/14344","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/14344","display_title":"Implement Hermes-style harness context and fix alliance API tests","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":14266,"head_sha":"110abcc02b429bfac3ebe16a02a876c0ba2f4f62","head_branch":"main","status":"completed","actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"trigger_actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5216674,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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-15T09:04:19+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"pull":false},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"conclusion":"failure","started_at":"2026-04-15T09:11:37+08:00","completed_at":"2026-04-15T09:12:21+08:00"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5216674,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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-15T09:04: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":[]},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
workflow_run
|
3
|
26
|
1776215557
|
1776215622
|
0
|
1776215542
|
1776215623
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "true"
...
|
deploy-refs/heads/main
|
1
|
Edit
Delete
|
|
14201
|
Update governance docs and refresh harness baselin Update governance docs and refresh harness baseline guidance...
|
6
|
5
|
deploy.yml
|
14123
|
5
|
0
|
refs/heads/main
|
551c4d2e9b42cd14481ec48c3b2e2526cab4d58c
|
0
|
0
|
0
|
workflow_run
|
{"action":"completed","workflo {"action":"completed","workflow":{"id":"test-pipeline.yml","name":"Test Pipeline","path":".github/workflows/test-pipeline.yml","state":"active","created_at":"2026-04-14T20:35:36+08:00","updated_at":"2026-04-14T20:35:36+08:00","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/src/branch/main/.github/workflows/test-pipeline.yml","badge_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml/badge.svg?branch=main","deleted_at":"0001-01-01T00:00:00Z"},"workflow_run":{"id":14182,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/14182","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/14182","display_title":"Update governance docs and refresh harness baseline guidance","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":14103,"head_sha":"551c4d2e9b42cd14481ec48c3b2e2526cab4d58c","head_branch":"main","status":"completed","actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"trigger_actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5215827,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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-14T20:36:01+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"pull":false},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"conclusion":"failure","started_at":"2026-04-14T21:28:23+08:00","completed_at":"2026-04-14T21:29:16+08:00"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5215827,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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-14T20:36: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":[]},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
workflow_run
|
3
|
17
|
1776173490
|
1776173494
|
0
|
1776173487
|
1776173495
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "true"
...
|
deploy-refs/heads/main
|
1
|
Edit
Delete
|
|
14196
|
Update governance docs and refresh harness baselin Update governance docs and refresh harness baseline guidance...
|
6
|
5
|
deploy.yml
|
14118
|
5
|
0
|
refs/heads/main
|
551c4d2e9b42cd14481ec48c3b2e2526cab4d58c
|
0
|
0
|
0
|
workflow_run
|
{"action":"completed","workflo {"action":"completed","workflow":{"id":"test-pipeline.yml","name":"Test Pipeline","path":".github/workflows/test-pipeline.yml","state":"active","created_at":"2026-04-14T20:35:36+08:00","updated_at":"2026-04-14T20:35:36+08:00","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/src/branch/main/.github/workflows/test-pipeline.yml","badge_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml/badge.svg?branch=main","deleted_at":"0001-01-01T00:00:00Z"},"workflow_run":{"id":14182,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/14182","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/14182","display_title":"Update governance docs and refresh harness baseline guidance","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":14103,"head_sha":"551c4d2e9b42cd14481ec48c3b2e2526cab4d58c","head_branch":"main","status":"completed","actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"trigger_actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5215827,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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-14T20:36:01+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"pull":false},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"conclusion":"failure","started_at":"2026-04-14T21:28:23+08:00","completed_at":"2026-04-14T21:29:16+08:00"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5215827,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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-14T20:36: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":[]},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
workflow_run
|
3
|
26
|
1776173404
|
1776173486
|
0
|
1776173358
|
1776173487
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "true"
...
|
deploy-refs/heads/main
|
1
|
Edit
Delete
|
|
14181
|
Update governance docs and refresh harness baselin Update governance docs and refresh harness baseline guidance...
|
6
|
5
|
deploy.yml
|
14104
|
5
|
0
|
refs/heads/main
|
551c4d2e9b42cd14481ec48c3b2e2526cab4d58c
|
0
|
0
|
0
|
workflow_run
|
{"action":"completed","workflo {"action":"completed","workflow":{"id":"test-pipeline.yml","name":"Test Pipeline","path":".github/workflows/test-pipeline.yml","state":"active","created_at":"2026-04-14T20:35:36+08:00","updated_at":"2026-04-14T20:35:36+08:00","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/src/branch/main/.github/workflows/test-pipeline.yml","badge_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml/badge.svg?branch=main","deleted_at":"0001-01-01T00:00:00Z"},"workflow_run":{"id":14177,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/14177","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/14177","display_title":"chore: add backend .env configuration","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":14098,"head_sha":"204e3356f50776130b4976cf96f4deedfe36ab5f","head_branch":"main","status":"completed","actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"trigger_actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5215827,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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-14T20:34:43+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"pull":false},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"conclusion":"cancelled","started_at":"1970-01-01T08:00:00+08:00","completed_at":"2026-04-14T20:35:52+08:00"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5215827,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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-14T20:34:43+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
workflow_run
|
3
|
17
|
1776173301
|
1776173356
|
0
|
1776170159
|
1776173357
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "true"
...
|
deploy-refs/heads/main
|
1
|
Edit
Delete
|
|
14177
|
chore: add backend .env configuration
|
6
|
5
|
test-pipeline.yml
|
14098
|
5
|
0
|
refs/heads/main
|
204e3356f50776130b4976cf96f4deedfe36ab5f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"7c66dac1fd83d4b9dc05198d7589827309ba5922","after":"204e3356f50776130b4976cf96f4deedfe36ab5f","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/7c66dac1fd83d4b9dc05198d7589827309ba5922...204e3356f50776130b4976cf96f4deedfe36ab5f","commits":[{"id":"204e3356f50776130b4976cf96f4deedfe36ab5f","message":"chore: add backend .env configuration\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/204e3356f50776130b4976cf96f4deedfe36ab5f","author":{"name":"jh.sj","email":"jh.sj@jhsjdeMac-Studio.local","username":""},"committer":{"name":"jh.sj","email":"jh.sj@jhsjdeMac-Studio.local","username":""},"verification":null,"timestamp":"2026-04-14T20:34:24+08:00","added":["backend/.env"],"removed":[],"modified":[]}],"total_commits":0,"head_commit":{"id":"204e3356f50776130b4976cf96f4deedfe36ab5f","message":"chore: add backend .env configuration\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/204e3356f50776130b4976cf96f4deedfe36ab5f","author":{"name":"jh.sj","email":"jh.sj@jhsjdeMac-Studio.local","username":""},"committer":{"name":"jh.sj","email":"jh.sj@jhsjdeMac-Studio.local","username":""},"verification":null,"timestamp":"2026-04-14T20:34:24+08:00","added":["backend/.env"],"removed":[],"modified":[]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","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":5215579,"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-14T20:34:31+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
|
3
|
24
|
0
|
1776170152
|
0
|
1776170082
|
1776170156
|
group: test-pipeline-${{ github.ref }}
cancel-in-p group: test-pipeline-${{ github.ref }}
cancel-in-progress: "true"
...
|
test-pipeline-refs/heads/main
|
1
|
Edit
Delete
|
|
14176
|
chore: add backend .env configuration
|
6
|
5
|
deploy.yml
|
14099
|
5
|
0
|
refs/heads/main
|
204e3356f50776130b4976cf96f4deedfe36ab5f
|
0
|
0
|
0
|
workflow_run
|
{"action":"completed","workflo {"action":"completed","workflow":{"id":"test-pipeline.yml","name":"Test Pipeline","path":".github/workflows/test-pipeline.yml","state":"active","created_at":"2026-04-14T20:34:24+08:00","updated_at":"2026-04-14T20:34:24+08:00","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/src/branch/main/.github/workflows/test-pipeline.yml","badge_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml/badge.svg?branch=main","deleted_at":"0001-01-01T00:00:00Z"},"workflow_run":{"id":14173,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/14173","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/14173","display_title":"fix(database): improve migration system with dedup, rollback strategy, and CI/CD","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":14095,"head_sha":"7c66dac1fd83d4b9dc05198d7589827309ba5922","head_branch":"main","status":"completed","actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"trigger_actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5215584,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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-14T20:34:31+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"pull":false},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"conclusion":"cancelled","started_at":"1970-01-01T08:00:00+08:00","completed_at":"2026-04-14T20:34:37+08:00"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5215584,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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-14T20:34:31+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
workflow_run
|
3
|
12
|
0
|
1776170157
|
0
|
1776170082
|
1776170158
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "true"
...
|
deploy-refs/heads/main
|
1
|
Edit
Delete
|
|
14174
|
chore: add backend .env configuration
|
6
|
5
|
ci.yml
|
14096
|
5
|
0
|
refs/heads/main
|
204e3356f50776130b4976cf96f4deedfe36ab5f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"7c66dac1fd83d4b9dc05198d7589827309ba5922","after":"204e3356f50776130b4976cf96f4deedfe36ab5f","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/7c66dac1fd83d4b9dc05198d7589827309ba5922...204e3356f50776130b4976cf96f4deedfe36ab5f","commits":[{"id":"204e3356f50776130b4976cf96f4deedfe36ab5f","message":"chore: add backend .env configuration\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/204e3356f50776130b4976cf96f4deedfe36ab5f","author":{"name":"jh.sj","email":"jh.sj@jhsjdeMac-Studio.local","username":""},"committer":{"name":"jh.sj","email":"jh.sj@jhsjdeMac-Studio.local","username":""},"verification":null,"timestamp":"2026-04-14T20:34:24+08:00","added":["backend/.env"],"removed":[],"modified":[]}],"total_commits":0,"head_commit":{"id":"204e3356f50776130b4976cf96f4deedfe36ab5f","message":"chore: add backend .env configuration\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/204e3356f50776130b4976cf96f4deedfe36ab5f","author":{"name":"jh.sj","email":"jh.sj@jhsjdeMac-Studio.local","username":""},"committer":{"name":"jh.sj","email":"jh.sj@jhsjdeMac-Studio.local","username":""},"verification":null,"timestamp":"2026-04-14T20:34:24+08:00","added":["backend/.env"],"removed":[],"modified":[]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","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":5215579,"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-14T20:34:31+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
|
3
|
6
|
0
|
1776170150
|
0
|
1776170076
|
1776170151
|
group: ci-${{ github.ref }}
cancel-in-progress: group: ci-${{ github.ref }}
cancel-in-progress: "true"
...
|
ci-refs/heads/main
|
1
|
Edit
Delete
|
|
14173
|
fix(database): improve migration system with dedup fix(database): improve migration system with dedup, rollback strategy, and CI/CD...
|
6
|
5
|
test-pipeline.yml
|
14095
|
5
|
0
|
refs/heads/main
|
7c66dac1fd83d4b9dc05198d7589827309ba5922
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"d2c68b13960de626f7a8d496bf1977d263eb7931","after":"7c66dac1fd83d4b9dc05198d7589827309ba5922","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/d2c68b13960de626f7a8d496bf1977d263eb7931...7c66dac1fd83d4b9dc05198d7589827309ba5922","commits":[{"id":"7c66dac1fd83d4b9dc05198d7589827309ba5922","message":"fix(database): improve migration system with dedup, rollback strategy, and CI/CD\n\n- Fix 6 duplicate migration timestamps by adding _a/_b suffixes for deterministic ordering\n- Remove nested backend/backend/ directory anomaly (accidental copy)\n- Deprecate process-designer.prisma (models already merged in main schema)\n- Deprecate machine-specific create-extension.sh, point to portable alternatives\n- Create database-migration-guide-v2.md as single source of truth\n- Add rollback strategy generator for recent migrations (cross-platform)\n- Add CI/CD migration safety checks (7-point validation)\n- Add GitHub Actions workflow for automatic migration validation\n- Add legacy migration cleanup script to standardize on Prisma\n- Archive old migration guide with deprecation notice\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/7c66dac1fd83d4b9dc05198d7589827309ba5922","author":{"name":"jh.sj","email":"jh.sj@jhsjdeMac-Studio.local","username":""},"committer":{"name":"jh.sj","email":"jh.sj@jhsjdeMac-Studio.local","username":""},"verification":null,"timestamp":"2026-04-14T20:18:15+08:00","added":[".github/workflows/migration-safety.yml","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","docs/guides/database-migration-guide-v2.md","docs/reports/database-migration-improvements-2026-04-14.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","backend/prisma/process-designer.prisma","create-extension.sh","docs/guides/database-migration-guide.md"]}],"total_commits":0,"head_commit":{"id":"7c66dac1fd83d4b9dc05198d7589827309ba5922","message":"fix(database): improve migration system with dedup, rollback strategy, and CI/CD\n\n- Fix 6 duplicate migration timestamps by adding _a/_b suffixes for deterministic ordering\n- Remove nested backend/backend/ directory anomaly (accidental copy)\n- Deprecate process-designer.prisma (models already merged in main schema)\n- Deprecate machine-specific create-extension.sh, point to portable alternatives\n- Create database-migration-guide-v2.md as single source of truth\n- Add rollback strategy generator for recent migrations (cross-platform)\n- Add CI/CD migration safety checks (7-point validation)\n- Add GitHub Actions workflow for automatic migration validation\n- Add legacy migration cleanup script to standardize on Prisma\n- Archive old migration guide with deprecation notice\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/7c66dac1fd83d4b9dc05198d7589827309ba5922","author":{"name":"jh.sj","email":"jh.sj@jhsjdeMac-Studio.local","username":""},"committer":{"name":"jh.sj","email":"jh.sj@jhsjdeMac-Studio.local","username":""},"verification":null,"timestamp":"2026-04-14T20:18:15+08:00","added":[".github/workflows/migration-safety.yml","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","docs/guides/database-migration-guide-v2.md","docs/reports/database-migration-improvements-2026-04-14.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","backend/prisma/process-designer.prisma","create-extension.sh","docs/guides/database-migration-guide.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":5215537,"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-13T15:41:26+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
|
3
|
24
|
0
|
1776170077
|
0
|
1776170070
|
1776170081
|
group: test-pipeline-${{ github.ref }}
cancel-in-p group: test-pipeline-${{ github.ref }}
cancel-in-progress: "true"
...
|
test-pipeline-refs/heads/main
|
1
|
Edit
Delete
|
|
14171
|
fix(database): improve migration system with dedup fix(database): improve migration system with dedup, rollback strategy, and CI/CD...
|
6
|
5
|
ci.yml
|
14093
|
5
|
0
|
refs/heads/main
|
7c66dac1fd83d4b9dc05198d7589827309ba5922
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"d2c68b13960de626f7a8d496bf1977d263eb7931","after":"7c66dac1fd83d4b9dc05198d7589827309ba5922","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/d2c68b13960de626f7a8d496bf1977d263eb7931...7c66dac1fd83d4b9dc05198d7589827309ba5922","commits":[{"id":"7c66dac1fd83d4b9dc05198d7589827309ba5922","message":"fix(database): improve migration system with dedup, rollback strategy, and CI/CD\n\n- Fix 6 duplicate migration timestamps by adding _a/_b suffixes for deterministic ordering\n- Remove nested backend/backend/ directory anomaly (accidental copy)\n- Deprecate process-designer.prisma (models already merged in main schema)\n- Deprecate machine-specific create-extension.sh, point to portable alternatives\n- Create database-migration-guide-v2.md as single source of truth\n- Add rollback strategy generator for recent migrations (cross-platform)\n- Add CI/CD migration safety checks (7-point validation)\n- Add GitHub Actions workflow for automatic migration validation\n- Add legacy migration cleanup script to standardize on Prisma\n- Archive old migration guide with deprecation notice\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/7c66dac1fd83d4b9dc05198d7589827309ba5922","author":{"name":"jh.sj","email":"jh.sj@jhsjdeMac-Studio.local","username":""},"committer":{"name":"jh.sj","email":"jh.sj@jhsjdeMac-Studio.local","username":""},"verification":null,"timestamp":"2026-04-14T20:18:15+08:00","added":[".github/workflows/migration-safety.yml","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","docs/guides/database-migration-guide-v2.md","docs/reports/database-migration-improvements-2026-04-14.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","backend/prisma/process-designer.prisma","create-extension.sh","docs/guides/database-migration-guide.md"]}],"total_commits":0,"head_commit":{"id":"7c66dac1fd83d4b9dc05198d7589827309ba5922","message":"fix(database): improve migration system with dedup, rollback strategy, and CI/CD\n\n- Fix 6 duplicate migration timestamps by adding _a/_b suffixes for deterministic ordering\n- Remove nested backend/backend/ directory anomaly (accidental copy)\n- Deprecate process-designer.prisma (models already merged in main schema)\n- Deprecate machine-specific create-extension.sh, point to portable alternatives\n- Create database-migration-guide-v2.md as single source of truth\n- Add rollback strategy generator for recent migrations (cross-platform)\n- Add CI/CD migration safety checks (7-point validation)\n- Add GitHub Actions workflow for automatic migration validation\n- Add legacy migration cleanup script to standardize on Prisma\n- Archive old migration guide with deprecation notice\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/7c66dac1fd83d4b9dc05198d7589827309ba5922","author":{"name":"jh.sj","email":"jh.sj@jhsjdeMac-Studio.local","username":""},"committer":{"name":"jh.sj","email":"jh.sj@jhsjdeMac-Studio.local","username":""},"verification":null,"timestamp":"2026-04-14T20:18:15+08:00","added":[".github/workflows/migration-safety.yml","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","docs/guides/database-migration-guide-v2.md","docs/reports/database-migration-improvements-2026-04-14.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","backend/prisma/process-designer.prisma","create-extension.sh","docs/guides/database-migration-guide.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":5215537,"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-13T15:41:26+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
|
3
|
7
|
1776170068
|
1776170075
|
0
|
1776170068
|
1776170076
|
group: ci-${{ github.ref }}
cancel-in-progress: group: ci-${{ github.ref }}
cancel-in-progress: "true"
...
|
ci-refs/heads/main
|
1
|
Edit
Delete
|
|
13823
|
feat: 同步最新代码更改,包括后端API、前端组件、测试和报告更新
|
6
|
5
|
deploy.yml
|
13745
|
5
|
0
|
refs/heads/main
|
d2c68b13960de626f7a8d496bf1977d263eb7931
|
0
|
0
|
0
|
workflow_run
|
{"action":"completed","workflo {"action":"completed","workflow":{"id":"test-pipeline.yml","name":"Test Pipeline","path":".github/workflows/test-pipeline.yml","state":"active","created_at":"2026-04-13T15:39:52+08:00","updated_at":"2026-04-13T15:39:52+08:00","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/src/branch/main/.github/workflows/test-pipeline.yml","badge_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml/badge.svg?branch=main","deleted_at":"0001-01-01T00:00:00Z"},"workflow_run":{"id":13814,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/13814","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/13814","display_title":"feat: 同步最新代码更改,包括后端API、前端组件、测试和报告更新","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":13736,"head_sha":"d2c68b13960de626f7a8d496bf1977d263eb7931","head_branch":"main","status":"completed","actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"trigger_actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5215537,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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-13T15:41:26+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"pull":false},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"conclusion":"failure","started_at":"2026-04-13T15:48:16+08:00","completed_at":"2026-04-13T15:49:18+08:00"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5215537,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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-13T15:41:26+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
workflow_run
|
3
|
12
|
0
|
1776067929
|
0
|
1776067831
|
1776067930
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "true"
...
|
deploy-refs/heads/main
|
1
|
Edit
Delete
|
|
13817
|
feat: 同步最新代码更改,包括后端API、前端组件、测试和报告更新
|
6
|
5
|
deploy.yml
|
13739
|
5
|
0
|
refs/heads/main
|
d2c68b13960de626f7a8d496bf1977d263eb7931
|
0
|
0
|
0
|
workflow_run
|
{"action":"completed","workflo {"action":"completed","workflow":{"id":"test-pipeline.yml","name":"Test Pipeline","path":".github/workflows/test-pipeline.yml","state":"active","created_at":"2026-04-13T15:39:52+08:00","updated_at":"2026-04-13T15:39:52+08:00","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/src/branch/main/.github/workflows/test-pipeline.yml","badge_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/workflows/test-pipeline.yml/badge.svg?branch=main","deleted_at":"0001-01-01T00:00:00Z"},"workflow_run":{"id":13814,"url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/actions/runs/13814","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/actions/runs/13814","display_title":"feat: 同步最新代码更改,包括后端API、前端组件、测试和报告更新","path":"test-pipeline.yml@refs/heads/main","event":"push","run_attempt":0,"run_number":13736,"head_sha":"d2c68b13960de626f7a8d496bf1977d263eb7931","head_branch":"main","status":"completed","actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"trigger_actor":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5215537,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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-13T15:41:26+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":false,"push":false,"pull":false},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"conclusion":"failure","started_at":"2026-04-13T15:48:16+08:00","completed_at":"2026-04-13T15:49:18+08:00"},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5215537,"language":"HTML","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":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-13T15:41:26+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}...
|
workflow_run
|
3
|
26
|
1776066745
|
1776067830
|
0
|
1776066558
|
1776067831
|
group: deploy-${{ github.ref }}
cancel-in-progress group: deploy-${{ github.ref }}
cancel-in-progress: "true"
...
|
deploy-refs/heads/main
|
1
|
Edit
Delete
|
|
23452
|
feat(platforms): 增加真实 HTTP 数据连接验收
|
51
|
5
|
ci.yml
|
5
|
5
|
0
|
refs/heads/main
|
8be066d1f0c5db776932ea77d5e0ee292bb367dd
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"c0618a939c6a7f40d91e9160a083313befe7c157","after":"8be066d1f0c5db776932ea77d5e0ee292bb367dd","compare_url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools/compare/c0618a939c6a7f40d91e9160a083313befe7c157...8be066d1f0c5db776932ea77d5e0ee292bb367dd","commits":[{"id":"8be066d1f0c5db776932ea77d5e0ee292bb367dd","message":"feat(platforms): 增加真实 HTTP 数据连接验收\n","url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools/commit/8be066d1f0c5db776932ea77d5e0ee292bb367dd","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T02:05:46-07:00","added":["docs/platform-http-integration.md"],"removed":[],"modified":["e2e/tests/02-deep-flows.spec.ts","server/.env.example","server/src/adapters/platform/http.ts","server/src/adapters/platform/index.ts","server/src/config/env.ts","server/src/modules/platforms/routes.ts","server/src/modules/platforms/service.ts","server/src/openapi.ts","server/test/platform-adapter.unit.test.ts","server/test/r16-platforms.test.ts","团购本地生活AI运营App/api.js","团购本地生活AI运营App/screen-governance.generated.json","团购本地生活AI运营App/screens-p1.jsx","团购本地生活AI运营App/scripts/test-static.mjs","团购本地生活AI运营App/ui.jsx","团购本地生活AI运营App/upgrades.jsx","开发计划.md"]},{"id":"a3fd0cc2636423df29dc9dc197c68effebc98908","message":"merge: 合并前端全局唯一性门禁分支\n","url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools/commit/a3fd0cc2636423df29dc9dc197c68effebc98908","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-16T02:06:14-07:00","added":[],"removed":[],"modified":["团购本地生活AI运营App/scripts/test-static.mjs"]},{"id":"9167815cbbaae56a96573aeb4cce4af1e02d9ec6","message":"merge: 合并端到端 CI 工作流分支\n","url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools/commit/9167815cbbaae56a96573aeb4cce4af1e02d9ec6","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-16T02:06:09-07:00","added":[".github/workflows/e2e.yml"],"removed":[],"modified":[]},{"id":"ebee1953637ceabc41648708e598e9f88666935e","message":"merge: 合并嗨赞歌咏亭品类完整分支\n","url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools/commit/ebee1953637ceabc41648708e598e9f88666935e","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-16T02:05:35-07:00","added":[".claude/skills/CONVENTIONS.md",".claude/skills/index.md",".claude/skills/ygg-fullstack-feature/SKILL.md",".claude/skills/ygg-governance-memory/SKILL.md",".claude/skills/ygg-honesty-boundary/SKILL.md",".claude/skills/ygg-seed-migration-guard/SKILL.md",".claude/skills/ygg-tenant-rbac-guard/SKILL.md",".claude/wf-premium-refresh.js","AGENTS.md","V1.1导航结构.md","docs/loop-engineering/README.md","docs/loop-engineering/acceptance-checklist.md","docs/loop-engineering/agent.md","docs/loop-engineering/all-projects-method.md","docs/loop-engineering/api-contract.md","docs/loop-engineering/implementation-plan.md","docs/reports/frontend-backend-integration-acceptance-2026-06-12.md","docs/reports/production-capability-truth-matrix-2026-06-12.md","e2e/scripts/make-pdf.mjs","e2e/scripts/manual-screens.mjs","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/assets/app-action-detail.png","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/assets/app-ai-copy.png","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/assets/app-cockpit.png","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/assets/app-growth.png","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/assets/app-stores.png","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/layout/slide-01.layout.json","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/layout/slide-02.layout.json","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/layout/slide-03.layout.json","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/layout/slide-04.layout.json","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/layout/slide-05.layout.json","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/layout/slide-06.layout.json","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/layout/slide-07.layout.json","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/layout/slide-08.layout.json","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/layout/slide-09.layout.json","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/layout/slide-10.layout.json","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/output/artifact-build-manifest.json","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/output/contact-sheet.png","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/output/yggdrasil-sales-deck.pptx","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/package.json","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/preview/slide-01.png","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/preview/slide-02.png","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/preview/slide-03.png","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/preview/slide-04.png","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/preview/slide-05.png","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/preview/slide-06.png","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/preview/slide-07.png","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/preview/slide-08.png","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/preview/slide-09.png","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/preview/slide-10.png","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/profile-plan.txt","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/slides/deck.mjs","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/slides/slide-01.mjs","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/slides/slide-02.mjs","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/slides/slide-03.mjs","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/slides/slide-04.mjs","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/slides/slide-05.mjs","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/slides/slide-06.mjs","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/slides/slide-07.mjs","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/slides/slide-08.mjs","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/slides/slide-09.mjs","outputs/019e95c7-bd0e-7483-b4ca-5a864e388fa1/presentations/ygg-sales/slides/slide-10.mjs","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/assets/c-actionDetail.png","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/assets/c-ai.png","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/assets/c-briefing.png","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/assets/c-content.png","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/assets/c-funnel.png","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/assets/c-growth.png","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/assets/c-orders.png","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/assets/c-private.png","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/assets/c-reviews.png","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/assets/c-roi.png","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/assets/c-sku.png","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/assets/c-tasks.png","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/claim-spine.txt","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/contact-sheet-plan.txt","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/data.json","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/design-system.txt","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/layout/final/slide-01.layout.json","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/layout/final/slide-02.layout.json","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/layout/final/slide-03.layout.json","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/layout/final/slide-04.layout.json","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/layout/final/slide-05.layout.json","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/layout/final/slide-06.layout.json","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/layout/final/slide-07.layout.json","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/layout/final/slide-08.layout.json","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/layout/final/slide-09.layout.json","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/layout/final/slide-10.layout.json","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/layout/final/slide-11.layout.json","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/layout/final/slide-12.layout.json","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/layout/slide-01.layout.json","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/layout/slide-06.layout.json","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/output/artifact-build-manifest.json","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/output/yggdrasil-sales-pro.pptx","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/package.json","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/preview/contact-sheet.png","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/preview/slide-01.png","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/preview/slide-02.png","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/preview/slide-03.png","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/preview/slide-04.png","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/preview/slide-05.png","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/preview/slide-06.png","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/preview/slide-07.png","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/preview/slide-08.png","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/preview/slide-09.png","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/preview/slide-10.png","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/preview/slide-11.png","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/preview/slide-12.png","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/profile-plan.txt","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/qa/comeback-scorecard.txt","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/reference-audit.txt","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/slides/deck.mjs","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/slides/slide-01.mjs","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/slides/slide-02.mjs","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/slides/slide-03.mjs","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/slides/slide-04.mjs","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/slides/slide-05.mjs","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/slides/slide-06.mjs","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/slides/slide-07.mjs","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/slides/slide-08.mjs","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/slides/slide-09.mjs","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/slides/slide-10.mjs","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/slides/slide-11.mjs","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/slides/slide-12.mjs","outputs/019ea224-d593-7ab1-bfea-04f90cf2f3bd/presentations/yggdrasil-sales-pro/source-notes.txt","outputs/juhi-skills/PROJECT_SKILL_ANALYSIS.md","outputs/juhi-skills/juhi-ygg-api-contract/SKILL.md","outputs/juhi-skills/juhi-ygg-api-contract/agents/openai.yaml","outputs/juhi-skills/juhi-ygg-attribution-pilot/SKILL.md","outputs/juhi-skills/juhi-ygg-attribution-pilot/agents/openai.yaml","outputs/juhi-skills/juhi-ygg-backend-module/SKILL.md","outputs/juhi-skills/juhi-ygg-backend-module/agents/openai.yaml","outputs/juhi-skills/juhi-ygg-frontend-screen/SKILL.md","outputs/juhi-skills/juhi-ygg-frontend-screen/agents/openai.yaml","outputs/juhi-skills/juhi-ygg-governance-memory/SKILL.md","outputs/juhi-skills/juhi-ygg-governance-memory/agents/openai.yaml","outputs/juhi-skills/juhi-ygg-index/SKILL.md","outputs/juhi-skills/juhi-ygg-index/agents/openai.yaml","outputs/juhi-skills/juhi-ygg-mainline-guard/SKILL.md","outputs/juhi-skills/juhi-ygg-mainline-guard/agents/openai.yaml","outputs/juhi-skills/juhi-ygg-prisma-guard/SKILL.md","outputs/juhi-skills/juhi-ygg-prisma-guard/agents/openai.yaml","outputs/juhi-skills/juhi-ygg-runtime-acceptance/SKILL.md","outputs/juhi-skills/juhi-ygg-runtime-acceptance/agents/openai.yaml","outputs/juhi-skills/juhi-ygg-truth-boundary/SKILL.md","outputs/juhi-skills/juhi-ygg-truth-boundary/agents/openai.yaml","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/assets/desktop-01-today-briefing.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/assets/desktop-02-ops-workbench.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/assets/desktop-03-ai-command.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/assets/desktop-04-growth-loop.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/assets/desktop-05-action-attribution.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/assets/desktop-06-reviews.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/assets/desktop-07-content-studio.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/assets/desktop-08-sku-pricing.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/assets/desktop-09-subscription-value.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/assets/desktop-10-chain-stores.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/assets/desktop-11-data-center.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/assets/mobile-01-home.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/assets/mobile-02-ai-module.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/assets/mobile-03-growth-module.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/assets/mobile-04-fulfillment-module.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/assets/test-http.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/assets/test-open.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/claim-spine.txt","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/layout/slide-01.layout.json","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/layout/slide-02.layout.json","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/layout/slide-03.layout.json","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/layout/slide-04.layout.json","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/layout/slide-05.layout.json","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/layout/slide-06.layout.json","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/layout/slide-07.layout.json","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/layout/slide-08.layout.json","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/layout/slide-09.layout.json","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/layout/slide-10.layout.json","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/layout/slide-11.layout.json","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/layout/slide-12.layout.json","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/layout/slide-13.layout.json","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/layout/slide-14.layout.json","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/output/artifact-build-manifest.json","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/output/contact-sheet.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/output/minimal-test.pptx","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/output/yggdrasil-tob-merchant-sales-2026-06.pptx","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/preview/minimal-test.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/preview/slide-01.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/preview/slide-02.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/preview/slide-03.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/preview/slide-04.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/preview/slide-05.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/preview/slide-06.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/preview/slide-07.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/preview/slide-08.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/preview/slide-09.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/preview/slide-10.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/preview/slide-11.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/preview/slide-12.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/preview/slide-13.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/preview/slide-14.png","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/profile-plan.txt","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/scripts/build-merchant-sales-deck.mjs","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/scripts/capture-screenshots.mjs","outputs/manual-20260606-ygg-merchant-sales/presentations/ygg-merchant-sales/source-notes.txt","outputs/manual-screens/c-actionDetail.png","outputs/manual-screens/c-ai.png","outputs/manual-screens/c-audit.png","outputs/manual-screens/c-automation.png","outputs/manual-screens/c-behavior.png","outputs/manual-screens/c-briefing.png","outputs/manual-screens/c-calendar.png","outputs/manual-screens/c-competitor.png","outputs/manual-screens/c-compliance.png","outputs/manual-screens/c-content.png","outputs/manual-screens/c-data.png","outputs/manual-screens/c-dataCenter.png","outputs/manual-screens/c-decor.png","outputs/manual-screens/c-fulfillment.png","outputs/manual-screens/c-funnel.png","outputs/manual-screens/c-growth.png","outputs/manual-screens/c-marketing.png","outputs/manual-screens/c-onboarding.png","outputs/manual-screens/c-orders.png","outputs/manual-screens/c-plans.png","outputs/manual-screens/c-private.png","outputs/manual-screens/c-reviews.png","outputs/manual-screens/c-roi.png","outputs/manual-screens/c-sku.png","outputs/manual-screens/c-stores.png","outputs/manual-screens/c-tasks.png","outputs/manual-screens/k-briefing.png","outputs/manual-screens/k-decor.png","outputs/manual-screens/k-facility.png","outputs/manual-screens/k-fission.png","outputs/manual-screens/k-home.png","outputs/manual-screens/k-member.png","outputs/manual-screens/k-sku.png","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/assets/app-action-detail.png","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/assets/app-ai-copy.png","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/assets/app-cockpit.png","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/assets/app-growth.png","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/assets/app-stores.png","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/claim-spine.txt","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/contact-sheet-plan.txt","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/design-system.txt","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/layout/slide-01.layout.json","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/layout/slide-02.layout.json","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/layout/slide-03.layout.json","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/layout/slide-04.layout.json","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/layout/slide-05.layout.json","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/layout/slide-06.layout.json","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/layout/slide-07.layout.json","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/layout/slide-08.layout.json","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/layout/slide-09.layout.json","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/layout/slide-10.layout.json","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/output/artifact-build-manifest.json","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/output/contact-sheet.png","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/output/yggdrasil-sales-rewrite.pptx","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/package.json","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/preview/slide-01.png","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/preview/slide-02.png","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/preview/slide-03.png","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/preview/slide-04.png","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/preview/slide-05.png","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/preview/slide-06.png","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/preview/slide-07.png","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/preview/slide-08.png","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/preview/slide-09.png","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/preview/slide-10.png","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/profile-plan.txt","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/slides/deck.mjs","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/slides/slide-01.mjs","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/slides/slide-02.mjs","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/slides/slide-03.mjs","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/slides/slide-04.mjs","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/slides/slide-05.mjs","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/slides/slide-06.mjs","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/slides/slide-07.mjs","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/slides/slide-08.mjs","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/slides/slide-09.mjs","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/slides/slide-10.mjs","outputs/manual-ygg-sales-rewrite/presentations/ygg-sales-rewrite/source-notes.txt","outputs/manual-ygg-sales/presentations/ygg-sales/assets/cockpit-rgb.png","outputs/manual-ygg-sales/presentations/ygg-sales/assets/cockpit.png","outputs/manual-ygg-sales/presentations/ygg-sales/package.json","outputs/moodboards/yggdrasil-campaign-trust/brand-system/yggdrasil-brand-tokens.css","outputs/moodboards/yggdrasil-campaign-trust/brand-system/yggdrasil-brand-tokens.json","outputs/moodboards/yggdrasil-campaign-trust/brand-system/尤克特拉品牌系统提取稿.md","outputs/moodboards/yggdrasil-campaign-trust/run/app.js","outputs/moodboards/yggdrasil-campaign-trust/run/assets/export-icons/figma.svg","outputs/moodboards/yggdrasil-campaign-trust/run/assets/export-icons/finder.png","outputs/moodboards/yggdrasil-campaign-trust/run/codex-theme.css","outputs/moodboards/yggdrasil-campaign-trust/run/data/runtime-config.json","outputs/moodboards/yggdrasil-campaign-trust/run/data/stream-static.json","outputs/moodboards/yggdrasil-campaign-trust/run/data/stream.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/0f0e319bb822e52a9a5f6fb8dbb3a9c4.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/13b49db34415b421a99428f36778ac65.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/3946bbaa837631734bdd5f6f4763b9df.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/79ad9f72fd69f57db5518ab2df814080.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/83a2bf2bc49dd13c2fff7ebae69326c8.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/89e9341bd957d2c93dcd2a50db56d748.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/aa8bd14eeefd1527b11be80a4caf5766.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/ab816a218b6a39f01fde317ca3c757b8.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/codex-exec-image-results.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/d64effdd3a17068470cf60295a5cfb59.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/e3162d2ec9314428a25347350c209a72.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/edcea5c7563fe2e52d2888f575c55554.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/jobs.jsonl","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/preflight/last-message.txt","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/preflight/preflight-result.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/ai-top-three-cards/attempt-1/image.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/ai-top-three-cards/attempt-1/last-message.txt","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/ai-top-three-cards/attempt-1/result.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/ai-top-three-cards/attempt-1/state.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/attribution-ledger/attempt-1/image.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/attribution-ledger/attempt-1/last-message.txt","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/attribution-ledger/attempt-1/result.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/attribution-ledger/attempt-1/state.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/campaign-prep-materials/attempt-1/image.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/campaign-prep-materials/attempt-1/last-message.txt","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/campaign-prep-materials/attempt-1/result.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/campaign-prep-materials/attempt-1/state.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/compliance-guardrail/attempt-1/image.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/compliance-guardrail/attempt-1/last-message.txt","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/compliance-guardrail/attempt-1/result.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/compliance-guardrail/attempt-1/state.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/growth-loop-still-life/attempt-1/image.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/growth-loop-still-life/attempt-1/last-message.txt","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/growth-loop-still-life/attempt-1/result.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/growth-loop-still-life/attempt-1/state.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/merchant-morning-proof/attempt-1/image.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/merchant-morning-proof/attempt-1/last-message.txt","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/merchant-morning-proof/attempt-1/result.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/merchant-morning-proof/attempt-1/state.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/multi-platform-orbit/attempt-1/last-message.txt","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/multi-platform-orbit/attempt-1/result.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/multi-platform-orbit/attempt-1/state.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/multi-platform-orbit/attempt-2/state.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/owner-decision-moment/attempt-1/image.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/owner-decision-moment/attempt-1/last-message.txt","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/owner-decision-moment/attempt-1/result.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/owner-decision-moment/attempt-1/state.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/premium-local-commerce/attempt-1/last-message.txt","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/premium-local-commerce/attempt-1/result.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/premium-local-commerce/attempt-1/state.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/premium-local-commerce/attempt-2/image.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/premium-local-commerce/attempt-2/last-message.txt","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/premium-local-commerce/attempt-2/result.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/premium-local-commerce/attempt-2/state.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/product-hero-device/attempt-1/image.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/product-hero-device/attempt-1/last-message.txt","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/product-hero-device/attempt-1/result.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/product-hero-device/attempt-1/state.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/service-detail-hands/attempt-1/last-message.txt","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/service-detail-hands/attempt-1/result.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/service-detail-hands/attempt-1/state.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/service-detail-hands/attempt-2/image.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/service-detail-hands/attempt-2/last-message.txt","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/service-detail-hands/attempt-2/result.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/service-detail-hands/attempt-2/state.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/storefront-threshold/attempt-1/image.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/storefront-threshold/attempt-1/last-message.txt","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/storefront-threshold/attempt-1/result.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/.codex-exec/ce1f8ed8051c30b3/workers/storefront-threshold/attempt-1/state.json","outputs/moodboards/yggdrasil-campaign-trust/run/generated/ai-top-three-cards.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/attribution-ledger.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/campaign-prep-materials.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/compliance-guardrail.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/growth-loop-still-life.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/mcp-thumbs/ai-top-three-cards.jpg","outputs/moodboards/yggdrasil-campaign-trust/run/generated/mcp-thumbs/attribution-ledger.jpg","outputs/moodboards/yggdrasil-campaign-trust/run/generated/mcp-thumbs/campaign-prep-materials.jpg","outputs/moodboards/yggdrasil-campaign-trust/run/generated/mcp-thumbs/compliance-guardrail.jpg","outputs/moodboards/yggdrasil-campaign-trust/run/generated/mcp-thumbs/growth-loop-still-life.jpg","outputs/moodboards/yggdrasil-campaign-trust/run/generated/mcp-thumbs/merchant-morning-proof.jpg","outputs/moodboards/yggdrasil-campaign-trust/run/generated/mcp-thumbs/owner-decision-moment.jpg","outputs/moodboards/yggdrasil-campaign-trust/run/generated/mcp-thumbs/premium-local-commerce.jpg","outputs/moodboards/yggdrasil-campaign-trust/run/generated/mcp-thumbs/product-hero-device.jpg","outputs/moodboards/yggdrasil-campaign-trust/run/generated/mcp-thumbs/service-detail-hands.jpg","outputs/moodboards/yggdrasil-campaign-trust/run/generated/mcp-thumbs/storefront-threshold.jpg","outputs/moodboards/yggdrasil-campaign-trust/run/generated/merchant-morning-proof.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/owner-decision-moment.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/premium-local-commerce.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/product-hero-device.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/service-detail-hands.png","outputs/moodboards/yggdrasil-campaign-trust/run/generated/storefront-threshold.png","outputs/moodboards/yggdrasil-campaign-trust/run/index.html","outputs/moodboards/yggdrasil-campaign-trust/run/latest-action.json","outputs/moodboards/yggdrasil-campaign-trust/run/mood-board.html","outputs/moodboards/yggdrasil-campaign-trust/run/platform-icons.js","outputs/moodboards/yggdrasil-campaign-trust/run/run-state.json","outputs/moodboards/yggdrasil-campaign-trust/run/server.mjs","outputs/moodboards/yggdrasil-campaign-trust/run/styles.css","outputs/moodboards/yggdrasil-campaign-trust/run/theme.js","outputs/moodboards/yggdrasil-campaign-trust/spec.json","outputs/playwright/baseline-desktop.png","outputs/playwright/baseline-mobile.png","outputs/playwright/ui-refresh-desktop.png","outputs/playwright/ui-refresh-mobile.png","outputs/playwright/warm-orange-desktop.png","outputs/playwright/warm-orange-mobile.png","outputs/尤克特拉产品说明书.pdf","server/prisma/migrations/20260605061301_member_profile_segment_tags/migration.sql","server/prisma/migrations/20260605071116_behavior_event_telemetry/migration.sql","server/prisma/migrations/20260605075045_behavior_ops_dims/migration.sql","server/prisma/migrations/20260605081708_booking_source_platform/migration.sql","server/prisma/migrations/20260607021000_resources_state_runs/migration.sql","server/prisma/migrations/20260607093000_add_leads_crm/migration.sql","server/prisma/migrations/20260610015718_add_order_kind/migration.sql","server/src/adapters/platform/http.ts","server/src/lib/dates.ts","server/src/lib/fission.ts","server/src/lib/state-machine.ts","server/src/modules/automation-runner/service.ts","server/src/modules/behavior/routes.ts","server/src/modules/behavior/schema.ts","server/src/modules/behavior/service.ts","server/src/modules/leads/routes.ts","server/src/modules/leads/schema.ts","server/src/modules/leads/service.ts","server/src/modules/resources/routes.ts","server/src/modules/resources/schema.ts","server/src/modules/resources/service.ts","server/src/modules/resources/state.ts","server/src/modules/suggestions/schema.ts","server/src/modules/work-calendar/routes.ts","server/src/modules/work-calendar/service.ts","server/test/contract-schema.unit.test.ts","server/test/leads.unit.test.ts","server/test/platform-connection-truth.unit.test.ts","server/test/r23-work-calendar.test.ts","server/test/r24-behavior.test.ts","server/test/r25-member-resolve.test.ts","server/test/r26-content-rbac.test.ts","server/test/r27-restaurant-live-seed.test.ts","server/test/resource-state.unit.test.ts","业务工作流图谱.md","团购本地生活AI运营App/DESIGN-SPEC-v2.md","团购本地生活AI运营App/IOS.md","团购本地生活AI运营App/android/keystore.properties.example","团购本地生活AI运营App/ios/.gitignore","团购本地生活AI运营App/ios/App/App.xcodeproj/project.pbxproj","团购本地生活AI运营App/ios/App/App.xcworkspace/contents.xcworkspacedata","团购本地生活AI运营App/ios/App/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist","团购本地生活AI运营App/ios/App/App/AppDelegate.swift","团购本地生活AI运营App/ios/App/App/Assets.xcassets/AppIcon.appiconset/AppIcon-512@2x.png","团购本地生活AI运营App/ios/App/App/Assets.xcassets/AppIcon.appiconset/Contents.json","团购本地生活AI运营App/ios/App/App/Assets.xcassets/Contents.json","团购本地生活AI运营App/ios/App/App/Assets.xcassets/Splash.imageset/Contents.json","团购本地生活AI运营App/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-1.png","团购本地生活AI运营App/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732-2.png","团购本地生活AI运营App/ios/App/App/Assets.xcassets/Splash.imageset/splash-2732x2732.png","团购本地生活AI运营App/ios/App/App/Base.lproj/LaunchScreen.storyboard","团购本地生活AI运营App/ios/App/App/Base.lproj/Main.storyboard","团购本地生活AI运营App/ios/App/App/Info.plist","团购本地生活AI运营App/ios/App/Podfile","团购本地生活AI运营App/ios/App/Podfile.lock","团购本地生活AI运营App/screens-behavior.jsx","团购本地生活AI运营App/screens-leads.jsx","团购本地生活AI运营App/scripts/android-deploy-check.mjs","团购本地生活AI运营App/scripts/generate-ios-assets.mjs","团购本地生活AI运营App/scripts/ios-deploy-check.mjs","团购本地生活AI运营App/设计令牌.md","尤克特拉产品说明书.md","尤克特拉项目销售手册.md","模块重复治理.md","真实链路与状态机审计矩阵.md","项目模块关系图谱.md"],"removed":["团购本地生活AI运营App/screens-home.jsx"],"modified":[".claude/launch.json",".github/workflows/ci.yml",".gitignore","e2e/tests/02-deep-flows.spec.ts","e2e/tests/03-role-matrix.spec.ts","e2e/utils/app.ts","server/.env.example","server/README.md","server/docker-compose.yml","server/docker-entrypoint.sh","server/prisma/schema.prisma","server/prisma/seed.ts","server/src/adapters/platform/index.ts","server/src/adapters/platform/mock.ts","server/src/adapters/platform/types.ts","server/src/adapters/weather/index.ts","server/src/config/env.ts","server/src/lib/context.ts","server/src/lib/money.ts","server/src/lib/platform.ts","server/src/lib/prisma.ts","server/src/modules/actions/routes.ts","server/src/modules/actions/service.ts","server/src/modules/attribution/service.ts","server/src/modules/audit/routes.ts","server/src/modules/automation/routes.ts","server/src/modules/automation/service.ts","server/src/modules/booking/routes.ts","server/src/modules/booking/schema.ts","server/src/modules/booking/service.ts","server/src/modules/briefing/service.ts","server/src/modules/compliance/routes.ts","server/src/modules/content/routes.ts","server/src/modules/content/service.ts","server/src/modules/groupbuy/routes.ts","server/src/modules/groupbuy/schema.ts","server/src/modules/groupbuy/service.ts","server/src/modules/merchant/routes.ts","server/src/modules/merchant/service.ts","server/src/modules/metrics/routes.ts","server/src/modules/metrics/service.ts","server/src/modules/ops/routes.ts","server/src/modules/ops/schema.ts","server/src/modules/ops/service.ts","server/src/modules/orders/routes.ts","server/src/modules/orders/service.ts","server/src/modules/periphery/routes.ts","server/src/modules/platforms/routes.ts","server/src/modules/platforms/service.ts","server/src/modules/pricing/service.ts","server/src/modules/referral/routes.ts","server/src/modules/referral/schema.ts","server/src/modules/referral/service.ts","server/src/modules/reviews/routes.ts","server/src/modules/reviews/service.ts","server/src/modules/skus/routes.ts","server/src/modules/skus/schema.ts","server/src/modules/store/service.ts","server/src/modules/suggestions/routes.ts","server/src/modules/suggestions/service.ts","server/src/modules/tasks/routes.ts","server/src/modules/tasks/schema.ts","server/src/modules/tasks/service.ts","server/src/modules/wallet/routes.ts","server/src/modules/wallet/schema.ts","server/src/modules/wallet/service.ts","server/src/openapi.ts","server/src/routes.ts","server/test/competitor-scan.test.ts","server/test/db-url.ts","server/test/global-setup.ts","server/test/helpers.ts","server/test/platform-adapter.unit.test.ts","server/test/r0-r1-auth.test.ts","server/test/r11-review-care.test.ts","server/test/r12-profile.test.ts","server/test/r15-pricing.test.ts","server/test/r16-platforms.test.ts","server/test/r19-referral.test.ts","server/test/r2-ops.test.ts","server/test/r20-ops.test.ts","server/test/r21-platform-ingest.test.ts","server/test/r3-growth.test.ts","server/test/r4-trust.test.ts","server/test/r8-boundary-concurrency.test.ts","server/test/setup-env.ts","团购本地生活AI运营App/ANDROID.md","团购本地生活AI运营App/README.md","团购本地生活AI运营App/WEB.md","团购本地生活AI运营App/android/.gitignore","团购本地生活AI运营App/android/app/build.gradle","团购本地生活AI运营App/api.js","团购本地生活AI运营App/app-config.js","团购本地生活AI运营App/app.jsx","团购本地生活AI运营App/capacitor.config.json","团购本地生活AI运营App/diagnosis.js","团购本地生活AI运营App/eslint.config.mjs","团购本地生活AI运营App/index.html","团购本地生活AI运营App/merchant-profiles.js","团购本地生活AI运营App/package-lock.json","团购本地生活AI运营App/package.json","团购本地生活AI运营App/screen-governance.generated.json","团购本地生活AI运营App/screens-ai.jsx","团购本地生活AI运营App/screens-compliance.jsx","团购本地生活AI运营App/screens-data.jsx","团购本地生活AI运营App/screens-decor.jsx","团购本地生活AI运营App/screens-facility.jsx","团购本地生活AI运营App/screens-fission.jsx","团购本地生活AI运营App/screens-fulfillment.jsx","团购本地生活AI运营App/screens-growth.jsx","团购本地生活AI运营App/screens-live.jsx","团购本地生活AI运营App/screens-member.jsx","团购本地生活AI运营App/screens-more.jsx","团购本地生活AI运营App/screens-ops.jsx","团购本地生活AI运营App/screens-p1.jsx","团购本地生活AI运营App/screens-p2.jsx","团购本地生活AI运营App/screens-private.jsx","团购本地生活AI运营App/screens-strategy.jsx","团购本地生活AI运营App/screens-tasks.jsx","团购本地生活AI运营App/scripts/build.mjs","团购本地生活AI运营App/scripts/screen-governance.mjs","团购本地生活AI运营App/scripts/test-static.mjs","团购本地生活AI运营App/tweaks-panel.jsx","团购本地生活AI运营App/ui.jsx","团购本地生活AI运营App/upgrades.jsx","团购本地生活AI运营App/产品诊断与优化方案.html","尤克特拉业务功能分析.md","尤克特拉商业化与融资一页纸.md"]},{"id":"734393621449932f6b8d21e09bf5f220ec998cc5","message":"fix(booking): verify 去除 validFrom 闸 — 修 r22「未来预约当场核销」被误拦\n\n5f3b333 在 verify 加了 `validFrom \u003e now → 尚未生效`,而券 validFrom=startAt。\nr22/r16 setup 对「明天的预约」当场核销时被此闸拦死 → booking 停 BOOKED、completeBooking 返回 409。\nmain verify 无此闸;去除后与 main 对齐,仅保留 validUntil 过期拦截。无测试依赖「尚未生效」。\ntsc / test:unit 通过;r22 集成待 CI 验证(本机无 DB/Docker)。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools/commit/734393621449932f6b8d21e09bf5f220ec998cc5","author":{"name":"luojuhai","email":"luojuhai@luojuhaideMacBook-Pro.local","username":""},"committer":{"name":"luojuhai","email":"luojuhai@luojuhaideMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-07-07T13:58:42+08:00","added":[],"removed":[],"modified":["server/src/modules/booking/service.ts"]}],"total_commits":0,"head_commit":{"id":"8be066d1f0c5db776932ea77d5e0ee292bb367dd","message":"feat(platforms): 增加真实 HTTP 数据连接验收\n","url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools/commit/8be066d1f0c5db776932ea77d5e0ee292bb367dd","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T02:05:46-07:00","added":["docs/platform-http-integration.md"],"removed":[],"modified":["e2e/tests/02-deep-flows.spec.ts","server/.env.example","server/src/adapters/platform/http.ts","server/src/adapters/platform/index.ts","server/src/config/env.ts","server/src/modules/platforms/routes.ts","server/src/modules/platforms/service.ts","server/src/openapi.ts","server/test/platform-adapter.unit.test.ts","server/test/r16-platforms.test.ts","团购本地生活AI运营App/api.js","团购本地生活AI运营App/screen-governance.generated.json","团购本地生活AI运营App/screens-p1.jsx","团购本地生活AI运营App/scripts/test-static.mjs","团购本地生活AI运营App/ui.jsx","团购本地生活AI运营App/upgrades.jsx","开发计划.md"]},"repository":{"id":51,"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":"yggdrasil-local-life-tools","full_name":"luoanwu/yggdrasil-local-life-tools","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":6641,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/yggdrasil-local-life-tools/languages","html_url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/yggdrasil-local-life-tools","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/yggdrasil-local-life-tools.git","clone_url":"https://gitea.g-hi.com/luoanwu/yggdrasil-local-life-tools.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-02T16:02:07+08:00","updated_at":"2026-07-14T15:54:47+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":true,"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
|
8
|
1784712281
|
1784712493
|
0
|
1784712281
|
1784712493
|
group: ci-${{ github.ref }}
cancel-in-progress: group: ci-${{ github.ref }}
cancel-in-progress: "true"
...
|
ci-refs/heads/main
|
1
|
Edit
Delete
|
|
23451
|
fix(svc): complete worker control surface
|
64
|
5
|
governance.yml
|
9
|
5
|
0
|
refs/heads/main
|
759c0261a1cbec386f37f0c7f096f9f4efd57289
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"f78049d487372e5538b1d202b65aa252031c8887","after":"759c0261a1cbec386f37f0c7f096f9f4efd57289","compare_url":"https://gitea.g-hi.com/luoanwu/voice-conversion/compare/f78049d487372e5538b1d202b65aa252031c8887...759c0261a1cbec386f37f0c7f096f9f4efd57289","commits":[{"id":"759c0261a1cbec386f37f0c7f096f9f4efd57289","message":"fix(svc): complete worker control surface\n","url":"https://gitea.g-hi.com/luoanwu/voice-conversion/commit/759c0261a1cbec386f37f0c7f096f9f4efd57289","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T01:48:47-07:00","added":[],"removed":[],"modified":["README.md","apps/api-fastify/test/http.acceptance.test.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/web/e2e/acceptance.spec.ts","apps/web/src/components/SvcPanel.tsx","docs/domain/svc-cover-blueprint.md"]},{"id":"ee66fa978cf5dfc16f7001f805c48f2993cb8b44","message":"Add cover worker controls and document voice conversion product\n","url":"https://gitea.g-hi.com/luoanwu/voice-conversion/commit/ee66fa978cf5dfc16f7001f805c48f2993cb8b44","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T01:40:28-07:00","added":[],"removed":[],"modified":["README.md","apps/api-fastify/src/modules/svc/cover-jobs.service.ts","apps/api-fastify/src/routes/cover-jobs.ts","apps/api-nestjs/src/svc/cover-jobs.controller.ts","apps/api-nestjs/src/svc/cover-jobs.service.ts","apps/web/src/components/SvcPanel.tsx","apps/web/src/lib/api.ts","apps/web/src/lib/types.ts","docs/README.md","docs/domain/svc-cover-blueprint.md","packages/contracts/src/cover.ts"]}],"total_commits":0,"head_commit":{"id":"759c0261a1cbec386f37f0c7f096f9f4efd57289","message":"fix(svc): complete worker control surface\n","url":"https://gitea.g-hi.com/luoanwu/voice-conversion/commit/759c0261a1cbec386f37f0c7f096f9f4efd57289","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T01:48:47-07:00","added":[],"removed":[],"modified":["README.md","apps/api-fastify/test/http.acceptance.test.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/web/e2e/acceptance.spec.ts","apps/web/src/components/SvcPanel.tsx","docs/domain/svc-cover-blueprint.md"]},"repository":{"id":64,"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":"voice-conversion","full_name":"luoanwu/voice-conversion","description":"SoulX-Singer personal singing voice conversion platform","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":1005,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voice-conversion/languages","html_url":"https://gitea.g-hi.com/luoanwu/voice-conversion","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voice-conversion","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/voice-conversion.git","clone_url":"https://gitea.g-hi.com/luoanwu/voice-conversion.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-22T14:37:12+08:00","updated_at":"2026-07-22T15:40:12+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":true,"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
|
8
|
1784710408
|
1784710467
|
0
|
1784710407
|
1784710467
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23450
|
chore(reports): refresh post-merge acceptance evid chore(reports): refresh post-merge acceptance evidence...
|
54
|
5
|
governance.yml
|
5
|
5
|
0
|
refs/heads/main
|
02a656716b10d2a5a4937ba01086cbd0a9ff4b85
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e109e80574304306c9a5911d5e923d2dc7e6c0f4","after":"02a656716b10d2a5a4937ba01086cbd0a9ff4b85","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/e109e80574304306c9a5911d5e923d2dc7e6c0f4...02a656716b10d2a5a4937ba01086cbd0a9ff4b85","commits":[{"id":"02a656716b10d2a5a4937ba01086cbd0a9ff4b85","message":"chore(reports): refresh post-merge acceptance evidence\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/02a656716b10d2a5a4937ba01086cbd0a9ff4b85","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T01:34:39-07:00","added":[],"removed":[],"modified":["reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"02a656716b10d2a5a4937ba01086cbd0a9ff4b85","message":"chore(reports): refresh post-merge acceptance evidence\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/02a656716b10d2a5a4937ba01086cbd0a9ff4b85","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T01:34:39-07:00","added":[],"removed":[],"modified":["reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":883,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-03T12:24:18+08:00","updated_at":"2026-07-22T16:33:36+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":true,"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
|
8
|
1784709310
|
1784709362
|
0
|
1784709310
|
1784709362
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23449
|
docs(governance): record verified publish baseline
|
54
|
5
|
governance.yml
|
4
|
5
|
0
|
refs/heads/main
|
e109e80574304306c9a5911d5e923d2dc7e6c0f4
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"4e0ae0a55bf748faaa3a1f2b937b4375c1cf7fa8","after":"e109e80574304306c9a5911d5e923d2dc7e6c0f4","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/4e0ae0a55bf748faaa3a1f2b937b4375c1cf7fa8...e109e80574304306c9a5911d5e923d2dc7e6c0f4","commits":[{"id":"e109e80574304306c9a5911d5e923d2dc7e6c0f4","message":"docs(governance): record verified publish baseline\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/e109e80574304306c9a5911d5e923d2dc7e6c0f4","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T01:27:34-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"e109e80574304306c9a5911d5e923d2dc7e6c0f4","message":"docs(governance): record verified publish baseline\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/e109e80574304306c9a5911d5e923d2dc7e6c0f4","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T01:27:34-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":861,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-03T12:24:18+08:00","updated_at":"2026-07-22T16:26: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":true,"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
|
8
|
1784709216
|
1784709270
|
0
|
1784709216
|
1784709270
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23448
|
chore(reports): refresh publish acceptance evidenc chore(reports): refresh publish acceptance evidence...
|
54
|
5
|
governance.yml
|
3
|
5
|
0
|
refs/heads/main
|
4e0ae0a55bf748faaa3a1f2b937b4375c1cf7fa8
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"d846832ebbe1d481019744f038672b935ad09937","after":"4e0ae0a55bf748faaa3a1f2b937b4375c1cf7fa8","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/d846832ebbe1d481019744f038672b935ad09937...4e0ae0a55bf748faaa3a1f2b937b4375c1cf7fa8","commits":[{"id":"4e0ae0a55bf748faaa3a1f2b937b4375c1cf7fa8","message":"chore(reports): refresh publish acceptance evidence\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/4e0ae0a55bf748faaa3a1f2b937b4375c1cf7fa8","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T01:26:24-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"4e0ae0a55bf748faaa3a1f2b937b4375c1cf7fa8","message":"chore(reports): refresh publish acceptance evidence\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/4e0ae0a55bf748faaa3a1f2b937b4375c1cf7fa8","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T01:26:24-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":836,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-03T12:24:18+08:00","updated_at":"2026-07-22T16:23:26+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":true,"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
|
6
|
1784708794
|
1784708884
|
0
|
1784708793
|
1784708885
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23447
|
fix(web): scope E2E user-CRUD assertion to users p fix(web): scope E2E user-CRUD assertion to users panel, not full page...
|
54
|
5
|
governance.yml
|
2
|
5
|
0
|
refs/heads/main
|
d846832ebbe1d481019744f038672b935ad09937
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"2fa1666f6bb69b7784199199afde715a54856ac8","after":"d846832ebbe1d481019744f038672b935ad09937","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/2fa1666f6bb69b7784199199afde715a54856ac8...d846832ebbe1d481019744f038672b935ad09937","commits":[{"id":"d846832ebbe1d481019744f038672b935ad09937","message":"fix(web): scope E2E user-CRUD assertion to users panel, not full page\n\nPorted from the claude/gallant-diffie-a541dd worktree, whose committed\nhistory was already fully contained in main but whose working tree held\nthis un-landed fix.\n\nNarrow the delete-then-hidden assertion in acceptance.spec.ts to\ngetByTestId(\"users-panel\") instead of the whole page. After d799b17's\noutbox fix, user.created events reliably reach the EventFeed and echo\nthe created user's name in the event JSON, so a page-wide getByText\ncould still match the name via the event log after the row itself was\nremoved, producing a false \"still visible\" read on flaky runs.\n\nRecords this as C16 in CLAUDE.md / governance-experience.md (C14 was\nalready taken by the docs-truth work landed in 2fa1666).\n\nCo-Authored-By: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/d846832ebbe1d481019744f038672b935ad09937","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T01:23:10-07:00","added":[],"removed":[],"modified":["CLAUDE.md","apps/web/e2e/acceptance.spec.ts","apps/web/src/components/UsersPanel.tsx","docs/governance-experience.md"]}],"total_commits":0,"head_commit":{"id":"d846832ebbe1d481019744f038672b935ad09937","message":"fix(web): scope E2E user-CRUD assertion to users panel, not full page\n\nPorted from the claude/gallant-diffie-a541dd worktree, whose committed\nhistory was already fully contained in main but whose working tree held\nthis un-landed fix.\n\nNarrow the delete-then-hidden assertion in acceptance.spec.ts to\ngetByTestId(\"users-panel\") instead of the whole page. After d799b17's\noutbox fix, user.created events reliably reach the EventFeed and echo\nthe created user's name in the event JSON, so a page-wide getByText\ncould still match the name via the event log after the row itself was\nremoved, producing a false \"still visible\" read on flaky runs.\n\nRecords this as C16 in CLAUDE.md / governance-experience.md (C14 was\nalready taken by the docs-truth work landed in 2fa1666).\n\nCo-Authored-By: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/d846832ebbe1d481019744f038672b935ad09937","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T01:23:10-07:00","added":[],"removed":[],"modified":["CLAUDE.md","apps/web/e2e/acceptance.spec.ts","apps/web/src/components/UsersPanel.tsx","docs/governance-experience.md"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":799,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-03T12:24:18+08:00","updated_at":"2026-07-22T16:11:43+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"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
|
8
|
1784708607
|
1784708660
|
0
|
1784708606
|
1784708660
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23446
|
feat(governance): machineize docs-truth gate, fix feat(governance): machineize docs-truth gate, fix Fastify Redis parsing, harden test-base guard...
|
54
|
5
|
governance.yml
|
1
|
5
|
0
|
refs/heads/main
|
2fa1666f6bb69b7784199199afde715a54856ac8
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"f98acd04c6fe50956d8cf89552a352c8893f037d","after":"2fa1666f6bb69b7784199199afde715a54856ac8","compare_url":"https://gitea.g-hi.com/luoanwu/base-framework/compare/f98acd04c6fe50956d8cf89552a352c8893f037d...2fa1666f6bb69b7784199199afde715a54856ac8","commits":[{"id":"2fa1666f6bb69b7784199199afde715a54856ac8","message":"feat(governance): machineize docs-truth gate, fix Fastify Redis parsing, harden test-base guard\n\n- Add check:docs-truth (C14 machineized): targeted assertions catching README/standards\n drift from runtime truth (dual-backend positioning, tenant-aware envelope shape, NestJS\n HTTP engine, ghost assets like commitlint/RHF), wired into pnpm check + governance ratchet.\n- Fix Fastify BullMQ Redis URL parsing to include password/db (C15), matching NestJS's\n parseRedisConnection; adds a check:dual-backend tripwire so this can't silently regress.\n Without this, authenticated/non-zero-db Redis environments would split pub/sub and\n BullMQ onto different logical Redis instances.\n- Close G15: check:runtime / check:ui preflight now requires explicit REDIS_URL (no more\n silent localhost:6379 default) and enforces a base_framework* db name convention, with\n GOVERNANCE_DB_NAME_OVERRIDE=1 as an explicit escape hatch.\n- Correct stale doc claims across README/docs/standards to match actual code (Fastify is a\n full dual-backend peer per ADR-0009, not an optional fallback; envelope carries tenantId;\n NestJS uses platform-express not the Fastify adapter; annotate unimplemented commitlint/RHF\n plans as not-yet-landed).\n- Refresh governance reports/baseline after re-running pnpm check and check:runtime (56/56).\n\nCo-Authored-By: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/2fa1666f6bb69b7784199199afde715a54856ac8","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T01:11:05-07:00","added":["reports/docs-truth.latest.json","scripts/check-docs-truth.mjs"],"removed":[],"modified":["CLAUDE.md","README.md","apps/api-fastify/src/plugins/queue.ts","docs/README.md","docs/governance-experience.md","docs/standards/backend-standard.md","docs/standards/database-standard.md","docs/standards/frontend-standard.md","docs/standards/git-standard.md","package.json","reports/baseline.json","reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json","scripts/check-dual-backend-parity.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-ui-acceptance.mjs","scripts/governance-report.mjs"]},{"id":"8501dc9731b4f0f44ea36d2ffe557577354ebb31","message":"Refactor governance documentation structure\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/8501dc9731b4f0f44ea36d2ffe557577354ebb31","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-21T08:01:24-07:00","added":["docs/governance-experience.md"],"removed":[],"modified":["CLAUDE.md","reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json"]},{"id":"d799b176f2db4f3e538563eeb8228543d24ca639","message":"feat(runtime): close outbox failure governance gaps\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/d799b176f2db4f3e538563eeb8228543d24ca639","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-05T07:03:20-07:00","added":["apps/api-fastify/prisma/migrations/20260705080000_outbox_dead_letter/migration.sql","apps/api-fastify/test/outbox.deadletter.test.ts","apps/api-nestjs/prisma/migrations/20260705080000_outbox_dead_letter/migration.sql","apps/api-nestjs/test/outbox.deadletter.test.ts"],"removed":["apps/web/src/hooks/useSSE.ts","apps/web/src/hooks/useWebSocket.ts"],"modified":[".claude/launch.json","CLAUDE.md","apps/api-fastify/.env.example","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/modules/tenant.ts","apps/api-fastify/src/plugins/outbox.ts","apps/api-fastify/src/plugins/queue.ts","apps/api-fastify/src/routes/jobs.ts","apps/api-fastify/src/routes/orders.ts","apps/api-fastify/src/routes/sse.ts","apps/api-fastify/src/routes/users.ts","apps/api-nestjs/.env.example","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/common/zod-validation.pipe.ts","apps/api-nestjs/src/events/outbox-dispatcher.service.ts","apps/api-nestjs/src/orders/orders.service.ts","apps/api-nestjs/src/queue/jobs.processor.ts","apps/web/e2e/acceptance.spec.ts","apps/web/src/components/EventFeed.tsx","apps/web/src/hooks/useRealtime.ts","apps/web/src/lib/api.ts","apps/web/src/store/realtime.ts","packages/contracts/src/contracts.test.ts","packages/contracts/src/index.ts","packages/contracts/src/realtime.ts","packages/contracts/src/tenant.ts","reports/baseline.json","reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-migrations.mjs","scripts/check-ui-acceptance.mjs"]},{"id":"43b8c8c943c406733084427f3ad27d836ae75681","message":"Update governance baseline for UI acceptance\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/43b8c8c943c406733084427f3ad27d836ae75681","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-04T23:37:30-07:00","added":[".claude/agents/acceptance-runner.md",".claude/agents/module-blueprint.md",".claude/skills/business-module-intake/SKILL.md",".github/workflows/governance.yml","apps/api-fastify/test/realtime.tenant.test.ts","apps/api-nestjs/test/realtime.tenant.test.ts","apps/web/e2e/acceptance.spec.ts","apps/web/playwright.config.ts","docs/domain/owner-matrix.md","packages/contracts/src/contracts.test.ts","packages/contracts/src/tenant.ts","reports/dual-backend-parity.latest.json","reports/ui-acceptance.latest.json","scripts/check-dual-backend-parity.mjs","scripts/check-ui-acceptance.mjs"],"removed":[],"modified":[".gitignore","CLAUDE.md","apps/api-fastify/.env.example","apps/api-fastify/src/modules/tenant.ts","apps/api-fastify/src/modules/users/users.service.ts","apps/api-fastify/src/plugins/events.ts","apps/api-fastify/src/plugins/outbox.ts","apps/api-fastify/src/plugins/queue.ts","apps/api-fastify/src/routes/sse.ts","apps/api-fastify/src/routes/ws.ts","apps/api-fastify/src/types.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-nestjs/.env.example","apps/api-nestjs/src/common/tenant.decorator.ts","apps/api-nestjs/src/events/event-bus.service.ts","apps/api-nestjs/src/events/events.gateway.ts","apps/api-nestjs/src/events/outbox-dispatcher.service.ts","apps/api-nestjs/src/queue/jobs.controller.ts","apps/api-nestjs/src/queue/jobs.processor.ts","apps/api-nestjs/src/sse/sse.controller.ts","apps/api-nestjs/src/users/users.service.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/web/.env.example","apps/web/package.json","apps/web/src/components/EventFeed.tsx","apps/web/src/components/OrdersPanel.tsx","apps/web/src/hooks/useRealtime.ts","apps/web/src/lib/api.ts","docs/adr/0009-dual-backend-governance-parity.md","package.json","packages/contracts/src/index.ts","packages/contracts/src/order.ts","packages/contracts/src/realtime.ts","pnpm-lock.yaml","pnpm-workspace.yaml","reports/baseline.json","reports/contract-consumers.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json","scripts/check-migrations.mjs","scripts/check-runtime-acceptance.mjs","scripts/governance-report.mjs"]}],"total_commits":0,"head_commit":{"id":"2fa1666f6bb69b7784199199afde715a54856ac8","message":"feat(governance): machineize docs-truth gate, fix Fastify Redis parsing, harden test-base guard\n\n- Add check:docs-truth (C14 machineized): targeted assertions catching README/standards\n drift from runtime truth (dual-backend positioning, tenant-aware envelope shape, NestJS\n HTTP engine, ghost assets like commitlint/RHF), wired into pnpm check + governance ratchet.\n- Fix Fastify BullMQ Redis URL parsing to include password/db (C15), matching NestJS's\n parseRedisConnection; adds a check:dual-backend tripwire so this can't silently regress.\n Without this, authenticated/non-zero-db Redis environments would split pub/sub and\n BullMQ onto different logical Redis instances.\n- Close G15: check:runtime / check:ui preflight now requires explicit REDIS_URL (no more\n silent localhost:6379 default) and enforces a base_framework* db name convention, with\n GOVERNANCE_DB_NAME_OVERRIDE=1 as an explicit escape hatch.\n- Correct stale doc claims across README/docs/standards to match actual code (Fastify is a\n full dual-backend peer per ADR-0009, not an optional fallback; envelope carries tenantId;\n NestJS uses platform-express not the Fastify adapter; annotate unimplemented commitlint/RHF\n plans as not-yet-landed).\n- Refresh governance reports/baseline after re-running pnpm check and check:runtime (56/56).\n\nCo-Authored-By: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/base-framework/commit/2fa1666f6bb69b7784199199afde715a54856ac8","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T01:11:05-07:00","added":["reports/docs-truth.latest.json","scripts/check-docs-truth.mjs"],"removed":[],"modified":["CLAUDE.md","README.md","apps/api-fastify/src/plugins/queue.ts","docs/README.md","docs/governance-experience.md","docs/standards/backend-standard.md","docs/standards/database-standard.md","docs/standards/frontend-standard.md","docs/standards/git-standard.md","package.json","reports/baseline.json","reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json","scripts/check-dual-backend-parity.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-ui-acceptance.mjs","scripts/governance-report.mjs"]},"repository":{"id":54,"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":"base-framework","full_name":"luoanwu/base-framework","description":"基础框架 monorepo","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":468,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework/languages","html_url":"https://gitea.g-hi.com/luoanwu/base-framework","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/base-framework","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/base-framework.git","clone_url":"https://gitea.g-hi.com/luoanwu/base-framework.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-03T12:24:18+08:00","updated_at":"2026-07-03T12:24:32+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":true,"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
|
6
|
1784707904
|
1784708025
|
0
|
1784707902
|
1784708027
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23445
|
fix: align 代理层超时预算被 undici 默认 headersTimeout 静默吞掉( fix: align 代理层超时预算被 undici 默认 headersTimeout 静默吞掉(C18)...
|
63
|
5
|
governance.yml
|
6
|
5
|
0
|
refs/heads/main
|
dbb8444dc97bba3e8ebc715efb82d803001981cd
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"7c3af0f0e3e5d33e89cc59a0e2d727e1641b6cdf","after":"dbb8444dc97bba3e8ebc715efb82d803001981cd","compare_url":"https://gitea.g-hi.com/luoanwu/forced-alignment/compare/7c3af0f0e3e5d33e89cc59a0e2d727e1641b6cdf...dbb8444dc97bba3e8ebc715efb82d803001981cd","commits":[{"id":"dbb8444dc97bba3e8ebc715efb82d803001981cd","message":"fix: align 代理层超时预算被 undici 默认 headersTimeout 静默吞掉(C18)\n\n- 根因:Node 内置 fetch()(undici)自带 headersTimeout/bodyTimeout 默认\n 300000ms(5 分钟),优先级高于应用层 AbortController——route.ts 精心\n 设计的按音频时长预算(最长 55 分钟)从未真正掌管过请求,sidecar 真实\n 计算超 5 分钟即被静默掐断为 fetch failed,sidecar 进程本身无异常\n- 生产实测复现:用户单句重跑报错 fetch failed;日志显示\n POST /api/alignment/align 502 in 303388ms(卡在整 5 分钟),同一时间\n sidecar 侧无任何异常/Traceback\n- 修复:显式装 undici 依赖,建 Agent({ headersTimeout: 0, bodyTimeout: 0 })\n 作为 dispatcher 传入 fetch,超时决定权完全收回给自建 AbortController\n- 验证:本地短耗时对照实验复现同一故障(headersTimeout 2s 下 2.5s 抛出\n 一致的 fetch failed)并验证修复(headersTimeout:0 下等过 5s 拿到真实\n 响应)——非模拟,真实 HTTP 服务器 + 真实 undici Agent\n- 无自动化回归(apps/web 无 vitest 基座);已回灌 CLAUDE.md 缺口索引与\n 治理经验库,登记「未来任何长耗时出站 fetch 须显式归零 undici 超时」\n 的通用教训\n\nCo-Authored-By: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/forced-alignment/commit/dbb8444dc97bba3e8ebc715efb82d803001981cd","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T00:53:29-07:00","added":[],"removed":[],"modified":["CLAUDE.md","apps/web/package.json","apps/web/src/app/api/alignment/align/route.ts","docs/governance-experience.md","pnpm-lock.yaml","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"dbb8444dc97bba3e8ebc715efb82d803001981cd","message":"fix: align 代理层超时预算被 undici 默认 headersTimeout 静默吞掉(C18)\n\n- 根因:Node 内置 fetch()(undici)自带 headersTimeout/bodyTimeout 默认\n 300000ms(5 分钟),优先级高于应用层 AbortController——route.ts 精心\n 设计的按音频时长预算(最长 55 分钟)从未真正掌管过请求,sidecar 真实\n 计算超 5 分钟即被静默掐断为 fetch failed,sidecar 进程本身无异常\n- 生产实测复现:用户单句重跑报错 fetch failed;日志显示\n POST /api/alignment/align 502 in 303388ms(卡在整 5 分钟),同一时间\n sidecar 侧无任何异常/Traceback\n- 修复:显式装 undici 依赖,建 Agent({ headersTimeout: 0, bodyTimeout: 0 })\n 作为 dispatcher 传入 fetch,超时决定权完全收回给自建 AbortController\n- 验证:本地短耗时对照实验复现同一故障(headersTimeout 2s 下 2.5s 抛出\n 一致的 fetch failed)并验证修复(headersTimeout:0 下等过 5s 拿到真实\n 响应)——非模拟,真实 HTTP 服务器 + 真实 undici Agent\n- 无自动化回归(apps/web 无 vitest 基座);已回灌 CLAUDE.md 缺口索引与\n 治理经验库,登记「未来任何长耗时出站 fetch 须显式归零 undici 超时」\n 的通用教训\n\nCo-Authored-By: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/forced-alignment/commit/dbb8444dc97bba3e8ebc715efb82d803001981cd","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T00:53:29-07:00","added":[],"removed":[],"modified":["CLAUDE.md","apps/web/package.json","apps/web/src/app/api/alignment/align/route.ts","docs/governance-experience.md","pnpm-lock.yaml","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json"]},"repository":{"id":63,"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":"forced-alignment","full_name":"luoanwu/forced-alignment","description":"纯人声与歌词精准强制对齐工作台","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":29769,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/forced-alignment/languages","html_url":"https://gitea.g-hi.com/luoanwu/forced-alignment","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/forced-alignment","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/forced-alignment.git","clone_url":"https://gitea.g-hi.com/luoanwu/forced-alignment.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-22T08:56:49+08:00","updated_at":"2026-07-22T15:40:47+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":true,"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
|
6
|
1784706813
|
1784706904
|
0
|
1784706813
|
1784706905
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23444
|
feat: 语言口径收紧含粤语单源 + 单句重锚(真·三句上下文重跑)
|
63
|
5
|
governance.yml
|
5
|
5
|
0
|
refs/heads/main
|
7c3af0f0e3e5d33e89cc59a0e2d727e1641b6cdf
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"bbe7744fc0df50ca87397478731523692d59a867","after":"7c3af0f0e3e5d33e89cc59a0e2d727e1641b6cdf","compare_url":"https://gitea.g-hi.com/luoanwu/forced-alignment/compare/bbe7744fc0df50ca87397478731523692d59a867...7c3af0f0e3e5d33e89cc59a0e2d727e1641b6cdf","commits":[{"id":"7c3af0f0e3e5d33e89cc59a0e2d727e1641b6cdf","message":"feat: 语言口径收紧含粤语单源 + 单句重锚(真·三句上下文重跑)\n\n- contracts:ALIGNMENT_LANGUAGES 11 语单源(与 sidecar SUPPORTED_LANGUAGES\n 对齐),createAlignmentRunSchema.language 收紧为 z.enum,未知语言建任务\n 即拒绝;reanchorAlignmentSentenceSchema fail-closed(字数不可变/窗内单调\n 无重叠);新增 alignment.sentence.reanchored 事件类型\n- 工作台:语言选择器从 4 项硬编码改为 contracts 派生 11 项母语标签;\n 复核卡质量旗标人话映射(cantonese_asr_domain 等 12 项)\n- 双后端:新增 POST /:id/sentences/:idx/reanchor 动作接口——邻句包络\n fail-closed(重锚只许落入空隙,不得吞并相邻句)、复核态保持\n NEEDS_REVIEW 等人工验收、同事务写 history+outbox;非法迁移统一映射\n 409 INVALID_TRANSITION\n- 前端:新增 audio-slice.ts 浏览器端切片(OfflineAudioContext 重采样\n 16k WAV),真正实现「用三句上下文重跑」——切三句音频窗口送 Qwen3、\n 只采纳中间句、按窗口偏移映射回全局时间,文本/字数不一致则拒绝采纳\n- 修复预存 bug:\u003caudio\u003e durationchange 早于 loadedmetadata 触发,把\n 播头恢复值踩回 0,导致导入/恢复音频后播头无法停在首个复核句\n- 证据:contracts 24 用例;两后端各 +1 真实 DB 验收(进空隙/吞邻句 409/\n 字数漂移 409/跨租户 404);e2e 9 用例(模型层打桩,切片+写链+DB 回读\n 全真实);棘轮收紧 testsPassed 68→71、uiTestsPassed 8→9、\n ownTestCases 76→80;三级门禁 2026-07-22 本仓实跑全绿\n\nCo-Authored-By: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/forced-alignment/commit/7c3af0f0e3e5d33e89cc59a0e2d727e1641b6cdf","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T00:40:35-07:00","added":["apps/web/src/features/alignment/lib/audio-slice.ts"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/modules/alignment/alignment.service.ts","apps/api-fastify/src/routes/alignment-runs.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-nestjs/src/alignment/alignment.controller.ts","apps/api-nestjs/src/alignment/alignment.service.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/web/e2e/acceptance.spec.ts","apps/web/src/components/EventFeed.tsx","apps/web/src/features/alignment/api/alignment.ts","apps/web/src/features/alignment/components/AlignmentWorkbench.tsx","packages/contracts/src/alignment.ts","packages/contracts/src/contracts.test.ts","packages/contracts/src/realtime.ts","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-validation-source.mjs"]}],"total_commits":0,"head_commit":{"id":"7c3af0f0e3e5d33e89cc59a0e2d727e1641b6cdf","message":"feat: 语言口径收紧含粤语单源 + 单句重锚(真·三句上下文重跑)\n\n- contracts:ALIGNMENT_LANGUAGES 11 语单源(与 sidecar SUPPORTED_LANGUAGES\n 对齐),createAlignmentRunSchema.language 收紧为 z.enum,未知语言建任务\n 即拒绝;reanchorAlignmentSentenceSchema fail-closed(字数不可变/窗内单调\n 无重叠);新增 alignment.sentence.reanchored 事件类型\n- 工作台:语言选择器从 4 项硬编码改为 contracts 派生 11 项母语标签;\n 复核卡质量旗标人话映射(cantonese_asr_domain 等 12 项)\n- 双后端:新增 POST /:id/sentences/:idx/reanchor 动作接口——邻句包络\n fail-closed(重锚只许落入空隙,不得吞并相邻句)、复核态保持\n NEEDS_REVIEW 等人工验收、同事务写 history+outbox;非法迁移统一映射\n 409 INVALID_TRANSITION\n- 前端:新增 audio-slice.ts 浏览器端切片(OfflineAudioContext 重采样\n 16k WAV),真正实现「用三句上下文重跑」——切三句音频窗口送 Qwen3、\n 只采纳中间句、按窗口偏移映射回全局时间,文本/字数不一致则拒绝采纳\n- 修复预存 bug:\u003caudio\u003e durationchange 早于 loadedmetadata 触发,把\n 播头恢复值踩回 0,导致导入/恢复音频后播头无法停在首个复核句\n- 证据:contracts 24 用例;两后端各 +1 真实 DB 验收(进空隙/吞邻句 409/\n 字数漂移 409/跨租户 404);e2e 9 用例(模型层打桩,切片+写链+DB 回读\n 全真实);棘轮收紧 testsPassed 68→71、uiTestsPassed 8→9、\n ownTestCases 76→80;三级门禁 2026-07-22 本仓实跑全绿\n\nCo-Authored-By: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/forced-alignment/commit/7c3af0f0e3e5d33e89cc59a0e2d727e1641b6cdf","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T00:40:35-07:00","added":["apps/web/src/features/alignment/lib/audio-slice.ts"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/modules/alignment/alignment.service.ts","apps/api-fastify/src/routes/alignment-runs.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-nestjs/src/alignment/alignment.controller.ts","apps/api-nestjs/src/alignment/alignment.service.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/web/e2e/acceptance.spec.ts","apps/web/src/components/EventFeed.tsx","apps/web/src/features/alignment/api/alignment.ts","apps/web/src/features/alignment/components/AlignmentWorkbench.tsx","packages/contracts/src/alignment.ts","packages/contracts/src/contracts.test.ts","packages/contracts/src/realtime.ts","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-validation-source.mjs"]},"repository":{"id":63,"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":"forced-alignment","full_name":"luoanwu/forced-alignment","description":"纯人声与歌词精准强制对齐工作台","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":29685,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/forced-alignment/languages","html_url":"https://gitea.g-hi.com/luoanwu/forced-alignment","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/forced-alignment","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/forced-alignment.git","clone_url":"https://gitea.g-hi.com/luoanwu/forced-alignment.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-22T08:56:49+08:00","updated_at":"2026-07-22T12:35:54+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":true,"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
|
8
|
1784706050
|
1784706127
|
0
|
1784706047
|
1784706127
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23443
|
fix(governance): preserve porcelain status columns
|
64
|
5
|
governance.yml
|
8
|
5
|
0
|
refs/heads/main
|
f78049d487372e5538b1d202b65aa252031c8887
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"b0381bdeb68a35d172581d6736b9059720e3ad1b","after":"f78049d487372e5538b1d202b65aa252031c8887","compare_url":"https://gitea.g-hi.com/luoanwu/voice-conversion/compare/b0381bdeb68a35d172581d6736b9059720e3ad1b...f78049d487372e5538b1d202b65aa252031c8887","commits":[{"id":"f78049d487372e5538b1d202b65aa252031c8887","message":"fix(governance): preserve porcelain status columns\n","url":"https://gitea.g-hi.com/luoanwu/voice-conversion/commit/f78049d487372e5538b1d202b65aa252031c8887","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T00:39:59-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/governance-experience.md","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/report-provenance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json","scripts/lib/report-provenance.mjs"]}],"total_commits":0,"head_commit":{"id":"f78049d487372e5538b1d202b65aa252031c8887","message":"fix(governance): preserve porcelain status columns\n","url":"https://gitea.g-hi.com/luoanwu/voice-conversion/commit/f78049d487372e5538b1d202b65aa252031c8887","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T00:39:59-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/governance-experience.md","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/report-provenance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json","scripts/lib/report-provenance.mjs"]},"repository":{"id":64,"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":"voice-conversion","full_name":"luoanwu/voice-conversion","description":"SoulX-Singer personal singing voice conversion platform","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":962,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voice-conversion/languages","html_url":"https://gitea.g-hi.com/luoanwu/voice-conversion","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voice-conversion","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/voice-conversion.git","clone_url":"https://gitea.g-hi.com/luoanwu/voice-conversion.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-22T14:37:12+08:00","updated_at":"2026-07-22T15:34:17+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":true,"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
|
8
|
1784706014
|
1784706107
|
0
|
1784706012
|
1784706107
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23442
|
fix(governance): snapshot report inputs before run fix(governance): snapshot report inputs before runners...
|
64
|
5
|
governance.yml
|
7
|
5
|
0
|
refs/heads/main
|
b0381bdeb68a35d172581d6736b9059720e3ad1b
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"91550451861f997024b06c845897ea59af85e238","after":"b0381bdeb68a35d172581d6736b9059720e3ad1b","compare_url":"https://gitea.g-hi.com/luoanwu/voice-conversion/compare/91550451861f997024b06c845897ea59af85e238...b0381bdeb68a35d172581d6736b9059720e3ad1b","commits":[{"id":"b0381bdeb68a35d172581d6736b9059720e3ad1b","message":"fix(governance): snapshot report inputs before runners\n","url":"https://gitea.g-hi.com/luoanwu/voice-conversion/commit/b0381bdeb68a35d172581d6736b9059720e3ad1b","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T00:34:03-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/governance-experience.md","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/report-provenance.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json","scripts/check-report-provenance.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-ui-acceptance.mjs","scripts/lib/report-provenance.mjs"]}],"total_commits":0,"head_commit":{"id":"b0381bdeb68a35d172581d6736b9059720e3ad1b","message":"fix(governance): snapshot report inputs before runners\n","url":"https://gitea.g-hi.com/luoanwu/voice-conversion/commit/b0381bdeb68a35d172581d6736b9059720e3ad1b","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T00:34:03-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/governance-experience.md","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/report-provenance.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json","scripts/check-report-provenance.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-ui-acceptance.mjs","scripts/lib/report-provenance.mjs"]},"repository":{"id":64,"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":"voice-conversion","full_name":"luoanwu/voice-conversion","description":"SoulX-Singer personal singing voice conversion platform","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":907,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voice-conversion/languages","html_url":"https://gitea.g-hi.com/luoanwu/voice-conversion","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voice-conversion","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/voice-conversion.git","clone_url":"https://gitea.g-hi.com/luoanwu/voice-conversion.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-22T14:37:12+08:00","updated_at":"2026-07-22T15:25: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":true,"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
|
8
|
1784705658
|
1784705716
|
0
|
1784705657
|
1784705716
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23441
|
fix(governance): normalize colored test summaries
|
64
|
5
|
governance.yml
|
6
|
5
|
0
|
refs/heads/main
|
91550451861f997024b06c845897ea59af85e238
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"49daee39ae62e162a700622733a58a3b0d5fb27c","after":"91550451861f997024b06c845897ea59af85e238","compare_url":"https://gitea.g-hi.com/luoanwu/voice-conversion/compare/49daee39ae62e162a700622733a58a3b0d5fb27c...91550451861f997024b06c845897ea59af85e238","commits":[{"id":"91550451861f997024b06c845897ea59af85e238","message":"fix(governance): normalize colored test summaries\n","url":"https://gitea.g-hi.com/luoanwu/voice-conversion/commit/91550451861f997024b06c845897ea59af85e238","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T00:25:23-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/governance-experience.md","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/report-provenance.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json","scripts/check-runtime-acceptance.mjs"]}],"total_commits":0,"head_commit":{"id":"91550451861f997024b06c845897ea59af85e238","message":"fix(governance): normalize colored test summaries\n","url":"https://gitea.g-hi.com/luoanwu/voice-conversion/commit/91550451861f997024b06c845897ea59af85e238","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T00:25:23-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/governance-experience.md","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/report-provenance.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json","scripts/check-runtime-acceptance.mjs"]},"repository":{"id":64,"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":"voice-conversion","full_name":"luoanwu/voice-conversion","description":"SoulX-Singer personal singing voice conversion platform","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":863,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voice-conversion/languages","html_url":"https://gitea.g-hi.com/luoanwu/voice-conversion","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voice-conversion","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/voice-conversion.git","clone_url":"https://gitea.g-hi.com/luoanwu/voice-conversion.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-22T14:37:12+08:00","updated_at":"2026-07-22T15:20:46+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":true,"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
|
8
|
1784705138
|
1784705194
|
0
|
1784705137
|
1784705194
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23440
|
fix(governance): close G22 report provenance
|
64
|
5
|
governance.yml
|
5
|
5
|
0
|
refs/heads/main
|
49daee39ae62e162a700622733a58a3b0d5fb27c
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"40cf16918b6f6ee673e92651e5a0a5edb79d86dd","after":"49daee39ae62e162a700622733a58a3b0d5fb27c","compare_url":"https://gitea.g-hi.com/luoanwu/voice-conversion/compare/40cf16918b6f6ee673e92651e5a0a5edb79d86dd...49daee39ae62e162a700622733a58a3b0d5fb27c","commits":[{"id":"49daee39ae62e162a700622733a58a3b0d5fb27c","message":"fix(governance): close G22 report provenance\n","url":"https://gitea.g-hi.com/luoanwu/voice-conversion/commit/49daee39ae62e162a700622733a58a3b0d5fb27c","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T00:20:31-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/governance-experience.md","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/report-provenance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-report-provenance.mjs","scripts/check-ui-acceptance.mjs"]}],"total_commits":0,"head_commit":{"id":"49daee39ae62e162a700622733a58a3b0d5fb27c","message":"fix(governance): close G22 report provenance\n","url":"https://gitea.g-hi.com/luoanwu/voice-conversion/commit/49daee39ae62e162a700622733a58a3b0d5fb27c","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T00:20:31-07:00","added":[],"removed":[],"modified":["CLAUDE.md","docs/governance-experience.md","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/report-provenance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-report-provenance.mjs","scripts/check-ui-acceptance.mjs"]},"repository":{"id":64,"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":"voice-conversion","full_name":"luoanwu/voice-conversion","description":"SoulX-Singer personal singing voice conversion platform","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":815,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voice-conversion/languages","html_url":"https://gitea.g-hi.com/luoanwu/voice-conversion","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voice-conversion","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/voice-conversion.git","clone_url":"https://gitea.g-hi.com/luoanwu/voice-conversion.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-22T14:37:12+08:00","updated_at":"2026-07-22T15:07: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":true,"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
|
8
|
1784704847
|
1784704904
|
0
|
1784704846
|
1784704904
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23439
|
fix(svc): 中文文件名 multipart 乱码修复(latin1→UTF-8 还原)
|
64
|
5
|
governance.yml
|
4
|
5
|
0
|
refs/heads/main
|
40cf16918b6f6ee673e92651e5a0a5edb79d86dd
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"8bcd226984997589864354a5c357a5acaf8221b8","after":"40cf16918b6f6ee673e92651e5a0a5edb79d86dd","compare_url":"https://gitea.g-hi.com/luoanwu/voice-conversion/compare/8bcd226984997589864354a5c357a5acaf8221b8...40cf16918b6f6ee673e92651e5a0a5edb79d86dd","commits":[{"id":"40cf16918b6f6ee673e92651e5a0a5edb79d86dd","message":"fix(svc): 中文文件名 multipart 乱码修复(latin1→UTF-8 还原)\n\nbusboy/multer 按 latin1 解码 multipart filename 而浏览器发 UTF-8 字节,\n中文文件名入库必乱码(魏翔→éç¿)。修复:\n- 双后端 svc 服务层 normalizeUploadFilename 统一还原(latin1 取回原字节按\n UTF-8 重解码;产生替换符=本就是正确 UTF-8 则保留——对 ASCII 幂等)\n- @fastify/busboy 3.x 无 defParamCharset 配置项,配置路线不可用,注释留档\n- 双端 HTTP 验收各 +1 中文文件名用例(runtime 89 tests,地板 89)\n- 存量脏行已按同法修复(dev 库《时差》任务)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/voice-conversion/commit/40cf16918b6f6ee673e92651e5a0a5edb79d86dd","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T00:07:31-07:00","added":["reports/report-provenance.latest.json","scripts/check-report-provenance.mjs","scripts/lib/report-provenance.mjs"],"removed":[],"modified":[".github/workflows/governance.yml","CLAUDE.md","apps/api-fastify/src/app.ts","apps/api-fastify/src/modules/svc/cover-jobs.service.ts","apps/api-fastify/src/modules/svc/storage.ts","apps/api-fastify/src/modules/svc/timbre-profiles.service.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-nestjs/src/svc/cover-jobs.service.ts","apps/api-nestjs/src/svc/storage.ts","apps/api-nestjs/src/svc/timbre-profiles.service.ts","apps/api-nestjs/test/http.acceptance.test.ts","package.json","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-contract-consumers.mjs","scripts/check-docs-truth.mjs","scripts/check-dual-backend-parity.mjs","scripts/check-governance-docs.mjs","scripts/check-migrations.mjs","scripts/check-naming.mjs","scripts/check-order-concurrency-guard.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-schema-sync.mjs","scripts/check-ui-acceptance.mjs","scripts/check-validation-source.mjs","scripts/governance-report.mjs"]}],"total_commits":0,"head_commit":{"id":"40cf16918b6f6ee673e92651e5a0a5edb79d86dd","message":"fix(svc): 中文文件名 multipart 乱码修复(latin1→UTF-8 还原)\n\nbusboy/multer 按 latin1 解码 multipart filename 而浏览器发 UTF-8 字节,\n中文文件名入库必乱码(魏翔→éç¿)。修复:\n- 双后端 svc 服务层 normalizeUploadFilename 统一还原(latin1 取回原字节按\n UTF-8 重解码;产生替换符=本就是正确 UTF-8 则保留——对 ASCII 幂等)\n- @fastify/busboy 3.x 无 defParamCharset 配置项,配置路线不可用,注释留档\n- 双端 HTTP 验收各 +1 中文文件名用例(runtime 89 tests,地板 89)\n- 存量脏行已按同法修复(dev 库《时差》任务)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/voice-conversion/commit/40cf16918b6f6ee673e92651e5a0a5edb79d86dd","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-22T00:07:31-07:00","added":["reports/report-provenance.latest.json","scripts/check-report-provenance.mjs","scripts/lib/report-provenance.mjs"],"removed":[],"modified":[".github/workflows/governance.yml","CLAUDE.md","apps/api-fastify/src/app.ts","apps/api-fastify/src/modules/svc/cover-jobs.service.ts","apps/api-fastify/src/modules/svc/storage.ts","apps/api-fastify/src/modules/svc/timbre-profiles.service.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-nestjs/src/svc/cover-jobs.service.ts","apps/api-nestjs/src/svc/storage.ts","apps/api-nestjs/src/svc/timbre-profiles.service.ts","apps/api-nestjs/test/http.acceptance.test.ts","package.json","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-contract-consumers.mjs","scripts/check-docs-truth.mjs","scripts/check-dual-backend-parity.mjs","scripts/check-governance-docs.mjs","scripts/check-migrations.mjs","scripts/check-naming.mjs","scripts/check-order-concurrency-guard.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-schema-sync.mjs","scripts/check-ui-acceptance.mjs","scripts/check-validation-source.mjs","scripts/governance-report.mjs"]},"repository":{"id":64,"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":"voice-conversion","full_name":"luoanwu/voice-conversion","description":"SoulX-Singer personal singing voice conversion platform","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":717,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voice-conversion/languages","html_url":"https://gitea.g-hi.com/luoanwu/voice-conversion","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voice-conversion","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/voice-conversion.git","clone_url":"https://gitea.g-hi.com/luoanwu/voice-conversion.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-22T14:37:12+08:00","updated_at":"2026-07-22T14:47: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":true,"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
|
8
|
1784704058
|
1784704114
|
0
|
1784704057
|
1784704114
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23438
|
fix(svc): worker 启动对账——救活无队列背书的处理态任务
|
64
|
5
|
governance.yml
|
3
|
5
|
0
|
refs/heads/main
|
8bcd226984997589864354a5c357a5acaf8221b8
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"fbc7ad83338fb810bc574c8b00a6679b8ed3ca0c","after":"8bcd226984997589864354a5c357a5acaf8221b8","compare_url":"https://gitea.g-hi.com/luoanwu/voice-conversion/compare/fbc7ad83338fb810bc574c8b00a6679b8ed3ca0c...8bcd226984997589864354a5c357a5acaf8221b8","commits":[{"id":"8bcd226984997589864354a5c357a5acaf8221b8","message":"fix(svc): worker 启动对账——救活无队列背书的处理态任务\n\n优雅关停下 BullMQ 任务连续 stalled 超限被判死时,若无 worker 在场监听\nfailed 事件,DB 状态会永久卡在处理态(实证:重启后任务停 CONVERTING、\nsidecar 空闲、队列无任务)。修复:\n- 双后端 boot 时扫描 QUEUED/处理态任务重新入队(processJob 对处理态可\n 安全续跑、终态 no-op、concurrency=1 不双跑;单实例语义,G16 类边界)\n- maxStalledCount 1→3:重启窗口 stalled 是常态,一次即判死太苛刻\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/voice-conversion/commit/8bcd226984997589864354a5c357a5acaf8221b8","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-21T23:46:44-07:00","added":[],"removed":[],"modified":["apps/api-fastify/src/plugins/cover-queue.ts","apps/api-nestjs/src/svc/cover-jobs.service.ts","apps/api-nestjs/src/svc/cover.processor.ts"]}],"total_commits":0,"head_commit":{"id":"8bcd226984997589864354a5c357a5acaf8221b8","message":"fix(svc): worker 启动对账——救活无队列背书的处理态任务\n\n优雅关停下 BullMQ 任务连续 stalled 超限被判死时,若无 worker 在场监听\nfailed 事件,DB 状态会永久卡在处理态(实证:重启后任务停 CONVERTING、\nsidecar 空闲、队列无任务)。修复:\n- 双后端 boot 时扫描 QUEUED/处理态任务重新入队(processJob 对处理态可\n 安全续跑、终态 no-op、concurrency=1 不双跑;单实例语义,G16 类边界)\n- maxStalledCount 1→3:重启窗口 stalled 是常态,一次即判死太苛刻\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/voice-conversion/commit/8bcd226984997589864354a5c357a5acaf8221b8","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-21T23:46:44-07:00","added":[],"removed":[],"modified":["apps/api-fastify/src/plugins/cover-queue.ts","apps/api-nestjs/src/svc/cover-jobs.service.ts","apps/api-nestjs/src/svc/cover.processor.ts"]},"repository":{"id":64,"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":"voice-conversion","full_name":"luoanwu/voice-conversion","description":"SoulX-Singer personal singing voice conversion platform","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":705,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voice-conversion/languages","html_url":"https://gitea.g-hi.com/luoanwu/voice-conversion","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voice-conversion","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/voice-conversion.git","clone_url":"https://gitea.g-hi.com/luoanwu/voice-conversion.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-22T14:37:12+08:00","updated_at":"2026-07-22T14:38:58+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":true,"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
|
8
|
1784702849
|
1784702904
|
0
|
1784702847
|
1784702904
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23437
|
docs: record dual-remote publication
|
64
|
5
|
governance.yml
|
2
|
5
|
0
|
refs/heads/main
|
fbc7ad83338fb810bc574c8b00a6679b8ed3ca0c
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"07bdfd6b5c1898d76a113986ab5a6e7ade243839","after":"fbc7ad83338fb810bc574c8b00a6679b8ed3ca0c","compare_url":"https://gitea.g-hi.com/luoanwu/voice-conversion/compare/07bdfd6b5c1898d76a113986ab5a6e7ade243839...fbc7ad83338fb810bc574c8b00a6679b8ed3ca0c","commits":[{"id":"fbc7ad83338fb810bc574c8b00a6679b8ed3ca0c","message":"docs: record dual-remote publication\n","url":"https://gitea.g-hi.com/luoanwu/voice-conversion/commit/fbc7ad83338fb810bc574c8b00a6679b8ed3ca0c","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-21T23:38:36-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/docs-truth.latest.json","reports/governance-docs.latest.json"]}],"total_commits":0,"head_commit":{"id":"fbc7ad83338fb810bc574c8b00a6679b8ed3ca0c","message":"docs: record dual-remote publication\n","url":"https://gitea.g-hi.com/luoanwu/voice-conversion/commit/fbc7ad83338fb810bc574c8b00a6679b8ed3ca0c","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-21T23:38:36-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/docs-truth.latest.json","reports/governance-docs.latest.json"]},"repository":{"id":64,"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":"voice-conversion","full_name":"luoanwu/voice-conversion","description":"SoulX-Singer personal singing voice conversion platform","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":683,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voice-conversion/languages","html_url":"https://gitea.g-hi.com/luoanwu/voice-conversion","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voice-conversion","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/voice-conversion.git","clone_url":"https://gitea.g-hi.com/luoanwu/voice-conversion.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-22T14:37:12+08:00","updated_at":"2026-07-22T14:37: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":true,"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
|
6
|
1784702346
|
1784702437
|
0
|
1784702338
|
1784702438
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23435
|
Add Cantonese support and language contract valida Add Cantonese support and language contract validation...
|
63
|
5
|
governance.yml
|
4
|
5
|
0
|
refs/heads/main
|
bbe7744fc0df50ca87397478731523692d59a867
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e35b3d57744e6178a7c3fdeae0aab051c6f2408f","after":"bbe7744fc0df50ca87397478731523692d59a867","compare_url":"https://gitea.g-hi.com/luoanwu/forced-alignment/compare/e35b3d57744e6178a7c3fdeae0aab051c6f2408f...bbe7744fc0df50ca87397478731523692d59a867","commits":[{"id":"bbe7744fc0df50ca87397478731523692d59a867","message":"Add Cantonese support and language contract validation\n","url":"https://gitea.g-hi.com/luoanwu/forced-alignment/commit/bbe7744fc0df50ca87397478731523692d59a867","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-21T21:35:50-07:00","added":[],"removed":[],"modified":["CLAUDE.md","apps/web/e2e/acceptance.spec.ts","apps/web/src/features/alignment/components/AlignmentWorkbench.tsx","packages/contracts/src/alignment.ts","packages/contracts/src/contracts.test.ts","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"bbe7744fc0df50ca87397478731523692d59a867","message":"Add Cantonese support and language contract validation\n","url":"https://gitea.g-hi.com/luoanwu/forced-alignment/commit/bbe7744fc0df50ca87397478731523692d59a867","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-21T21:35:50-07:00","added":[],"removed":[],"modified":["CLAUDE.md","apps/web/e2e/acceptance.spec.ts","apps/web/src/features/alignment/components/AlignmentWorkbench.tsx","packages/contracts/src/alignment.ts","packages/contracts/src/contracts.test.ts","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},"repository":{"id":63,"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":"forced-alignment","full_name":"luoanwu/forced-alignment","description":"纯人声与歌词精准强制对齐工作台","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":29630,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/forced-alignment/languages","html_url":"https://gitea.g-hi.com/luoanwu/forced-alignment","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/forced-alignment","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/forced-alignment.git","clone_url":"https://gitea.g-hi.com/luoanwu/forced-alignment.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-22T08:56:49+08:00","updated_at":"2026-07-22T11:43:48+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":true,"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
|
6
|
1784694955
|
1784695046
|
0
|
1784694954
|
1784695047
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23434
|
fix: 工作台展示与激活解耦修复播放闪烁;移除引擎标识显示
|
63
|
5
|
governance.yml
|
3
|
5
|
0
|
refs/heads/main
|
e35b3d57744e6178a7c3fdeae0aab051c6f2408f
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"1b55d1eece101ec72f25af96f62713da05ae06ff","after":"e35b3d57744e6178a7c3fdeae0aab051c6f2408f","compare_url":"https://gitea.g-hi.com/luoanwu/forced-alignment/compare/1b55d1eece101ec72f25af96f62713da05ae06ff...e35b3d57744e6178a7c3fdeae0aab051c6f2408f","commits":[{"id":"e35b3d57744e6178a7c3fdeae0aab051c6f2408f","message":"fix: 工作台展示与激活解耦修复播放闪烁;移除引擎标识显示\n\n- 闪烁根因:激活与展示耦合在叶子字区间判定,播放穿过字间空洞时\n 三句上下文/字级轨道/KTV/检查器整块逐帧卸载重挂\n- 修法:展示层改句包络定位当前句;激活层仍只认叶子字区间\n (空洞内零字扫色、data-lyric-active=false,蓝图不变量保持),\n 句间空档三层空态不变(e2e 无词隔离用例语义原样)\n- 波形画布改 layout-effect 与播头同帧提交,仅尺寸变化时重设像素\n- 头部「Qwen3 FA · 80ms grid」与错误兜底文案中的引擎标识不再显示\n (engine/runtimeContract 数据层保留,审计不受影响)\n- 证据:typecheck 绿;check:ui 7/7(2026-07-21 实跑);\n 真实空洞点实测(句内 52.40s 整行保持、句间 63.88s 三层空态)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/forced-alignment/commit/e35b3d57744e6178a7c3fdeae0aab051c6f2408f","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-21T20:43:46-07:00","added":[],"removed":[],"modified":["apps/web/src/features/alignment/api/alignment.ts","apps/web/src/features/alignment/components/AlignmentWorkbench.tsx","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"e35b3d57744e6178a7c3fdeae0aab051c6f2408f","message":"fix: 工作台展示与激活解耦修复播放闪烁;移除引擎标识显示\n\n- 闪烁根因:激活与展示耦合在叶子字区间判定,播放穿过字间空洞时\n 三句上下文/字级轨道/KTV/检查器整块逐帧卸载重挂\n- 修法:展示层改句包络定位当前句;激活层仍只认叶子字区间\n (空洞内零字扫色、data-lyric-active=false,蓝图不变量保持),\n 句间空档三层空态不变(e2e 无词隔离用例语义原样)\n- 波形画布改 layout-effect 与播头同帧提交,仅尺寸变化时重设像素\n- 头部「Qwen3 FA · 80ms grid」与错误兜底文案中的引擎标识不再显示\n (engine/runtimeContract 数据层保留,审计不受影响)\n- 证据:typecheck 绿;check:ui 7/7(2026-07-21 实跑);\n 真实空洞点实测(句内 52.40s 整行保持、句间 63.88s 三层空态)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/forced-alignment/commit/e35b3d57744e6178a7c3fdeae0aab051c6f2408f","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-21T20:43:46-07:00","added":[],"removed":[],"modified":["apps/web/src/features/alignment/api/alignment.ts","apps/web/src/features/alignment/components/AlignmentWorkbench.tsx","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},"repository":{"id":63,"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":"forced-alignment","full_name":"luoanwu/forced-alignment","description":"纯人声与歌词精准强制对齐工作台","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":29611,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/forced-alignment/languages","html_url":"https://gitea.g-hi.com/luoanwu/forced-alignment","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/forced-alignment","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/forced-alignment.git","clone_url":"https://gitea.g-hi.com/luoanwu/forced-alignment.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-22T08:56:49+08:00","updated_at":"2026-07-22T10:55:44+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":true,"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
|
6
|
1784691828
|
1784691919
|
0
|
1784691828
|
1784691920
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23433
|
feat: 歌唱域质量治理与全面治理收口(C16/C17)
|
63
|
5
|
governance.yml
|
2
|
5
|
0
|
refs/heads/main
|
1b55d1eece101ec72f25af96f62713da05ae06ff
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"f7f58401d267fffa37e2c7282f531354478eeebf","after":"1b55d1eece101ec72f25af96f62713da05ae06ff","compare_url":"https://gitea.g-hi.com/luoanwu/forced-alignment/compare/f7f58401d267fffa37e2c7282f531354478eeebf...1b55d1eece101ec72f25af96f62713da05ae06ff","commits":[{"id":"1b55d1eece101ec72f25af96f62713da05ae06ff","message":"feat: 歌唱域质量治理与全面治理收口(C16/C17)\n\n- 工作台:无词音频隔离(叶子字区间单源激活)+ 波形 1-16x 视窗缩放;e2e +2(共 7 用例)\n- contracts:Qwen3 域受限/演唱序列冲突 fail-closed 归一化;complete 契约补索引唯一/\n 按 index 时间单调/跨句跨字无重叠 fail-closed(蓝图 §6);asr_anchor 留档进 qualityData\n- C16:alignment 域纳入全部写链行为门禁(writeModels/租户入口/outbox/旁路 publish/\n 并发守护/校验单源/双后端红线+测试覆盖绊网),逐门禁负向验红;样板面板挂 /samples 回运行路径\n- C17:governance-report --update-baseline 改 merge 写入,保住 testsPassed/uiTestsPassed 地板\n- 两后端:complete/fail/accept 目标态收敛 assertTransition 单源;alignment 非法迁移补\n 409 INVALID_TRANSITION 判责(原 500);新增 fail/retry/409 判责验收用例\n- 文档:G20 如实改述(docs-truth 断言机器锁定)、G23 登记(工作台前端栈差距)、\n owner-matrix/蓝图口径修正、C16/C17 战役回灌经验库\n- 棘轮收紧:testsPassed 61→67、ownTestCases 68→74、uiTestsPassed 7;三级门禁\n 2026-07-21 本仓实跑全绿(check / check:runtime / check:ui)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/forced-alignment/commit/1b55d1eece101ec72f25af96f62713da05ae06ff","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-21T19:55:12-07:00","added":["apps/web/src/app/samples/page.tsx"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/modules/alignment/alignment.service.ts","apps/api-fastify/src/routes/alignment-runs.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-nestjs/src/alignment/alignment.service.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/web/e2e/acceptance.spec.ts","apps/web/src/app/api/alignment/align/route.ts","apps/web/src/app/globals.css","apps/web/src/features/alignment/api/alignment.ts","apps/web/src/features/alignment/components/AlignmentWorkbench.tsx","deploy/.env.vm.example","deploy/docker-compose.vm.yml","docs/domain/forced-alignment-workbench-blueprint.md","docs/domain/owner-matrix.md","docs/governance-experience.md","packages/contracts/src/alignment.ts","packages/contracts/src/contracts.test.ts","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-docs-truth.mjs","scripts/check-dual-backend-parity.mjs","scripts/check-order-concurrency-guard.mjs","scripts/check-validation-source.mjs","scripts/governance-report.mjs"]}],"total_commits":0,"head_commit":{"id":"1b55d1eece101ec72f25af96f62713da05ae06ff","message":"feat: 歌唱域质量治理与全面治理收口(C16/C17)\n\n- 工作台:无词音频隔离(叶子字区间单源激活)+ 波形 1-16x 视窗缩放;e2e +2(共 7 用例)\n- contracts:Qwen3 域受限/演唱序列冲突 fail-closed 归一化;complete 契约补索引唯一/\n 按 index 时间单调/跨句跨字无重叠 fail-closed(蓝图 §6);asr_anchor 留档进 qualityData\n- C16:alignment 域纳入全部写链行为门禁(writeModels/租户入口/outbox/旁路 publish/\n 并发守护/校验单源/双后端红线+测试覆盖绊网),逐门禁负向验红;样板面板挂 /samples 回运行路径\n- C17:governance-report --update-baseline 改 merge 写入,保住 testsPassed/uiTestsPassed 地板\n- 两后端:complete/fail/accept 目标态收敛 assertTransition 单源;alignment 非法迁移补\n 409 INVALID_TRANSITION 判责(原 500);新增 fail/retry/409 判责验收用例\n- 文档:G20 如实改述(docs-truth 断言机器锁定)、G23 登记(工作台前端栈差距)、\n owner-matrix/蓝图口径修正、C16/C17 战役回灌经验库\n- 棘轮收紧:testsPassed 61→67、ownTestCases 68→74、uiTestsPassed 7;三级门禁\n 2026-07-21 本仓实跑全绿(check / check:runtime / check:ui)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/forced-alignment/commit/1b55d1eece101ec72f25af96f62713da05ae06ff","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-21T19:55:12-07:00","added":["apps/web/src/app/samples/page.tsx"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/modules/alignment/alignment.service.ts","apps/api-fastify/src/routes/alignment-runs.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-nestjs/src/alignment/alignment.service.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/web/e2e/acceptance.spec.ts","apps/web/src/app/api/alignment/align/route.ts","apps/web/src/app/globals.css","apps/web/src/features/alignment/api/alignment.ts","apps/web/src/features/alignment/components/AlignmentWorkbench.tsx","deploy/.env.vm.example","deploy/docker-compose.vm.yml","docs/domain/forced-alignment-workbench-blueprint.md","docs/domain/owner-matrix.md","docs/governance-experience.md","packages/contracts/src/alignment.ts","packages/contracts/src/contracts.test.ts","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-docs-truth.mjs","scripts/check-dual-backend-parity.mjs","scripts/check-order-concurrency-guard.mjs","scripts/check-validation-source.mjs","scripts/governance-report.mjs"]},"repository":{"id":63,"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":"forced-alignment","full_name":"luoanwu/forced-alignment","description":"纯人声与歌词精准强制对齐工作台","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":29497,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/forced-alignment/languages","html_url":"https://gitea.g-hi.com/luoanwu/forced-alignment","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/forced-alignment","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/forced-alignment.git","clone_url":"https://gitea.g-hi.com/luoanwu/forced-alignment.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-22T08:56:49+08:00","updated_at":"2026-07-22T08:59:29+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":true,"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
|
6
|
1784688944
|
1784689972
|
0
|
1784688944
|
1784689973
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23432
|
Harden recording release E2E assertion
|
62
|
5
|
governance.yml
|
7
|
5
|
0
|
refs/heads/main
|
3d3d1a4d8c4ab00b1cefbc239838007a04296172
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"73bd623dfedff79a02fac961d1c16f106137e2df","after":"3d3d1a4d8c4ab00b1cefbc239838007a04296172","compare_url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition/compare/73bd623dfedff79a02fac961d1c16f106137e2df...3d3d1a4d8c4ab00b1cefbc239838007a04296172","commits":[{"id":"3d3d1a4d8c4ab00b1cefbc239838007a04296172","message":"Harden recording release E2E assertion\n","url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition/commit/3d3d1a4d8c4ab00b1cefbc239838007a04296172","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-21T18:58:06-07:00","added":[],"removed":[],"modified":[".gitignore","apps/web/e2e/acceptance.spec.ts","reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"3d3d1a4d8c4ab00b1cefbc239838007a04296172","message":"Harden recording release E2E assertion\n","url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition/commit/3d3d1a4d8c4ab00b1cefbc239838007a04296172","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-21T18:58:06-07:00","added":[],"removed":[],"modified":[".gitignore","apps/web/e2e/acceptance.spec.ts","reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},"repository":{"id":62,"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":"voiceprint-recognition","full_name":"luoanwu/voiceprint-recognition","description":"ECAPA+WavLM 声纹注册识别、1:N ANN 检索与声音特征画像平台","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":1460,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voiceprint-recognition/languages","html_url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voiceprint-recognition","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/voiceprint-recognition.git","clone_url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":2,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-15T08:42:42+08:00","updated_at":"2026-07-22T01:13:44+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":true,"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
|
8
|
1784685492
|
1784685545
|
0
|
1784685491
|
1784685545
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23431
|
feat: initialize forced alignment workbench
|
63
|
5
|
governance.yml
|
1
|
5
|
0
|
refs/heads/main
|
f7f58401d267fffa37e2c7282f531354478eeebf
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"0000000000000000000000000000000000000000","after":"f7f58401d267fffa37e2c7282f531354478eeebf","compare_url":"https://gitea.g-hi.com/","commits":[{"id":"f7f58401d267fffa37e2c7282f531354478eeebf","message":"feat: initialize forced alignment workbench\n","url":"https://gitea.g-hi.com/luoanwu/forced-alignment/commit/f7f58401d267fffa37e2c7282f531354478eeebf","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-21T17:58:39-07:00","added":[".agents/skills/business-module-intake/SKILL.md",".agents/skills/frontend-api-react/SKILL.md",".agents/skills/frontend-view-react/SKILL.md",".agents/skills/frontend-view-react/references/view-templates.md",".agents/skills/fullstack-7layer-react/SKILL.md",".agents/skills/fullstack-7layer-react/references/fullstack-react-templates.md",".agents/skills/zustand-store/SKILL.md",".claude/agents/acceptance-runner.md",".claude/agents/module-blueprint.md",".claude/launch.json",".claude/skills/business-module-intake/SKILL.md",".claude/skills/frontend-api-react/SKILL.md",".claude/skills/frontend-view-react/SKILL.md",".claude/skills/frontend-view-react/references/view-templates.md",".claude/skills/fullstack-7layer-react/SKILL.md",".claude/skills/fullstack-7layer-react/references/fullstack-react-templates.md",".claude/skills/zustand-store/SKILL.md",".codex/agents/acceptance-runner.toml",".codex/agents/module-blueprint.toml",".dockerignore",".github/pull_request_template.md",".github/workflows/governance.yml",".gitignore","AGENTS.md","CLAUDE.md","README.md","apps/api-fastify/.env.example","apps/api-fastify/.gitignore","apps/api-fastify/package.json","apps/api-fastify/pnpm-lock.yaml","apps/api-fastify/prisma/migrations/20260608150500_init/migration.sql","apps/api-fastify/prisma/migrations/20260705080000_outbox_dead_letter/migration.sql","apps/api-fastify/prisma/migrations/20260721110000_add_alignment_workbench/migration.sql","apps/api-fastify/prisma/migrations/migration_lock.toml","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/app.ts","apps/api-fastify/src/lib/orderMachine.ts","apps/api-fastify/src/lib/statemachine.ts","apps/api-fastify/src/modules/alignment/alignment.service.ts","apps/api-fastify/src/modules/orders/orders.service.ts","apps/api-fastify/src/modules/tenant.ts","apps/api-fastify/src/modules/users/users.service.ts","apps/api-fastify/src/plugins/events.ts","apps/api-fastify/src/plugins/outbox.ts","apps/api-fastify/src/plugins/prisma.ts","apps/api-fastify/src/plugins/queue.ts","apps/api-fastify/src/plugins/redis.ts","apps/api-fastify/src/routes/alignment-runs.ts","apps/api-fastify/src/routes/health.ts","apps/api-fastify/src/routes/jobs.ts","apps/api-fastify/src/routes/orders.ts","apps/api-fastify/src/routes/sse.ts","apps/api-fastify/src/routes/users.ts","apps/api-fastify/src/routes/ws.ts","apps/api-fastify/src/server.ts","apps/api-fastify/src/types.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-fastify/test/orders.integration.test.ts","apps/api-fastify/test/outbox.deadletter.test.ts","apps/api-fastify/test/realtime.tenant.test.ts","apps/api-fastify/tsconfig.json","apps/api-fastify/vitest.config.ts","apps/api-nestjs/.env.example","apps/api-nestjs/.gitignore","apps/api-nestjs/docker-compose.yml","apps/api-nestjs/nest-cli.json","apps/api-nestjs/package.json","apps/api-nestjs/pnpm-lock.yaml","apps/api-nestjs/prisma/migrations/20260608150500_init/migration.sql","apps/api-nestjs/prisma/migrations/20260705080000_outbox_dead_letter/migration.sql","apps/api-nestjs/prisma/migrations/20260721110000_add_alignment_workbench/migration.sql","apps/api-nestjs/prisma/migrations/migration_lock.toml","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/prisma/seed.ts","apps/api-nestjs/src/alignment/alignment.controller.ts","apps/api-nestjs/src/alignment/alignment.module.ts","apps/api-nestjs/src/alignment/alignment.service.ts","apps/api-nestjs/src/app.module.ts","apps/api-nestjs/src/common/envelope.ts","apps/api-nestjs/src/common/tenant.decorator.ts","apps/api-nestjs/src/common/zod-validation.pipe.ts","apps/api-nestjs/src/create-app.ts","apps/api-nestjs/src/events/event-bus.service.ts","apps/api-nestjs/src/events/events.gateway.ts","apps/api-nestjs/src/events/events.module.ts","apps/api-nestjs/src/events/fanout.service.ts","apps/api-nestjs/src/events/outbox-dispatcher.service.ts","apps/api-nestjs/src/health/health.controller.ts","apps/api-nestjs/src/health/health.module.ts","apps/api-nestjs/src/main.ts","apps/api-nestjs/src/orders/orders.controller.ts","apps/api-nestjs/src/orders/orders.module.ts","apps/api-nestjs/src/orders/orders.service.ts","apps/api-nestjs/src/prisma/prisma.module.ts","apps/api-nestjs/src/prisma/prisma.service.ts","apps/api-nestjs/src/queue/jobs.controller.ts","apps/api-nestjs/src/queue/jobs.processor.ts","apps/api-nestjs/src/queue/queue.module.ts","apps/api-nestjs/src/queue/queue.types.ts","apps/api-nestjs/src/redis/redis.module.ts","apps/api-nestjs/src/sse/sse.controller.ts","apps/api-nestjs/src/sse/sse.module.ts","apps/api-nestjs/src/statemachine/index.ts","apps/api-nestjs/src/statemachine/order.machine.ts","apps/api-nestjs/src/statemachine/statemachine.engine.ts","apps/api-nestjs/src/statemachine/statemachine.types.ts","apps/api-nestjs/src/users/users.controller.ts","apps/api-nestjs/src/users/users.module.ts","apps/api-nestjs/src/users/users.service.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/api-nestjs/test/orders.integration.test.ts","apps/api-nestjs/test/outbox.deadletter.test.ts","apps/api-nestjs/test/realtime.tenant.test.ts","apps/api-nestjs/tsconfig.build.json","apps/api-nestjs/tsconfig.json","apps/api-nestjs/vitest.config.ts","apps/web/.env.example","apps/web/.gitignore","apps/web/components.json","apps/web/e2e/acceptance.spec.ts","apps/web/eslint.config.mjs","apps/web/next.config.ts","apps/web/package.json","apps/web/playwright.config.ts","apps/web/pnpm-lock.yaml","apps/web/postcss.config.js","apps/web/src/app/api/alignment/align/route.ts","apps/web/src/app/globals.css","apps/web/src/app/layout.tsx","apps/web/src/app/page.tsx","apps/web/src/components/EventFeed.tsx","apps/web/src/components/OrdersPanel.tsx","apps/web/src/components/RealtimeBar.tsx","apps/web/src/components/UsersPanel.tsx","apps/web/src/components/ui/badge.tsx","apps/web/src/components/ui/button.tsx","apps/web/src/components/ui/card.tsx","apps/web/src/components/ui/input.tsx","apps/web/src/components/ui/label.tsx","apps/web/src/components/ui/separator.tsx","apps/web/src/features/alignment/api/alignment.ts","apps/web/src/features/alignment/components/AlignmentWorkbench.tsx","apps/web/src/features/alignment/lib/local-inputs.ts","apps/web/src/hooks/useRealtime.ts","apps/web/src/lib/api.ts","apps/web/src/lib/providers.tsx","apps/web/src/lib/types.ts","apps/web/src/lib/utils.ts","apps/web/src/store/realtime.ts","apps/web/src/store/useAppStore.ts","apps/web/tailwind.config.ts","apps/web/tsconfig.json","bakeoff/README.md","bakeoff/eval_lines.py","bakeoff/inputs/mms_fa.json","bakeoff/inputs/mms_fa_vadcut.json","bakeoff/inputs/mms_fa_vadcut2.json","bakeoff/inputs/mms_fa_vadcut_repair.json","bakeoff/inputs/qwen3_coarse.json","bakeoff/inputs/segments.json","bakeoff/inputs/truth.json","bakeoff/inputs/vocalparse.json","bakeoff/normalize.py","bakeoff/pipeline/concat_sections.py","bakeoff/pipeline/negative_suite.py","bakeoff/pipeline/run_pipeline.py","bakeoff/pipeline/vad_sections.py","bakeoff/results/REPORT-phase2.md","bakeoff/results/REPORT.md","bakeoff/results/eval.latest.json","bakeoff/results/triage-negative.latest.json","bakeoff/runs/mms_fa/input.json","bakeoff/runs/mms_fa/output.json","bakeoff/runs/mms_fa_vadcut/concat.wav","bakeoff/runs/mms_fa_vadcut/input.json","bakeoff/runs/mms_fa_vadcut/mapping.json","bakeoff/runs/mms_fa_vadcut/output.json","bakeoff/runs/mms_fa_vadcut2/concat.wav","bakeoff/runs/mms_fa_vadcut2/input.json","bakeoff/runs/mms_fa_vadcut2/mapping.json","bakeoff/runs/mms_fa_vadcut2/output.json","bakeoff/runs/pipeline/b_section/concat.wav","bakeoff/runs/pipeline/b_section/input.json","bakeoff/runs/pipeline/b_section/mapping.json","bakeoff/runs/pipeline/b_section/output.json","bakeoff/runs/pipeline/b_section/output.restored.json","bakeoff/runs/pipeline/negatives/n1_drop/input.json","bakeoff/runs/pipeline/negatives/n1_drop/mapping.json","bakeoff/runs/pipeline/negatives/n1_drop/output.json","bakeoff/runs/pipeline/negatives/n1_drop/output.restored.json","bakeoff/runs/pipeline/negatives/n1_drop/pipeline/sections.json","bakeoff/runs/pipeline/negatives/n1_drop/pipeline/sentences.json","bakeoff/runs/pipeline/negatives/n1_drop/pipeline/sentences.qualified.json","bakeoff/runs/pipeline/negatives/n1_drop/pipeline/summary.json","bakeoff/runs/pipeline/negatives/n1_drop/transcript.txt","bakeoff/runs/pipeline/negatives/n2_swap/input.json","bakeoff/runs/pipeline/negatives/n2_swap/mapping.json","bakeoff/runs/pipeline/negatives/n2_swap/output.json","bakeoff/runs/pipeline/negatives/n2_swap/output.restored.json","bakeoff/runs/pipeline/negatives/n2_swap/pipeline/sections.json","bakeoff/runs/pipeline/negatives/n2_swap/pipeline/sentences.json","bakeoff/runs/pipeline/negatives/n2_swap/pipeline/sentences.qualified.json","bakeoff/runs/pipeline/negatives/n2_swap/pipeline/summary.json","bakeoff/runs/pipeline/negatives/n2_swap/transcript.txt","bakeoff/runs/pipeline/negatives/n3_foreign/input.json","bakeoff/runs/pipeline/negatives/n3_foreign/mapping.json","bakeoff/runs/pipeline/negatives/n3_foreign/output.json","bakeoff/runs/pipeline/negatives/n3_foreign/output.restored.json","bakeoff/runs/pipeline/negatives/n3_foreign/pipeline/sections.json","bakeoff/runs/pipeline/negatives/n3_foreign/pipeline/sentences.json","bakeoff/runs/pipeline/negatives/n3_foreign/pipeline/sentences.qualified.json","bakeoff/runs/pipeline/negatives/n3_foreign/pipeline/summary.json","bakeoff/runs/pipeline/negatives/n3_foreign/transcript.txt","bakeoff/runs/pipeline/qingtian/sections.json","bakeoff/runs/pipeline/qingtian/sentences.json","bakeoff/runs/pipeline/qingtian/sentences.pre_escalation.json","bakeoff/runs/pipeline/qingtian/sentences.qualified.json","bakeoff/runs/pipeline/qingtian/summary.json","bakeoff/runs/pipeline/vad.json","bakeoff/runs/pipeline/vad.raw.json","bakeoff/runs/pipeline/vocals.16k.wav","bakeoff/runs/triage/n1_input.json","bakeoff/runs/triage/n1_output.json","bakeoff/runs/triage/n2_input.json","bakeoff/runs/triage/n2_output.json","bakeoff/runs/vocalparse/windows.json","bakeoff/runs/window_repair/in_34_34.json","bakeoff/runs/window_repair/in_36_37.json","bakeoff/runs/window_repair/in_46_47.json","bakeoff/runs/window_repair/in_50_50.json","bakeoff/runs/window_repair/in_56_57.json","bakeoff/runs/window_repair/out_34_34.json","bakeoff/runs/window_repair/out_36_37.json","bakeoff/runs/window_repair/out_46_47.json","bakeoff/runs/window_repair/out_50_50.json","bakeoff/runs/window_repair/out_56_57.json","bakeoff/runs/window_repair/win_34_34.wav","bakeoff/runs/window_repair/win_36_37.wav","bakeoff/runs/window_repair/win_46_47.wav","bakeoff/runs/window_repair/win_50_50.wav","bakeoff/runs/window_repair/win_56_57.wav","bakeoff/triage_negative.py","bakeoff/vad_concat_mms.py","bakeoff/window_repair.py","deploy/.env.vm.example","deploy/Caddyfile","deploy/Dockerfile.api","deploy/Dockerfile.web","deploy/docker-compose.vm.yml","design-qa.md","docs/README.md","docs/adr/0001-use-typescript-fullstack.md","docs/adr/0002-use-nextjs-app-router.md","docs/adr/0003-use-nestjs-with-fastify-adapter.md","docs/adr/0004-use-postgresql.md","docs/adr/0005-use-prisma.md","docs/adr/0006-realtime-sse-and-websocket.md","docs/adr/0007-use-bullmq-queue.md","docs/adr/0008-monorepo-pnpm-turborepo.md","docs/adr/0009-dual-backend-governance-parity.md","docs/adr/README.md","docs/deployment-vm.md","docs/design/forced-alignment-workbench-implementation.png","docs/design/forced-alignment-workbench-option-1.png","docs/design/forced-alignment-workbench-real-result.png","docs/domain-glossary.md","docs/domain/forced-alignment-workbench-blueprint.md","docs/domain/owner-matrix.md","docs/governance-experience.md","docs/standards/api-standard.md","docs/standards/backend-standard.md","docs/standards/database-standard.md","docs/standards/frontend-standard.md","docs/standards/git-standard.md","docs/standards/naming-standard.md","docs/standards/review-standard.md","engines/00-对比总表.md","engines/hubertfa.md","engines/qwen3-fa.md","engines/sofa.md","engines/stars.md","package.json","packages/config/eslint/base.mjs","packages/config/package.json","packages/config/prettier/index.json","packages/config/tsconfig/base.json","packages/config/tsconfig/nextjs.json","packages/config/tsconfig/node.json","packages/contracts/package.json","packages/contracts/src/alignment.ts","packages/contracts/src/contracts.test.ts","packages/contracts/src/index.ts","packages/contracts/src/order.ts","packages/contracts/src/realtime.ts","packages/contracts/src/statemachine.test.ts","packages/contracts/src/statemachine.ts","packages/contracts/src/tenant.ts","packages/contracts/src/user.ts","packages/contracts/tsconfig.json","pnpm-lock.yaml","pnpm-workspace.yaml","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","samples/qingtian.sections.json","samples/qingtian.sentences.json","scripts/check-contract-consumers.mjs","scripts/check-docs-truth.mjs","scripts/check-dual-backend-parity.mjs","scripts/check-governance-docs.mjs","scripts/check-migrations.mjs","scripts/check-naming.mjs","scripts/check-order-concurrency-guard.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-schema-sync.mjs","scripts/check-ui-acceptance.mjs","scripts/check-validation-source.mjs","scripts/deploy-vm-remote.sh","scripts/deploy-vm.sh","scripts/governance-report.mjs","scripts/vm-down.sh","scripts/vm-status.sh","tsconfig.base.json","turbo.json","强制对齐技术栈全景.md","快速句对齐.md","快速句对齐方案.md"],"removed":[],"modified":[]}],"total_commits":0,"head_commit":{"id":"f7f58401d267fffa37e2c7282f531354478eeebf","message":"feat: initialize forced alignment workbench\n","url":"https://gitea.g-hi.com/luoanwu/forced-alignment/commit/f7f58401d267fffa37e2c7282f531354478eeebf","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-21T17:58:39-07:00","added":[".agents/skills/business-module-intake/SKILL.md",".agents/skills/frontend-api-react/SKILL.md",".agents/skills/frontend-view-react/SKILL.md",".agents/skills/frontend-view-react/references/view-templates.md",".agents/skills/fullstack-7layer-react/SKILL.md",".agents/skills/fullstack-7layer-react/references/fullstack-react-templates.md",".agents/skills/zustand-store/SKILL.md",".claude/agents/acceptance-runner.md",".claude/agents/module-blueprint.md",".claude/launch.json",".claude/skills/business-module-intake/SKILL.md",".claude/skills/frontend-api-react/SKILL.md",".claude/skills/frontend-view-react/SKILL.md",".claude/skills/frontend-view-react/references/view-templates.md",".claude/skills/fullstack-7layer-react/SKILL.md",".claude/skills/fullstack-7layer-react/references/fullstack-react-templates.md",".claude/skills/zustand-store/SKILL.md",".codex/agents/acceptance-runner.toml",".codex/agents/module-blueprint.toml",".dockerignore",".github/pull_request_template.md",".github/workflows/governance.yml",".gitignore","AGENTS.md","CLAUDE.md","README.md","apps/api-fastify/.env.example","apps/api-fastify/.gitignore","apps/api-fastify/package.json","apps/api-fastify/pnpm-lock.yaml","apps/api-fastify/prisma/migrations/20260608150500_init/migration.sql","apps/api-fastify/prisma/migrations/20260705080000_outbox_dead_letter/migration.sql","apps/api-fastify/prisma/migrations/20260721110000_add_alignment_workbench/migration.sql","apps/api-fastify/prisma/migrations/migration_lock.toml","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/app.ts","apps/api-fastify/src/lib/orderMachine.ts","apps/api-fastify/src/lib/statemachine.ts","apps/api-fastify/src/modules/alignment/alignment.service.ts","apps/api-fastify/src/modules/orders/orders.service.ts","apps/api-fastify/src/modules/tenant.ts","apps/api-fastify/src/modules/users/users.service.ts","apps/api-fastify/src/plugins/events.ts","apps/api-fastify/src/plugins/outbox.ts","apps/api-fastify/src/plugins/prisma.ts","apps/api-fastify/src/plugins/queue.ts","apps/api-fastify/src/plugins/redis.ts","apps/api-fastify/src/routes/alignment-runs.ts","apps/api-fastify/src/routes/health.ts","apps/api-fastify/src/routes/jobs.ts","apps/api-fastify/src/routes/orders.ts","apps/api-fastify/src/routes/sse.ts","apps/api-fastify/src/routes/users.ts","apps/api-fastify/src/routes/ws.ts","apps/api-fastify/src/server.ts","apps/api-fastify/src/types.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-fastify/test/orders.integration.test.ts","apps/api-fastify/test/outbox.deadletter.test.ts","apps/api-fastify/test/realtime.tenant.test.ts","apps/api-fastify/tsconfig.json","apps/api-fastify/vitest.config.ts","apps/api-nestjs/.env.example","apps/api-nestjs/.gitignore","apps/api-nestjs/docker-compose.yml","apps/api-nestjs/nest-cli.json","apps/api-nestjs/package.json","apps/api-nestjs/pnpm-lock.yaml","apps/api-nestjs/prisma/migrations/20260608150500_init/migration.sql","apps/api-nestjs/prisma/migrations/20260705080000_outbox_dead_letter/migration.sql","apps/api-nestjs/prisma/migrations/20260721110000_add_alignment_workbench/migration.sql","apps/api-nestjs/prisma/migrations/migration_lock.toml","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/prisma/seed.ts","apps/api-nestjs/src/alignment/alignment.controller.ts","apps/api-nestjs/src/alignment/alignment.module.ts","apps/api-nestjs/src/alignment/alignment.service.ts","apps/api-nestjs/src/app.module.ts","apps/api-nestjs/src/common/envelope.ts","apps/api-nestjs/src/common/tenant.decorator.ts","apps/api-nestjs/src/common/zod-validation.pipe.ts","apps/api-nestjs/src/create-app.ts","apps/api-nestjs/src/events/event-bus.service.ts","apps/api-nestjs/src/events/events.gateway.ts","apps/api-nestjs/src/events/events.module.ts","apps/api-nestjs/src/events/fanout.service.ts","apps/api-nestjs/src/events/outbox-dispatcher.service.ts","apps/api-nestjs/src/health/health.controller.ts","apps/api-nestjs/src/health/health.module.ts","apps/api-nestjs/src/main.ts","apps/api-nestjs/src/orders/orders.controller.ts","apps/api-nestjs/src/orders/orders.module.ts","apps/api-nestjs/src/orders/orders.service.ts","apps/api-nestjs/src/prisma/prisma.module.ts","apps/api-nestjs/src/prisma/prisma.service.ts","apps/api-nestjs/src/queue/jobs.controller.ts","apps/api-nestjs/src/queue/jobs.processor.ts","apps/api-nestjs/src/queue/queue.module.ts","apps/api-nestjs/src/queue/queue.types.ts","apps/api-nestjs/src/redis/redis.module.ts","apps/api-nestjs/src/sse/sse.controller.ts","apps/api-nestjs/src/sse/sse.module.ts","apps/api-nestjs/src/statemachine/index.ts","apps/api-nestjs/src/statemachine/order.machine.ts","apps/api-nestjs/src/statemachine/statemachine.engine.ts","apps/api-nestjs/src/statemachine/statemachine.types.ts","apps/api-nestjs/src/users/users.controller.ts","apps/api-nestjs/src/users/users.module.ts","apps/api-nestjs/src/users/users.service.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/api-nestjs/test/orders.integration.test.ts","apps/api-nestjs/test/outbox.deadletter.test.ts","apps/api-nestjs/test/realtime.tenant.test.ts","apps/api-nestjs/tsconfig.build.json","apps/api-nestjs/tsconfig.json","apps/api-nestjs/vitest.config.ts","apps/web/.env.example","apps/web/.gitignore","apps/web/components.json","apps/web/e2e/acceptance.spec.ts","apps/web/eslint.config.mjs","apps/web/next.config.ts","apps/web/package.json","apps/web/playwright.config.ts","apps/web/pnpm-lock.yaml","apps/web/postcss.config.js","apps/web/src/app/api/alignment/align/route.ts","apps/web/src/app/globals.css","apps/web/src/app/layout.tsx","apps/web/src/app/page.tsx","apps/web/src/components/EventFeed.tsx","apps/web/src/components/OrdersPanel.tsx","apps/web/src/components/RealtimeBar.tsx","apps/web/src/components/UsersPanel.tsx","apps/web/src/components/ui/badge.tsx","apps/web/src/components/ui/button.tsx","apps/web/src/components/ui/card.tsx","apps/web/src/components/ui/input.tsx","apps/web/src/components/ui/label.tsx","apps/web/src/components/ui/separator.tsx","apps/web/src/features/alignment/api/alignment.ts","apps/web/src/features/alignment/components/AlignmentWorkbench.tsx","apps/web/src/features/alignment/lib/local-inputs.ts","apps/web/src/hooks/useRealtime.ts","apps/web/src/lib/api.ts","apps/web/src/lib/providers.tsx","apps/web/src/lib/types.ts","apps/web/src/lib/utils.ts","apps/web/src/store/realtime.ts","apps/web/src/store/useAppStore.ts","apps/web/tailwind.config.ts","apps/web/tsconfig.json","bakeoff/README.md","bakeoff/eval_lines.py","bakeoff/inputs/mms_fa.json","bakeoff/inputs/mms_fa_vadcut.json","bakeoff/inputs/mms_fa_vadcut2.json","bakeoff/inputs/mms_fa_vadcut_repair.json","bakeoff/inputs/qwen3_coarse.json","bakeoff/inputs/segments.json","bakeoff/inputs/truth.json","bakeoff/inputs/vocalparse.json","bakeoff/normalize.py","bakeoff/pipeline/concat_sections.py","bakeoff/pipeline/negative_suite.py","bakeoff/pipeline/run_pipeline.py","bakeoff/pipeline/vad_sections.py","bakeoff/results/REPORT-phase2.md","bakeoff/results/REPORT.md","bakeoff/results/eval.latest.json","bakeoff/results/triage-negative.latest.json","bakeoff/runs/mms_fa/input.json","bakeoff/runs/mms_fa/output.json","bakeoff/runs/mms_fa_vadcut/concat.wav","bakeoff/runs/mms_fa_vadcut/input.json","bakeoff/runs/mms_fa_vadcut/mapping.json","bakeoff/runs/mms_fa_vadcut/output.json","bakeoff/runs/mms_fa_vadcut2/concat.wav","bakeoff/runs/mms_fa_vadcut2/input.json","bakeoff/runs/mms_fa_vadcut2/mapping.json","bakeoff/runs/mms_fa_vadcut2/output.json","bakeoff/runs/pipeline/b_section/concat.wav","bakeoff/runs/pipeline/b_section/input.json","bakeoff/runs/pipeline/b_section/mapping.json","bakeoff/runs/pipeline/b_section/output.json","bakeoff/runs/pipeline/b_section/output.restored.json","bakeoff/runs/pipeline/negatives/n1_drop/input.json","bakeoff/runs/pipeline/negatives/n1_drop/mapping.json","bakeoff/runs/pipeline/negatives/n1_drop/output.json","bakeoff/runs/pipeline/negatives/n1_drop/output.restored.json","bakeoff/runs/pipeline/negatives/n1_drop/pipeline/sections.json","bakeoff/runs/pipeline/negatives/n1_drop/pipeline/sentences.json","bakeoff/runs/pipeline/negatives/n1_drop/pipeline/sentences.qualified.json","bakeoff/runs/pipeline/negatives/n1_drop/pipeline/summary.json","bakeoff/runs/pipeline/negatives/n1_drop/transcript.txt","bakeoff/runs/pipeline/negatives/n2_swap/input.json","bakeoff/runs/pipeline/negatives/n2_swap/mapping.json","bakeoff/runs/pipeline/negatives/n2_swap/output.json","bakeoff/runs/pipeline/negatives/n2_swap/output.restored.json","bakeoff/runs/pipeline/negatives/n2_swap/pipeline/sections.json","bakeoff/runs/pipeline/negatives/n2_swap/pipeline/sentences.json","bakeoff/runs/pipeline/negatives/n2_swap/pipeline/sentences.qualified.json","bakeoff/runs/pipeline/negatives/n2_swap/pipeline/summary.json","bakeoff/runs/pipeline/negatives/n2_swap/transcript.txt","bakeoff/runs/pipeline/negatives/n3_foreign/input.json","bakeoff/runs/pipeline/negatives/n3_foreign/mapping.json","bakeoff/runs/pipeline/negatives/n3_foreign/output.json","bakeoff/runs/pipeline/negatives/n3_foreign/output.restored.json","bakeoff/runs/pipeline/negatives/n3_foreign/pipeline/sections.json","bakeoff/runs/pipeline/negatives/n3_foreign/pipeline/sentences.json","bakeoff/runs/pipeline/negatives/n3_foreign/pipeline/sentences.qualified.json","bakeoff/runs/pipeline/negatives/n3_foreign/pipeline/summary.json","bakeoff/runs/pipeline/negatives/n3_foreign/transcript.txt","bakeoff/runs/pipeline/qingtian/sections.json","bakeoff/runs/pipeline/qingtian/sentences.json","bakeoff/runs/pipeline/qingtian/sentences.pre_escalation.json","bakeoff/runs/pipeline/qingtian/sentences.qualified.json","bakeoff/runs/pipeline/qingtian/summary.json","bakeoff/runs/pipeline/vad.json","bakeoff/runs/pipeline/vad.raw.json","bakeoff/runs/pipeline/vocals.16k.wav","bakeoff/runs/triage/n1_input.json","bakeoff/runs/triage/n1_output.json","bakeoff/runs/triage/n2_input.json","bakeoff/runs/triage/n2_output.json","bakeoff/runs/vocalparse/windows.json","bakeoff/runs/window_repair/in_34_34.json","bakeoff/runs/window_repair/in_36_37.json","bakeoff/runs/window_repair/in_46_47.json","bakeoff/runs/window_repair/in_50_50.json","bakeoff/runs/window_repair/in_56_57.json","bakeoff/runs/window_repair/out_34_34.json","bakeoff/runs/window_repair/out_36_37.json","bakeoff/runs/window_repair/out_46_47.json","bakeoff/runs/window_repair/out_50_50.json","bakeoff/runs/window_repair/out_56_57.json","bakeoff/runs/window_repair/win_34_34.wav","bakeoff/runs/window_repair/win_36_37.wav","bakeoff/runs/window_repair/win_46_47.wav","bakeoff/runs/window_repair/win_50_50.wav","bakeoff/runs/window_repair/win_56_57.wav","bakeoff/triage_negative.py","bakeoff/vad_concat_mms.py","bakeoff/window_repair.py","deploy/.env.vm.example","deploy/Caddyfile","deploy/Dockerfile.api","deploy/Dockerfile.web","deploy/docker-compose.vm.yml","design-qa.md","docs/README.md","docs/adr/0001-use-typescript-fullstack.md","docs/adr/0002-use-nextjs-app-router.md","docs/adr/0003-use-nestjs-with-fastify-adapter.md","docs/adr/0004-use-postgresql.md","docs/adr/0005-use-prisma.md","docs/adr/0006-realtime-sse-and-websocket.md","docs/adr/0007-use-bullmq-queue.md","docs/adr/0008-monorepo-pnpm-turborepo.md","docs/adr/0009-dual-backend-governance-parity.md","docs/adr/README.md","docs/deployment-vm.md","docs/design/forced-alignment-workbench-implementation.png","docs/design/forced-alignment-workbench-option-1.png","docs/design/forced-alignment-workbench-real-result.png","docs/domain-glossary.md","docs/domain/forced-alignment-workbench-blueprint.md","docs/domain/owner-matrix.md","docs/governance-experience.md","docs/standards/api-standard.md","docs/standards/backend-standard.md","docs/standards/database-standard.md","docs/standards/frontend-standard.md","docs/standards/git-standard.md","docs/standards/naming-standard.md","docs/standards/review-standard.md","engines/00-对比总表.md","engines/hubertfa.md","engines/qwen3-fa.md","engines/sofa.md","engines/stars.md","package.json","packages/config/eslint/base.mjs","packages/config/package.json","packages/config/prettier/index.json","packages/config/tsconfig/base.json","packages/config/tsconfig/nextjs.json","packages/config/tsconfig/node.json","packages/contracts/package.json","packages/contracts/src/alignment.ts","packages/contracts/src/contracts.test.ts","packages/contracts/src/index.ts","packages/contracts/src/order.ts","packages/contracts/src/realtime.ts","packages/contracts/src/statemachine.test.ts","packages/contracts/src/statemachine.ts","packages/contracts/src/tenant.ts","packages/contracts/src/user.ts","packages/contracts/tsconfig.json","pnpm-lock.yaml","pnpm-workspace.yaml","reports/baseline.json","reports/contract-consumers.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","samples/qingtian.sections.json","samples/qingtian.sentences.json","scripts/check-contract-consumers.mjs","scripts/check-docs-truth.mjs","scripts/check-dual-backend-parity.mjs","scripts/check-governance-docs.mjs","scripts/check-migrations.mjs","scripts/check-naming.mjs","scripts/check-order-concurrency-guard.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-schema-sync.mjs","scripts/check-ui-acceptance.mjs","scripts/check-validation-source.mjs","scripts/deploy-vm-remote.sh","scripts/deploy-vm.sh","scripts/governance-report.mjs","scripts/vm-down.sh","scripts/vm-status.sh","tsconfig.base.json","turbo.json","强制对齐技术栈全景.md","快速句对齐.md","快速句对齐方案.md"],"removed":[],"modified":[]},"repository":{"id":63,"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":"forced-alignment","full_name":"luoanwu/forced-alignment","description":"纯人声与歌词精准强制对齐工作台","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":27,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/forced-alignment/languages","html_url":"https://gitea.g-hi.com/luoanwu/forced-alignment","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/forced-alignment","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/forced-alignment.git","clone_url":"https://gitea.g-hi.com/luoanwu/forced-alignment.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-22T08:56:49+08:00","updated_at":"2026-07-22T08:59:29+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":true,"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
|
8
|
1784681970
|
1784682042
|
0
|
1784681969
|
1784682042
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23430
|
Strengthen voiceprint governance and runtime accep Strengthen voiceprint governance and runtime acceptance...
|
62
|
5
|
governance.yml
|
6
|
5
|
0
|
refs/heads/main
|
73bd623dfedff79a02fac961d1c16f106137e2df
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"99c0c69becb251d64b434b6ab315d0562888ad8d","after":"73bd623dfedff79a02fac961d1c16f106137e2df","compare_url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition/compare/99c0c69becb251d64b434b6ab315d0562888ad8d...73bd623dfedff79a02fac961d1c16f106137e2df","commits":[{"id":"73bd623dfedff79a02fac961d1c16f106137e2df","message":"Strengthen voiceprint governance and runtime acceptance\n","url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition/commit/73bd623dfedff79a02fac961d1c16f106137e2df","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-21T10:13:40-07:00","added":[],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/modules/voiceprint/sidecar-client.ts","apps/api-fastify/test/voiceprint.acceptance.test.ts","apps/api-nestjs/src/voiceprint/sidecar.client.ts","apps/api-nestjs/test/voiceprint.acceptance.test.ts","apps/web/e2e/acceptance.spec.ts","apps/web/src/components/voiceprint/IdentifyPanel.tsx","docs/domain/voiceprint-blueprint.md","docs/product-prd.md","packages/contracts/src/voiceprint.test.ts","packages/contracts/src/voiceprint.ts","reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/voiceprint-sidecar-ui-stub.mjs","src/speaker_embedding/age_gender_research.py","src/speaker_embedding/age_gender_sidecar.py","src/speaker_embedding/extractor.py","src/speaker_embedding/sidecar.py","src/speaker_embedding/speaker_db.py","src/speaker_embedding/timbre.py","tests/test_age_gender_research.py","tests/test_age_gender_sidecar.py","tests/test_sidecar.py","tests/test_speaker_db.py"]},{"id":"40a5c4ef3404ccd2f51b8244626d95d1b5939512","message":"fix: stabilize UI acceptance runner\n","url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition/commit/40a5c4ef3404ccd2f51b8244626d95d1b5939512","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-18T23:52:59-07:00","added":[],"removed":[],"modified":["CLAUDE.md","reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-ui-acceptance.mjs"]}],"total_commits":0,"head_commit":{"id":"73bd623dfedff79a02fac961d1c16f106137e2df","message":"Strengthen voiceprint governance and runtime acceptance\n","url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition/commit/73bd623dfedff79a02fac961d1c16f106137e2df","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-21T10:13:40-07:00","added":[],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/modules/voiceprint/sidecar-client.ts","apps/api-fastify/test/voiceprint.acceptance.test.ts","apps/api-nestjs/src/voiceprint/sidecar.client.ts","apps/api-nestjs/test/voiceprint.acceptance.test.ts","apps/web/e2e/acceptance.spec.ts","apps/web/src/components/voiceprint/IdentifyPanel.tsx","docs/domain/voiceprint-blueprint.md","docs/product-prd.md","packages/contracts/src/voiceprint.test.ts","packages/contracts/src/voiceprint.ts","reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/voiceprint-sidecar-ui-stub.mjs","src/speaker_embedding/age_gender_research.py","src/speaker_embedding/age_gender_sidecar.py","src/speaker_embedding/extractor.py","src/speaker_embedding/sidecar.py","src/speaker_embedding/speaker_db.py","src/speaker_embedding/timbre.py","tests/test_age_gender_research.py","tests/test_age_gender_sidecar.py","tests/test_sidecar.py","tests/test_speaker_db.py"]},"repository":{"id":62,"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":"voiceprint-recognition","full_name":"luoanwu/voiceprint-recognition","description":"ECAPA+WavLM 声纹注册识别、1:N ANN 检索与声音特征画像平台","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":1293,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voiceprint-recognition/languages","html_url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voiceprint-recognition","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/voiceprint-recognition.git","clone_url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":2,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-15T08:42:42+08:00","updated_at":"2026-07-16T12:03:58+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":true,"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
|
6
|
1784654024
|
1784655050
|
0
|
1784654024
|
1784655050
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23429
|
build: 完善Release版本构建配置
|
13
|
5
|
codeql-analysis.yml
|
24
|
-2
|
46
|
refs/heads/main
|
6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"0000000000000000000000000000000000000000","after":"6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448","compare_url":"https://gitea.g-hi.com/luoanwu/printer-server/compare/c254333cc45c082124d3d4fd01a4a3fc3fda7296...6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448","commits":[{"id":"6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448","message":"build: 完善Release版本构建配置\n\n变更内容:\n- 优化版本管理: 使用语义化版本号 (versionMajor.versionMinor.versionPatch)\n- 修复签名配置路径: 使用相对路径读取keystore.properties\n- 添加V1+V2签名: 兼容Android 7+设备\n- 添加getBuildNumber()函数: 基于日期生成构建号\n- 重构测试目录: 迁移至标准src/test/java结构\n\n构建优化效果:\n- Debug版本: 8.1 MB\n- Release版本: 4.1 MB (优化48%)\n- ProGuard混淆 + 资源压缩生效\n\nCo-Authored-By: Claude Opus 4.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/printer-server/commit/6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448","author":{"name":"hi.laoluo","email":"hi.laoluo@hilaoluodeMacBook-Pro.local","username":""},"committer":{"name":"hi.laoluo","email":"hi.laoluo@hilaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-01-21T00:05:33+08:00","added":["printer-redesign/src/test/java/com/juhai/printer/application/service/PrintTaskProcessorTest.java","printer-redesign/src/test/java/com/juhai/printer/domain/service/OrderFormatterServiceTest.java","printer-redesign/src/test/java/com/juhai/printer/domain/service/PrinterSelectorTest.java","printer-redesign/src/test/java/com/juhai/printer/test/AllTestsRunner.java","printer-redesign/src/test/java/com/juhai/printer/test/BillDomainTest.java","printer-redesign/src/test/java/com/juhai/printer/test/OrderDomainTest.java","printer-redesign/src/test/java/com/juhai/printer/test/PrintApiTest.java","printer-redesign/src/test/java/com/juhai/printer/test/PrintFunctionTest.java","printer-redesign/src/test/java/com/juhai/printer/test/PrintReliabilityTest.java","printer-redesign/src/test/java/com/juhai/printer/test/TemplateEngineTest.java","printer-redesign/src/test/java/com/juhai/printer/test/WebSocketCommunicationTest.java"],"removed":["printer-redesign/test/AllTestsRunner.java","printer-redesign/test/BillDomainTest.java","printer-redesign/test/OrderDomainTest.java","printer-redesign/test/PrintApiTest.java","printer-redesign/test/PrintFunctionTest.java","printer-redesign/test/PrintReliabilityTest.java","printer-redesign/test/TemplateEngineTest.java","printer-redesign/test/WebSocketCommunicationTest.java","printer-redesign/test/com/juhai/printer/application/service/PrintTaskProcessorTest.java","printer-redesign/test/com/juhai/printer/domain/service/OrderFormatterServiceTest.java","printer-redesign/test/com/juhai/printer/domain/service/PrinterSelectorTest.java"],"modified":["printer-redesign/build.gradle"]},{"id":"b44b6415c67f54b2d1bcd688757fec2aaf1686f4","message":"fix: 修复PrintJob状态转换和数据库初始化崩溃问题\n\n1. PrinterDatabase.optimizeDatabase()\n - 将PRAGMA命令从execSQL改为query()方法\n - Room的SupportSQLiteDatabase对PRAGMA有限制\n - 添加异常处理确保数据库优化失败不影响启动\n\n2. PrinterService.onTaskFailed()\n - 添加状态检查逻辑,根据当前状态决定处理方式\n - FAILED状态:执行重试逻辑\n - PRINTING状态:先转换为FAILED再重试\n - 其他状态:直接重新调度执行\n\n3. PrintingApplicationService.executePrintJob()\n - 新增prepareJobForPrinting()确保状态正确转换\n - CREATED -\u003e QUEUED -\u003e PRINTING 状态流转\n - 新增handleJobFailure()安全处理失败\n\nCo-Authored-By: Claude Opus 4.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/printer-server/commit/b44b6415c67f54b2d1bcd688757fec2aaf1686f4","author":{"name":"hi.laoluo","email":"hi.laoluo@hilaoluodeMacBook-Pro.local","username":""},"committer":{"name":"hi.laoluo","email":"hi.laoluo@hilaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-01-20T23:54:24+08:00","added":[],"removed":[],"modified":["printer-redesign/application/service/PrinterService.java","printer-redesign/application/service/PrintingApplicationService.java","printer-redesign/infrastructure/database/PrinterDatabase.java","printer-redesign/scripts/build-release.sh"]},{"id":"d2d0385e8b5c1b06d7e59f108c6e9f845905c841","message":"fix: 修复编译错误并成功构建APK\n\n修复内容:\n- PrintTestActivity: 重写以修复API兼容性问题\n - observeEnabled()替代getEnabledPrinters()\n - 移除PrinterApplication依赖\n - 修复Priority/PrintType方法调用\n - 修复rawContent类型(String→byte[])\n- OrderFormatterService: 补充shouldBeep()方法闭合括号\n- TemplateRenderEngine: 修复方法调用\n - getSummary()→toString()\n - setFontSize()→setSize()\n - setWidth()→setLength()\n- PrintJobDao: 添加getActiveJobs()方法\n- QueueViewModel: 修复RxJava包装和cancel()参数\n- MainViewModel: 移除totalCount()调用\n- PrinterConfigDTO: 修复fromEntity()方法兼容性\n\n构建结果:APK 7.8MB\n\nCo-Authored-By: Claude Opus 4.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/printer-server/commit/d2d0385e8b5c1b06d7e59f108c6e9f845905c841","author":{"name":"hi.laoluo","email":"hi.laoluo@hilaoluodeMacBook-Pro.local","username":""},"committer":{"name":"hi.laoluo","email":"hi.laoluo@hilaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-01-20T23:38:29+08:00","added":[],"removed":[],"modified":["printer-redesign/application/dto/PrinterConfigDTO.java","printer-redesign/application/engine/TemplateRenderEngine.java","printer-redesign/application/engine/TemplateValidator.java","printer-redesign/domain/service/OrderFormatterService.java","printer-redesign/infrastructure/database/dao/PrintJobDao.java","printer-redesign/infrastructure/device/EscPosExecutor.java","printer-redesign/infrastructure/device/PrinterCommandExecutor.java","printer-redesign/infrastructure/device/TsplExecutor.java","printer-redesign/infrastructure/device/driver/SystemPrintDriver.java","printer-redesign/presentation/PrintTestActivity.java","printer-redesign/presentation/viewmodel/MainViewModel.java","printer-redesign/presentation/viewmodel/QueueViewModel.java"]},{"id":"f8bc615170b4f10a4c9e1ec5261191268d6b7f0a","message":"feat: 增强应用架构与测试功能\n\n- 新增 CQRS 模式支持 (command/query/dto)\n- 添加 PrintTestActivity 测试界面\n- 新增 MainViewModel 和 QueueViewModel\n- 完善 build.gradle 配置与签名设置\n- 优化 MainActivity 功能与交互\n- 增强 PrintTaskAdapter 适配逻辑\n- 添加 proguard 混淆规则和构建脚本\n- 更新 UI 资源文件\n\nCo-Authored-By: Claude Opus 4.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/printer-server/commit/f8bc615170b4f10a4c9e1ec5261191268d6b7f0a","author":{"name":"hi.laoluo","email":"hi.laoluo@hilaoluodeMacBook-Pro.local","username":""},"committer":{"name":"hi.laoluo","email":"hi.laoluo@hilaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-01-20T23:28:57+08:00","added":["printer-redesign/application/command/ConfigurePrinterCommand.java","printer-redesign/application/command/RecoverDeadLetterCommand.java","printer-redesign/application/command/SubmitPrintJobCommand.java","printer-redesign/application/dto/PrintJobDTO.java","printer-redesign/application/dto/PrinterConfigDTO.java","printer-redesign/application/dto/QueueStatsDTO.java","printer-redesign/application/query/GetPrintJobsQuery.java","printer-redesign/application/query/GetQueueStatsQuery.java","printer-redesign/keystore.properties.template","printer-redesign/presentation/PrintTestActivity.java","printer-redesign/presentation/viewmodel/MainViewModel.java","printer-redesign/presentation/viewmodel/QueueViewModel.java","printer-redesign/proguard-rules.pro","printer-redesign/scripts/build-release.sh","printer-redesign/scripts/generate-keystore.sh","printer-redesign/src/main/res/drawable/ic_help.xml","printer-redesign/src/main/res/layout/activity_print_test.xml"],"removed":[],"modified":[".gitignore","printer-redesign/build.gradle","printer-redesign/domain/expression/ExpressionEvaluator.java","printer-redesign/migration/BillStyleAdapter.java","printer-redesign/migration/PrintTaskAdapter.java","printer-redesign/presentation/MainActivity.java","printer-redesign/src/main/AndroidManifest.xml","printer-redesign/src/main/res/values/colors.xml","printer-redesign/src/main/res/values/strings.xml"]},{"id":"4052be41183584c726cd84d2f9d9cb5c371da83b","message":"feat: 完善模板引擎系统与UI优化\n\n模板引擎增强:\n- 新增 ExpressionEvaluator 表达式求值器,支持复杂条件判断\n- 新增 FormatPipeline 格式化管道,支持货币/日期/截断等格式化\n- 新增 ContextDataEnhanced 增强上下文,支持嵌套路径和管道\n- 新增 GroupElement 分组元素,支持条件渲染和循环渲染\n- 新增 TableElementEnhanced 增强表格,支持分组/小计/合计\n- 新增 ImageElement 图片元素,支持URL/Base64/本地文件\n- 新增 TemplateValidator 模板验证器\n- 新增 TemplateRenderEngineEnhanced 增强渲染引擎\n- 完善 TemplateManager 模板管理器\n\nUI和功能优化:\n- 新增 HealthCheckActivity 健康检查详情页\n- 新增 LogViewerActivity 日志查看页面\n- 新增 QueueDetailActivity 队列详情页面\n- 优化 MainActivity 界面布局和状态显示\n- 精简 SystemPrintDriver 代码结构\n- 新增相关资源文件和菜单\n\nCo-Authored-By: Claude Opus 4.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/printer-server/commit/4052be41183584c726cd84d2f9d9cb5c371da83b","author":{"name":"hi.laoluo","email":"hi.laoluo@hilaoluodeMacBook-Pro.local","username":""},"committer":{"name":"hi.laoluo","email":"hi.laoluo@hilaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-01-20T23:12:50+08:00","added":["printer-redesign/application/engine/TemplateRenderEngineEnhanced.java","printer-redesign/application/engine/TemplateValidator.java","printer-redesign/docs/TEMPLATE_ENHANCEMENT_GUIDE.md","printer-redesign/domain/expression/ExpressionEvaluator.java","printer-redesign/domain/service/formatter/StrategyRegistry.java","printer-redesign/domain/template/ContextDataEnhanced.java","printer-redesign/domain/template/CutElement.java","printer-redesign/domain/template/FormatPipeline.java","printer-redesign/domain/template/GroupElement.java","printer-redesign/domain/template/ImageElement.java","printer-redesign/domain/template/QRCodeElement.java","printer-redesign/domain/template/SpacerElement.java","printer-redesign/domain/template/TableElementEnhanced.java","printer-redesign/infrastructure/device/utils/BitmapToEscPosUtil.java","printer-redesign/presentation/HealthCheckActivity.java","printer-redesign/presentation/LogViewerActivity.java","printer-redesign/presentation/QueueDetailActivity.java","printer-redesign/src/main/res/drawable/bg_error_message.xml","printer-redesign/src/main/res/drawable/bg_status_chip.xml","printer-redesign/src/main/res/drawable/ic_check_circle.xml","printer-redesign/src/main/res/drawable/ic_error.xml","printer-redesign/src/main/res/drawable/ic_print_type.xml","printer-redesign/src/main/res/drawable/ic_recover.xml","printer-redesign/src/main/res/drawable/ic_warning.xml","printer-redesign/src/main/res/layout/activity_health_check.xml","printer-redesign/src/main/res/layout/activity_log_viewer.xml","printer-redesign/src/main/res/layout/activity_queue_detail.xml","printer-redesign/src/main/res/layout/item_health_component.xml","printer-redesign/src/main/res/layout/item_print_log.xml","printer-redesign/src/main/res/layout/item_queue_job.xml","printer-redesign/src/main/res/menu/menu_log_viewer.xml","printer-redesign/src/main/res/menu/menu_queue_detail.xml"],"removed":[],"modified":["ARCHITECTURE_COMPARISON.md","CLAUDE.md","printer-redesign/ARCHITECTURE.md","printer-redesign/application/engine/TemplateManager.java","printer-redesign/application/engine/TemplateRenderEngine.java","printer-redesign/build.gradle","printer-redesign/domain/template/BarcodeElement.java","printer-redesign/domain/template/BaseElement.java","printer-redesign/domain/template/ContextData.java","printer-redesign/domain/template/LineElement.java","printer-redesign/domain/template/PrintElement.java","printer-redesign/domain/template/TableElement.java","printer-redesign/domain/template/TextElement.java","printer-redesign/infrastructure/device/driver/SystemPrintDriver.java","printer-redesign/presentation/MainActivity.java","printer-redesign/src/main/AndroidManifest.xml","printer-redesign/src/main/res/layout/activity_main.xml","printer-redesign/src/main/res/values/colors.xml"]}],"total_commits":0,"head_commit":{"id":"6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448","message":"build: 完善Release版本构建配置\n\n变更内容:\n- 优化版本管理: 使用语义化版本号 (versionMajor.versionMinor.versionPatch)\n- 修复签名配置路径: 使用相对路径读取keystore.properties\n- 添加V1+V2签名: 兼容Android 7+设备\n- 添加getBuildNumber()函数: 基于日期生成构建号\n- 重构测试目录: 迁移至标准src/test/java结构\n\n构建优化效果:\n- Debug版本: 8.1 MB\n- Release版本: 4.1 MB (优化48%)\n- ProGuard混淆 + 资源压缩生效\n\nCo-Authored-By: Claude Opus 4.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/printer-server/commit/6c80c00976d1c5ac4aaa5f76d10cf1e7b4f59448","author":{"name":"hi.laoluo","email":"hi.laoluo@hilaoluodeMacBook-Pro.local","username":""},"committer":{"name":"hi.laoluo","email":"hi.laoluo@hilaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-01-21T00:05:33+08:00","added":["printer-redesign/src/test/java/com/juhai/printer/application/service/PrintTaskProcessorTest.java","printer-redesign/src/test/java/com/juhai/printer/domain/service/OrderFormatterServiceTest.java","printer-redesign/src/test/java/com/juhai/printer/domain/service/PrinterSelectorTest.java","printer-redesign/src/test/java/com/juhai/printer/test/AllTestsRunner.java","printer-redesign/src/test/java/com/juhai/printer/test/BillDomainTest.java","printer-redesign/src/test/java/com/juhai/printer/test/OrderDomainTest.java","printer-redesign/src/test/java/com/juhai/printer/test/PrintApiTest.java","printer-redesign/src/test/java/com/juhai/printer/test/PrintFunctionTest.java","printer-redesign/src/test/java/com/juhai/printer/test/PrintReliabilityTest.java","printer-redesign/src/test/java/com/juhai/printer/test/TemplateEngineTest.java","printer-redesign/src/test/java/com/juhai/printer/test/WebSocketCommunicationTest.java"],"removed":["printer-redesign/test/AllTestsRunner.java","printer-redesign/test/BillDomainTest.java","printer-redesign/test/OrderDomainTest.java","printer-redesign/test/PrintApiTest.java","printer-redesign/test/PrintFunctionTest.java","printer-redesign/test/PrintReliabilityTest.java","printer-redesign/test/TemplateEngineTest.java","printer-redesign/test/WebSocketCommunicationTest.java","printer-redesign/test/com/juhai/printer/application/service/PrintTaskProcessorTest.java","printer-redesign/test/com/juhai/printer/domain/service/OrderFormatterServiceTest.java","printer-redesign/test/com/juhai/printer/domain/service/PrinterSelectorTest.java"],"modified":["printer-redesign/build.gradle"]},"repository":{"id":13,"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":"printer-server","full_name":"luoanwu/printer-server","description":"KTV打印服务器 - DDD架构重构","empty":false,"private":false,"fork":false,"template":false,"parent":null,"mirror":false,"size":27,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/printer-server/languages","html_url":"https://gitea.g-hi.com/luoanwu/printer-server","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/printer-server","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/printer-server.git","clone_url":"https://gitea.g-hi.com/luoanwu/printer-server.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-28T11:06:40+08:00","updated_at":"2026-02-28T11:06:54+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
|
4
|
1784516429
|
1784516478
|
0
|
1784516428
|
1784516478
|
|
|
0
|
Edit
Delete
|
|
23428
|
fix: harden microphone recording fallback
|
62
|
5
|
governance.yml
|
5
|
5
|
0
|
refs/heads/main
|
99c0c69becb251d64b434b6ab315d0562888ad8d
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"32c70bb2198cf25b362a49e4f74387dd1a47768a","after":"99c0c69becb251d64b434b6ab315d0562888ad8d","compare_url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition/compare/32c70bb2198cf25b362a49e4f74387dd1a47768a...99c0c69becb251d64b434b6ab315d0562888ad8d","commits":[{"id":"99c0c69becb251d64b434b6ab315d0562888ad8d","message":"fix: harden microphone recording fallback\n","url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition/commit/99c0c69becb251d64b434b6ab315d0562888ad8d","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-15T21:03:36-07:00","added":[],"removed":[],"modified":["CLAUDE.md","apps/web/e2e/acceptance.spec.ts","apps/web/src/components/voiceprint/AudioPicker.tsx","docs/deployment-vm.md","docs/domain/voiceprint-blueprint.md","docs/karaoke-singer-personalized-dsp-system-design.md","docs/product-prd.md","reports/baseline.json","reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-ui-acceptance.mjs"]}],"total_commits":0,"head_commit":{"id":"99c0c69becb251d64b434b6ab315d0562888ad8d","message":"fix: harden microphone recording fallback\n","url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition/commit/99c0c69becb251d64b434b6ab315d0562888ad8d","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-15T21:03:36-07:00","added":[],"removed":[],"modified":["CLAUDE.md","apps/web/e2e/acceptance.spec.ts","apps/web/src/components/voiceprint/AudioPicker.tsx","docs/deployment-vm.md","docs/domain/voiceprint-blueprint.md","docs/karaoke-singer-personalized-dsp-system-design.md","docs/product-prd.md","reports/baseline.json","reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-ui-acceptance.mjs"]},"repository":{"id":62,"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":"voiceprint-recognition","full_name":"luoanwu/voiceprint-recognition","description":"ECAPA+WavLM 声纹注册识别、1:N ANN 检索与声音特征画像平台","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":1195,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voiceprint-recognition/languages","html_url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voiceprint-recognition","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/voiceprint-recognition.git","clone_url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-15T08:42:42+08:00","updated_at":"2026-07-15T13:19:41+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":true,"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
|
6
|
1784174640
|
1784174731
|
0
|
1784174638
|
1784174731
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23427
|
feat: complete calibrated voiceprint workflow
|
62
|
5
|
governance.yml
|
4
|
5
|
0
|
refs/heads/main
|
32c70bb2198cf25b362a49e4f74387dd1a47768a
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"e795edf9d8130692c02ac8d6083ddbd41edcdc0c","after":"32c70bb2198cf25b362a49e4f74387dd1a47768a","compare_url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition/compare/e795edf9d8130692c02ac8d6083ddbd41edcdc0c...32c70bb2198cf25b362a49e4f74387dd1a47768a","commits":[{"id":"32c70bb2198cf25b362a49e4f74387dd1a47768a","message":"feat: complete calibrated voiceprint workflow\n","url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition/commit/32c70bb2198cf25b362a49e4f74387dd1a47768a","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-14T22:19:23-07:00","added":["configs/voiceprint-calibration.json","reports/ui-audit-registration/01-disabled-registration.png","reports/ui-audit-registration/02-registration-validation-fixed.png","reports/ui-audit-registration/03-registration-validation-viewport.png","reports/voiceprint-calibration.latest.json","scripts/calibrate_voiceprint.py","src/speaker_embedding/age_gender_sidecar.py","src/speaker_embedding/audio_payload.py","src/speaker_embedding/calibration.py","tests/test_age_gender_sidecar.py","tests/test_calibration.py"],"removed":[],"modified":[".dockerignore","CLAUDE.md","README.md","apps/web/e2e/acceptance.spec.ts","apps/web/src/components/voiceprint/EnrollPanel.tsx","apps/web/src/components/voiceprint/IdentifyPanel.tsx","apps/web/src/components/voiceprint/VoiceProfileCard.tsx","deploy/vm/.env.vm.example","deploy/vm/Dockerfile.research","deploy/vm/Dockerfile.sidecar","deploy/vm/compose.yaml","deploy/vm/requirements-research.txt","docs/deployment-vm.md","docs/domain/voiceprint-blueprint.md","docs/karaoke-singer-personalized-dsp-system-design.md","docs/product-prd.md","docs/research-age-gender.md","package.json","packages/contracts/src/voiceprint.test.ts","packages/contracts/src/voiceprint.ts","pyproject.toml","reports/baseline.json","reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","reports/voiceprint-real-acceptance.latest.json","scripts/deploy-vm.sh","scripts/governance-report.mjs","scripts/voiceprint-sidecar-ui-stub.mjs","src/speaker_embedding/__init__.py","src/speaker_embedding/age_gender_research.py","src/speaker_embedding/extractor.py","src/speaker_embedding/sidecar.py","src/speaker_embedding/speaker_db.py","src/speaker_embedding/timbre.py","tests/test_sidecar.py","tests/test_speaker_db.py"]}],"total_commits":0,"head_commit":{"id":"32c70bb2198cf25b362a49e4f74387dd1a47768a","message":"feat: complete calibrated voiceprint workflow\n","url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition/commit/32c70bb2198cf25b362a49e4f74387dd1a47768a","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-14T22:19:23-07:00","added":["configs/voiceprint-calibration.json","reports/ui-audit-registration/01-disabled-registration.png","reports/ui-audit-registration/02-registration-validation-fixed.png","reports/ui-audit-registration/03-registration-validation-viewport.png","reports/voiceprint-calibration.latest.json","scripts/calibrate_voiceprint.py","src/speaker_embedding/age_gender_sidecar.py","src/speaker_embedding/audio_payload.py","src/speaker_embedding/calibration.py","tests/test_age_gender_sidecar.py","tests/test_calibration.py"],"removed":[],"modified":[".dockerignore","CLAUDE.md","README.md","apps/web/e2e/acceptance.spec.ts","apps/web/src/components/voiceprint/EnrollPanel.tsx","apps/web/src/components/voiceprint/IdentifyPanel.tsx","apps/web/src/components/voiceprint/VoiceProfileCard.tsx","deploy/vm/.env.vm.example","deploy/vm/Dockerfile.research","deploy/vm/Dockerfile.sidecar","deploy/vm/compose.yaml","deploy/vm/requirements-research.txt","docs/deployment-vm.md","docs/domain/voiceprint-blueprint.md","docs/karaoke-singer-personalized-dsp-system-design.md","docs/product-prd.md","docs/research-age-gender.md","package.json","packages/contracts/src/voiceprint.test.ts","packages/contracts/src/voiceprint.ts","pyproject.toml","reports/baseline.json","reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","reports/voiceprint-real-acceptance.latest.json","scripts/deploy-vm.sh","scripts/governance-report.mjs","scripts/voiceprint-sidecar-ui-stub.mjs","src/speaker_embedding/__init__.py","src/speaker_embedding/age_gender_research.py","src/speaker_embedding/extractor.py","src/speaker_embedding/sidecar.py","src/speaker_embedding/speaker_db.py","src/speaker_embedding/timbre.py","tests/test_sidecar.py","tests/test_speaker_db.py"]},"repository":{"id":62,"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":"voiceprint-recognition","full_name":"luoanwu/voiceprint-recognition","description":"ECAPA+WavLM 声纹注册识别、1:N ANN 检索与声音特征画像平台","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":918,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voiceprint-recognition/languages","html_url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voiceprint-recognition","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/voiceprint-recognition.git","clone_url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-15T08:42:42+08:00","updated_at":"2026-07-15T11:24:34+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":true,"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
|
8
|
1784092782
|
1784092836
|
0
|
1784092781
|
1784092836
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23426
|
feat: harden voiceprint deployment and profile wor feat: harden voiceprint deployment and profile workflow...
|
62
|
5
|
governance.yml
|
3
|
5
|
0
|
refs/heads/main
|
e795edf9d8130692c02ac8d6083ddbd41edcdc0c
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"64bd1beaac8e1a4c1063707c3d0bbf5f7e466c76","after":"e795edf9d8130692c02ac8d6083ddbd41edcdc0c","compare_url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition/compare/64bd1beaac8e1a4c1063707c3d0bbf5f7e466c76...e795edf9d8130692c02ac8d6083ddbd41edcdc0c","commits":[{"id":"e795edf9d8130692c02ac8d6083ddbd41edcdc0c","message":"feat: harden voiceprint deployment and profile workflow\n","url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition/commit/e795edf9d8130692c02ac8d6083ddbd41edcdc0c","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-14T20:24:11-07:00","added":["apps/api-fastify/src/lib/redis-connection.ts","apps/api-fastify/test/redis-connection.test.ts","apps/web/src/components/voiceprint/VoiceProfileCard.tsx","deploy/vm/Dockerfile.sidecar","deploy/vm/requirements-sidecar.txt","scripts/voiceprint-sidecar-ui-stub.mjs"],"removed":[],"modified":["CLAUDE.md","README.md","apps/api-fastify/src/modules/voiceprint/sidecar-client.ts","apps/api-fastify/src/plugins/queue.ts","apps/api-fastify/src/plugins/voiceprint.ts","apps/api-fastify/src/routes/health.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-fastify/test/voiceprint.acceptance.test.ts","apps/api-nestjs/src/health/health.controller.ts","apps/api-nestjs/src/health/health.module.ts","apps/api-nestjs/src/voiceprint/sidecar.client.ts","apps/api-nestjs/src/voiceprint/voiceprint.controller.ts","apps/api-nestjs/src/voiceprint/voiceprint.module.ts","apps/api-nestjs/src/voiceprint/voiceprint.processor.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/api-nestjs/test/voiceprint.acceptance.test.ts","apps/web/e2e/acceptance.spec.ts","apps/web/src/components/voiceprint/AudioPicker.tsx","apps/web/src/components/voiceprint/EnrollPanel.tsx","apps/web/src/components/voiceprint/IdentifyPanel.tsx","apps/web/src/components/voiceprint/SpeakersPanel.tsx","deploy/vm/compose.yaml","deploy/vm/systemd/voiceprint-compose.service","docs/deployment-vm.md","docs/domain/voiceprint-blueprint.md","docs/karaoke-singer-personalized-dsp-system-design.md","docs/product-prd.md","packages/contracts/src/index.ts","packages/contracts/src/voiceprint.test.ts","packages/contracts/src/voiceprint.ts","reports/baseline.json","reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","reports/voiceprint-real-acceptance.latest.json","scripts/check-ui-acceptance.mjs","scripts/deploy-vm.sh","scripts/vm-status.sh","src/speaker_embedding/sidecar.py","src/speaker_embedding/speaker_db.py","tests/test_sidecar.py","tests/test_speaker_db.py"]}],"total_commits":0,"head_commit":{"id":"e795edf9d8130692c02ac8d6083ddbd41edcdc0c","message":"feat: harden voiceprint deployment and profile workflow\n","url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition/commit/e795edf9d8130692c02ac8d6083ddbd41edcdc0c","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-14T20:24:11-07:00","added":["apps/api-fastify/src/lib/redis-connection.ts","apps/api-fastify/test/redis-connection.test.ts","apps/web/src/components/voiceprint/VoiceProfileCard.tsx","deploy/vm/Dockerfile.sidecar","deploy/vm/requirements-sidecar.txt","scripts/voiceprint-sidecar-ui-stub.mjs"],"removed":[],"modified":["CLAUDE.md","README.md","apps/api-fastify/src/modules/voiceprint/sidecar-client.ts","apps/api-fastify/src/plugins/queue.ts","apps/api-fastify/src/plugins/voiceprint.ts","apps/api-fastify/src/routes/health.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-fastify/test/voiceprint.acceptance.test.ts","apps/api-nestjs/src/health/health.controller.ts","apps/api-nestjs/src/health/health.module.ts","apps/api-nestjs/src/voiceprint/sidecar.client.ts","apps/api-nestjs/src/voiceprint/voiceprint.controller.ts","apps/api-nestjs/src/voiceprint/voiceprint.module.ts","apps/api-nestjs/src/voiceprint/voiceprint.processor.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/api-nestjs/test/voiceprint.acceptance.test.ts","apps/web/e2e/acceptance.spec.ts","apps/web/src/components/voiceprint/AudioPicker.tsx","apps/web/src/components/voiceprint/EnrollPanel.tsx","apps/web/src/components/voiceprint/IdentifyPanel.tsx","apps/web/src/components/voiceprint/SpeakersPanel.tsx","deploy/vm/compose.yaml","deploy/vm/systemd/voiceprint-compose.service","docs/deployment-vm.md","docs/domain/voiceprint-blueprint.md","docs/karaoke-singer-personalized-dsp-system-design.md","docs/product-prd.md","packages/contracts/src/index.ts","packages/contracts/src/voiceprint.test.ts","packages/contracts/src/voiceprint.ts","reports/baseline.json","reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","reports/voiceprint-real-acceptance.latest.json","scripts/check-ui-acceptance.mjs","scripts/deploy-vm.sh","scripts/vm-status.sh","src/speaker_embedding/sidecar.py","src/speaker_embedding/speaker_db.py","tests/test_sidecar.py","tests/test_speaker_db.py"]},"repository":{"id":62,"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":"voiceprint-recognition","full_name":"luoanwu/voiceprint-recognition","description":"ECAPA+WavLM 声纹注册识别、1:N ANN 检索与声音特征画像平台","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":747,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voiceprint-recognition/languages","html_url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voiceprint-recognition","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/voiceprint-recognition.git","clone_url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-15T08:42:42+08:00","updated_at":"2026-07-15T09:11: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":true,"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
|
8
|
1784085875
|
1784085931
|
0
|
1784085873
|
1784085931
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23425
|
feat: add governed voice profile acoustics
|
62
|
5
|
governance.yml
|
2
|
5
|
0
|
refs/heads/main
|
64bd1beaac8e1a4c1063707c3d0bbf5f7e466c76
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"1847c52407c1b5d6d4734f1b334f782bd4a76641","after":"64bd1beaac8e1a4c1063707c3d0bbf5f7e466c76","compare_url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition/compare/1847c52407c1b5d6d4734f1b334f782bd4a76641...64bd1beaac8e1a4c1063707c3d0bbf5f7e466c76","commits":[{"id":"64bd1beaac8e1a4c1063707c3d0bbf5f7e466c76","message":"feat: add governed voice profile acoustics\n","url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition/commit/64bd1beaac8e1a4c1063707c3d0bbf5f7e466c76","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-14T18:10:48-07:00","added":["tests/test_timbre.py"],"removed":[],"modified":["CLAUDE.md","docs/domain/voiceprint-blueprint.md","docs/karaoke-singer-personalized-dsp-system-design.md","docs/product-prd.md","reports/baseline.json","reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json","reports/voiceprint-real-acceptance.latest.json","scripts/check_voiceprint_real.py","scripts/governance-report.mjs","src/speaker_embedding/speaker_db.py","src/speaker_embedding/timbre.py","tests/test_speaker_db.py"]}],"total_commits":0,"head_commit":{"id":"64bd1beaac8e1a4c1063707c3d0bbf5f7e466c76","message":"feat: add governed voice profile acoustics\n","url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition/commit/64bd1beaac8e1a4c1063707c3d0bbf5f7e466c76","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-14T18:10:48-07:00","added":["tests/test_timbre.py"],"removed":[],"modified":["CLAUDE.md","docs/domain/voiceprint-blueprint.md","docs/karaoke-singer-personalized-dsp-system-design.md","docs/product-prd.md","reports/baseline.json","reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/validation-source.latest.json","reports/voiceprint-real-acceptance.latest.json","scripts/check_voiceprint_real.py","scripts/governance-report.mjs","src/speaker_embedding/speaker_db.py","src/speaker_embedding/timbre.py","tests/test_speaker_db.py"]},"repository":{"id":62,"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":"voiceprint-recognition","full_name":"luoanwu/voiceprint-recognition","description":"ECAPA+WavLM 声纹注册识别、1:N ANN 检索与声音特征画像平台","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":645,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voiceprint-recognition/languages","html_url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voiceprint-recognition","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/voiceprint-recognition.git","clone_url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-15T08:42:42+08:00","updated_at":"2026-07-15T08:43:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"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
|
6
|
1784077862
|
1784077952
|
0
|
1784077861
|
1784077953
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23424
|
feat: initialize voiceprint recognition platform
|
62
|
5
|
governance.yml
|
1
|
5
|
0
|
refs/heads/main
|
1847c52407c1b5d6d4734f1b334f782bd4a76641
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"0000000000000000000000000000000000000000","after":"1847c52407c1b5d6d4734f1b334f782bd4a76641","compare_url":"https://gitea.g-hi.com/","commits":[{"id":"1847c52407c1b5d6d4734f1b334f782bd4a76641","message":"feat: initialize voiceprint recognition platform\n","url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition/commit/1847c52407c1b5d6d4734f1b334f782bd4a76641","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-14T17:42:28-07:00","added":[".claude/agents/acceptance-runner.md",".claude/agents/module-blueprint.md",".claude/launch.json",".claude/skills/business-module-intake/SKILL.md",".claude/skills/frontend-api-react/SKILL.md",".claude/skills/frontend-view-react/SKILL.md",".claude/skills/frontend-view-react/references/view-templates.md",".claude/skills/fullstack-7layer-react/SKILL.md",".claude/skills/fullstack-7layer-react/references/fullstack-react-templates.md",".claude/skills/zustand-store/SKILL.md",".dockerignore",".github/pull_request_template.md",".github/workflows/governance.yml",".gitignore","AGENTS.md","CLAUDE.md","ECAPA_WavLM_声纹方案完整包.zip","README.md","apps/api-fastify/.env.example","apps/api-fastify/.gitignore","apps/api-fastify/package.json","apps/api-fastify/pnpm-lock.yaml","apps/api-fastify/prisma/migrations/20260608150500_init/migration.sql","apps/api-fastify/prisma/migrations/20260705080000_outbox_dead_letter/migration.sql","apps/api-fastify/prisma/migrations/20260714120000_voiceprint_tasks/migration.sql","apps/api-fastify/prisma/migrations/migration_lock.toml","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/app.ts","apps/api-fastify/src/lib/orderMachine.ts","apps/api-fastify/src/lib/statemachine.ts","apps/api-fastify/src/modules/orders/orders.service.ts","apps/api-fastify/src/modules/tenant.ts","apps/api-fastify/src/modules/users/users.service.ts","apps/api-fastify/src/modules/voiceprint/sidecar-client.ts","apps/api-fastify/src/modules/voiceprint/tasks.service.ts","apps/api-fastify/src/plugins/events.ts","apps/api-fastify/src/plugins/outbox.ts","apps/api-fastify/src/plugins/prisma.ts","apps/api-fastify/src/plugins/queue.ts","apps/api-fastify/src/plugins/redis.ts","apps/api-fastify/src/plugins/voiceprint.ts","apps/api-fastify/src/routes/health.ts","apps/api-fastify/src/routes/jobs.ts","apps/api-fastify/src/routes/orders.ts","apps/api-fastify/src/routes/sse.ts","apps/api-fastify/src/routes/users.ts","apps/api-fastify/src/routes/voiceprint.ts","apps/api-fastify/src/routes/ws.ts","apps/api-fastify/src/server.ts","apps/api-fastify/src/types.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-fastify/test/orders.integration.test.ts","apps/api-fastify/test/outbox.deadletter.test.ts","apps/api-fastify/test/realtime.tenant.test.ts","apps/api-fastify/test/voiceprint.acceptance.test.ts","apps/api-fastify/tsconfig.json","apps/api-fastify/vitest.config.ts","apps/api-nestjs/.env.example","apps/api-nestjs/.gitignore","apps/api-nestjs/docker-compose.yml","apps/api-nestjs/nest-cli.json","apps/api-nestjs/package.json","apps/api-nestjs/pnpm-lock.yaml","apps/api-nestjs/prisma/migrations/20260608150500_init/migration.sql","apps/api-nestjs/prisma/migrations/20260705080000_outbox_dead_letter/migration.sql","apps/api-nestjs/prisma/migrations/20260714120000_voiceprint_tasks/migration.sql","apps/api-nestjs/prisma/migrations/migration_lock.toml","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/prisma/seed.ts","apps/api-nestjs/src/app.module.ts","apps/api-nestjs/src/common/envelope.ts","apps/api-nestjs/src/common/tenant.decorator.ts","apps/api-nestjs/src/common/zod-validation.pipe.ts","apps/api-nestjs/src/create-app.ts","apps/api-nestjs/src/events/event-bus.service.ts","apps/api-nestjs/src/events/events.gateway.ts","apps/api-nestjs/src/events/events.module.ts","apps/api-nestjs/src/events/fanout.service.ts","apps/api-nestjs/src/events/outbox-dispatcher.service.ts","apps/api-nestjs/src/health/health.controller.ts","apps/api-nestjs/src/health/health.module.ts","apps/api-nestjs/src/main.ts","apps/api-nestjs/src/orders/orders.controller.ts","apps/api-nestjs/src/orders/orders.module.ts","apps/api-nestjs/src/orders/orders.service.ts","apps/api-nestjs/src/prisma/prisma.module.ts","apps/api-nestjs/src/prisma/prisma.service.ts","apps/api-nestjs/src/queue/jobs.controller.ts","apps/api-nestjs/src/queue/jobs.processor.ts","apps/api-nestjs/src/queue/queue.module.ts","apps/api-nestjs/src/queue/queue.types.ts","apps/api-nestjs/src/redis/redis.module.ts","apps/api-nestjs/src/sse/sse.controller.ts","apps/api-nestjs/src/sse/sse.module.ts","apps/api-nestjs/src/statemachine/index.ts","apps/api-nestjs/src/statemachine/order.machine.ts","apps/api-nestjs/src/statemachine/statemachine.engine.ts","apps/api-nestjs/src/statemachine/statemachine.types.ts","apps/api-nestjs/src/users/users.controller.ts","apps/api-nestjs/src/users/users.module.ts","apps/api-nestjs/src/users/users.service.ts","apps/api-nestjs/src/voiceprint/sidecar.client.ts","apps/api-nestjs/src/voiceprint/voiceprint.controller.ts","apps/api-nestjs/src/voiceprint/voiceprint.module.ts","apps/api-nestjs/src/voiceprint/voiceprint.processor.ts","apps/api-nestjs/src/voiceprint/voiceprint.service.ts","apps/api-nestjs/src/voiceprint/voiceprint.types.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/api-nestjs/test/orders.integration.test.ts","apps/api-nestjs/test/outbox.deadletter.test.ts","apps/api-nestjs/test/realtime.tenant.test.ts","apps/api-nestjs/test/voiceprint.acceptance.test.ts","apps/api-nestjs/tsconfig.build.json","apps/api-nestjs/tsconfig.json","apps/api-nestjs/vitest.config.ts","apps/web/.env.example","apps/web/.gitignore","apps/web/components.json","apps/web/e2e/acceptance.spec.ts","apps/web/eslint.config.mjs","apps/web/next.config.ts","apps/web/package.json","apps/web/playwright.config.ts","apps/web/pnpm-lock.yaml","apps/web/postcss.config.js","apps/web/src/app/globals.css","apps/web/src/app/layout.tsx","apps/web/src/app/page.tsx","apps/web/src/app/voiceprint/page.tsx","apps/web/src/components/EventFeed.tsx","apps/web/src/components/OrdersPanel.tsx","apps/web/src/components/RealtimeBar.tsx","apps/web/src/components/UsersPanel.tsx","apps/web/src/components/ui/badge.tsx","apps/web/src/components/ui/button.tsx","apps/web/src/components/ui/card.tsx","apps/web/src/components/ui/input.tsx","apps/web/src/components/ui/label.tsx","apps/web/src/components/ui/separator.tsx","apps/web/src/components/voiceprint/AudioPicker.tsx","apps/web/src/components/voiceprint/EnrollPanel.tsx","apps/web/src/components/voiceprint/IdentifyPanel.tsx","apps/web/src/components/voiceprint/SpeakersPanel.tsx","apps/web/src/components/voiceprint/TasksPanel.tsx","apps/web/src/components/voiceprint/useVoiceprintTask.ts","apps/web/src/hooks/useRealtime.ts","apps/web/src/lib/api.ts","apps/web/src/lib/providers.tsx","apps/web/src/lib/types.ts","apps/web/src/lib/utils.ts","apps/web/src/store/realtime.ts","apps/web/src/store/useAppStore.ts","apps/web/tailwind.config.ts","apps/web/tsconfig.json","deploy/vm/.env.vm.example","deploy/vm/Caddyfile","deploy/vm/Dockerfile.node","deploy/vm/Dockerfile.research","deploy/vm/compose.yaml","deploy/vm/requirements-research.txt","deploy/vm/systemd/voiceprint-compose.service","docs/README.md","docs/adr/0001-use-typescript-fullstack.md","docs/adr/0002-use-nextjs-app-router.md","docs/adr/0003-use-nestjs-with-fastify-adapter.md","docs/adr/0004-use-postgresql.md","docs/adr/0005-use-prisma.md","docs/adr/0006-realtime-sse-and-websocket.md","docs/adr/0007-use-bullmq-queue.md","docs/adr/0008-monorepo-pnpm-turborepo.md","docs/adr/0009-dual-backend-governance-parity.md","docs/deployment-vm.md","docs/domain-glossary.md","docs/domain/owner-matrix.md","docs/domain/voiceprint-blueprint.md","docs/karaoke-singer-personalized-dsp-system-design.md","docs/migration-notes.md","docs/product-prd.md","docs/research-age-gender.md","docs/standards/api-standard.md","docs/standards/backend-standard.md","docs/standards/database-standard.md","docs/standards/frontend-standard.md","docs/standards/git-standard.md","docs/standards/naming-standard.md","docs/standards/review-standard.md","package.json","packages/config/eslint/base.mjs","packages/config/package.json","packages/config/prettier/index.json","packages/config/tsconfig/base.json","packages/config/tsconfig/nextjs.json","packages/config/tsconfig/node.json","packages/contracts/package.json","packages/contracts/src/contracts.test.ts","packages/contracts/src/index.ts","packages/contracts/src/order.ts","packages/contracts/src/realtime.ts","packages/contracts/src/statemachine.test.ts","packages/contracts/src/statemachine.ts","packages/contracts/src/tenant.ts","packages/contracts/src/user.ts","packages/contracts/src/voiceprint.test.ts","packages/contracts/src/voiceprint.ts","packages/contracts/tsconfig.json","pnpm-lock.yaml","pnpm-workspace.yaml","pyproject.toml","reports/baseline.json","reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/research-age-gender.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","reports/voiceprint-real-acceptance.latest.json","scripts/backup-vm.sh","scripts/check-contract-consumers.mjs","scripts/check-dual-backend-parity.mjs","scripts/check-governance-docs.mjs","scripts/check-migrations.mjs","scripts/check-naming.mjs","scripts/check-order-concurrency-guard.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-schema-sync.mjs","scripts/check-ui-acceptance.mjs","scripts/check-validation-source.mjs","scripts/check_voiceprint_real.py","scripts/deploy-vm.sh","scripts/fix-macos-faiss-libomp.sh","scripts/governance-report.mjs","scripts/init-vm-env.sh","scripts/stop-vm.sh","scripts/vm-status.sh","src/speaker_embedding/__init__.py","src/speaker_embedding/age_gender_cli.py","src/speaker_embedding/age_gender_research.py","src/speaker_embedding/cli.py","src/speaker_embedding/extractor.py","src/speaker_embedding/profile_cli.py","src/speaker_embedding/sidecar.py","src/speaker_embedding/singing_activity.py","src/speaker_embedding/speaker_db.py","src/speaker_embedding/speaker_id_cli.py","src/speaker_embedding/timbre.py","tests/test_age_gender_research.py","tests/test_aggregation.py","tests/test_sidecar.py","tests/test_singing_activity.py","tests/test_speaker_db.py","tsconfig.base.json","turbo.json","声纹识别.zip"],"removed":[],"modified":[]}],"total_commits":0,"head_commit":{"id":"1847c52407c1b5d6d4734f1b334f782bd4a76641","message":"feat: initialize voiceprint recognition platform\n","url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition/commit/1847c52407c1b5d6d4734f1b334f782bd4a76641","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-14T17:42:28-07:00","added":[".claude/agents/acceptance-runner.md",".claude/agents/module-blueprint.md",".claude/launch.json",".claude/skills/business-module-intake/SKILL.md",".claude/skills/frontend-api-react/SKILL.md",".claude/skills/frontend-view-react/SKILL.md",".claude/skills/frontend-view-react/references/view-templates.md",".claude/skills/fullstack-7layer-react/SKILL.md",".claude/skills/fullstack-7layer-react/references/fullstack-react-templates.md",".claude/skills/zustand-store/SKILL.md",".dockerignore",".github/pull_request_template.md",".github/workflows/governance.yml",".gitignore","AGENTS.md","CLAUDE.md","ECAPA_WavLM_声纹方案完整包.zip","README.md","apps/api-fastify/.env.example","apps/api-fastify/.gitignore","apps/api-fastify/package.json","apps/api-fastify/pnpm-lock.yaml","apps/api-fastify/prisma/migrations/20260608150500_init/migration.sql","apps/api-fastify/prisma/migrations/20260705080000_outbox_dead_letter/migration.sql","apps/api-fastify/prisma/migrations/20260714120000_voiceprint_tasks/migration.sql","apps/api-fastify/prisma/migrations/migration_lock.toml","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/app.ts","apps/api-fastify/src/lib/orderMachine.ts","apps/api-fastify/src/lib/statemachine.ts","apps/api-fastify/src/modules/orders/orders.service.ts","apps/api-fastify/src/modules/tenant.ts","apps/api-fastify/src/modules/users/users.service.ts","apps/api-fastify/src/modules/voiceprint/sidecar-client.ts","apps/api-fastify/src/modules/voiceprint/tasks.service.ts","apps/api-fastify/src/plugins/events.ts","apps/api-fastify/src/plugins/outbox.ts","apps/api-fastify/src/plugins/prisma.ts","apps/api-fastify/src/plugins/queue.ts","apps/api-fastify/src/plugins/redis.ts","apps/api-fastify/src/plugins/voiceprint.ts","apps/api-fastify/src/routes/health.ts","apps/api-fastify/src/routes/jobs.ts","apps/api-fastify/src/routes/orders.ts","apps/api-fastify/src/routes/sse.ts","apps/api-fastify/src/routes/users.ts","apps/api-fastify/src/routes/voiceprint.ts","apps/api-fastify/src/routes/ws.ts","apps/api-fastify/src/server.ts","apps/api-fastify/src/types.ts","apps/api-fastify/test/http.acceptance.test.ts","apps/api-fastify/test/orders.integration.test.ts","apps/api-fastify/test/outbox.deadletter.test.ts","apps/api-fastify/test/realtime.tenant.test.ts","apps/api-fastify/test/voiceprint.acceptance.test.ts","apps/api-fastify/tsconfig.json","apps/api-fastify/vitest.config.ts","apps/api-nestjs/.env.example","apps/api-nestjs/.gitignore","apps/api-nestjs/docker-compose.yml","apps/api-nestjs/nest-cli.json","apps/api-nestjs/package.json","apps/api-nestjs/pnpm-lock.yaml","apps/api-nestjs/prisma/migrations/20260608150500_init/migration.sql","apps/api-nestjs/prisma/migrations/20260705080000_outbox_dead_letter/migration.sql","apps/api-nestjs/prisma/migrations/20260714120000_voiceprint_tasks/migration.sql","apps/api-nestjs/prisma/migrations/migration_lock.toml","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/prisma/seed.ts","apps/api-nestjs/src/app.module.ts","apps/api-nestjs/src/common/envelope.ts","apps/api-nestjs/src/common/tenant.decorator.ts","apps/api-nestjs/src/common/zod-validation.pipe.ts","apps/api-nestjs/src/create-app.ts","apps/api-nestjs/src/events/event-bus.service.ts","apps/api-nestjs/src/events/events.gateway.ts","apps/api-nestjs/src/events/events.module.ts","apps/api-nestjs/src/events/fanout.service.ts","apps/api-nestjs/src/events/outbox-dispatcher.service.ts","apps/api-nestjs/src/health/health.controller.ts","apps/api-nestjs/src/health/health.module.ts","apps/api-nestjs/src/main.ts","apps/api-nestjs/src/orders/orders.controller.ts","apps/api-nestjs/src/orders/orders.module.ts","apps/api-nestjs/src/orders/orders.service.ts","apps/api-nestjs/src/prisma/prisma.module.ts","apps/api-nestjs/src/prisma/prisma.service.ts","apps/api-nestjs/src/queue/jobs.controller.ts","apps/api-nestjs/src/queue/jobs.processor.ts","apps/api-nestjs/src/queue/queue.module.ts","apps/api-nestjs/src/queue/queue.types.ts","apps/api-nestjs/src/redis/redis.module.ts","apps/api-nestjs/src/sse/sse.controller.ts","apps/api-nestjs/src/sse/sse.module.ts","apps/api-nestjs/src/statemachine/index.ts","apps/api-nestjs/src/statemachine/order.machine.ts","apps/api-nestjs/src/statemachine/statemachine.engine.ts","apps/api-nestjs/src/statemachine/statemachine.types.ts","apps/api-nestjs/src/users/users.controller.ts","apps/api-nestjs/src/users/users.module.ts","apps/api-nestjs/src/users/users.service.ts","apps/api-nestjs/src/voiceprint/sidecar.client.ts","apps/api-nestjs/src/voiceprint/voiceprint.controller.ts","apps/api-nestjs/src/voiceprint/voiceprint.module.ts","apps/api-nestjs/src/voiceprint/voiceprint.processor.ts","apps/api-nestjs/src/voiceprint/voiceprint.service.ts","apps/api-nestjs/src/voiceprint/voiceprint.types.ts","apps/api-nestjs/test/http.acceptance.test.ts","apps/api-nestjs/test/orders.integration.test.ts","apps/api-nestjs/test/outbox.deadletter.test.ts","apps/api-nestjs/test/realtime.tenant.test.ts","apps/api-nestjs/test/voiceprint.acceptance.test.ts","apps/api-nestjs/tsconfig.build.json","apps/api-nestjs/tsconfig.json","apps/api-nestjs/vitest.config.ts","apps/web/.env.example","apps/web/.gitignore","apps/web/components.json","apps/web/e2e/acceptance.spec.ts","apps/web/eslint.config.mjs","apps/web/next.config.ts","apps/web/package.json","apps/web/playwright.config.ts","apps/web/pnpm-lock.yaml","apps/web/postcss.config.js","apps/web/src/app/globals.css","apps/web/src/app/layout.tsx","apps/web/src/app/page.tsx","apps/web/src/app/voiceprint/page.tsx","apps/web/src/components/EventFeed.tsx","apps/web/src/components/OrdersPanel.tsx","apps/web/src/components/RealtimeBar.tsx","apps/web/src/components/UsersPanel.tsx","apps/web/src/components/ui/badge.tsx","apps/web/src/components/ui/button.tsx","apps/web/src/components/ui/card.tsx","apps/web/src/components/ui/input.tsx","apps/web/src/components/ui/label.tsx","apps/web/src/components/ui/separator.tsx","apps/web/src/components/voiceprint/AudioPicker.tsx","apps/web/src/components/voiceprint/EnrollPanel.tsx","apps/web/src/components/voiceprint/IdentifyPanel.tsx","apps/web/src/components/voiceprint/SpeakersPanel.tsx","apps/web/src/components/voiceprint/TasksPanel.tsx","apps/web/src/components/voiceprint/useVoiceprintTask.ts","apps/web/src/hooks/useRealtime.ts","apps/web/src/lib/api.ts","apps/web/src/lib/providers.tsx","apps/web/src/lib/types.ts","apps/web/src/lib/utils.ts","apps/web/src/store/realtime.ts","apps/web/src/store/useAppStore.ts","apps/web/tailwind.config.ts","apps/web/tsconfig.json","deploy/vm/.env.vm.example","deploy/vm/Caddyfile","deploy/vm/Dockerfile.node","deploy/vm/Dockerfile.research","deploy/vm/compose.yaml","deploy/vm/requirements-research.txt","deploy/vm/systemd/voiceprint-compose.service","docs/README.md","docs/adr/0001-use-typescript-fullstack.md","docs/adr/0002-use-nextjs-app-router.md","docs/adr/0003-use-nestjs-with-fastify-adapter.md","docs/adr/0004-use-postgresql.md","docs/adr/0005-use-prisma.md","docs/adr/0006-realtime-sse-and-websocket.md","docs/adr/0007-use-bullmq-queue.md","docs/adr/0008-monorepo-pnpm-turborepo.md","docs/adr/0009-dual-backend-governance-parity.md","docs/deployment-vm.md","docs/domain-glossary.md","docs/domain/owner-matrix.md","docs/domain/voiceprint-blueprint.md","docs/karaoke-singer-personalized-dsp-system-design.md","docs/migration-notes.md","docs/product-prd.md","docs/research-age-gender.md","docs/standards/api-standard.md","docs/standards/backend-standard.md","docs/standards/database-standard.md","docs/standards/frontend-standard.md","docs/standards/git-standard.md","docs/standards/naming-standard.md","docs/standards/review-standard.md","package.json","packages/config/eslint/base.mjs","packages/config/package.json","packages/config/prettier/index.json","packages/config/tsconfig/base.json","packages/config/tsconfig/nextjs.json","packages/config/tsconfig/node.json","packages/contracts/package.json","packages/contracts/src/contracts.test.ts","packages/contracts/src/index.ts","packages/contracts/src/order.ts","packages/contracts/src/realtime.ts","packages/contracts/src/statemachine.test.ts","packages/contracts/src/statemachine.ts","packages/contracts/src/tenant.ts","packages/contracts/src/user.ts","packages/contracts/src/voiceprint.test.ts","packages/contracts/src/voiceprint.ts","packages/contracts/tsconfig.json","pnpm-lock.yaml","pnpm-workspace.yaml","pyproject.toml","reports/baseline.json","reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/research-age-gender.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","reports/voiceprint-real-acceptance.latest.json","scripts/backup-vm.sh","scripts/check-contract-consumers.mjs","scripts/check-dual-backend-parity.mjs","scripts/check-governance-docs.mjs","scripts/check-migrations.mjs","scripts/check-naming.mjs","scripts/check-order-concurrency-guard.mjs","scripts/check-runtime-acceptance.mjs","scripts/check-schema-sync.mjs","scripts/check-ui-acceptance.mjs","scripts/check-validation-source.mjs","scripts/check_voiceprint_real.py","scripts/deploy-vm.sh","scripts/fix-macos-faiss-libomp.sh","scripts/governance-report.mjs","scripts/init-vm-env.sh","scripts/stop-vm.sh","scripts/vm-status.sh","src/speaker_embedding/__init__.py","src/speaker_embedding/age_gender_cli.py","src/speaker_embedding/age_gender_research.py","src/speaker_embedding/cli.py","src/speaker_embedding/extractor.py","src/speaker_embedding/profile_cli.py","src/speaker_embedding/sidecar.py","src/speaker_embedding/singing_activity.py","src/speaker_embedding/speaker_db.py","src/speaker_embedding/speaker_id_cli.py","src/speaker_embedding/timbre.py","tests/test_age_gender_research.py","tests/test_aggregation.py","tests/test_sidecar.py","tests/test_singing_activity.py","tests/test_speaker_db.py","tsconfig.base.json","turbo.json","声纹识别.zip"],"removed":[],"modified":[]},"repository":{"id":62,"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":"voiceprint-recognition","full_name":"luoanwu/voiceprint-recognition","description":"ECAPA+WavLM 声纹注册识别、1:N ANN 检索与声音特征画像平台","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":27,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voiceprint-recognition/languages","html_url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/voiceprint-recognition","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/voiceprint-recognition.git","clone_url":"https://gitea.g-hi.com/luoanwu/voiceprint-recognition.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-15T08:42:42+08:00","updated_at":"2026-07-15T08:43:03+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"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
|
6
|
1784076185
|
1784076276
|
0
|
1784076183
|
1784076277
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|
|
23423
|
C68:未接线主对齐器 fail-closed——修复 STARS/mms_fa 挂名造假调度陷阱
|
60
|
5
|
governance.yml
|
12
|
5
|
0
|
refs/heads/main
|
d4524b485b6859714b59ff6e265c6d3cc79941c6
|
0
|
0
|
0
|
push
|
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"226033fd7f9e6266a679a585a26dfb935d56b1e2","after":"d4524b485b6859714b59ff6e265c6d3cc79941c6","compare_url":"https://gitea.g-hi.com/luoanwu/haizan-ai-production-platform/compare/226033fd7f9e6266a679a585a26dfb935d56b1e2...d4524b485b6859714b59ff6e265c6d3cc79941c6","commits":[{"id":"d4524b485b6859714b59ff6e265c6d3cc79941c6","message":"C68:未接线主对齐器 fail-closed——修复 STARS/mms_fa 挂名造假调度陷阱\n\n调度层曾对无 local_align 生产者的主对齐器(STARS/mms_fa)静默回退\nHubertFA CLI:产物挂着所选模型的名字实际是 HubertFA 对齐的。四层收口:\n- contracts:LOCAL_ALIGN_WIRED_MAIN_ALIGNER_IDS 单源 + hasWiredLocalAlignProducer\n + 契约测试锁(默认主对齐器必须已接线)\n- 执行器:resolvePipelineCommand 对未接线 id 抛 SPAWN_FAILED(桩注入不受影响)\n- 双后端:assertPipelineReady 先于状态判责返回 409\n MAIN_ALIGNER_PRODUCER_NOT_WIRED(逐字节对等 + 各 +1 判责用例)\n- UI:LoadModal 未接线模型禁选 + 琥珀徽标「生产者未接线 · 仅 CLI 研究直跑」\n (浏览器实测研究环境 5 模型清单灰显禁选)\n证据:check:runtime 324/324(floor 320→324)、check:ui 34/34、pnpm check 全绿\n\n本提交同时包含并行会话的 C65-C67 工作树改动(SOFA 校验洗绿修复/KAS 校准\n判责治理/HubertFA 直对齐路由)与 alignment-quality 新门禁。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/haizan-ai-production-platform/commit/d4524b485b6859714b59ff6e265c6d3cc79941c6","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-14T04:50:36-07:00","added":["reports/alignment-quality-governance.latest.json","reports/model-evidence/qingtian-human-kas-calibration.artifact.json","reports/model-evidence/qingtian-human-kas-calibration.latest.json","reports/model-evidence/qingtian-human-kas-calibration.report.html","scripts/check-alignment-quality-governance.mjs","workers/pipeline/analyze_kas_calibration.py","workers/pipeline/build_kas_calibration_artifact.py"],"removed":[],"modified":["CLAUDE.md","README.md","apps/api-fastify/src/modules/alignment/alignment-pipeline.ts","apps/api-fastify/src/modules/alignment/alignment-scoring.ts","apps/api-fastify/src/modules/alignment/alignment.service.ts","apps/api-fastify/test/alignment.pipeline.test.ts","apps/api-fastify/test/alignment.scoring.test.ts","apps/api-fastify/test/alignment.verification.test.ts","apps/api-nestjs/src/alignment/alignment.service.ts","apps/api-nestjs/src/queue/jobs.processor.ts","apps/api-nestjs/test/alignment.pipeline.test.ts","apps/api-nestjs/test/alignment.scoring.test.ts","apps/api-nestjs/test/alignment.verification.test.ts","apps/web/e2e/lyra-studio.spec.ts","apps/web/src/features/lyra-studio/components/modals/LoadModal.tsx","apps/web/src/features/lyra-studio/components/modals/StepModal.tsx","apps/web/src/features/lyra-studio/runMapping.ts","docs/domain/lyric-alignment-production-blueprint.md","package.json","packages/contracts/src/alignment-models.test.ts","packages/contracts/src/alignment-models.ts","packages/pipeline-runner/src/index.ts","packages/pipeline-runner/src/runner.test.ts","reports/alignment-models.latest.json","reports/baseline.json","reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/lyra-prototype-parity.latest.json","reports/migrations.latest.json","reports/model-assets.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/project-truth.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/song-library.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-project-truth.mjs","scripts/governance-report.mjs","workers/pipeline/run_pipeline.py"]}],"total_commits":0,"head_commit":{"id":"d4524b485b6859714b59ff6e265c6d3cc79941c6","message":"C68:未接线主对齐器 fail-closed——修复 STARS/mms_fa 挂名造假调度陷阱\n\n调度层曾对无 local_align 生产者的主对齐器(STARS/mms_fa)静默回退\nHubertFA CLI:产物挂着所选模型的名字实际是 HubertFA 对齐的。四层收口:\n- contracts:LOCAL_ALIGN_WIRED_MAIN_ALIGNER_IDS 单源 + hasWiredLocalAlignProducer\n + 契约测试锁(默认主对齐器必须已接线)\n- 执行器:resolvePipelineCommand 对未接线 id 抛 SPAWN_FAILED(桩注入不受影响)\n- 双后端:assertPipelineReady 先于状态判责返回 409\n MAIN_ALIGNER_PRODUCER_NOT_WIRED(逐字节对等 + 各 +1 判责用例)\n- UI:LoadModal 未接线模型禁选 + 琥珀徽标「生产者未接线 · 仅 CLI 研究直跑」\n (浏览器实测研究环境 5 模型清单灰显禁选)\n证据:check:runtime 324/324(floor 320→324)、check:ui 34/34、pnpm check 全绿\n\n本提交同时包含并行会话的 C65-C67 工作树改动(SOFA 校验洗绿修复/KAS 校准\n判责治理/HubertFA 直对齐路由)与 alignment-quality 新门禁。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/haizan-ai-production-platform/commit/d4524b485b6859714b59ff6e265c6d3cc79941c6","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-07-14T04:50:36-07:00","added":["reports/alignment-quality-governance.latest.json","reports/model-evidence/qingtian-human-kas-calibration.artifact.json","reports/model-evidence/qingtian-human-kas-calibration.latest.json","reports/model-evidence/qingtian-human-kas-calibration.report.html","scripts/check-alignment-quality-governance.mjs","workers/pipeline/analyze_kas_calibration.py","workers/pipeline/build_kas_calibration_artifact.py"],"removed":[],"modified":["CLAUDE.md","README.md","apps/api-fastify/src/modules/alignment/alignment-pipeline.ts","apps/api-fastify/src/modules/alignment/alignment-scoring.ts","apps/api-fastify/src/modules/alignment/alignment.service.ts","apps/api-fastify/test/alignment.pipeline.test.ts","apps/api-fastify/test/alignment.scoring.test.ts","apps/api-fastify/test/alignment.verification.test.ts","apps/api-nestjs/src/alignment/alignment.service.ts","apps/api-nestjs/src/queue/jobs.processor.ts","apps/api-nestjs/test/alignment.pipeline.test.ts","apps/api-nestjs/test/alignment.scoring.test.ts","apps/api-nestjs/test/alignment.verification.test.ts","apps/web/e2e/lyra-studio.spec.ts","apps/web/src/features/lyra-studio/components/modals/LoadModal.tsx","apps/web/src/features/lyra-studio/components/modals/StepModal.tsx","apps/web/src/features/lyra-studio/runMapping.ts","docs/domain/lyric-alignment-production-blueprint.md","package.json","packages/contracts/src/alignment-models.test.ts","packages/contracts/src/alignment-models.ts","packages/pipeline-runner/src/index.ts","packages/pipeline-runner/src/runner.test.ts","reports/alignment-models.latest.json","reports/baseline.json","reports/contract-consumers.latest.json","reports/dual-backend-parity.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/lyra-prototype-parity.latest.json","reports/migrations.latest.json","reports/model-assets.latest.json","reports/naming.latest.json","reports/order-concurrency-guard.latest.json","reports/project-truth.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/song-library.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json","scripts/check-project-truth.mjs","scripts/governance-report.mjs","workers/pipeline/run_pipeline.py"]},"repository":{"id":60,"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":"haizan-ai-production-platform","full_name":"luoanwu/haizan-ai-production-platform","description":"嗨赞AI制作平台:音频分离、歌曲结构分析与歌词精对齐生产工作台","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":4063,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/haizan-ai-production-platform/languages","html_url":"https://gitea.g-hi.com/luoanwu/haizan-ai-production-platform","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/haizan-ai-production-platform","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/haizan-ai-production-platform.git","clone_url":"https://gitea.g-hi.com/luoanwu/haizan-ai-production-platform.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-07-14T12:25:49+08:00","updated_at":"2026-07-14T18:48:41+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":true,"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
|
6
|
1784029847
|
1784029937
|
0
|
1784029846
|
1784029937
|
group: governance-${{ github.workflow }}-${{ githu group: governance-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: "true"
...
|
governance-governance.yml-refs/heads/main
|
1
|
Edit
Delete
|