Files
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

2.1 KiB
Raw Permalink Blame History

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 接口
  • 不影响现有业务逻辑

安全考虑

  • 默认密码应足够复杂
  • 建议首次登录后强制修改密码(后续功能)
  • 记录管理员创建日志用于审计