MemRelay-Operation: checkpoint-save:u02-ckpt-20260930-5aa45b4 MemRelay-Resource: f0e962f7-a330-4a62-97b3-a7792744664f
54 lines
2.7 KiB
Markdown
54 lines
2.7 KiB
Markdown
---
|
||
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`。
|