| event_payload |
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"ec29ace2dc8f4e3e51b716c3bb673b741f85b47f","after":"defd9d729060bf91f2fb1f38c165ea6b27e28780","compare_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/compare/ec29ace2dc8f4e3e51b716c3bb673b741f85b47f...defd9d729060bf91f2fb1f38c165ea6b27e28780","commits":[{"id":"defd9d729060bf91f2fb1f38c165ea6b27e28780","message":"feat(stack): Grafana 业务配置进仓——首页业务面 SLO、默认 zh-Hans 与 Asia/Shanghai、单组织新用户 Viewer、不外联;dev 补 root_url\n\n并行会话产出,按原样收入。compose grafana 服务 GF_* 十余项与 provisioning 同口径,四份仪表板 timezone 留空以继承服务默认,dev overlay 的 GF_SERVER_ROOT_URL 用主机端口;记录 stack/reports/grafana-config.2026-09-16.json(dev / staging 两套 compose config 渲染通过)。\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/defd9d729060bf91f2fb1f38c165ea6b27e28780","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-16T17:16:33-07:00","added":["stack/reports/grafana-config.2026-09-16.json"],"removed":[],"modified":["stack/README.md","stack/compose.yaml","stack/otel/grafana/provisioning/dashboards/json/platform-business-slo.json","stack/otel/grafana/provisioning/dashboards/json/platform-logs-traces.json","stack/otel/grafana/provisioning/dashboards/json/platform-otel-pipeline.json","stack/otel/grafana/provisioning/dashboards/json/platform-runtime.json","stack/overlays/dev.yaml"]},{"id":"e041207161fe42a87d6eb19b57b26fe2ad0a6859","message":"feat(runtime,contracts): 缺口代码 A-1 / A-2——审计 HTTP 面(audit-append.v1 / audit-query.v1 候选)、进程内 audit-ledger 端口、Q04 两模式协议与故障夹具\n\n按决策批次 2026-09-16 C-1(Q04 采纳两模式)落缺失清单 A-1 / A-2;顺序照 Q04:先协议与六类故障夹具,再改 M6,SDK 不动。\n\n- 协议(domain/audit-commit-protocol.ts):线上形状与 @juhai/client-audit(PR #44)逐字段一致,event_id / digest 只由内容决定;\n 提交模式由动作登记 commit_mode 决定(local-durable / central-prepared),调用方不可降级,result 须引用已回执 prepare;\n AUDIT_FAULT_MATRIX 六类注入点标 owner / m6;夹具评估器新增 append-event / commit / intake 三条规则,夹具 +18 例。\n- A-1:迁移 202609160002_audit_commit_protocol(commit_mode 列 + platform_audit_intake,FORCE RLS + 不可改;头引 DEC-020—023);\n AuditStore.appendIntake / getEvent(append 抽成事务内 appendInTx,语义不变);createAuditRuntime(PLATFORM_AUDIT_HTTP_ENABLED=1、\n 限 development/test、只收 JWT、普通角色);kit 增 PlatformModule.auditRuntime;NestJS POST /api/v1/audit/events、\n GET /api/v1/audit/events/{eventId}、GET /api/v1/audit/events/checkpoint;两份候选 OpenAPI 随仓(pending CHG-004)。\n- A-2:AuditSinkPort 按 PLATFORM_PERSISTENCE_ENABLED 在 audit-shape 与 audit-ledger 间切换(与 permission / fact 同款);\n event_id 与 client-audit 同 identity 派生,trace 缺失时派生稳定 32 hex。\n- 判责:整批结构错 400、producer ≠ JWT 主体 403、逐条拒绝在 200 的 rejected[];producer.client_id / app_id 都须等于 azp;\n 查询面只允许记录所属应用读,?access_token= 一律 401。\n\n复核:audit 单测 80 / 集成 19(隔离 PG)/ e2e 12(真实 NestJS + JWT,含端口一致性 sink 画像);根 pnpm check 全链 exit 0\n(check:fixtures 17 套件 184 例);报告未回绑,留给 clean 树上的 chore(reports)。未做:A-3(PR #44)、A-5 / A-6、G-1、S-5,\nOwner 侧四类故障义务待首个消费者接入后三方对账;见 docs/缺失模块完善清单-2026-09-16.md §9。\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/e041207161fe42a87d6eb19b57b26fe2ad0a6859","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-16T17:15:30-07:00","added":["contracts/candidates/contracts/audit-append-api.v1.openapi.json","contracts/candidates/contracts/audit-query-api.v1.openapi.json","runtime/apps/api-nestjs/src/platform/http/audit-events.controller.ts","runtime/modules/audit/prisma/migrations/202609160002_audit_commit_protocol/migration.sql","runtime/modules/audit/src/domain/audit-commit-protocol.test.ts","runtime/modules/audit/src/domain/audit-commit-protocol.ts","runtime/modules/audit/src/persistence/http-runtime.test.ts","runtime/modules/audit/src/persistence/http-runtime.ts","runtime/modules/audit/test/negative/append-intake.integration.ts","runtime/modules/kit/src/audit-runtime.ts","runtime/test/e2e/audit-http.test.ts"],"removed":[],"modified":["contracts/candidates/README.md","docs/runbook.md","docs/缺失模块完善清单-2026-09-16.md","docs/能力设计/设计问题收口方案.md","runtime/apps/api-nestjs/src/platform/platform-http.module.ts","runtime/modules/audit/prisma/schema.prisma","runtime/modules/audit/src/domain/fixture-evaluator.ts","runtime/modules/audit/src/domain/index.ts","runtime/modules/audit/src/index.ts","runtime/modules/audit/src/persistence/audit-store.ts","runtime/modules/audit/src/ports/audit-sink.port.test.ts","runtime/modules/audit/src/ports/audit-sink.port.ts","runtime/modules/audit/test/fixtures/audit.fixtures.json","runtime/modules/kit/src/index.ts"]}],"total_commits":0,"head_commit":{"id":"defd9d729060bf91f2fb1f38c165ea6b27e28780","message":"feat(stack): Grafana 业务配置进仓——首页业务面 SLO、默认 zh-Hans 与 Asia/Shanghai、单组织新用户 Viewer、不外联;dev 补 root_url\n\n并行会话产出,按原样收入。compose grafana 服务 GF_* 十余项与 provisioning 同口径,四份仪表板 timezone 留空以继承服务默认,dev overlay 的 GF_SERVER_ROOT_URL 用主机端口;记录 stack/reports/grafana-config.2026-09-16.json(dev / staging 两套 compose config 渲染通过)。\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/enterprise-platform/commit/defd9d729060bf91f2fb1f38c165ea6b27e28780","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-09-16T17:16:33-07:00","added":["stack/reports/grafana-config.2026-09-16.json"],"removed":[],"modified":["stack/README.md","stack/compose.yaml","stack/otel/grafana/provisioning/dashboards/json/platform-business-slo.json","stack/otel/grafana/provisioning/dashboards/json/platform-logs-traces.json","stack/otel/grafana/provisioning/dashboards/json/platform-otel-pipeline.json","stack/otel/grafana/provisioning/dashboards/json/platform-runtime.json","stack/overlays/dev.yaml"]},"repository":{"id":116,"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":"enterprise-platform","full_name":"luoanwu/enterprise-platform","description":"","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":15138,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform/languages","html_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/enterprise-platform","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/enterprise-platform.git","clone_url":"https://gitea.g-hi.com/luoanwu/enterprise-platform.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":42,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-09-11T07:33:25+08:00","updated_at":"2026-09-17T08:09:59+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":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"}}... |