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
41 lines
1.7 KiB
Plaintext
41 lines
1.7 KiB
Plaintext
GAOKAO_ADMIN_BIND=0.0.0.0
|
||
GAOKAO_ENV=prod
|
||
GAOKAO_ADMIN_PORT=8000
|
||
GAOKAO_ADMIN_USER=admin
|
||
GAOKAO_ADMIN_PASS=change-me-now-admin-pass
|
||
GAOKAO_JWT_SECRET=replace-with-64-char-jwt-secret-before-production-1234567890abcdef
|
||
GAOKAO_PORTAL_TOKEN_SECRET=replace-with-independent-64-char-portal-secret-before-production-abcdef1234567890
|
||
GAOKAO_ORDERS_FERNET_KEY=replace-with-strong-orders-fernet-secret-before-production
|
||
GAOKAO_PORTAL_UPLOAD_DIR=/var/lib/gaokao/portal_uploads
|
||
GAOKAO_PORTAL_UPLOAD_MAX_BYTES=5242880
|
||
GAOKAO_PORTAL_UPLOAD_MAX_FILES=5
|
||
# LLM 自动审核 / 方案生成(生产环境必须配置)
|
||
GAOKAO_LLM_PROVIDER=dashscope
|
||
GAOKAO_LLM_API_KEY=replace-with-real-llm-api-key
|
||
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_PROVIDER=mock
|
||
GAOKAO_PAYMENT_BASE_URL=https://example.com
|
||
GAOKAO_PAYMENT_WEBHOOK_SECRET=replace-with-independent-payment-webhook-secret
|
||
GAOKAO_PAYMENT_NOTIFY_URL=
|
||
GAOKAO_PAYMENT_RETURN_URL=
|
||
GAOKAO_PAYMENT_APP_ID=
|
||
GAOKAO_PAYMENT_PRIVATE_KEY_PATH=
|
||
GAOKAO_PAYMENT_ALIPAY_PUBLIC_KEY_PATH=
|
||
GAOKAO_SMTP_HOST=
|
||
GAOKAO_SMTP_PORT=25
|
||
GAOKAO_SMTP_SENDER=
|
||
GAOKAO_SMTP_USER=
|
||
GAOKAO_SMTP_PASS=
|
||
GAOKAO_SMTP_USE_TLS=false
|
||
GAOKAO_SMTP_USE_SSL=false
|
||
GAOKAO_ALERT_RECIPIENTS=
|
||
GAOKAO_ALERT_WEBHOOK_URLS=
|
||
GAOKAO_OPS_ALERT_LOG=/var/lib/gaokao/ops-alerts.jsonl |