# ═══════════════════════════════════════════════════════════════════ # SciLit Oncology — 环境变量配置 # ═══════════════════════════════════════════════════════════════════ # # 复制为 .env 并填入实际值: # cp .env.example .env # # Docker 部署:docker compose 默认读取项目根目录的 .env 文件 # docker compose -f docker-compose.prod.yml --env-file .env up -d # # 符号说明: # ⚠️ 必填 — 无默认值,必须设置 # 🔒 敏感信息 — 生产环境务必使用强密码 # ────────────────────────────────────────────────────────────────── # 数据库(PostgreSQL + pgvector) # ────────────────────────────────────────────────────────────────── # Docker: postgresql+asyncpg://scilit:xxx@postgres:5432/scilit # 本地: postgresql+asyncpg://scilit:xxx@localhost:5432/scilit # ⚠️ PG_PASSWORD= # 生产环境改为高强度密码 # ────────────────────────────────────────────────────────────────── # 缓存(Redis) # ────────────────────────────────────────────────────────────────── # Docker: redis://default:xxx@redis:6379 # 本地: redis://localhost:6379 # ⚠️ REDIS_PASSWORD= # 生产环境必填 # ────────────────────────────────────────────────────────────────── # 搜索引擎(Elasticsearch) # ────────────────────────────────────────────────────────────────── ES_URL=http://elasticsearch:9200 # ────────────────────────────────────────────────────────────────── # JWT 认证 # ────────────────────────────────────────────────────────────────── # ⚠️ 生产环境务必改为 32 字节以上随机字符串。生成方式: # openssl rand -hex 32 # 🔒 JWT_SECRET=dev-secret-change-in-production JWT_ALGORITHM=HS256 ACCESS_TOKEN_EXPIRE_MINUTES=15 REFRESH_TOKEN_EXPIRE_DAYS=30 # ────────────────────────────────────────────────────────────────── # S3 对象存储(MinIO / 阿里云 OSS / AWS S3) # ────────────────────────────────────────────────────────────────── # ⚠️ S3_ENDPOINT= # MinIO: http://minio:9000,正式 S3 填 endpoint # 🔒 S3_ACCESS_KEY= # 🔒 S3_SECRET_KEY= S3_BUCKET=scilit-files S3_REGION=us-east-1 S3_SECURE=false # 生产环境设 true # ────────────────────────────────────────────────────────────────── # 业务配置 # ────────────────────────────────────────────────────────────────── SPECIALTY=oncology SPECIALTY_CONFIG_PATH=config/specialties # 公开访问基地址(SSO 回调、邮件链接等) # ⚠️ PUBLIC_BASE_URL=https://your-domain.com # CORS,逗号分隔 CORS_ORIGINS=["http://localhost:5173","http://localhost:8000"] # ────────────────────────────────────────────────────────────────── # AI 摘要(DeepSeek / 兼容 OpenAI SDK) # ────────────────────────────────────────────────────────────────── AI_API_KEY= AI_BASE_URL=https://api.deepseek.com/v1 AI_MODEL=deepseek-chat # ────────────────────────────────────────────────────────────────── # PubMed E-utilities # ────────────────────────────────────────────────────────────────── # 注册 NCBI API Key 后 10 req/s,无 key 仅 3 req/s PUBMED_API_KEY= # ────────────────────────────────────────────────────────────────── # 邮件(SMTP) # 腾讯云邮件推送(SES): smtp.qcloudmail.com:465(控制台生成 SMTP 密码) # 阿里云邮件推送: smtpdm.aliyun.com:80 # SendGrid: smtp.sendgrid.net:587 # 腾讯企业邮: smtp.exmail.qq.com:465(需 SMTP 授权码) # ────────────────────────────────────────────────────────────────── SMTP_HOST= SMTP_PORT=465 SMTP_USER= SMTP_PASSWORD= SMTP_FROM= # ────────────────────────────────────────────────────────────────── # 支付(微信 / Stripe) # ────────────────────────────────────────────────────────────────── WECHAT_APP_ID= WECHAT_MCH_ID= WECHAT_API_KEY= WECHAT_NOTIFY_URL= STRIPE_WEBHOOK_SECRET= # ────────────────────────────────────────────────────────────────── # 错误监控(Sentry,可选) # ────────────────────────────────────────────────────────────────── SENTRY_DSN= # ────────────────────────────────────────────────────────────────── # 调试 # ────────────────────────────────────────────────────────────────── DEBUG=false TESTING=false # 测试模式(绕过 Stripe webhook 签名验证等)