Files
34047007@qq.com a6cd99a4ca
CI / backend (push) Canceled after 0s
CI / frontend (push) Canceled after 0s
feat: initial commit - oncology literature search platform
OncoLit: a multi-tenant oncology literature search, feed, and
collaboration platform. Built with FastAPI + Vue 3 + PostgreSQL.
Includes PubMed pipeline, drug approvals, AI summaries, and
systematic review tools.
2026-07-27 07:59:18 +08:00

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