chengkai3
|
f3e5640290
|
fix:[FL-193][用户管理 - email 字段 NOT NULL 约束冲突]
修复 users.email 字段 NOT NULL 约束与前端可选表单不一致的问题。
## 改动内容
1. 添加数据库兼容性检查函数 `_ensure_user_email_nullable()`
- 检测 users.email 字段是否有 NOT NULL 约束
- 如果存在约束则自动移除,使字段变为可选
- 仅对 PostgreSQL 数据库生效
2. 在 `init_db()` 中调用该函数
- 确保应用启动时自动应用迁移
- 与现有兼容性检查函数保持一致的模式
3. 添加单元测试 `test_user_email_optional.py`
- 验证可以创建不带 email 的用户
- 验证可以创建带 email 的用户
- 验证直接使用 User 模型创建用户时 email 可为 None
## 修复方案
采用 Issue 中推荐的方案 1(数据库层面修复):
- 将 email 字段改为可选,与前端表单语义保持一致
- 用户可以选择不填写邮箱
- email 字段保持 UNIQUE 约束,但允许 NULL 值
## 相关文件
- api/app/core/database.py:523-546 - 新增兼容性检查函数
- api/app/core/database.py:586 - 在 init_db() 中调用
- api/tests/test_user_email_optional.py - 新增单元测试
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
|
2026-06-18 11:34:22 +08:00 |
|