feat: initial commit - oncology literature search platform
CI / backend (push) Canceled after 0s
CI / frontend (push) Canceled after 0s

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.
This commit is contained in:
34047007@qq.com
2026-07-27 07:59:18 +08:00
commit a6cd99a4ca
473 changed files with 151472 additions and 0 deletions
+109
View File
@@ -0,0 +1,109 @@
# ═══════════════════════════════════════════════════════════════════
# 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 签名验证等)