Summary: - Fix pg-boss queue conflict (duplicate key violation on queue_pkey) - Add global error listener to prevent process crash - Reduce connection pool from 10 to 4 - Add graceful shutdown handling (SIGTERM/SIGINT) - Fix researchWorker recursive call bug in catch block - Make screeningWorker idempotent using upsert Security Standards (v1.1): - Prohibit recursive retry in Worker catch blocks - Prohibit payload bloat (only store fileKey/ID in job.data) - Require Worker idempotency (upsert + unique constraint) - Recommend task-specific expireInSeconds settings - Document graceful shutdown pattern New Features: - PKB signed URL endpoint for document preview/download - pg_bigm installation guide for Docker - Dockerfile.postgres-with-extensions for pgvector + pg_bigm Documentation: - Update Postgres-Only async task processing guide (v1.1) - Add troubleshooting SQL queries - Update safety checklist Tested: Local verification passed
2.1 KiB
2.1 KiB
环境变量配置示例
复制以下内容到 .env 文件中:
# ===========================================
# AI Clinical Research Platform - 环境变量配置
# ===========================================
# ==================== 应用配置 ====================
NODE_ENV=development
PORT=3001
HOST=0.0.0.0
LOG_LEVEL=debug
SERVICE_NAME=aiclinical-backend
# ==================== 数据库配置 ====================
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/ai_clinical
# ==================== 存储配置 ====================
# 存储类型:local | oss
STORAGE_TYPE=local
# --- 本地存储配置(STORAGE_TYPE=local)---
LOCAL_STORAGE_DIR=uploads
LOCAL_STORAGE_URL=http://localhost:3001/uploads
# --- 阿里云OSS配置(STORAGE_TYPE=oss)---
# OSS_REGION=oss-cn-beijing
# OSS_BUCKET=ai-clinical-data-dev
# OSS_BUCKET_STATIC=ai-clinical-static-dev
# OSS_ACCESS_KEY_ID=your-access-key-id
# OSS_ACCESS_KEY_SECRET=your-access-key-secret
# OSS_INTERNAL=false
# OSS_SIGNED_URL_EXPIRES=3600
# ==================== 安全配置 ====================
JWT_SECRET=your-secret-key-change-in-production
JWT_EXPIRES_IN=7d
CORS_ORIGIN=http://localhost:5173
# ==================== LLM API配置 ====================
DEEPSEEK_API_KEY=
DEEPSEEK_BASE_URL=https://api.deepseek.com
DASHSCOPE_API_KEY=
GEMINI_API_KEY=
# ==================== 文件上传配置 ====================
UPLOAD_MAX_SIZE=31457280
OSS 开发环境配置
如果要测试 OSS,将 STORAGE_TYPE 改为 oss 并填写以下配置:
STORAGE_TYPE=oss
OSS_REGION=oss-cn-beijing
OSS_BUCKET=ai-clinical-data-dev
OSS_BUCKET_STATIC=ai-clinical-static-dev
OSS_ACCESS_KEY_ID=LTAI5tBHkL39GjdLfcr77Y3f
OSS_ACCESS_KEY_SECRET=<从安全渠道获取>
OSS_INTERNAL=false
OSS_SIGNED_URL_EXPIRES=3600
OSS 生产环境配置(SAE)
STORAGE_TYPE=oss
OSS_REGION=oss-cn-beijing
OSS_BUCKET=ai-clinical-data
OSS_BUCKET_STATIC=ai-clinical-static
OSS_ACCESS_KEY_ID=LTAI5tBHkL39GjdLfcr77Y3f
OSS_ACCESS_KEY_SECRET=<从安全渠道获取>
OSS_INTERNAL=true # 🔴 生产必须用内网
OSS_SIGNED_URL_EXPIRES=3600