# 用户昵称字段优化计划 > **任务名称**:新增 nickname 字段,保留 username_changed 字段 > **创建时间**:2025-01-14 > **状态**:待执行 --- ## 1. 任务背景 ### 问题分析 - 当前设计只有 `username` 字段(唯一、可修改一次) - `username_changed` 字段用于标记是否已修改过用户名 - 缺少灵活的显示名称字段(nickname) ### 决策结果 - ✅ 保留 `username_changed` 字段(性能最优、逻辑清晰) - ✅ 新增 `nickname` 字段(可重复、可随时修改) --- ## 2. 执行步骤 ### Step 1: 更新数据库设计文档 **文件**:`docs/需求/backend/04-services/user/user-service.md` **变更内容**: 1. 在 users 表 SQL 定义中新增 `nickname TEXT` 字段 2. 更新字段说明,明确 username vs nickname 的区别 3. 保留 `username_changed` 字段及其说明 4. 更新数据模型(User Model) 5. 更新 Schema 定义(UserUpdate, UserResponse) 6. 更新 API 接口文档(支持 nickname 修改) ### Step 2: 生成方案文档 **文件**:`docs/方案/user-nickname-field-design.md` **内容**: - 设计决策说明 - username vs nickname 对比 - 数据库变更 SQL - 代码示例 - 迁移脚本 --- ## 3. 涉及文件 | 文件路径 | 操作类型 | 说明 | | ---------------------------------------------------- | -------- | ------------------------- | | `docs/需求/backend/04-services/user/user-service.md` | 修改 | 更新数据库设计和 API 文档 | | `docs/方案/user-nickname-field-design.md` | 创建 | 生成详细方案文档 | --- ## 4. 关键变更点 ### 数据库变更 ```sql -- 在 users 表中新增 nickname 字段 ALTER TABLE users ADD COLUMN nickname TEXT; -- 可选:为现有用户初始化 nickname UPDATE users SET nickname = username WHERE nickname IS NULL; ``` ### 字段对比 | 字段 | 用途 | 唯一性 | 修改限制 | | ---------------- | ------------------------ | -------- | ---------- | | username | 账号标识 | 必须唯一 | 只能改一次 | | nickname | 显示名称 | 可重复 | 随时修改 | | username_changed | 标记 username 是否已修改 | - | 系统维护 | --- ## 5. 验证清单 - [ ] 数据库设计文档已更新 - [ ] 字段说明清晰准确 - [ ] API 接口文档已更新 - [ ] 方案文档已生成 - [ ] 用户确认无误 --- **等待用户批准执行...**