Files
gaokao-volunteer-system/.env.payment.example
Hermes Agent 11fbb591c3
Some checks failed
CI / pytest (Python 3.10) (push) Has been cancelled
CI / pytest (Python 3.11) (push) Has been cancelled
CI / pytest (Python 3.12) (push) Has been cancelled
feat(llm): 多模型 fallback 支持
LLMClient 改为供应商链模式:
- 主供应商 + GAOKAO_LLM_FALLBACK_MODELS/PROVIDERS/API_KEYS/BASE_URLS
- 按顺序尝试, 第一个成功即返回
- 全部失败时抛出聚合错误(含供应商数量和最后错误)

配置层:
- Settings 新增 4 个 fallback 字段
- load_settings() 读取对应环境变量

新增测试(4 个):
- test_fallback_config_parsed: 验证 fallback 链解析正确
- test_fallback_no_config: 无 fallback 时只有主供应商
- test_fallback_falls_through_to_second_provider: 主失败自动切换
- test_fallback_all_fail_raises: 全部失败抛聚合错误

部署示例:
.env.docker.example / .env.payment.example 补充注释掉的 fallback 模板

验证: data/llm/tests 16 passed, admin/tests 40 passed
2026-06-28 13:34:17 +08:00

68 lines
2.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 支付宝真实凭据环境变量模板
# 复制为 .env.payment 并填写真实值后 source 使用
# 正式上线前必须完成一次真实 acceptance
# ===== LLM 供应商(自动生成志愿方案所必需) =====
# 当前产品要求系统内自动调用 LLM 完成审核/冲稳保/完整规划。
# 生产环境禁止 provider=none。
GAOKAO_LLM_PROVIDER=none
GAOKAO_LLM_API_KEY=
# 默认 DashScope OpenAI-compatible若用 OpenAI 则改为 https://api.openai.com/v1
GAOKAO_LLM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
GAOKAO_LLM_MODEL=qwen-plus
GAOKAO_LLM_TIMEOUT=60
GAOKAO_LLM_MAX_TOKENS=4096
# 可选:多模型 fallback逗号分隔主供应商失败时按顺序尝试
# GAOKAO_LLM_FALLBACK_MODELS=gpt-4o-mini,deepseek-chat
# GAOKAO_LLM_FALLBACK_PROVIDERS=openai,deepseek
# GAOKAO_LLM_FALLBACK_API_KEYS=sk-openai-key,sk-deepseek-key
# GAOKAO_LLM_FALLBACK_BASE_URLS=https://api.openai.com/v1,https://api.deepseek.com/v1
# ===== 支付/安全/运营 =====
GAOKAO_PAYMENT_APP_ID=
# 商户 ID支付宝商户平台 → 账户管理)
GAOKAO_PAYMENT_MERCHANT_ID=
# 应用私钥文件路径RSA2
# 生成方式: openssl genrsa -out app_private_key.pem 2048
GAOKAO_PAYMENT_PRIVATE_KEY_PATH=
# 支付宝公钥文件路径
# 从支付宝开放平台 → 应用管理 → 接口加签方式 → 查看支付宝公钥
GAOKAO_PAYMENT_ALIPAY_PUBLIC_KEY_PATH=
# 异步通知 URL必须是公网可访问的 HTTPS 地址)
# 格式: https://your-domain.com/pay/alipay/notify
GAOKAO_PAYMENT_NOTIFY_URL=
# 同步返回 URL支付完成后浏览器跳转
# 格式: https://your-domain.com/pay/alipay/return
GAOKAO_PAYMENT_RETURN_URL=
# 支付服务商(固定为 alipay切换到真实支付
GAOKAO_PAYMENT_PROVIDER=alipay
# 支付网关基础 URL
# 沙箱: https://openapi-sandbox.dl.alipaydev.com/gateway.do
# 生产: https://openapi.alipay.com/gateway.do
GAOKAO_PAYMENT_BASE_URL=
# Webhook 签名验证密钥
GAOKAO_PAYMENT_WEBHOOK_SECRET=
# 订单加密密钥Fernet
# 生成方式: python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
GAOKAO_ORDERS_FERNET_KEY=
# JWT Secret至少 32 字符)
# 生成方式: python3 -c "import secrets; print(secrets.token_hex(32))"
GAOKAO_JWT_SECRET=
# Portal Token Secret至少 32 字符,必须与 JWT_SECRET 不同)
# 生成方式: python3 -c "import secrets; print(secrets.token_hex(32))"
GAOKAO_PORTAL_TOKEN_SECRET=
# 管理员密码(至少 10 字符,覆盖 3 类字符)
GAOKAO_ADMIN_PASS=