Skip to content

fix(api): 移除硬编码 OpenAI 密钥;统一配置 schema 为 hertz.port#1

Open
RelientS wants to merge 1 commit intomainfrom
dev/relient
Open

fix(api): 移除硬编码 OpenAI 密钥;统一配置 schema 为 hertz.port#1
RelientS wants to merge 1 commit intomainfrom
dev/relient

Conversation

@RelientS
Copy link
Copy Markdown
Collaborator

  • 变更内容

    • openai: 删除硬编码的 OpenAI API Key,改为仅从环境变量 OPENAI_API_KEY 读取;当缺少密钥或 externalDashboardURL 时走离线降级(不会报错,返回结构化占位数据)。
    • config: 将开发配置 services/api/configs/dev.yaml 统一为以下 schema,和程序读取保持一致:
      • service.name: api
      • hertz.port: "8080"
      • logger.level: "info"
    • docs: 在 services/api/README.md 增加“Config”章节,说明加载顺序、env 覆盖、YAML 示例。
  • 背景动机

    • 安全合规:移除仓库中提交的敏感密钥,避免泄露风险,遵守“不提交 secrets”规范。
    • 配置一致性:此前 dev.yaml 使用 server.port,与代码期望的 hertz.port 不一致;统一 schema 以减少困扰。
  • 影响范围

    • AI 分析端点 /api/v1/pendle/points/analyze
      • OPENAI_API_KEY 时将始终使用离线降级(行为更稳定且安全)。
      • 设置 OPENAI_API_KEY 后恢复在线分析。
    • 配置加载:
      • 开发默认回退 services/api/configs/dev.yaml(已更新为新 schema)。
      • 运行时优先读取 RUNTIME_CONF_ROOT/config.yamlmake prepare-conf 生成的结构与新 schema 一致)。
  • 兼容性/迁移指引

    • 如果你在本地/部署中自定义了 config.yaml 且使用 server.port
      • 请修改为 hertz.port: "<port>"
    • 未自定义配置或使用 make prepare-conf 的场景,无需变更。
  • 风险与缓解

    • 线上若仍依赖旧字段 server.port 会导致端口未按预期生效
      • 缓解:本 PR 已同步 README 配置示例;建议在部署前检查配置键名。
    • AI 分析在无密钥环境下不再尝试外呼
      • 缓解:端点返回 200 + 离线占位结构,前端不受阻塞。
  • 验证步骤

    • 后端本地运行:
      • make dev-backend NAME=api PORT=8080
      • 访问 GET /healthzGET /api/v1/ping 正常
    • AI 分析端点:
      • 未设置 OPENAI_API_KEYGET /api/v1/pendle/points/analyze?... 返回离线占位数据(含 summary/evidence)
      • 设置 OPENAI_API_KEY:返回在线分析结构
    • 配置校验:
      • 使用 services/api/configs/dev.yamloutput/conf/config.yamlhertz.port 字段)启动,端口生效
  • 相关文件

    • services/api/internal/client/openai/oai.go
    • services/api/configs/dev.yaml
    • services/api/README.md
  • 清单

    • 不再包含明文密钥
    • dev 配置与代码读取一致
    • README 已描述新 schema 与加载顺序
    • 本地验证通过(健康检查、基础路由、AI 降级逻辑)

- openai: read OPENAI_API_KEY from env; offline fallback if missing
- config: switch dev.yaml to {service.name,hertz.port,logger.level}
- docs: README config section clarifies schema and load order
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant