| event_payload |
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"468c7319f39e251cdf8eb96c3aa63f4db200a7db","after":"cf8ca525a24f7e8f7f02481cf1c6e72f68c3788a","compare_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/compare/468c7319f39e251cdf8eb96c3aa63f4db200a7db...cf8ca525a24f7e8f7f02481cf1c6e72f68c3788a","commits":[{"id":"cf8ca525a24f7e8f7f02481cf1c6e72f68c3788a","message":"Refresh outbox atomicity audit report\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/cf8ca525a24f7e8f7f02481cf1c6e72f68c3788a","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-05-11T09:43:33-07:00","added":[],"removed":[],"modified":["reports/outbox-atomicity-audit.latest.json"]},{"id":"6fda10921d20ba6f6dd1594727c9f38a6f10af2e","message":"Update migration governance and deploy gate\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/6fda10921d20ba6f6dd1594727c9f38a6f10af2e","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-05-11T08:19:05-07:00","added":["docs/governance/migration-deploy-gate-evidence-2026-05-11.md"],"removed":[],"modified":["AGENTS.md","CLAUDE.md","GEMINI.md","README.md","backend/prisma/DATABASE_DEPLOYMENT.md","backend/prisma/migrations/20260510130100_grant_app_create_open_readonly_audit/migration.sql","backend/prisma/migrations/README.md","docs/database/README.md","reports/migration-drift-diff.latest.sql","reports/migration-drift-summary.latest.json","reports/migration-safety-audit.latest.json"]},{"id":"31f7c23c6c02ab971f239702e6379e1cce991ae7","message":"Update backbone evidence and review queue contracts\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/31f7c23c6c02ab971f239702e6379e1cce991ae7","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-05-11T07:30:02-07:00","added":["backend/src/modules/ai-assist/__tests__/context-provider-registry.test.ts","backend/src/modules/ai-review-queue/ai-review-queue.controller.test.ts","backend/src/modules/ai-review-queue/ai-review-queue.docs.test.ts","backend/src/modules/ai-review-queue/ai-review-queue.schema.test.ts","backend/src/modules/customers/customer-lifecycle.service.ts","backend/src/shared/utils/money-wire.ts","backend/tests/api/customer-lifecycle.test.ts","backend/tests/api/finance-periods.test.ts","backend/tests/api/revenue-commission-settlements.test.ts","docs/governance/ai-process-context-owner-matrix-2026-05-10.md","docs/governance/ai-process-evidence-bundle-2026-05-10.md","docs/governance/local-business-source-of-truth-2026-05-10.md","docs/governance/sap-grade-business-backbone-workset-2026-05-10.md","docs/governance/tob-customer-lifecycle-evidence-bundle-2026-05-10.md","docs/governance/tob-customer-lifecycle-owner-matrix-2026-05-10.md","docs/governance/toc-store-operating-evidence-bundle-2026-05-10.md","docs/governance/toc-store-operating-owner-matrix-2026-05-10.md","e2e/test-results/results.json","e2e/tests/auth/customer-lifecycle-readmodel-smoke.spec.ts","frontend/src/api/modules/store-performance.test.ts","frontend/src/api/modules/stores.test.ts","frontend/src/views/customers/components/DetailLifecyclePanel.vue","frontend/src/views/store-performance/__tests__/store-performance-g4.smoke.test.ts","reports/sap-grade-business-backbone-workset-2026-05-10.json"],"removed":[],"modified":["AGENTS.md","CLAUDE.md","DOCKER.md","GEMINI.md","README.md","backend/Dockerfile","backend/package.json","backend/src/modules/ai-assist/ai-assist.docs.ts","backend/src/modules/ai-assist/ai-assist.schema.ts","backend/src/modules/ai-assist/ai-assist.service.ts","backend/src/modules/ai-assist/context-providers/collaboration.ts","backend/src/modules/ai-assist/context-providers/registry.ts","backend/src/modules/ai-assist/context-providers/types.ts","backend/src/modules/ai-assist/execution-ticket.ts","backend/src/modules/ai-review-queue/ai-review-queue.docs.ts","backend/src/modules/ai-review-queue/ai-review-queue.service.test.ts","backend/src/modules/ai-review-queue/ai-review-queue.service.ts","backend/src/modules/commissions/commission.docs.ts","backend/src/modules/contracts/contract.service.test.ts","backend/src/modules/contracts/contract.service.ts","backend/src/modules/contracts/payment-plan.service.ts","backend/src/modules/customers/customer.controller.ts","backend/src/modules/customers/customer.docs.ts","backend/src/modules/customers/customer.routes.ts","backend/src/modules/finance/finance-periods.service.test.ts","backend/src/modules/finance/finance-periods.service.ts","backend/src/modules/finance/finance.controller.ts","backend/src/modules/finance/finance.docs.ts","backend/src/modules/finance/finance.routes.ts","backend/src/modules/finance/finance.schema.ts","backend/src/modules/finance/finance.service.ts","backend/src/modules/opportunities/opportunity.service.ts","backend/src/modules/orders/order.service.test.ts","backend/src/modules/orders/order.service.ts","backend/src/modules/outbound/outbound.controller.ts","backend/src/modules/payments/payment-plan.service.ts","backend/src/modules/payments/payment-reconciliation.controller.ts","backend/src/modules/payments/payment-reconciliation.service.ts","backend/src/modules/payments/payment-record.service.ts","backend/src/modules/payments/payment-stats.service.ts","backend/src/modules/payments/payment.docs.ts","backend/src/modules/payments/payment.routes.ts","backend/src/modules/payments/payment.schema.ts","backend/src/modules/payments/payment.service.test.ts","backend/src/modules/quotes/quote.service.test.ts","backend/src/modules/quotes/quote.service.ts","backend/src/modules/renewals/renewal.service.test.ts","backend/src/modules/renewals/renewal.service.ts","backend/src/modules/revenue/ar-ledger.docs.ts","backend/src/modules/revenue/ar-ledger.service.test.ts","backend/src/modules/revenue/ar-ledger.service.ts","backend/src/modules/revenue/invoice.docs.ts","backend/src/modules/revenue/invoice.service.test.ts","backend/src/modules/revenue/invoice.service.ts","backend/src/modules/revenue/sales-commission-settlement.service.ts","backend/src/modules/revenue/sales-commission.controller.ts","backend/src/modules/revenue/sales-commission.routes.ts","backend/src/modules/revenue/sales-commission.schema.ts","backend/src/modules/revenue/sales-commission.service.ts","backend/src/modules/store-performance/store-performance.controller.ts","backend/src/modules/store-performance/store-performance.docs.ts","backend/src/modules/store-performance/store-performance.routes.ts","backend/src/modules/store-performance/store-performance.schema.ts","backend/src/modules/store-performance/store-performance.service.test.ts","backend/src/modules/store-performance/store-performance.service.ts","backend/src/modules/ticket-workflows/ticket-workflow.service.ts","backend/src/shared/services/event-log.service.ts","backend/src/shared/state-machines/__tests__/finance-state-machines.test.ts","backend/src/shared/state-machines/machines/accounting-period.machine.ts","backend/src/shared/state-machines/utils/transitions/finance.transitions.ts","backend/src/shared/utils/biz-code.ts","backend/tests/api/ai-assist.test.ts","backend/tests/api/ai-review-queue.test.ts","backend/tests/api/ar-ledger.test.ts","backend/tests/api/bootstrap-test-services.ts","backend/tests/api/cleanup-runtime.ts","backend/tests/api/contracts.test.ts","backend/tests/api/invoices.test.ts","backend/tests/api/opportunities.test.ts","backend/tests/api/orders.test.ts","backend/tests/api/payments.test.ts","backend/tests/api/quotes.test.ts","backend/tests/api/store-performance.test.ts","deploy/kubernetes/namespace.yaml","docs/deployment/deployment-checklist.md","docs/deployment/deployment-guide.md","docs/governance/baseline-and-experience.md","docs/governance/finance-amount-precision-rfc-2026-05-10.md","docs/governance/finance-center-audit-2026-05-10.md","docs/governance/finance-rls-coverage-rfc-2026-05-10.md","docs/guides/CONTRACT_COMPLIANCE_GUIDE.md","docs/operations/production-launch-checklist.md","docs/optimization/websocket-scaling.md","docs/plans/action-plan-2026.md","docs/plans/weakness-remediation-plan.md","docs/prd/ktv-location-selection-prd.md","docs/reports/system/analysis/swot-analysis.md","docs/reports/system/misc/phase-0-completion-report.md","e2e/.auth/admin.json","e2e/playwright-report/index.html","e2e/scripts/verify-view-governance.mjs","e2e/tests/auth/store-performance-smoke.spec.ts","e2e/tests/ui-modules/view-governance.generated.json","frontend/src/api/modules/ai-review-queue.ts","frontend/src/api/modules/ar-ledger.test.ts","frontend/src/api/modules/ar-ledger.ts","frontend/src/api/modules/cash-flow.ts","frontend/src/api/modules/customers.ts","frontend/src/api/modules/invoices.ts","frontend/src/api/modules/payments.ts","frontend/src/api/modules/reconciliation.ts","frontend/src/api/modules/store-performance.ts","frontend/src/api/modules/stores.ts","frontend/src/router/__tests__/ai-agent-menu-governance.test.ts","frontend/src/types/models.ts","frontend/src/views/ai-agents/__tests__/ai-review-queue.smoke.test.ts","frontend/src/views/ai-agents/review-queue/Index.vue","frontend/src/views/ar-ledger/Detail.vue","frontend/src/views/ar-ledger/Form.vue","frontend/src/views/ar-ledger/Index.vue","frontend/src/views/ar-ledger/__tests__/ar-ledger-g4.smoke.test.ts","frontend/src/views/ar-ledger/components/CollectionManager.vue","frontend/src/views/ar-ledger/components/StatementGenerator.vue","frontend/src/views/cash-flow/Index.vue","frontend/src/views/customer-balance/Index.vue","frontend/src/views/customers/Detail.vue","frontend/src/views/customers/__tests__/customers-g4.smoke.test.ts","frontend/src/views/customers/components/useCustomerDetail.ts","frontend/src/views/finance/Index.vue","frontend/src/views/invoice-requests/Detail.vue","frontend/src/views/invoice-requests/Form.vue","frontend/src/views/invoice-requests/Index.vue","frontend/src/views/invoice-verification/Index.vue","frontend/src/views/invoices/Detail.vue","frontend/src/views/invoices/Form.vue","frontend/src/views/invoices/Index.vue","frontend/src/views/invoices/__tests__/invoices-g4.smoke.test.ts","frontend/src/views/orders/composables/useOrderTimeline.ts","frontend/src/views/payments/Index.vue","frontend/src/views/payments/PlanForm.vue","frontend/src/views/payments/Reconcile.vue","frontend/src/views/payments/RecordForm.vue","frontend/src/views/payments/__tests__/payments-g4.smoke.test.ts","frontend/src/views/payments/__tests__/payments-index.smoke.test.ts","frontend/src/views/reconciliation/Index.vue","frontend/src/views/reconciliation/__tests__/reconciliation-g4.smoke.test.ts","frontend/src/views/reconciliation/components/ImportStatementDialog.vue","frontend/src/views/revenue/Detail.vue","frontend/src/views/revenue/Index.vue","frontend/src/views/store-performance/Index.vue","frontend/src/views/stores/__tests__/stores-g4.smoke.test.ts","reports/ai-assist-context-provider-redact.latest.json","reports/ai-assist-context-providers.latest.json","reports/ai-assist-coverage.latest.json","reports/ai-assist-skill-binding.latest.json","reports/api-route-contract-audit.latest.json","reports/api-route-contract-audit.latest.md","reports/approval-governance.latest.json","reports/approval-governance.latest.md","reports/docs-single-source-audit.latest.json","reports/docs-single-source-audit.latest.md","reports/field-payload-audit.latest.json","reports/formrules-zod-audit.latest.json","reports/outbox-atomicity-audit.latest.json","reports/response-columns-audit.latest.json","reports/rls-coverage-audit.latest.json","scripts/start-all.sh","shared/src/types/models.ts"]},{"id":"fb31eb4edf1efdac80568bb37a05d8003d6ad876","message":"Enable pg_stat_statements and harden port checks\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/fb31eb4edf1efdac80568bb37a05d8003d6ad876","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-05-10T06:18:40-07:00","added":[],"removed":[],"modified":["deploy/postgres/postgresql.conf","scripts/start-all.sh"]},{"id":"da6251405efb0c4825f1305efcb1f17d8d931349","message":"Remove broken stray submodule entries from .claude/worktrees\n\n历史 commit 1f8ccb4bb 误把 4 个临时 worktree 目录作为 gitlink (mode 160000)\n登记进 index,但既无 .gitmodules 配置也无对应 .git 文件,是破损 submodule。\n本提交从 index 移除这 4 项,恢复 .claude/worktrees/ 仅承载真实 git worktree\n的状态。本地目录保留为空占位,不影响日常 worktree 创建与清理。\n\nRemoved:\n- .claude/worktrees/amazing-bhaskara-130540\n- .claude/worktrees/epic-jang\n- .claude/worktrees/hungry-montalcini-932ea7\n- .claude/worktrees/magical-blackburn\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/da6251405efb0c4825f1305efcb1f17d8d931349","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-05-10T06:01:11-07:00","added":[],"removed":[".claude/worktrees/amazing-bhaskara-130540",".claude/worktrees/epic-jang",".claude/worktrees/hungry-montalcini-932ea7",".claude/worktrees/magical-blackburn"],"modified":[]}],"total_commits":0,"head_commit":{"id":"cf8ca525a24f7e8f7f02481cf1c6e72f68c3788a","message":"Refresh outbox atomicity audit report\n","url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub/commit/cf8ca525a24f7e8f7f02481cf1c6e72f68c3788a","author":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"committer":{"name":"luoguoguo","email":"luoguoguo@gmail.com","username":""},"verification":null,"timestamp":"2026-05-11T09:43:33-07:00","added":[],"removed":[],"modified":["reports/outbox-atomicity-audit.latest.json"]},"repository":{"id":6,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhi-omni-knowledge-hub","full_name":"luoanwu/juhi-omni-knowledge-hub","description":"巨嗨全域智库 - B2B RevOps 全生命周期平台","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":5249824,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhi-omni-knowledge-hub","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhi-omni-knowledge-hub.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhi-omni-knowledge-hub.git","original_url":"https://github.com/laoluojuhai/juhi-omni-knowledge-hub.git","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":19,"open_issues_count":0,"open_pr_counter":3,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-02-23T23:57:52+08:00","updated_at":"2026-05-01T09:06:01+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":false,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}... |