| event_payload |
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"3744c329b0b337a61367a86167e3ddf2a878f373","after":"67811861157d0cc927d11306ab6118f0518e0e96","compare_url":"https://gitea.g-hi.com/luoanwu/juhai-ai-hr-system/compare/3744c329b0b337a61367a86167e3ddf2a878f373...67811861157d0cc927d11306ab6118f0518e0e96","commits":[{"id":"67811861157d0cc927d11306ab6118f0518e0e96","message":"chore(reports): 静态门禁与聚合报告回绑 @ 9434abb\n\n在 clean 9434abb 上一次 check:governance 运行,15 份静态子报告与聚合报告共享同一 runId。聚合棘轮仍红,仍是早于 A1 的两项既有回退(O18 宿主 UI 报告陈旧;六份验收报告源码指纹属 d338bf1),本提交只记录事实,不放宽基线。\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-ai-hr-system/commit/67811861157d0cc927d11306ab6118f0518e0e96","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-26T16:26:56-07:00","added":[],"removed":[],"modified":["reports/app-manifest.latest.json","reports/contract-consumers.latest.json","reports/database-rls.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-layer.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},{"id":"9434abb30247e09ca3269a03053a86b1f3cc3f46","message":"feat(personnel): 读模型暴露 Person canonical ID per_——目录/花名册/离职档案/到期/试用期 personCanonicalId,主档/履历 person.canonicalId,双时间投影按快照→宿主补齐→失败关闭解析(H8 读模型半边,DEC-001 决定 1)\n\n- contracts:personnelDirectoryItem / organizationRosterMember / personnelAlumniItem / employmentExpiryItem / personnelProbationItem 新增必填 personCanonicalId;personnelProfileResponse / personnelTimelineResponse 的 person 新增 canonicalId;personSnapshotSchema 接受可选 canonicalId,PersonnelTemporalContext.personCanonicalIds 为宿主补齐通道,personCanonicalIdOf 以 personCanonicalIdSchema 校验并在快照与映射都取不到时抛错;非双时间的到期 / 试用期 / 履历构造器输入同步携带\n- 双后端:loadTemporalFacts 对迁移 20260926120000 之前没有 canonical_id 的历史 Person 快照,从当前 people 行按 id 补齐(per_ 对同一行不可变、触发器拒绝改写,故不是伪造历史,仍缺即投影失败关闭);当前路径的主档 / 花名册 / 目录 / 履历与到期 / 试用期映射直接取 person.canonicalId\n- Web:主档事实区展示「自然人标识(per_)」\n- 测试:contracts 新增 personnel-temporal.test.ts(快照自带 / 宿主补齐 / 失败关闭与畸形 canonical 拒绝),既有夹具补 per_,全套 211/211;NestJS / Fastify personnel.http + personnel.integration 各 40/40(隔离 PostgreSQL 62 迁移),HTTP 用例显式断言目录 personCanonicalId 与主档 / 履历 person.canonicalId 等于 DB 列且符合 per_ + ULID;变异探针(删掉目录当前路径映射)准确红\n- CLAUDE.md「Person canonical ID」条目与控制面接入蓝图 H8 / §10 回灌;Fact 载荷 per_(需 Catalog 升版)、Entity Catalog 登记与 OS 产品层投影仍未闭环\n\n本地证据(2026-09-26):三端 typecheck、lint;naming / validation / contract-consumers / dual-backend / write-guard / fork-readiness / governance-docs / docs-truth 通过。\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-ai-hr-system/commit/9434abb30247e09ca3269a03053a86b1f3cc3f46","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-26T16:26:33-07:00","added":["packages/contracts/src/personnel-temporal.test.ts"],"removed":[],"modified":["CLAUDE.md","apps/api-fastify/src/modules/personnel/personnel.service.ts","apps/api-fastify/test/personnel.http.test.ts","apps/api-nestjs/src/personnel/personnel.service.ts","apps/api-nestjs/test/personnel.http.test.ts","apps/web/src/components/PersonnelDirectoryView.tsx","docs/domain/enterprise-control-plane-integration-blueprint.md","packages/contracts/src/personnel-temporal.ts","packages/contracts/src/personnel.test.ts","packages/contracts/src/personnel.ts"]}],"total_commits":0,"head_commit":{"id":"67811861157d0cc927d11306ab6118f0518e0e96","message":"chore(reports): 静态门禁与聚合报告回绑 @ 9434abb\n\n在 clean 9434abb 上一次 check:governance 运行,15 份静态子报告与聚合报告共享同一 runId。聚合棘轮仍红,仍是早于 A1 的两项既有回退(O18 宿主 UI 报告陈旧;六份验收报告源码指纹属 d338bf1),本提交只记录事实,不放宽基线。\n\nCo-Authored-By: Claude Fable 5.1 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-ai-hr-system/commit/67811861157d0cc927d11306ab6118f0518e0e96","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-26T16:26:56-07:00","added":[],"removed":[],"modified":["reports/app-manifest.latest.json","reports/contract-consumers.latest.json","reports/database-rls.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/os-product-layer.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/validation-source.latest.json"]},"repository":{"id":83,"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":"juhai-ai-hr-system","full_name":"luoanwu/juhai-ai-hr-system","description":"巨嗨 AI 人事系统:受治理全栈基础框架","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":8541,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-ai-hr-system/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhai-ai-hr-system","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-ai-hr-system","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhai-ai-hr-system.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhai-ai-hr-system.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":3,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-08-26T09:35:18+08:00","updated_at":"2026-09-27T06:56: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":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"}}... |