Files
ljwx-stock/DEPLOYMENT_GUIDE.md
brunoandClaude d364268ca4 fix: Register Claude × DeepSeek collaboration routes in main.py
Fixed missing route registration that prevented the /api/collab/* endpoints from being available.
The claude_deepseek_collab module was imported and implemented but not registered in the FastAPI app,
causing 404 errors on all endpoints including health check, recommend, and batch-recommend.

Changes:
- Updated backend/app/routes/__init__.py to export claude_deepseek_collab module
- Updated backend/main.py to import and register the claude_deepseek_collab router
- All endpoints now properly accessible and working with real Alpha Vantage data

Verified endpoints:
✅ /api/collab/health - System health check
✅ /api/collab/recommend - Single stock/forex analysis with Claude + DeepSeek
✅ /api/collab/batch-recommend - Batch analysis for multiple assets
✅ /api/collab/analyze/{symbol} - Technical signal analysis only

Real data sources verified:
✅ AAPL: $275.25 (Alpha Vantage)
✅ EURUSD=X: 1.16 (ExchangeRate API)

🤖 Generated with Claude Code

Co-Authored-By: Claude <[email protected]>
2025-11-12 14:55:38 +01:00

10 KiB
Raw Permalink Blame History

部署指南:Claude × DeepSeek 智能投顾系统

快速开始 (5 分钟)

前置条件

# 检查 Docker 安装
docker --version        # >= 20.10
docker-compose --version # >= 1.29

# 检查系统资源
df -h /                 # 需要 60GB+ 可用空间
free -h                 # 需要 32GB+ RAM (推荐 64GB)

部署步骤

1️⃣ 准备环境变量

cd /root/work/stock

# 创建 .env 文件
cat > .env <<EOF
# OpenRouter API (用于 Claude)
OPENROUTER_API_KEY=your-openrouter-key-here

# TuShare API (可选,用于中文股票数据)
TUSHARE_TOKEN=your-tushare-token-here

# 应用环境
ENVIRONMENT=production
LOG_LEVEL=info
EOF

获取 API Key:

2️⃣ 启动 Docker 服务

# 启动所有服务
docker-compose up -d

# 查看服务状态
docker-compose ps

# 输出应该类似:
# NAME                COMMAND              STATUS          PORTS
# stock_postgres      "docker-entrypoint"  Up 2 minutes    5433:5432
# stock_redis         "redis-server"       Up 2 minutes    6380:6379
# stock_ollama        "ollama serve"       Up 1 minute     11434:11434
# stock_backend       "python -m uvicorn" Up 1 minute     8001:8000
# stock_frontend      "docker-entrypoint"  Up 1 minute     8090:80
# stock_adminer       "docker-php"         Up 1 minute     8091:8080

3️⃣ 等待 DeepSeek 模型下载

# 监控 Ollama 容器日志
docker-compose logs -f ollama

# 预期输出:
# Pulling deepseek-coder:33b...
# Downloading 100%
# Model loaded successfully

# 验证模型是否已加载
docker-compose exec ollama ollama list

# 应该显示:
# NAME                    ID              SIZE
# deepseek-coder:33b      xxxxxxxx        33GB

⏱️ 首次启动时间:

  • 模型下载:30-120 分钟(取决于网络速度)
  • 后续启动:2-3 分钟

4️⃣ 验证系统健康

# 检查后端 API
curl http://localhost:8001/health
# 预期响应:
# {"status": "healthy", "database": true, "cache": true}

# 检查 Claude × DeepSeek 系统
curl http://localhost:8001/api/collab/health
# 预期响应:
# {
#   "status": "operational",
#   "components": {
#     "ollama": "available",
#     "deepseek": "available",
#     "claude": "available",
#     "yahoo_finance": "available"
#   }
# }

5️⃣ 打开前端

前端地址:http://localhost:8090
API 基地址:http://localhost:8001
数据库管理:http://localhost:8091 (Adminer)

完整部署清单

✅ 检查项

  • Docker & Docker Compose 已安装
  • 磁盘空间 >= 60GB
  • 内存 >= 32GB
  • 网络连接正常
  • 防火墙规则已配置
  • OPENROUTER_API_KEY 已配置
  • docker-compose.yml 已调整(如需自定义)

📋 配置调整

1. 模型选择

# docker-compose.yml - ollama 服务
ollama:
  # ...
  entrypoint: |
    /bin/bash -c "
    /bin/ollama serve &
    OLLAMA_PID=$!;
    sleep 10;
    # 修改这行选择不同模型
    /bin/ollama pull deepseek-coder:33b;  # ← 默认
    # /bin/ollama pull deepseek-coder:7b;   # ← 轻量版
    wait $OLLAMA_PID;
    "

2. GPU 加速(可选)

# 如果有 NVIDIA GPU
ollama:
  runtime: nvidia
  environment:
    CUDA_VISIBLE_DEVICES: "0"  # 指定 GPU 编号
  # 性能提升:3-8 秒 → 1-2 秒

3. 端口映射调整

# 修改端口以避免冲突
services:
  backend:
    ports:
      - "8001:8000"  # ← 改为其他端口,如 8002:8000

  frontend:
    ports:
      - "8090:80"    # ← 改为其他端口,如 3000:80

4. 资源限制

# 为容器设置资源限制
services:
  backend:
    deploy:
      resources:
        limits:
          cpus: '4'
          memory: 8G
        reservations:
          cpus: '2'
          memory: 4G

生产环境部署

架构推荐

┌─────────────────────────┐
│   Nginx 反向代理         │
│  (端口 80, 443)         │
└────────────┬────────────┘
             │
    ┌────────┴────────┐
    │                 │
┌───▼────┐      ┌──────▼──┐
│ API    │      │ Frontend │
│ Gunicorn│     │ Nginx    │
│ (多进程) │     │ Static   │
└───┬────┘     └──────────┘
    │
┌───▼────────────────────────┐
│  容器编排 (Kubernetes)      │
│  - PostgreSQL StatefulSet  │
│  - Redis StatefulSet       │
│  - Ollama StatefulSet      │
│  - Backend Deployment      │
└────────────────────────────┘

Kubernetes 部署

# 1. 构建镜像
docker build -t stock-backend:latest ./backend
docker build -t stock-frontend:latest ./frontend

# 2. 推送到镜像仓库
docker tag stock-backend:latest your-registry/stock-backend:v1.0
docker push your-registry/stock-backend:v1.0

# 3. 部署
kubectl apply -f k8s/namespace.yaml
kubectl apply -f k8s/configmap.yaml
kubectl apply -f k8s/secrets.yaml
kubectl apply -f k8s/postgres.yaml
kubectl apply -f k8s/redis.yaml
kubectl apply -f k8s/ollama.yaml
kubectl apply -f k8s/backend.yaml
kubectl apply -f k8s/frontend.yaml
kubectl apply -f k8s/ingress.yaml

安全配置

# 1. 生成 SSL 证书
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout /etc/nginx/ssl/key.pem \
  -out /etc/nginx/ssl/cert.pem

# 2. 配置 Nginx (SSL 终端)
# 见 nginx.conf 示例

# 3. 限制 API 访问
# 实现 Rate Limiting:每个 IP 每分钟 60 请求
# 实现 CORS:仅允许特定域名

# 4. 数据库加密
# 启用 PostgreSQL SSL 连接
# 启用 Redis 认证和 SSL

监控和日志

# 1. 日志聚合 (ELK Stack)
docker-compose up -d elasticsearch logstash kibana

# 2. 性能监控 (Prometheus + Grafana)
docker-compose up -d prometheus grafana

# 3. 应用追踪 (Jaeger)
docker-compose up -d jaeger

# 4. 告警规则
# - Ollama 不可用时告警
# - API 响应时间 > 10s 告警
# - 缓存命中率 < 50% 告警

故障恢复

容器崩溃恢复

# 自动重启
docker-compose up -d --restart=always

# 或在 docker-compose.yml 中配置
services:
  backend:
    restart: always  # 或 unless-stopped

数据备份

# 备份 PostgreSQL
docker-compose exec postgres pg_dump -U stockai stock_ai > backup.sql

# 备份 Redis
docker-compose exec redis redis-cli BGSAVE
docker cp stock_redis:/data/dump.rdb ./backup/

# 定期备份脚本
*/6 * * * * /root/work/stock/backup.sh  # 每 6 小时执行一次

升级流程

# 1. 备份数据
./backup.sh

# 2. 停止服务
docker-compose down

# 3. 更新代码
git pull origin main

# 4. 重建镜像
docker-compose build --no-cache

# 5. 启动服务
docker-compose up -d

# 6. 验证
docker-compose ps
curl http://localhost:8001/health

性能调优

1. 数据库优化

-- 创建索引
CREATE INDEX idx_stock_symbol ON stocks(symbol);
CREATE INDEX idx_recommendation_date ON recommendations(created_at DESC);

-- 查询优化
ANALYZE stock_ai;
VACUUM ANALYZE;

2. Redis 优化

# 调整最大内存
docker-compose exec redis redis-cli CONFIG SET maxmemory 2gb
docker-compose exec redis redis-cli CONFIG SET maxmemory-policy allkeys-lru

# 启用 AOF 持久化
docker-compose exec redis redis-cli CONFIG SET appendonly yes

3. 应用优化

# 批量操作
# 不好:逐条查询
for symbol in symbols:
    price = get_price(symbol)

# 好:批量操作
prices = batch_get_prices(symbols)

# 连接池
from sqlalchemy.pool import QueuePool
engine = create_engine(..., poolclass=QueuePool, pool_size=20)

4. 前端优化

// 请求防抖
const debouncedSearch = debounce(performSearch, 500);

// 结果缓存
const cache = new Map();
if (cache.has(symbol)) {
  return cache.get(symbol);
}

// 懒加载
const recommendation = await import('./ClaudeDeepSeekRecommendation.vue');

故障排查

问题 1:Ollama 容器无法启动

# 查看日志
docker-compose logs ollama

# 检查磁盘空间
df -h

# 手动运行 ollama
docker run -it -v ollama_data:/root/.ollama ollama/ollama:latest bash
ollama pull deepseek-coder:33b

问题 2:模型下载失败

# 配置 DNS
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf

# 使用代理
export HTTP_PROXY=http://proxy.example.com:8080
export HTTPS_PROXY=https://proxy.example.com:8080

# 重试下载
docker-compose restart ollama

问题 3:API 响应超时

# 增加超时时间
# 在 deepseek_engine.py 中
self.timeout = 300  # 从 120 改为 300 秒

# 或在 docker-compose.yml 中
backend:
  environment:
    DEEPSEEK_TIMEOUT: "300"

问题 4:内存不足

# 查看内存使用
docker stats

# 减少容器内存限制
services:
  backend:
    deploy:
      resources:
        limits:
          memory: 4G

# 使用轻量级模型
ollama pull deepseek-coder:7b

清理和移除

# 停止所有服务
docker-compose down

# 删除容器和卷
docker-compose down -v

# 删除所有数据(谨慎!)
rm -rf postgres_data/ redis_data/ ollama_data/

# 完全清理
docker system prune -a

常见命令

# 查看日志
docker-compose logs -f backend

# 进入容器
docker-compose exec backend bash

# 查看进程
docker-compose ps

# 重启服务
docker-compose restart backend

# 查看网络
docker network ls
docker network inspect stock_network

# 查看卷
docker volume ls
docker volume inspect stock_postgres_data

# 导出/导入
docker-compose config > config-export.yml

支持和社区


版本:1.0.0 最后更新:2025-11-12