| event_payload |
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"2a7c134fce123669d2f0dfa1b7bccca165e4af50","after":"a85a595e93e12dd69e2d29151703ad272f568c4c","compare_url":"https://gitea.g-hi.com/luoanwu/juhai-ai-work-order-system/compare/2a7c134fce123669d2f0dfa1b7bccca165e4af50...a85a595e93e12dd69e2d29151703ad272f568c4c","commits":[{"id":"a85a595e93e12dd69e2d29151703ad272f568c4c","message":"chore(reports): check:runtime 回绑 @ a45b6c0(338 tests / 0 failures,clean)\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-ai-work-order-system/commit/a85a595e93e12dd69e2d29151703ad272f568c4c","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-23T18:12:05-07:00","added":[],"removed":[],"modified":["reports/dual-backend-behavior.latest.json","reports/runtime-acceptance.latest.json"]},{"id":"f4ebe0f2697de5e488ab48a1b918fa592132be76","message":"chore(reports): 静态门禁报告回绑 @ a45b6c0(clean,pnpm check 通过)\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-ai-work-order-system/commit/f4ebe0f2697de5e488ab48a1b918fa592132be76","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-23T18:12:05-07:00","added":[],"removed":[],"modified":["reports/agent-workflow-parity.latest.json","reports/configuration-consumer.latest.json","reports/contract-consumers.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/identity-boundary.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/transactional-write-chain.latest.json","reports/validation-source.latest.json","reports/write-governance.latest.json"]},{"id":"a45b6c0977467aa85bc55a5b7bfd3395b1688e15","message":"feat(discussion): 结束参与关系命令与协作讨论成员移除(DEC-042 60 秒承诺)\n\n核查发现本仓此前没有任何会让人失去工单访问的路径:处理人只在 TRIAGED → ASSIGNED 分派一次、\n参与人只能加不能结束,蓝图里「失去访问的用户仍在平台成员表中」并不成立,移除承诺无触发点。\n\n- 新命令 DELETE /api/v1/tickets/:id/participants/:participantId(ticket:update,双后端):写 endedAt、\n participantEnded 工单事件、审计、ticket.participant.ended outbox(实时事件类型与前端文案同步登记)\n- 同一事务:此人不再凭任何关系持有访问且讨论已配置时,写 discussion_membership_syncs 移除意图\n (新表,FORCE RLS,认领列与 notifications 同形;判定单源 contracts discussionMemberToRemove)\n- 成员同步 worker(NestJS DiscussionMembershipWorkerService / Fastify discussion-membership-worker):\n 显式开关 + 租户清单,间隔默认 15s、夹在 5—50s;执行前复核(重新获得访问记 SKIPPED),\n 服务主体 members:apply removed,失败退避、8 次死信,成败写本仓审计\n- 客户端包新增 removeTicketDiscussionMember(remove: 幂等键前缀、从未打开讨论时不移除、409 重试一次)\n- 验收:两后端各 +4 例(移除全链路 / 另有参与记录不移除 / 复核 SKIPPED / 宕机重试 / 开关关闭不写 / worker 装配),\n 契约 +3、客户端包 +4;真实平台联调 +1(结束 Bob 参与 → worker → 平台直连 403)4/4\n- 蓝图 §1 §4 §7 §8 §9、owner-matrix、工单事件清单、.env.example、turbo globalEnv 同步\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-ai-work-order-system/commit/a45b6c0977467aa85bc55a5b7bfd3395b1688e15","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-23T18:08:57-07:00","added":["apps/api-fastify/prisma/migrations/20260923180000_discussion_membership_sync/migration.sql","apps/api-fastify/src/modules/ticket-discussion/discussion-membership-sync.service.ts","apps/api-fastify/src/plugins/discussion-membership-worker.ts","apps/api-nestjs/prisma/migrations/20260923180000_discussion_membership_sync/migration.sql","apps/api-nestjs/src/ticket-discussion/discussion-membership-sync.service.ts"],"removed":[],"modified":["apps/api-fastify/.env.example","apps/api-fastify/prisma/schema.prisma","apps/api-fastify/src/app.ts","apps/api-fastify/src/modules/tickets/tickets.service.ts","apps/api-fastify/src/routes/tickets.ts","apps/api-fastify/test/ticket-discussion.acceptance.test.ts","apps/api-nestjs/.env.example","apps/api-nestjs/prisma/schema.prisma","apps/api-nestjs/src/ticket-discussion/ticket-discussion.module.ts","apps/api-nestjs/src/tickets/tickets.controller.ts","apps/api-nestjs/src/tickets/tickets.service.ts","apps/api-nestjs/test/ticket-discussion.acceptance.test.ts","apps/api-nestjs/test/ticket-discussion.platform-real.test.ts","apps/web/src/components/EventFeed.tsx","docs/domain/owner-matrix.md","docs/domain/ticket-discussion-blueprint.md","docs/domain/ticket-system-blueprint.md","packages/collaboration-conversation/src/index.test.ts","packages/collaboration-conversation/src/index.ts","packages/contracts/src/realtime.ts","packages/contracts/src/ticket-discussion.test.ts","packages/contracts/src/ticket-discussion.ts","turbo.json"]},{"id":"6c36701750bae6b50bfebfbad28010948b172339","message":"chore(reports): check:runtime 回绑 @ 16cbaf6(324 tests / 0 failures,clean)\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-ai-work-order-system/commit/6c36701750bae6b50bfebfbad28010948b172339","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-23T16:47:45-07:00","added":[],"removed":[],"modified":["reports/dual-backend-behavior.latest.json","reports/runtime-acceptance.latest.json"]},{"id":"14f67509f4825fab250d324710d8b6340a25095b","message":"chore(reports): 静态门禁报告回绑 @ 16cbaf6(clean,pnpm check 通过)\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-ai-work-order-system/commit/14f67509f4825fab250d324710d8b6340a25095b","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-23T16:47:45-07:00","added":[],"removed":[],"modified":["reports/agent-workflow-parity.latest.json","reports/configuration-consumer.latest.json","reports/contract-consumers.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/identity-boundary.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/statemachine-write-guard.latest.json","reports/transactional-write-chain.latest.json","reports/validation-source.latest.json","reports/write-governance.latest.json"]}],"total_commits":0,"head_commit":{"id":"a85a595e93e12dd69e2d29151703ad272f568c4c","message":"chore(reports): check:runtime 回绑 @ a45b6c0(338 tests / 0 failures,clean)\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-ai-work-order-system/commit/a85a595e93e12dd69e2d29151703ad272f568c4c","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-23T18:12:05-07:00","added":[],"removed":[],"modified":["reports/dual-backend-behavior.latest.json","reports/runtime-acceptance.latest.json"]},"repository":{"id":82,"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-work-order-system","full_name":"luoanwu/juhai-ai-work-order-system","description":"巨嗨 AI 工单系统:治理型工单核心与 Digital Employee OS 产品适配层","empty":false,"private":true,"fork":false,"template":false,"mirror":false,"size":2578,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-ai-work-order-system/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhai-ai-work-order-system","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-ai-work-order-system","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhai-ai-work-order-system.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhai-ai-work-order-system.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":2,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-08-26T09:08:57+08:00","updated_at":"2026-09-24T07:01:28+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"}}... |