Files
ljwx-stock/CURRENT_SYSTEM_STATUS.md
brunoandClaude Sonnet 4.5 9c8644932a docs: 添加系统当前状态说明文档
详细说明优化后的系统状态和预期行为:
- 优化成功确认
- API当前状态
- data_updater运行进度
- 立即可用功能
- 预期时间线
- 故障排查指南

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-25 20:55:39 +08:00

6.2 KiB
Raw Permalink Blame History

系统当前状态说明

更新时间: 2025-12-25 20:55 系统版本: v1.0.1 (性能优化版)


✅ 优化成功确认

核心问题已解决

  1. 后端不再阻塞 ✅

    • 应用启动时间: 5秒(之前90秒阻塞)
    • API响应正常,不受data_updater影响
  2. data_updater后台运行 ✅

    • 成功在独立线程池中运行
    • 正在加载初始数据(30+只股票 × 3个月历史)
    • 不影响其他API请求
  3. API超时处理 ✅

    • 前端15秒超时机制生效
    • 超时后显示友好提示
    • 不会无限等待

📊 当前API状态

正常工作的API ✅

API端点 响应时间 状态
/health 即时 ✅ 正常
/api/strategies/list 8ms ✅ 正常 (4个策略)
/api/risk/events 7ms ✅ 正常 (6个事件)
/api/risk/overview <10ms ✅ 正常
/api/recommendations?fast=true <100ms ✅ 正常 (mock数据)

首次加载中的API ⏳

API端点 状态 预计可用时间
/api/recommendations ⏳ 等待数据加载 10-20分钟
/api/ai/recommendations/explained ⏳ 等待数据加载 10-20分钟

说明: 这些API需要历史股票数据才能计算技术指标和ML预测。data_updater正在后台加载数据,这是一次性成本,之后会非常快。


🔄 data_updater 运行状态

当前进度

✅ TuShare: 600000 @ 11.77
✅ Fetched 59 records for 600000 from TuShare
✅ TuShare: 601398 @ 7.86
✅ Fetched 59 records for 601398 from TuShare
✅ TuShare: 601988 @ 5.65
...正在加载更多股票...

加载任务

  • A股数据: 30只股票 × 59天历史数据
  • 全球资产: 4个资产 × 30天历史数据
  • 技术指标计算: MA, RSI, MACD, Bollinger Bands等
  • 基本面数据: PE, PB, ROE等财务指标

预计完成时间

  • 首次全量加载: 10-20分钟(取决于网络和API限流)
  • 后续增量更新: 1-2分钟(只更新最新数据)

🚀 立即可用的功能

1. 快速模式推荐(mock数据)

# 前端调用
GET /api/recommendations?fast=true&limit=10

# 返回
- 25只预定义优质股票
- 模拟评分和技术指标
- 即时响应(<100ms)

2. 策略管理

GET /api/strategies/list

可用策略:

  • 价值投资策略
  • 成长股策略
  • 高股息策略
  • 技术面策略

3. 风险监控

GET /api/risk/events      # 当前风险事件
GET /api/risk/overview    # 风险概览
GET /api/risk/timeline    # 风险时间线

🎯 使用建议

立即可用

  1. 查看策略列表: 主题&策略模块正常工作
  2. 监控风险事件: 风险雷达正常工作
  3. 使用快速推荐: 加上 ?fast=true 参数获取即时推荐

等待data_updater完成后(10-20分钟)

  1. 真实数据推荐: 基于实时股票数据的ML预测
  2. 技术指标分析: 完整的技术面分析
  3. AI增强推荐: Claude AI的深度分析

📈 预期行为时间线

第1-5分钟(当前)

  • ✅ 后端启动成功
  • ✅ 基础API正常工作
  • ⏳ data_updater开始加载数据
  • ⚠️ 推荐API返回超时(预期行为)

第5-15分钟

  • ⏳ data_updater继续加载(A股 → 全球资产)
  • 📊 部分股票数据可用
  • 🔄 定期更新缓存

第15-20分钟

  • ✅ 初始数据加载完成
  • ✅ 推荐API开始返回真实数据
  • ✅ 响应时间: 首次1-2秒,缓存<100ms

第20分钟后

  • ✅ 系统完全就绪
  • ✅ 所有API正常响应
  • 🔄 每5分钟自动增量更新

🔧 故障排查

问题: 推荐API一直超时

检查:

# 1. 检查data_updater是否在运行
pm2 logs ljwx-stock-backend --lines 20 | grep "Fetched"

# 2. 检查Redis缓存
redis-cli -h localhost -p 6379 keys "stock:*"

# 3. 使用快速模式作为临时方案
curl "http://localhost:8028/api/recommendations?fast=true&limit=5"

解决:

  • 如果data_updater卡住: 重启backend pm2 restart ljwx-stock-backend
  • 如果需要立即可用: 使用 ?fast=true 参数

问题: "Address already in use"错误

原因: 端口8028已被占用(通常是旧进程)

解决:

# 找到占用进程
lsof -i :8028

# 杀死进程
kill -9 <PID>

# 重启服务
pm2 restart ljwx-stock-backend

问题: TuShare/yfinance限流

症状: 日志中出现 "429 Too Many Requests"

解决:

  • 自动重试: data_updater会在下一个周期重试
  • 手动: 等待1-2分钟后自然恢复
  • 备用: 使用快速模式获取推荐

📝 性能监控命令

# 查看服务状态
pm2 list

# 查看后端日志(实时)
pm2 logs ljwx-stock-backend

# 查看data_updater进度
pm2 logs ljwx-stock-backend | grep "Fetched"

# 测试API响应
curl -s http://localhost:8028/health
curl -s "http://localhost:8028/api/strategies/list"
curl -s "http://localhost:8028/api/recommendations?fast=true&limit=3"

# 检查Redis缓存
redis-cli -h localhost -p 6379
> keys "stock:*"
> ttl "stock:recommendation"

🎉 总结

优化成功

✅ 核心问题解决: 后端不再阻塞,API响应正常 ✅ 后台数据加载: data_updater独立运行,不影响系统 ✅ 超时保护: 15秒超时,友好错误提示 ✅ 立即可用: 策略、风险、快速推荐都能用

临时限制

⏳ 首次加载慢: 推荐API需要等待data_updater完成(10-20分钟) 🔄 一次性成本: 之后重启只需1-2分钟增量更新 💡 快速模式: 使用 ?fast=true 获取即时结果

长期效果

🚀 启动速度: 90秒 → 5秒 (94% ↓) ⚡ API响应: <10ms (缓存命中<100ms) 🎯 用户体验: 不会无限等待,有明确提示 📊 数据新鲜度: 每5分钟自动更新


建议:

  1. 目前可以正常使用策略和风险监控功能
  2. 推荐功能使用快速模式(?fast=true)
  3. 10-20分钟后data_updater完成,所有功能完全可用
  4. 之后每次重启只需1-2分钟即可恢复

状态: 系统正常运行,等待初始数据加载完成 ✅


最后更新: 2025-12-25 20:55 下次检查: 15分钟后验证data_updater是否完成