
本次我们围绕用户管理能力做了两轮 OpenSpec 变更与实现:
第一轮:补齐用户 CRUD(含扩展字段与唯一约束)。
第二轮:将删除改为软删除(status 语义升级)并新增 title 字段。
一、第一轮变更:add-user-management-api1. 产出 OpenSpec 工件
创建 proposal/design/specs/tasks 并达到 apply-ready。
路径在归档后为:2026-04-08-add-user-management-api
2. 实现代码(按 tasks 落地)
新增用户模块 Controller/Service/Mapper/DTO/Entity/异常处理/统一返回。
完成 6 个 API:POST/GET(id)/GET(page)/PUT/PATCH/DELETE。

核心文件包括:
UserController.javaUserServiceImpl.javaUserMapper.javaUserMapper.xmlschema.sql3. 测试与文档
扩展了集成测试,覆盖 CRUD 正常路径与异常路径。
补充了 API 示例文档:HELP.md
4. 归档
该变更已归档完成。
二、第二轮变更:user-soft-delete-and-title1. 产出 OpenSpec 工件
proposal -> design -> specs -> tasks 全部完成。
变更后完成 apply(19/19 任务),并最终归档:2026-04-11-user-soft-delete-and-title
2. 关键业务变更
删除改为软删除:DELETE 不再物理删行,改为 status=-1。有效状态统一:status=0 为有效。新增 title 字段并贯通创建/查询/更新链路。查询与分页默认只返回有效用户(status=0)。3. 代码层改造
模型层新增 title 字段(Entity/DTO/Response)。SQL 层增加 status=0 过滤、删除改 softDeleteById。Service 层确保默认 status=0、已软删用户按不存在处理。测试覆盖软删除后不可查、不可更新、重复删除等场景。4. 规范同步与归档
delta spec 已同步到主规范:spec.md
归档前完成了 artifact/tasks/sync 全量检查与确认。
三、数据库迁移部分要求“现有数据与表结构怎么处理”,已提供并落地迁移脚本:
2026-04-10-user-status-backfill.sql

脚本包含
迁移前检查备份表创建与数据备份按需新增 titlestatus 归一化与默认值修正可选索引创建迁移后检查回滚草案四、最终状态两个变更都已完成并归档。
主规范已同步到最新用户管理语义(含软删除与 title)。
代码、测试、文档、迁移脚本均已覆盖并联动。
当前 active change 为空,处于“可继续新需求”的干净状态。