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