# 实施任务清单 ## 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 等)