Files
junhong_cmp_fiber/openspec/changes/archive/2026-01-14-add-default-admin-init/proposal.md
huang 9c399df6bc feat(auth): 新增系统启动时自动初始化默认超级管理员功能
- 新增默认管理员自动初始化逻辑,系统启动时检查并创建超级管理员账号
- 支持通过配置文件自定义账号信息(优先级:配置文件 > 代码默认值)
- 新增 CreateSystemAccount 方法用于系统内部账号创建
- 新增默认管理员配置项和常量定义
- 更新 README.md 添加默认账号使用说明
- 归档 OpenSpec 变更提案及完整文档

相关文件:
- internal/bootstrap/admin.go: 管理员初始化逻辑
- internal/service/account/service.go: 系统账号创建方法
- pkg/config/config.go: 默认管理员配置结构
- pkg/constants/constants.go: 默认值常量定义
- docs/add-default-admin-init/功能说明.md: 完整功能文档
2026-01-14 10:53:42 +08:00

50 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 接口
- ✅ 不影响现有业务逻辑
**安全考虑**
- 默认密码应足够复杂
- 建议首次登录后强制修改密码(后续功能)
- 记录管理员创建日志用于审计