## 1. 成员与候选查询 - [x] 1.1 新增成员列表、候选列表、分页筛选与响应 DTO,包含账号状态、删除标记、关系时间、当前组信息、操作提示和可添加标记。 - [x] 1.2 在业务用户组 Query 中实现当前成员分页:以成员关系为主表,`Unscoped` 批量读取启用、禁用和软删除平台账号,支持用户名/手机号与账号状态筛选。 - [x] 1.3 实现成员候选分页:仅启用未删除平台用户,批量关联当前成员关系和用户组,支持全部、未分组、当前组、其他组筛选并计算 `add`、`already_member`、`move`。 - [x] 1.4 为用户组列表和详情批量投影实时成员数,计数包含禁用或已删除账号的未删除成员关系,避免逐组查询。 ## 2. 增量增加成员 - [x] 2.1 将成员增加请求与结果 DTO 调整为增量语义,响应返回请求数、新增数、迁移数、未变化数和账号集合。 - [x] 2.2 实现 `POST /business-user-groups/{id}/members` 用例:要求目标组启用且全部账号为启用未删除平台用户,按账号 ID 升序锁定并读取锁后归属。 - [x] 2.3 未分组账号新增关系、其他组账号更新到目标组、当前组账号幂等不写;请求外成员不修改,任一无效账号整批回滚。 - [x] 2.4 只为实际新增和迁移账号记录逐账号审计,审计包含原组与目标组;幂等未变化账号不写虚假变更事件。 ## 3. 增量移除成员 - [x] 3.1 新增组作用域移除请求与结果 DTO,允许目标组启用或停用,并支持禁用或软删除账号关系清理。 - [x] 3.2 实现 `DELETE /business-user-groups/{id}/members` 用例:按账号 ID 升序锁账号,要求全部请求账号锁后仍属于目标组,任一不匹配整批返回状态冲突。 - [x] 3.3 Store 新增带目标组和账号集合谓词的软删除操作,要求影响行数等于请求账号数,禁止清除其他组归属。 - [x] 3.4 为每个实际移除账号记录原组、空目标组与操作者审计,账号禁用或删除状态保持不变。 ## 4. 路由干净切换与装配 - [x] 4.1 新增 `GET /business-user-groups/{id}/members` 与 `GET /business-user-groups/{id}/member-candidates` Handler 和 RouteSpec,仅放行超级管理员与平台用户。 - [x] 4.2 将现有 `PUT /business-user-groups/{id}/members` 改为 POST,并新增同路径 DELETE;删除全局 `DELETE /business-user-groups/members`、旧 Handler 方法及专用 DTO,不保留别名。 - [x] 4.3 同步 `internal/bootstrap`、`cmd/api/docs.go`、`cmd/gendocs/main.go` 与 OpenAPI 描述,明确停用组只可移除、其他组成员增加时直接迁入。 ## 5. 验证与规格同步 - [ ] 5.1 在维护者指定测试环境验证成员分页、关键字、启停与软删除展示,候选归属筛选和三类操作提示。(阻塞:未提供维护者指定测试环境、账号和数据集) - [ ] 5.2 验证未分组新增、跨启用/停用组迁移、当前组幂等、无效账号整批回滚及请求外成员不变。(阻塞:未提供维护者指定测试环境、账号和数据集) - [ ] 5.3 验证启用/停用组移除、禁用/删除账号关系清理、其他组或无归属账号导致整批拒绝、重复移除冲突。(阻塞:未提供维护者指定测试环境、账号和数据集) - [ ] 5.4 验证并发迁移与移除同一账号的锁后裁决、逐账号审计、成员数实时变化和店铺所属组实时推导。(阻塞:未提供维护者指定测试环境、账号和数据集) - [x] 5.5 验证旧 PUT 与全局 DELETE 路由不可达,新 GET/POST/DELETE 路由和生成文档一致;运行 `gofmt -w`、`go build ./cmd/api ./cmd/worker`、`go run cmd/gendocs/main.go`。 - [x] 5.6 同步主 Spec 可达操作索引和证据矩阵,运行 `openspec validate add-business-user-group-member-management --strict`、`openspec doctor --json`、`openspec validate --all` 与 `./scripts/context-health.sh`。