From 55eacd66b30999aba784d2b888fd85f5b7d54fe0 Mon Sep 17 00:00:00 2001 From: MemRelay Date: Wed, 30 Sep 2026 15:23:08 +0800 Subject: [PATCH] create: Checkpoint 2026-09-30 07:23:04 UTC [b6fb44f08d] MemRelay-Operation: checkpoint-save:u02-ckpt-20260930-5aa45b4 MemRelay-Resource: f0e962f7-a330-4a62-97b3-a7792744664f --- ...nt 2026-09-30 07-23-04 UTC [b6fb44f08d].md | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 projects/25464650-ed5d-440e-b362-190f2852d451/Checkpoint 2026-09-30 07-23-04 UTC [b6fb44f08d].md diff --git a/projects/25464650-ed5d-440e-b362-190f2852d451/Checkpoint 2026-09-30 07-23-04 UTC [b6fb44f08d].md b/projects/25464650-ed5d-440e-b362-190f2852d451/Checkpoint 2026-09-30 07-23-04 UTC [b6fb44f08d].md new file mode 100644 index 0000000..8cb7342 --- /dev/null +++ b/projects/25464650-ed5d-440e-b362-190f2852d451/Checkpoint 2026-09-30 07-23-04 UTC [b6fb44f08d].md @@ -0,0 +1,53 @@ +--- +title: Checkpoint 2026-09-30 07:23:04 UTC [b6fb44f08d] +type: checkpoint +permalink: main/projects/25464650-ed5d-440e-b362-190f2852d451/checkpoint-2026-09-30-07-23-04-utc-b6fb44f08d +stable_id: f0e962f7-a330-4a62-97b3-a7792744664f +scope: project +memory_type: checkpoint +project_id: 25464650-ed5d-440e-b362-190f2852d451 +usage_profile_id: 0c9feb46-d06e-43cd-9ef0-c5813c84a998 +status: active +revision: 1 +request_id: u02-ckpt-20260930-5aa45b4 +created_at: '2026-09-30T07:23:04.400612+00:00' +updated_at: '2026-09-30T07:23:04.400612+00:00' +tags: +- ready-to-merge +- U-02 +- lane/identity +--- + +# 检查点:身份线复审 U-02 完成(未 merge main) + +## 线 / 任务 +- 线:身份 / 群 +- 任务:U-02(Gitea #40) +- 未做:U-03(对话密码锁键,等 admin 线) +- 分支:`feat/fix-u02-group-tx`(已普通推送到 origin,未强推、未合 main) +- 工作树:`E:\\code\\NixMsg-wt\\r2-u02` +- 基线:`origin/feat/fix-message-c04-c07` @ `786fe35`(含 C-04 `ac90495`) +- 提交:`5aa45b4` fix: 群写操作在事务内复核并去重建群成员 + +## 完成内容 +1. 加人/踢人/退群/转让/改名/解散在写事务内重读群主、成员关系、成员数;加人再复核目标端 enabled。argon2 仍在事务外。 +2. 建群/加人先去重、去掉自己,再按上限截断(超出 `group_full`),然后才密码校验。单请求成员数上限 `2*max_group_members`(至少 256),超出 `bad_request`。 +3. `createAdmin` 校验群主格式/存在/启用;成员去重;建成后 `emit` `member_added`(未改 emit 实现)。 +4. 迁移 `internal/store/migrations/0003_group_members_fk.sql`:`group_members` 指向 `groups(id) ON DELETE CASCADE`。当时最大号 0002,按 TASKS 4.2 取 0003。 +5. `docs/DEVIATIONS.md` 身份 I 节追加 `### 复审修复 U-02`。 + +## 验证 +- `go test ./internal/app/group/ ./internal/app/identity/ -count=1` 通过。 +- 覆盖:TalkGate 回调里解散后加人 `not_found` 且无孤儿行;重复成员建群只一条;后台群主不存在/停用失败;并发加人不超过上限;解散后直接 INSERT 成员被外键拒绝。 + +## 未做 / 注意 +- 未改 `emit`(T-01 另一分支仍是 goroutine+20ms)。 +- 未修 U-03。 +- 未改 message `RejectPendingTx`;void.go 沿用 C-04 调用。 +- 未 merge main。 +- `internal/store/db_test.go` 仍 `assertMigrationCount(..., 2)`,加 0003 后 `go test ./internal/store/` 会失败(本线不准改 store 测试)。合入前总控或 P 线改为 3。若 C-03 先占用 0003,rebase 时给本迁移改号。 + +## 给下个会话 +- 复用工作树 `E:\\code\\NixMsg-wt\\r2-u02` 与分支 `feat/fix-u02-group-tx`。 +- 不要从落后的 main 改 group 作废路径。 +- 不要删 `E:\\code\\NixMsg-wt\\fix3`。