All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m33s
主要改动: - 新增交互式环境配置脚本 (scripts/setup-env.sh) - 新增本地启动快捷脚本 (scripts/run-local.sh) - 新增环境变量模板文件 (.env.example) - 部署模式改版:使用嵌入式配置 + 环境变量覆盖 - 添加对象存储功能支持 - 改进 IoT 卡片导入任务 - 优化 OpenAPI 文档生成 - 删除旧的配置文件,改用嵌入式默认配置
83 lines
3.0 KiB
Markdown
83 lines
3.0 KiB
Markdown
# 实施任务清单
|
||
|
||
## 1. 配置嵌入模块
|
||
|
||
- [x] 1.1 创建 `pkg/config/defaults/config.yaml` 嵌入配置文件
|
||
- [x] 1.2 创建 `pkg/config/embedded.go`,实现 go:embed 加载逻辑
|
||
- [x] 1.3 重写 `pkg/config/loader.go`,使用嵌入配置 + 环境变量覆盖
|
||
- [x] 1.4 更新 `pkg/config/config.go` 中的 Validate() 方法,添加必填配置验证
|
||
- [x] 1.5 删除 `pkg/config/watcher.go` 配置热重载模块
|
||
- [x] 1.6 编写配置加载单元测试
|
||
|
||
## 2. 目录初始化模块
|
||
|
||
- [x] 2.1 创建 `pkg/bootstrap/directories.go`,实现 EnsureDirectories() 函数
|
||
- [x] 2.2 实现权限降级策略(权限不足时使用临时目录)
|
||
- [x] 2.3 编写目录初始化单元测试
|
||
- [x] 2.4 移除 `pkg/storage/s3.go` 中的目录创建逻辑
|
||
|
||
## 3. 应用入口改造
|
||
|
||
- [x] 3.1 更新 `cmd/api/main.go`,在配置加载后调用 bootstrap.EnsureDirectories()
|
||
- [x] 3.2 更新 `cmd/worker/main.go`,同样调用目录初始化
|
||
- [x] 3.3 调整 `internal/bootstrap/` 中的初始化顺序(无需修改,顺序正确)
|
||
|
||
## 4. Docker 配置更新
|
||
|
||
- [x] 4.1 更新 `Dockerfile.api`:预创建目录、移除 COPY configs
|
||
- [x] 4.2 更新 `Dockerfile.worker`:预创建目录、移除 COPY configs
|
||
- [x] 4.3 重写 `docker-compose.prod.yml`:纯环境变量配置
|
||
- [x] 4.4 简化 `docker/entrypoint-api.sh`:移除配置相关逻辑
|
||
|
||
## 5. 清理旧文件
|
||
|
||
- [x] 5.1 删除 `configs/config.yaml`
|
||
- [x] 5.2 删除 `configs/config.dev.yaml`
|
||
- [x] 5.3 删除 `configs/config.staging.yaml`
|
||
- [x] 5.4 删除 `configs/config.prod.yaml`
|
||
- [x] 5.5 删除 `configs/` 目录(如果为空)
|
||
|
||
## 6. 文档更新
|
||
|
||
- [x] 6.1 更新 README.md 部署说明
|
||
- [x] 6.2 更新环境变量列表文档(创建 docs/environment-variables.md)
|
||
- [x] 6.3 更新关键文档(auth-usage-guide, object-storage, add-default-admin-init)
|
||
|
||
## 7. 验证
|
||
|
||
- [x] 7.1 本地运行测试:`go test ./...`(config 和 bootstrap 测试通过)
|
||
- [x] 7.2 本地 Docker 构建测试(API 和 Worker 镜像构建成功)
|
||
- [x] 7.3 本地 docker-compose 启动测试(需要外部 PostgreSQL/Redis,配置验证通过)
|
||
- [x] 7.4 验证环境变量覆盖功能(TestLoad_EnvOverride 通过)
|
||
|
||
---
|
||
|
||
## 实施完成总结
|
||
|
||
**完成日期**: 2026-01-24
|
||
|
||
### 主要变更
|
||
|
||
1. **配置嵌入机制**
|
||
- 默认配置嵌入二进制文件 (`pkg/config/defaults/config.yaml`)
|
||
- 环境变量覆盖使用 `JUNHONG_` 前缀
|
||
- 移除配置热重载功能
|
||
|
||
2. **目录自动初始化**
|
||
- `pkg/bootstrap/directories.go` 实现 `EnsureDirectories()`
|
||
- 支持权限降级(无权限时使用临时目录)
|
||
|
||
3. **Docker 部署简化**
|
||
- 移除 `COPY configs` 指令
|
||
- 纯环境变量配置
|
||
- 更新 `docker-compose.prod.yml` 和 `entrypoint-api.sh`
|
||
|
||
4. **文档更新**
|
||
- 创建 `docs/environment-variables.md` 完整环境变量文档
|
||
- 更新 README.md 部署说明
|
||
- 更新相关功能文档
|
||
|
||
### 后续工作(可选)
|
||
|
||
- 更新剩余的旧文档(rate-limiting.md, deployment-guide.md 等)
|