feat: v2 版本 #206
Reference in New Issue
Block a user
Delete Branch "v2"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
- 补全 backend/config.yaml 所有非敏感配置项并添加中文注释 - 重写 config.go:Load(workDir) 显式传参,BindEnv 绑定敏感字段,删除 AutomaticEnv - setDefaults 默认值与 config.yaml 保持一致(mimo/dashscope) - backend/.env.example 重写为纯敏感信息模板 - .env 固定在 /opt/camtalk/.env,docker-compose 通过绝对路径加载 - deploy.sh 统一使用 --env-file,移除硬编码 IP - deploy.yml 删除 CI 写入 .env 的步骤 - Dockerfile 移除 COPY config.yaml - 修复 deploy.yml 中 POSTGRES_PASSWORD 的 &{{ 拼写错误- postgres 和 redis 服务添加 env_file,统一从 /opt/camtalk/.env 读取配置 - 移除 postgres 中多余的 ${POSTGRES_USER/PASSWORD} 透传(env_file 已直接注入) - 移除 backend 中多余的 CAMTALK_STORAGE_DSN 和 CAMTALK_REDIS_PASSWORD 透传 - postgres healthcheck 改用 $$POSTGRES_USER(容器内 shell 变量)替代 ${POSTGRES_USER}(compose 变量替换) - 根本原因:environment 中的 ${VAR} 在 compose 解析时读取 shell 环境,为空时会覆盖 env_file 的值- docker-compose.yml 添加 APP_ENV=prod 强制生产环境 - 更新 .env.example 的 APP_ENV 注释说明(开发/生产差异) - CLAUDE.md 补充"配置环境切换"章节,说明本地开发和生产部署的配置切换方式 - 明确配置优先级:环境变量 > config.{env}.yaml > config.yaml > 默认值 配置差异: - 开发环境:debug 日志、关闭限流、允许所有 CORS - 生产环境:info/json 日志、启用限流、严格 CORS 白名单 验证通过: - 本地开发:默认加载 config.dev.yaml(env=dev, debug 日志) - 生产配置:APP_ENV=prod 加载 config.prod.yaml(env=prod, info 日志)实现内容: - 创建 trace/gin_logger.go,实现 GinLogger 和 GinRecovery 中间件 - GinLogger 自动记录所有 HTTP 请求的 method/path/status/latency/client_ip - GinRecovery 使用 zap 记录 panic 恢复信息,替代 gin.Recovery() - 修改 main.go 注册三层中间件:TraceMiddleware -> GinLogger -> GinRecovery - 所有日志自动附加 trace_id 和 request_id 字段 日志示例: { "level": "info", "ts": "2026-06-21T22:26:07.610+0800", "msg": "request completed", "trace_id": "01KVN964KSY6BFDKB9S932NXB8", "request_id": "01KVN964KSY6BFDKB9S932NXB8", "method": "GET", "path": "/api/health", "status": 200, "latency_ms": 0, "client_ip": "::1" } 测试:已验证健康检查接口日志正常输出