Files
huang 45aa7deb87
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m33s
feat: 添加环境变量管理工具和部署配置改版
主要改动:
- 新增交互式环境配置脚本 (scripts/setup-env.sh)
- 新增本地启动快捷脚本 (scripts/run-local.sh)
- 新增环境变量模板文件 (.env.example)
- 部署模式改版:使用嵌入式配置 + 环境变量覆盖
- 添加对象存储功能支持
- 改进 IoT 卡片导入任务
- 优化 OpenAPI 文档生成
- 删除旧的配置文件,改用嵌入式默认配置
2026-01-26 10:28:29 +08:00

2.4 KiB
Raw Blame History

bootstrap-init 规范

应用启动时的集中化初始化机制,确保所有必需目录在组件初始化前创建完成。

ADDED Requirements

Requirement: 集中化目录初始化

系统 SHALL 在应用启动时通过 bootstrap.EnsureDirectories() 函数统一创建所有必需的运行时目录。

目录列表:

  • 临时文件目录(从 config.Storage.TempDir 读取)
  • 应用日志目录(从 config.Logging.AppLog.Filename 提取目录部分)
  • 访问日志目录(从 config.Logging.AccessLog.Filename 提取目录部分)

Scenario: 成功创建所有目录

  • WHEN 应用启动且所有目录路径可写
  • THEN 系统创建所有必需目录,权限为 0755
  • AND 函数返回 nil

Scenario: 目录已存在

  • WHEN 应用启动且目录已存在
  • THEN 系统跳过创建,不报错
  • AND 函数返回 nil

Scenario: 配置路径为空

  • WHEN 某个目录配置为空字符串
  • THEN 系统跳过该目录的创建
  • AND 不影响其他目录的创建

Requirement: 权限降级策略

系统 SHALL 在目录创建权限不足时自动降级到系统临时目录。

Scenario: 权限不足时降级

  • WHEN 创建目录因权限不足失败os.IsPermission 为 true
  • THEN 系统使用 os.TempDir()/junhong/<原目录名> 作为降级路径
  • AND 记录 WARN 级别日志,包含原路径和降级路径
  • AND 函数返回降级后的路径

Scenario: 非权限错误

  • WHEN 创建目录失败且不是权限问题
  • THEN 系统返回错误,应用启动失败
  • AND 错误信息包含目录路径和原始错误

Requirement: 初始化顺序

系统 SHALL 确保目录初始化在所有组件初始化之前完成。

Scenario: 正确的初始化顺序

  • WHEN 应用启动
  • THEN 执行顺序为:
    1. config.Load() 加载配置
    2. bootstrap.EnsureDirectories() 创建目录
    3. logger.Init() 初始化日志
    4. 其他组件初始化

Scenario: 目录初始化失败

  • WHEN bootstrap.EnsureDirectories() 返回错误
  • THEN 应用立即退出,不继续初始化其他组件
  • AND 错误信息输出到 stderr

Requirement: 移除分散的目录创建逻辑

系统 SHALL 移除各组件中分散的目录创建代码。

Scenario: S3Provider 不再创建目录

  • WHEN 初始化 S3Provider
  • THEN 不再调用 os.MkdirAll 创建临时目录
  • AND 假设目录已由 bootstrap 创建