110 lines
7.5 KiB
Bash
110 lines
7.5 KiB
Bash
# ═══════════════════════════════════════════════════════════════════
|
||||
|
|
# 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 签名验证等)
|