# Change: API 启动时自动创建默认管理员账号 ## Why 当前系统没有默认管理员账号,首次部署后无法登录管理后台。需要在 API 服务启动时自动检查并创建默认管理员账号,确保系统可以立即使用。 **业务场景**: - 首次部署新环境(开发、测试、生产)时,需要有初始管理员账号 - 避免手动执行 SQL 或脚本创建管理员,减少人为错误 - 确保所有环境的初始管理员账号配置一致 ## What Changes - 在 `internal/bootstrap/bootstrap.go` 添加管理员初始化逻辑 - 检查数据库是否存在超级管理员账号(`user_type = 1`) - 如果不存在,创建默认超级管理员账号 - 默认配置支持两种方式(优先级:配置文件 > 代码默认值): - **配置文件方式**:在 `config.yaml` 添加 `default_admin` 配置节 - 用户名:可配置(默认 `admin`) - 密码:可配置(默认 `Admin@123456`) - 手机号:可配置(默认 `13800000000`) - **代码默认值**:当配置文件未提供时使用代码内置默认值 - 确保在无配置时也能正常工作 - 用户类型:超级管理员(`user_type = 1`) - 状态:启用 - 创建逻辑在所有组件初始化完成后、注册路由前执行 - 使用日志记录初始化结果(成功/跳过) ## Impact **影响的规格**: - `auth` - 添加启动时管理员初始化需求 **影响的代码**: - `pkg/config/config.go` - 添加 `DefaultAdminConfig` 配置结构 - `configs/config.yaml` - 添加 `default_admin` 配置节(可选) - `internal/bootstrap/bootstrap.go` - 添加 `initDefaultAdmin()` 函数 - `internal/service/account/service.go` - 添加内部创建方法(绕过上下文检查) - `pkg/constants/constants.go` - 添加代码内置默认值常量 **非破坏性变更**: - ✅ 仅在数据库无管理员时创建,不影响现有数据 - ✅ 不修改现有 API 接口 - ✅ 不影响现有业务逻辑 **安全考虑**: - 默认密码应足够复杂 - 建议首次登录后强制修改密码(后续功能) - 记录管理员创建日志用于审计