{"repo": "alexps9/investment-research-database", "files": {"deploy/litellm.config.yaml": {"efc2c56c4e5665f386482412a5c507696af18ae5": {"t": 1785746317.7852728, "n": 1805, "h": "6a19c9aca00d3ee9", "c": "# LiteLLM proxy. Primary: AWS Bedrock (Claude) via the overseas SS proxy.\n# Fallback: DeepSeek-V4 official API (China-direct, no proxy) so Q&A keeps\n# working even when the proxy node or Bedrock is unavailable.\n# Exposes an OpenAI-compatible API so the backend (DEEPSEEK_BASE_URL) and\n# agent (LLM_BASE_URL) use the same surface unchanged.\nmodel_list:\n - model_name: claude-sonnet-4-6\n litellm_params:\n model: bedrock/us.anthropic.claude-sonnet-4-6\n aws_region_name: us-east-1\n - model_name: claude-opus-4-6\n litellm_params:\n model: bedrock/us.anthropic.claude-opus-4-6-v1\n aws_region_name: us-east-1\n # Back-compat alias: existing configs default LLM_MODEL=deepseek-chat.\n - model_name: deepseek-chat\n litellm_params:\n model: bedrock/us.anthropic.claude-sonnet-4-6\n aws_region_name: us-east-1\n # Fallback target: DeepSeek-V4 official API (direct, bypasses the proxy via NO_PROXY).\n # DeepSeek exposes deepseek-v4-pro / deepseek-v4-flash; use -pro for quality.\n - model_name: deepseek-v4\n litellm_params:\n model: openai/deepseek-v4-pro\n api_base: https://api.deepseek.com\n api_key: os.environ/DEEPSEEK_FALLBACK_API_KEY\n\nlitellm_settings:\n drop_params: true # silently drop params Bedrock doesn't accept\n request_timeout: 120\n # Under multi-user bursts, transient Bedrock 429/5xx retry then fall back to\n # DeepSeek-V4 — spreads load across two providers instead of failing the run.\n num_retries: 2\n # If the primary Claude model errors (proxy down / Bedrock geo-block / 5xx),\n # automatically retry the request against DeepSeek-V4.\n fallbacks:\n - claude-sonnet-4-6: [\"deepseek-v4\"]\n - claude-opus-4-6: [\"deepseek-v4\"]\n - deepseek-chat: [\"deepseek-v4\"]\n\ngeneral_settings:\n master_key: os.environ/LITELLM_MASTER_KEY\n"}, "31f0c1aef2d9fd225784d37e8ee7c84df09c9b98": {"t": 1785761762.3670237, "n": 1805, "h": "6a19c9aca00d3ee9", "c": "# LiteLLM proxy. Primary: AWS Bedrock (Claude) via the overseas SS proxy.\n# Fallback: DeepSeek-V4 official API (China-direct, no proxy) so Q&A keeps\n# working even when the proxy node or Bedrock is unavailable.\n# Exposes an OpenAI-compatible API so the backend (DEEPSEEK_BASE_URL) and\n# agent (LLM_BASE_URL) use the same surface unchanged.\nmodel_list:\n - model_name: claude-sonnet-4-6\n litellm_params:\n model: bedrock/us.anthropic.claude-sonnet-4-6\n aws_region_name: us-east-1\n - model_name: claude-opus-4-6\n litellm_params:\n model: bedrock/us.anthropic.claude-opus-4-6-v1\n aws_region_name: us-east-1\n # Back-compat alias: existing configs default LLM_MODEL=deepseek-chat.\n - model_name: deepseek-chat\n litellm_params:\n model: bedrock/us.anthropic.claude-sonnet-4-6\n aws_region_name: us-east-1\n # Fallback target: DeepSeek-V4 official API (direct, bypasses the proxy via NO_PROXY).\n # DeepSeek exposes deepseek-v4-pro / deepseek-v4-flash; use -pro for quality.\n - model_name: deepseek-v4\n litellm_params:\n model: openai/deepseek-v4-pro\n api_base: https://api.deepseek.com\n api_key: os.environ/DEEPSEEK_FALLBACK_API_KEY\n\nlitellm_settings:\n drop_params: true # silently drop params Bedrock doesn't accept\n request_timeout: 120\n # Under multi-user bursts, transient Bedrock 429/5xx retry then fall back to\n # DeepSeek-V4 — spreads load across two providers instead of failing the run.\n num_retries: 2\n # If the primary Claude model errors (proxy down / Bedrock geo-block / 5xx),\n # automatically retry the request against DeepSeek-V4.\n fallbacks:\n - claude-sonnet-4-6: [\"deepseek-v4\"]\n - claude-opus-4-6: [\"deepseek-v4\"]\n - deepseek-chat: [\"deepseek-v4\"]\n\ngeneral_settings:\n master_key: os.environ/LITELLM_MASTER_KEY\n"}, "9ca572516acf80d162625377cfbb6671a96d2219": {"t": 1785761763.8247728, "n": 1646, "h": "6cbe5adef4472693", "c": "# LiteLLM proxy. Primary: AWS Bedrock (Claude) via the overseas SS proxy.\n# Fallback: DeepSeek-V4 official API (China-direct, no proxy) so Q&A keeps\n# working even when the proxy node or Bedrock is unavailable.\n# Exposes an OpenAI-compatible API so the backend (DEEPSEEK_BASE_URL) and\n# agent (LLM_BASE_URL) use the same surface unchanged.\nmodel_list:\n - model_name: claude-sonnet-4-6\n litellm_params:\n model: bedrock/us.anthropic.claude-sonnet-4-6\n aws_region_name: us-east-1\n - model_name: claude-opus-4-6\n litellm_params:\n model: bedrock/us.anthropic.claude-opus-4-6-v1\n aws_region_name: us-east-1\n # Back-compat alias: existing configs default LLM_MODEL=deepseek-chat.\n - model_name: deepseek-chat\n litellm_params:\n model: bedrock/us.anthropic.claude-sonnet-4-6\n aws_region_name: us-east-1\n # Fallback target: DeepSeek-V4 official API (direct, bypasses the proxy via NO_PROXY).\n # DeepSeek exposes deepseek-v4-pro / deepseek-v4-flash; use -pro for quality.\n - model_name: deepseek-v4\n litellm_params:\n model: openai/deepseek-v4-pro\n api_base: https://api.deepseek.com\n api_key: os.environ/DEEPSEEK_FALLBACK_API_KEY\n\nlitellm_settings:\n drop_params: true # silently drop params Bedrock doesn't accept\n request_timeout: 120\n num_retries: 1\n # If the primary Claude model errors (proxy down / Bedrock geo-block / 5xx),\n # automatically retry the request against DeepSeek-V4.\n fallbacks:\n - claude-sonnet-4-6: [\"deepseek-v4\"]\n - claude-opus-4-6: [\"deepseek-v4\"]\n - deepseek-chat: [\"deepseek-v4\"]\n\ngeneral_settings:\n master_key: os.environ/LITELLM_MASTER_KEY\n"}, "e1a5885f1594007e7d55e6f31add9522b14a956c": {"t": 1785761765.2052999, "n": 1011, "h": "f69859ea5e288e80", "c": "# LiteLLM proxy → AWS Bedrock (Claude). Exposes an OpenAI-compatible API so the\n# backend (DEEPSEEK_BASE_URL) and agent (LLM_BASE_URL) can use Claude unchanged.\n# Auth to Bedrock uses the bearer token in AWS_BEARER_TOKEN_BEDROCK (set in .env).\nmodel_list:\n - model_name: claude-sonnet-4-6\n litellm_params:\n model: bedrock/us.anthropic.claude-sonnet-4-6\n aws_region_name: us-east-1\n - model_name: claude-opus-4-6\n litellm_params:\n model: bedrock/us.anthropic.claude-opus-4-6-v1\n aws_region_name: us-east-1\n # Back-compat alias: existing configs default LLM_MODEL=deepseek-chat. Route it\n # to Claude Sonnet so nothing breaks if an env var is left at the old default.\n - model_name: deepseek-chat\n litellm_params:\n model: bedrock/us.anthropic.claude-sonnet-4-6\n aws_region_name: us-east-1\n\nlitellm_settings:\n drop_params: true # silently drop params Bedrock doesn't accept\n request_timeout: 600\n\ngeneral_settings:\n master_key: os.environ/LITELLM_MASTER_KEY\n"}}, ".env.example": {"efc2c56c4e5665f386482412a5c507696af18ae5": {"t": 1785746758.435547, "n": 4781, "h": "7f63972a593abb12", "c": "# =============================================================================\n# 环境配置模板 | 复制本文件为 .env 并填入真实密码后使用\n# 预设方案:\n# [supabase+render] Supabase PostgreSQL + Render.com 后端 + GitHub Pages 前端\n# [aws-dev] EC2 连 AWS 托管资源(RDS / ElastiCache / S3)\n# [local] 本地 docker-compose --profile local\n# =============================================================================\n\n# -----------------------------------------------------------------------------\n# [supabase+render] 免费公开部署方案\n# 前端 → GitHub Pages (alexps9.github.io/investment-research-database)\n# 后端 → Render.com (https://hh-research-backend.onrender.com)\n# 数据库 → Supabase PostgreSQL\n# -----------------------------------------------------------------------------\n# 在 Supabase 控制台 → Project Settings → Database → Connection string 找到以下信息\n# 项目 ref: xxxxxxxxxxxxxxxx\n# DB密码: \n# 区域: aws-0-ap-southeast-1 (根据实际选择)\n#\n# asyncpg(后端异步 ORM 使用):\n# DATABASE_URL=postgresql+asyncpg://postgres.:@db..supabase.co:5432/postgres\n#\n# psycopg2(Alembic 迁移使用):\n# DATABASE_URL_SYNC=postgresql+psycopg2://postgres.:@db..supabase.co:5432/postgres\n#\n# SSL: Supabase 强制 TLS,必须设为 require\n# DB_SSL_MODE=require\n#\n# 前端指向 Render 后端(在 GitHub repo Settings → Variables → NEXT_PUBLIC_API_URL 设置):\n# NEXT_PUBLIC_API_URL=https://hh-research-backend.onrender.com\n#\n# 运行迁移(本地执行,指向 Supabase):\n# cd backend\n# DATABASE_URL_SYNC=postgresql+psycopg2://... DB_SSL_MODE=require alembic upgrade head\n# -----------------------------------------------------------------------------\n\n# -----------------------------------------------------------------------------\n# [aws-dev] 在公司 EC2 上连接 AWS 托管资源时使用以下配置\n# -----------------------------------------------------------------------------\n\n# PostgreSQL — Amazon RDS for PostgreSQL (ap-southeast-1, port 54321)\nDATABASE_URL=postgresql+asyncpg://singalsysdevadmin:@singalsysdevdb.cluster-cbui0oeeppnh.ap-southeast-1.rds.amazonaws.com:54321/ai_knowledge\nDATABASE_URL_SYNC=postgresql+psycopg2://singalsysdevadmin:@singalsysdevdb.cluster-cbui0oeeppnh.ap-southeast-1.rds.amazonaws.com:54321/ai_knowledge\n\n# Redis — Amazon ElastiCache (写主节点;只读流量可改用 Reader Endpoint)\n# Primary : ecrg-singalsys-dev.faqlgj.ng.0001.apse1.cache.amazonaws.com:6379\n# Reader : ecrg-singalsys-dev-ro.faqlgj.ng.0001.apse1.cache.amazonaws.com:6379\nREDIS_URL=redis://ecrg-singalsys-dev.faqlgj.ng.0001.apse1.cache.amazonaws.com:6379/0\n\n# S3 — 留空 S3_ENDPOINT_URL 表示使用真实 AWS S3(不走 MinIO)\n# EC2 上建议挂 IAM Role,AWS_ACCESS_KEY_ID / SECRET 留空即可自动鉴权\nS3_ENDPOINT_URL=\nS3_BUCKET=hcp-singalsys-dev\nS3_REGION=ap-southeast-1\nAWS_ACCESS_KEY_ID=\nAWS_SECRET_ACCESS_KEY=\n\n# -----------------------------------------------------------------------------\n# [local] 本地 docker-compose --profile local 启动时使用以下配置\n# (把上面三段替换成下面注释掉的值即可)\n# -----------------------------------------------------------------------------\n# DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/ai_knowledge\n# DATABASE_URL_SYNC=postgresql+psycopg2://postgres:postgres@localhost:5432/ai_knowledge\n# REDIS_URL=redis://localhost:6379/0\n# S3_ENDPOINT_URL=http://localhost:9000\n# S3_BUCKET=hh-research\n# S3_REGION=us-east-1\n# AWS_ACCESS_KEY_ID=minioadmin\n# AWS_SECRET_ACCESS_KEY=minioadmin\n\n# -----------------------------------------------------------------------------\n# 通用配置(两套环境相同)\n# -----------------------------------------------------------------------------\nDEBUG=false\n\n# PostgreSQL connection pool\nDB_POOL_SIZE=5\nDB_MAX_OVERFLOW=10\nDB_POOL_TIMEOUT=30\nDB_POOL_RECYCLE=1800\n\n# SSL:\n# \"disable\" - 本地 docker\n# \"require\" - AWS RDS(TLS 必需,不校验证书链)\nDB_SSL_MODE=require\n\n# -----------------------------------------------------------------------------\n# 语义检索 & LLM 问答(功能3)\n# - Embedding: 任意 OpenAI 兼容服务,默认硅基流动 SiliconFlow / bge-m3 (1024维)\n# - 问答/分析: DeepSeek(OpenAI 兼容接口)\n# 留空对应 key 即关闭该功能(不会报错,前端会显示未启用提示)\n# 在 HF Spaces → Settings → Variables and secrets 配置以下 secret\n#\n# ★ 换 embedding 模型后务必:\n# 1) 同步修改 EMBEDDING_DIMENSIONS\n# 2) 在 Supabase 执行 set_embedding_dim.sql(改库表维度)\n# 3) 前端「智能问答」页点「重建索引」\n#\n# 各家参数对照:\n# SiliconFlow: BASE=https://api.siliconflow.cn/v1 MODEL=BAAI/bge-m3 DIM=1024\n# OpenAI : BASE=https://api.openai.com/v1 MODEL=text-embedding-3-small DIM=1536\n# Zhipu : BASE=https://open.bigmodel.cn/api/paas/v4 MODEL=embedding-3 DIM=1024\n# -----------------------------------------------------------------------------\nEMBEDDING_API_KEY=\nEMBEDDING_BASE_URL=https://api.siliconflow.cn/v1\nEMBEDDING_MODEL=BAAI/bge-m3\nEMBEDDING_DIMENSIONS=1024\n\nDEEPSEEK_API_KEY=\nDEEPSEEK_BASE_URL=https://api.deepseek.com/v1\nLLM_MODEL=deepseek-chat\n\n# Frontend\nNEXT_PUBLIC_API_URL=http://localhost:8000\n"}, "fe9c35f2053ac432efc11772c1c4138919b53a8d": {"t": 1785761762.38037, "n": 4781, "h": "7f63972a593abb12", "c": "# =============================================================================\n# 环境配置模板 | 复制本文件为 .env 并填入真实密码后使用\n# 预设方案:\n# [supabase+render] Supabase PostgreSQL + Render.com 后端 + GitHub Pages 前端\n# [aws-dev] EC2 连 AWS 托管资源(RDS / ElastiCache / S3)\n# [local] 本地 docker-compose --profile local\n# =============================================================================\n\n# -----------------------------------------------------------------------------\n# [supabase+render] 免费公开部署方案\n# 前端 → GitHub Pages (alexps9.github.io/investment-research-database)\n# 后端 → Render.com (https://hh-research-backend.onrender.com)\n# 数据库 → Supabase PostgreSQL\n# -----------------------------------------------------------------------------\n# 在 Supabase 控制台 → Project Settings → Database → Connection string 找到以下信息\n# 项目 ref: xxxxxxxxxxxxxxxx\n# DB密码: \n# 区域: aws-0-ap-southeast-1 (根据实际选择)\n#\n# asyncpg(后端异步 ORM 使用):\n# DATABASE_URL=postgresql+asyncpg://postgres.:@db..supabase.co:5432/postgres\n#\n# psycopg2(Alembic 迁移使用):\n# DATABASE_URL_SYNC=postgresql+psycopg2://postgres.:@db..supabase.co:5432/postgres\n#\n# SSL: Supabase 强制 TLS,必须设为 require\n# DB_SSL_MODE=require\n#\n# 前端指向 Render 后端(在 GitHub repo Settings → Variables → NEXT_PUBLIC_API_URL 设置):\n# NEXT_PUBLIC_API_URL=https://hh-research-backend.onrender.com\n#\n# 运行迁移(本地执行,指向 Supabase):\n# cd backend\n# DATABASE_URL_SYNC=postgresql+psycopg2://... DB_SSL_MODE=require alembic upgrade head\n# -----------------------------------------------------------------------------\n\n# -----------------------------------------------------------------------------\n# [aws-dev] 在公司 EC2 上连接 AWS 托管资源时使用以下配置\n# -----------------------------------------------------------------------------\n\n# PostgreSQL — Amazon RDS for PostgreSQL (ap-southeast-1, port 54321)\nDATABASE_URL=postgresql+asyncpg://singalsysdevadmin:@singalsysdevdb.cluster-cbui0oeeppnh.ap-southeast-1.rds.amazonaws.com:54321/ai_knowledge\nDATABASE_URL_SYNC=postgresql+psycopg2://singalsysdevadmin:@singalsysdevdb.cluster-cbui0oeeppnh.ap-southeast-1.rds.amazonaws.com:54321/ai_knowledge\n\n# Redis — Amazon ElastiCache (写主节点;只读流量可改用 Reader Endpoint)\n# Primary : ecrg-singalsys-dev.faqlgj.ng.0001.apse1.cache.amazonaws.com:6379\n# Reader : ecrg-singalsys-dev-ro.faqlgj.ng.0001.apse1.cache.amazonaws.com:6379\nREDIS_URL=redis://ecrg-singalsys-dev.faqlgj.ng.0001.apse1.cache.amazonaws.com:6379/0\n\n# S3 — 留空 S3_ENDPOINT_URL 表示使用真实 AWS S3(不走 MinIO)\n# EC2 上建议挂 IAM Role,AWS_ACCESS_KEY_ID / SECRET 留空即可自动鉴权\nS3_ENDPOINT_URL=\nS3_BUCKET=hcp-singalsys-dev\nS3_REGION=ap-southeast-1\nAWS_ACCESS_KEY_ID=\nAWS_SECRET_ACCESS_KEY=\n\n# -----------------------------------------------------------------------------\n# [local] 本地 docker-compose --profile local 启动时使用以下配置\n# (把上面三段替换成下面注释掉的值即可)\n# -----------------------------------------------------------------------------\n# DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/ai_knowledge\n# DATABASE_URL_SYNC=postgresql+psycopg2://postgres:postgres@localhost:5432/ai_knowledge\n# REDIS_URL=redis://localhost:6379/0\n# S3_ENDPOINT_URL=http://localhost:9000\n# S3_BUCKET=hh-research\n# S3_REGION=us-east-1\n# AWS_ACCESS_KEY_ID=minioadmin\n# AWS_SECRET_ACCESS_KEY=minioadmin\n\n# -----------------------------------------------------------------------------\n# 通用配置(两套环境相同)\n# -----------------------------------------------------------------------------\nDEBUG=false\n\n# PostgreSQL connection pool\nDB_POOL_SIZE=5\nDB_MAX_OVERFLOW=10\nDB_POOL_TIMEOUT=30\nDB_POOL_RECYCLE=1800\n\n# SSL:\n# \"disable\" - 本地 docker\n# \"require\" - AWS RDS(TLS 必需,不校验证书链)\nDB_SSL_MODE=require\n\n# -----------------------------------------------------------------------------\n# 语义检索 & LLM 问答(功能3)\n# - Embedding: 任意 OpenAI 兼容服务,默认硅基流动 SiliconFlow / bge-m3 (1024维)\n# - 问答/分析: DeepSeek(OpenAI 兼容接口)\n# 留空对应 key 即关闭该功能(不会报错,前端会显示未启用提示)\n# 在 HF Spaces → Settings → Variables and secrets 配置以下 secret\n#\n# ★ 换 embedding 模型后务必:\n# 1) 同步修改 EMBEDDING_DIMENSIONS\n# 2) 在 Supabase 执行 set_embedding_dim.sql(改库表维度)\n# 3) 前端「智能问答」页点「重建索引」\n#\n# 各家参数对照:\n# SiliconFlow: BASE=https://api.siliconflow.cn/v1 MODEL=BAAI/bge-m3 DIM=1024\n# OpenAI : BASE=https://api.openai.com/v1 MODEL=text-embedding-3-small DIM=1536\n# Zhipu : BASE=https://open.bigmodel.cn/api/paas/v4 MODEL=embedding-3 DIM=1024\n# -----------------------------------------------------------------------------\nEMBEDDING_API_KEY=\nEMBEDDING_BASE_URL=https://api.siliconflow.cn/v1\nEMBEDDING_MODEL=BAAI/bge-m3\nEMBEDDING_DIMENSIONS=1024\n\nDEEPSEEK_API_KEY=\nDEEPSEEK_BASE_URL=https://api.deepseek.com/v1\nLLM_MODEL=deepseek-chat\n\n# Frontend\nNEXT_PUBLIC_API_URL=http://localhost:8000\n"}, "99d48038ba7abfc3fea0e921d5c332611968383e": {"t": 1785761764.3526418, "n": 4494, "h": "611e43fd4134460e", "c": "# =============================================================================\n# 环境配置模板 | 复制本文件为 .env 并填入真实密码后使用\n# 预设方案:\n# [supabase+render] Supabase PostgreSQL + Render.com 后端 + GitHub Pages 前端\n# [aws-dev] EC2 连 AWS 托管资源(RDS / ElastiCache / S3)\n# [local] 本地 docker-compose --profile local\n# =============================================================================\n\n# -----------------------------------------------------------------------------\n# [supabase+render] 免费公开部署方案\n# 前端 → GitHub Pages (alexps9.github.io/investment-research-database)\n# 后端 → Render.com (https://hh-research-backend.onrender.com)\n# 数据库 → Supabase PostgreSQL\n# -----------------------------------------------------------------------------\n# 在 Supabase 控制台 → Project Settings → Database → Connection string 找到以下信息\n# 项目 ref: xxxxxxxxxxxxxxxx\n# DB密码: \n# 区域: aws-0-ap-southeast-1 (根据实际选择)\n#\n# asyncpg(后端异步 ORM 使用):\n# DATABASE_URL=postgresql+asyncpg://postgres.:@db..supabase.co:5432/postgres\n#\n# psycopg2(Alembic 迁移使用):\n# DATABASE_URL_SYNC=postgresql+psycopg2://postgres.:@db..supabase.co:5432/postgres\n#\n# SSL: Supabase 强制 TLS,必须设为 require\n# DB_SSL_MODE=require\n#\n# 前端指向 Render 后端(在 GitHub repo Settings → Variables → NEXT_PUBLIC_API_URL 设置):\n# NEXT_PUBLIC_API_URL=https://hh-research-backend.onrender.com\n#\n# 运行迁移(本地执行,指向 Supabase):\n# cd backend\n# DATABASE_URL_SYNC=postgresql+psycopg2://... DB_SSL_MODE=require alembic upgrade head\n# -----------------------------------------------------------------------------\n\n# -----------------------------------------------------------------------------\n# [aws-dev] 在公司 EC2 上连接 AWS 托管资源时使用以下配置\n# -----------------------------------------------------------------------------\n\n# PostgreSQL — Amazon RDS for PostgreSQL (ap-southeast-1, port 54321)\nDATABASE_URL=postgresql+asyncpg://singalsysdevadmin:@singalsysdevdb.cluster-cbui0oeeppnh.ap-southeast-1.rds.amazonaws.com:54321/ai_knowledge\nDATABASE_URL_SYNC=postgresql+psycopg2://singalsysdevadmin:@singalsysdevdb.cluster-cbui0oeeppnh.ap-southeast-1.rds.amazonaws.com:54321/ai_knowledge\n\n# Redis — Amazon ElastiCache (写主节点;只读流量可改用 Reader Endpoint)\n# Primary : ecrg-singalsys-dev.faqlgj.ng.0001.apse1.cache.amazonaws.com:6379\n# Reader : ecrg-singalsys-dev-ro.faqlgj.ng.0001.apse1.cache.amazonaws.com:6379\nREDIS_URL=redis://ecrg-singalsys-dev.faqlgj.ng.0001.apse1.cache.amazonaws.com:6379/0\n\n# S3 — 留空 S3_ENDPOINT_URL 表示使用真实 AWS S3(不走 MinIO)\n# EC2 上建议挂 IAM Role,AWS_ACCESS_KEY_ID / SECRET 留空即可自动鉴权\nS3_ENDPOINT_URL=\nS3_BUCKET=hcp-singalsys-dev\nS3_REGION=ap-southeast-1\nAWS_ACCESS_KEY_ID=\nAWS_SECRET_ACCESS_KEY=\n\n# -----------------------------------------------------------------------------\n# [local] 本地 docker-compose --profile local 启动时使用以下配置\n# (把上面三段替换成下面注释掉的值即可)\n# -----------------------------------------------------------------------------\n# DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/ai_knowledge\n# DATABASE_URL_SYNC=postgresql+psycopg2://postgres:postgres@localhost:5432/ai_knowledge\n# REDIS_URL=redis://localhost:6379/0\n# S3_ENDPOINT_URL=http://localhost:9000\n# S3_BUCKET=hh-research\n# S3_REGION=us-east-1\n# AWS_ACCESS_KEY_ID=minioadmin\n# AWS_SECRET_ACCESS_KEY=minioadmin\n\n# -----------------------------------------------------------------------------\n# 通用配置(两套环境相同)\n# -----------------------------------------------------------------------------\nDEBUG=false\n\n# PostgreSQL connection pool\nDB_POOL_SIZE=5\nDB_MAX_OVERFLOW=10\nDB_POOL_TIMEOUT=30\nDB_POOL_RECYCLE=1800\n\n# SSL:\n# \"disable\" - 本地 docker\n# \"require\" - AWS RDS(TLS 必需,不校验证书链)\nDB_SSL_MODE=require\n\n# pgvector 向量维度(必须与 pipeline 使用的 embedding 模型一致)\n# 1536 = OpenAI text-embedding-3-small / ada-002\n# 3072 = OpenAI text-embedding-3-large\nEMBEDDING_DIMENSIONS=1536\n\n# -----------------------------------------------------------------------------\n# 语义检索 & LLM 问答(功能3)\n# - Embedding 用 OpenAI(text-embedding-3-small, 1536维,与上面维度一致)\n# - 问答/分析用 DeepSeek(OpenAI 兼容接口)\n# 留空对应 key 即关闭该功能(不会报错,前端会隐藏入口)\n# 在 HF Spaces → Settings → Variables and secrets 里配置以下两个 secret\n# -----------------------------------------------------------------------------\nOPENAI_API_KEY=\nOPENAI_BASE_URL=https://api.openai.com/v1\nEMBEDDING_MODEL=text-embedding-3-small\n\nDEEPSEEK_API_KEY=\nDEEPSEEK_BASE_URL=https://api.deepseek.com/v1\nLLM_MODEL=deepseek-chat\n\n# Frontend\nNEXT_PUBLIC_API_URL=http://localhost:8000\n"}, "f47b35c5c212ed1b7447cc824f37daff297c76d7": {"t": 1785761765.6411, "n": 3929, "h": "f08a4ea077e68b61", "c": "# =============================================================================\n# 环境配置模板 | 复制本文件为 .env 并填入真实密码后使用\n# 预设方案:\n# [supabase+render] Supabase PostgreSQL + Render.com 后端 + GitHub Pages 前端\n# [aws-dev] EC2 连 AWS 托管资源(RDS / ElastiCache / S3)\n# [local] 本地 docker-compose --profile local\n# =============================================================================\n\n# -----------------------------------------------------------------------------\n# [supabase+render] 免费公开部署方案\n# 前端 → GitHub Pages (alexps9.github.io/investment-research-database)\n# 后端 → Render.com (https://hh-research-backend.onrender.com)\n# 数据库 → Supabase PostgreSQL\n# -----------------------------------------------------------------------------\n# 在 Supabase 控制台 → Project Settings → Database → Connection string 找到以下信息\n# 项目 ref: xxxxxxxxxxxxxxxx\n# DB密码: \n# 区域: aws-0-ap-southeast-1 (根据实际选择)\n#\n# asyncpg(后端异步 ORM 使用):\n# DATABASE_URL=postgresql+asyncpg://postgres.:@db..supabase.co:5432/postgres\n#\n# psycopg2(Alembic 迁移使用):\n# DATABASE_URL_SYNC=postgresql+psycopg2://postgres.:@db..supabase.co:5432/postgres\n#\n# SSL: Supabase 强制 TLS,必须设为 require\n# DB_SSL_MODE=require\n#\n# 前端指向 Render 后端(在 GitHub repo Settings → Variables → NEXT_PUBLIC_API_URL 设置):\n# NEXT_PUBLIC_API_URL=https://hh-research-backend.onrender.com\n#\n# 运行迁移(本地执行,指向 Supabase):\n# cd backend\n# DATABASE_URL_SYNC=postgresql+psycopg2://... DB_SSL_MODE=require alembic upgrade head\n# -----------------------------------------------------------------------------\n\n# -----------------------------------------------------------------------------\n# [aws-dev] 在公司 EC2 上连接 AWS 托管资源时使用以下配置\n# -----------------------------------------------------------------------------\n\n# PostgreSQL — Amazon RDS for PostgreSQL (ap-southeast-1, port 54321)\nDATABASE_URL=postgresql+asyncpg://singalsysdevadmin:@singalsysdevdb.cluster-cbui0oeeppnh.ap-southeast-1.rds.amazonaws.com:54321/ai_knowledge\nDATABASE_URL_SYNC=postgresql+psycopg2://singalsysdevadmin:@singalsysdevdb.cluster-cbui0oeeppnh.ap-southeast-1.rds.amazonaws.com:54321/ai_knowledge\n\n# Redis — Amazon ElastiCache (写主节点;只读流量可改用 Reader Endpoint)\n# Primary : ecrg-singalsys-dev.faqlgj.ng.0001.apse1.cache.amazonaws.com:6379\n# Reader : ecrg-singalsys-dev-ro.faqlgj.ng.0001.apse1.cache.amazonaws.com:6379\nREDIS_URL=redis://ecrg-singalsys-dev.faqlgj.ng.0001.apse1.cache.amazonaws.com:6379/0\n\n# S3 — 留空 S3_ENDPOINT_URL 表示使用真实 AWS S3(不走 MinIO)\n# EC2 上建议挂 IAM Role,AWS_ACCESS_KEY_ID / SECRET 留空即可自动鉴权\nS3_ENDPOINT_URL=\nS3_BUCKET=hcp-singalsys-dev\nS3_REGION=ap-southeast-1\nAWS_ACCESS_KEY_ID=\nAWS_SECRET_ACCESS_KEY=\n\n# -----------------------------------------------------------------------------\n# [local] 本地 docker-compose --profile local 启动时使用以下配置\n# (把上面三段替换成下面注释掉的值即可)\n# -----------------------------------------------------------------------------\n# DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/ai_knowledge\n# DATABASE_URL_SYNC=postgresql+psycopg2://postgres:postgres@localhost:5432/ai_knowledge\n# REDIS_URL=redis://localhost:6379/0\n# S3_ENDPOINT_URL=http://localhost:9000\n# S3_BUCKET=hh-research\n# S3_REGION=us-east-1\n# AWS_ACCESS_KEY_ID=minioadmin\n# AWS_SECRET_ACCESS_KEY=minioadmin\n\n# -----------------------------------------------------------------------------\n# 通用配置(两套环境相同)\n# -----------------------------------------------------------------------------\nDEBUG=false\n\n# PostgreSQL connection pool\nDB_POOL_SIZE=5\nDB_MAX_OVERFLOW=10\nDB_POOL_TIMEOUT=30\nDB_POOL_RECYCLE=1800\n\n# SSL:\n# \"disable\" - 本地 docker\n# \"require\" - AWS RDS(TLS 必需,不校验证书链)\nDB_SSL_MODE=require\n\n# pgvector 向量维度(必须与 pipeline 使用的 embedding 模型一致)\n# 1536 = OpenAI text-embedding-3-small / ada-002\n# 3072 = OpenAI text-embedding-3-large\nEMBEDDING_DIMENSIONS=1536\n\n# Frontend\nNEXT_PUBLIC_API_URL=http://localhost:8000\n"}, "5714acc1dfef06f887f55b0c5c8bca8cfc8321e6": {"t": 1785761767.9214468, "n": 1145, "h": "6190d93f831260a8", "c": "# Backend\nDATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/ai_knowledge\nDATABASE_URL_SYNC=postgresql+psycopg2://postgres:postgres@localhost:5432/ai_knowledge\nDEBUG=false\n\n# PostgreSQL connection pool (defaults work for local dev; tune for RDS instance class)\nDB_POOL_SIZE=5\nDB_MAX_OVERFLOW=10\nDB_POOL_TIMEOUT=30\nDB_POOL_RECYCLE=1800\n\n# SSL mode for asyncpg:\n# \"disable\" - local docker (no TLS)\n# \"require\" - Amazon RDS (TLS, no cert verification)\n# \"verify-full\" - Amazon RDS with RDS CA bundle downloaded\nDB_SSL_MODE=disable\n\n# pgvector: must match the embedding model used by the pipeline\n# 1536 = OpenAI text-embedding-3-small / ada-002\n# 3072 = OpenAI text-embedding-3-large\nEMBEDDING_DIMENSIONS=1536\n\n# Redis (local: docker compose 'redis' service; prod: Amazon ElastiCache endpoint)\nREDIS_URL=redis://localhost:6379/0\n\n# Object storage (local: MinIO; prod: Amazon S3 -- leave S3_ENDPOINT_URL empty for real S3)\nS3_ENDPOINT_URL=http://localhost:9000\nS3_BUCKET=hh-research\nS3_REGION=us-east-1\nAWS_ACCESS_KEY_ID=minioadmin\nAWS_SECRET_ACCESS_KEY=minioadmin\n\n# Frontend\nNEXT_PUBLIC_API_URL=http://localhost:8000\n"}, "de43d54d84fc981e6cdb98b1c69026ee56cc3143": {"t": 1785761769.7384312, "n": 242, "h": "71e625917eb7a319", "c": "# Backend\nDATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/ai_knowledge\nDATABASE_URL_SYNC=postgresql+psycopg2://postgres:postgres@localhost:5432/ai_knowledge\nDEBUG=false\n\n# Frontend\nNEXT_PUBLIC_API_URL=http://localhost:8000\n"}}}}