Dashboard: 信号tab + API(signals + xiaoguo-scan),前端展示

This commit is contained in:
知微
2026-06-21 02:44:05 +08:00
parent aa1f621b03
commit 70514bf542
2 changed files with 117 additions and 1 deletions
+53 -1
View File
@@ -198,7 +198,59 @@ def api_market():
return jsonify(_load_json(DATA_DIR / "market.json", {}))
# ── 数据写入API(供 cron/update_data.py 调用) ──────────
# ── 信号API(新增) ─────────────────────────────────────
@app.route("/api/signals")
def api_signals():
"""最近信号 + 小果分析"""
try:
from mofin_db import get_conn
conn = get_conn()
signals = conn.execute("""
SELECT sn.id, sn.sector, sn.overall_sentiment,
sn.summary, sn.source, sn.created_at,
ss.signal_type, ss.severity
FROM signal_news sn
LEFT JOIN sector_signals ss ON sn.signal_id = ss.id
ORDER BY sn.id DESC LIMIT 20
""").fetchall()
conn.close()
return jsonify([dict(r) for r in signals])
except Exception as e:
return jsonify({"error": str(e)}), 500
@app.route("/api/xiaoguo-scan")
def api_xiaoguo_scan():
"""小果扫描统计"""
try:
from mofin_db import get_conn
conn = get_conn()
total = conn.execute("SELECT COUNT(*) FROM xiaoguo_scan_tracker").fetchone()[0]
found = conn.execute("SELECT COUNT(*) FROM xiaoguo_scan_tracker WHERE found_count>0").fetchone()[0]
recent = conn.execute("""
SELECT code, name, last_scanned_at, found_count
FROM xiaoguo_scan_tracker
ORDER BY last_scanned_at DESC LIMIT 20
""").fetchall()
source_count = conn.execute("""
SELECT source, COUNT(*) as cnt FROM signal_news
WHERE datetime(created_at) > datetime('now', '-1 day')
GROUP BY source
""").fetchall()
conn.close()
return jsonify({
"total_scanned": total,
"found_signals": found,
"recent": [dict(r) for r in recent],
"source_today": {r["source"]: r["cnt"] for r in source_count}
})
except Exception as e:
return jsonify({"error": str(e)}), 500
# ── 数据写入API ──
@app.route("/api/update/portfolio", methods=["POST"])
def update_portfolio():