Files
gaokao-volunteer-system/.env.payment.example
Hermes Agent 43c1dbdf32
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): 内置 LLM 供应商配置与审核主链接入骨架
配置层:
- Settings 新增 llm_provider/api_key/base_url/model/timeout/max_tokens
- 生产 fail-closed: GAOKAO_LLM_PROVIDER=none 禁止, provider!=none 且 API key 为空禁止
- .env.docker.example / .env.payment.example 补 LLM 变量
- payment_readiness_doctor 将 LLM 配置纳入 readiness 检查

基础设施:
- 新增 data/llm/client.py: OpenAI-compatible LLMClient
- 新增 data/llm/prompts.py: audit/cwb/full_plan prompt 模板
- 新增 data/llm/tests/test_llm.py: 12 个单元测试

主链接入:
- ReviewResultContract 新增 llm_generated / llm_summary / llm_cwb_suggestions
- _start_review_result 优先尝试 LLM 生成审核结果, 失败时回退到原规则默认逻辑
- cwb 页面优先展示 LLM 生成的三档建议

测试适配:
- conftest / health / app / p2_4 tests 注入默认 LLM 测试配置,避免被新 fail-closed 提前拦截

验证:
- data/llm/tests 12 passed
- 核心 prod settings tests 62 passed
2026-06-28 12:11:43 +08:00

63 lines
2.2 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
# ===== 支付/安全/运营 =====
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=