| content |
{"Commits":[{"Sha1":"a85a595e9 {"Commits":[{"Sha1":"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","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-23T18:12:05-07:00"},{"Sha1":"f4ebe0f2697de5e488ab48a1b918fa592132be76","Message":"chore(reports): 静态门禁报告回绑 @ a45b6c0(clean,pnpm check 通过)\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-23T18:12:05-07:00"},{"Sha1":"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","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-23T18:08:57-07:00"},{"Sha1":"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","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-23T16:47:45-07:00"},{"Sha1":"14f67509f4825fab250d324710d8b6340a25095b","Message":"chore(reports): 静态门禁报告回绑 @ 16cbaf6(clean,pnpm check 通过)\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-23T16:47:45-07:00"}],"HeadCommit":{"Sha1":"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","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-23T18:12:05-07:00"},"CompareURL":"luoanwu/juhai-ai-work-order-system/compare/2a7c134fce123669d2f0dfa1b7bccca165e4af50...a85a595e93e12dd69e2d29151703ad272f568c4c","Len":11}... |