360 Secure SkillHub
360 安全技能中心

事件驱动交易台维护技能

面向事件驱动股票分析仪表板的维护技能,覆盖前端渲染函数链、后端分析 API 数据结构、缓存与硬编码数据等调试要点,并给出基于 systemd 的部署、重启和验证流程;还说明百度千帆与东方财富服务的使用。

chenxyzcyxpp
chenxyzcyxpp
热度 7.64
最近更新 2026-09-09 11:56:54
分类:开发依赖:代码执行 / 读写文件 / 第三方 API / 内部调用大模型应用场景:调试排错 / DevOps / API 集成 / 代码生成 ...

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add event-driven-dashboard
Metadata
name
event-driven-dashboard
description
事件驱动交易台维护与调试。当用户需要修改、调试或扩展 racingai.top/event-driven 页面功能时加载。覆盖:前后端架构、动态渲染调试、服务器部署与重启、后端API数据结构。
triggers
["event-driven","事件驱动","racingai.top","交易台","三维共振","决策矩阵"]

事件驱动交易台维护技能

架构概览

零依赖事件驱动股票分析仪表板,部署在阿里云ECS (<SERVER_IP>)。

用户浏览器 → nginx (racingai.top) → Python HTTPServer (:5566)
                                        ├── GET  /event-driven  → 返回 HTML
                                        ├── GET  /api/health     → 健康检查
                                        ├── GET  /api/market     → 上证实时行情
                                        └── POST /api/analyze    → AI新闻分析
                                                ↓
                                        news_analyzer.py
                                          ├── 百度千帆 LLM (ernie-4.5-turbo-128k)
                                          └── 东方财富 API (实时行情)

文件位置(活跃部署):

  • /var/www/event-driven/event-driven-trader-dashboard.html — 独立 HTML 前端(含内嵌 CSS + JS,无外部依赖)
  • /var/www/event-driven/server.py — 零依赖 Python HTTP 后端(纯标准库,兼容 Python 3.6+)
  • /var/www/event-driven/news_analyzer.py — AI 新闻分析引擎

⚠️ /home/horserace/fintech/ 下有一份不完整的副本,不是活跃部署。始终修改 /var/www/event-driven/ 下的文件。

调试 Pitfalls(必读)

Pitfall 1: 初始 HTML 硬编码演示数据

症状:页面某个区域"不随分析结果更新",始终显示固定内容(如中国电建、比亚迪等)。

根因:初始 HTML 中包含大量硬编码演示数据(~21KB),覆盖全部 7 个区域。即使 JS 渲染函数存在且被正确调用,页面初始加载时用户看到的是假数据。

修复模式:

  1. 检查 JS 渲染函数是否存在且在 runAnalysis() 中被调用
  2. 检查初始 HTML 中是否有硬编码的演示数据(grep 标的名称如"中国电建")
  3. 将所有硬编码演示数据替换为"等待分析"空状态占位
  4. 确认 runAnalysis() 在收到 API 响应后调用所有渲染函数

受影响区域(8个,全部需检查):

  • 事件影响力面板(4 个指标卡)
  • 板块影响热力(sector tiles)
  • 标的共振排序(table tbody)
  • 三维共振决策矩阵(SVG <g id="matrixDataPoints"> 内的数据点)
  • 分析报告 → 事件解读 tab (tab-event)
  • 分析报告 → 产业链拆解 tab (tab-chain)
  • 分析报告 → 技术面详情 tab (tab-tech)
  • 分析报告 → 操作建议 tab (tab-action)
  • Pipeline 步骤描述(Pipeline desc)

Pitfall 2: 浏览器缓存旧版本

症状:修复已部署到服务器,但用户仍看到旧页面。

根因:server.py 的 _serve_html() 原本不设置 Cache-Control 头,浏览器缓存旧 HTML。

修复:_serve_html() 必须返回以下头:

self.send_header("Cache-Control", "no-cache, no-store, must-revalidate")
self.send_header("Pragma", "no-cache")
self.send_header("Expires", "0")

Pitfall 3: 服务器不支持 HEAD 方法

BaseHTTPRequestHandler 默认只处理 GET/POST,curl -I(HEAD)返回 501。用 curl -s 或 curl -sD- -o/dev/null 验证。

部署与重启

# 1. 上传修改后的文件
scp /local/file.html root@&lt;SERVER_IP&gt;:/var/www/event-driven/

# 2. 重启 systemd 服务(服务由 systemd 托管,勿用 fuser+nohup 手动重启,会与 systemd 冲突)
ssh root@&lt;SERVER_IP&gt; "systemctl restart event-driven"

# 3. 查看服务状态与日志
ssh root@&lt;SERVER_IP&gt; "systemctl status event-driven"
ssh root@&lt;SERVER_IP&gt; "journalctl -u event-driven -n 50"

# 4. 验证
ssh root@&lt;SERVER_IP&gt; "curl -s http://127.0.0.1:5566/api/health"
# 期望返回: {"status": "ok", "service": "event-driven-trader"}

后端 API 数据结构

POST /api/analyze 请求体:{"text": "新闻文本"}

响应 JSON 关键字段:

{
  "event_type": "policy|earnings|industry|company|macro",
  "event_title": "事件标题",
  "event_summary": "事件摘要",
  "market_impact": {"direction": "利好|利空|中性", "duration": "短期|中期|长期", "intensity": "high|medium|low"},
  "affected_sectors": [{"sector": "板块名", "impact": "利好|利空", "reason": "原因"}],
  "beneficiary_stocks": [{"name": "股票名", "code": "代码", "signal": "strong|medium|weak", "logic": "逻辑", "key_point": "关注点"}],
  "risk_factors": ["风险1", "风险2"],
  "signal_summary": "综合研判",
  "confidence": "high|medium|low",
  "disclaimer": "免责声明"
}

前端渲染函数链

runAnalysis() 在收到 API 响应后依次调用:

renderMetrics(data)   → 事件影响力面板
renderSectors(data)   → 板块影响热力
renderTargets(data)   → 标的共振排序表
renderMatrix(data)    → 三维共振决策矩阵 SVG
renderReport(data)    → 分析报告(4个tab全部更新)
updatePipelineDesc(data) → Pipeline 步骤描述

验证清单

修改后必须验证:

  1. grep -c '中国电建\|比亚迪\|隆基绿能' 返回 0(无硬编码数据)
  2. grep -c '等待分析' 返回预期数量(占位符存在)
  3. 渲染函数数量正确(grep -c 'function render')
  4. renderMatrix(data) 和 renderReport(data) 在 runAnalysis() 中被调用
  5. Cache-Control 头正确返回
  6. 端到端 API 测试通过(POST /api/analyze 返回有效数据)

详见 references/architecture.md 获取完整架构细节和区域映射。