fix: deploy scripts/ files properly (correct directory)

This commit is contained in:
知微
2026-07-01 23:00:28 +08:00
parent b2822cec15
commit ec285669c4
13 changed files with 3537 additions and 51 deletions
+37 -7
View File
@@ -11,7 +11,7 @@ no_agent 模式:有HIGH风险→输出风险摘要 | 无→静默
如果 HIGH → 推送到 Dad
"""
import sqlite3, json, os
import sqlite3, json, os, sys, time
from pathlib import Path
from datetime import datetime
@@ -20,8 +20,25 @@ DATA = BASE / "data"
DB_PATH = DATA / "mofin.db"
STATE_PATH = DATA / "macro_risk_state.json"
def db_update(conn, sql, params, max_retries=3):
"""幂等DB更新,遇到锁自动重试"""
for attempt in range(max_retries):
try:
conn.execute(sql, params)
conn.commit()
return True
except sqlite3.OperationalError as e:
if "locked" in str(e).lower():
if attempt < max_retries - 1:
time.sleep(1)
continue
raise
print(f"[MACRO-CONSUMER] DB更新失败(持续锁): {sql}", file=sys.stderr)
return False
def main():
conn = sqlite3.connect(str(DB_PATH))
conn = sqlite3.connect(str(DB_PATH), timeout=10)
conn.execute("PRAGMA busy_timeout=5000")
conn.row_factory = sqlite3.Row
# 读取未处理的 macro_watch 信号
@@ -43,14 +60,28 @@ def main():
conn.close()
return # SILENT
# 聚合风险等级
# 聚合风险等级(考虑修正覆盖信号)
levels = {"宏观-WATCH_HIGH": "high", "宏观-WATCH_MEDIUM": "medium", "宏观-WATCH_INFO": "info"}
highest = "info"
all_summaries = []
def _effective_level(sentiment, summary):
"""修正覆盖信号取修正后的级别,不按原始sentiment算"""
if "修正覆盖" in (summary or ""):
s = (summary or "").lower()
# 明确说零风险/正面/利好 → info
if any(kw in s for kw in ["零风险", "正面利好", "正面进展", "非风险", "利好"]):
return "info"
# 明确说MEDIUM → medium
if "medium" in s or "中风险" in s:
return "medium"
# 修正覆盖HIGH → 默认降为medium(不保留原始HIGH)
return "medium"
return levels.get(sentiment, "info")
for r in rows:
sentiment = r["overall_sentiment"]
lv = levels.get(sentiment, "info")
lv = _effective_level(sentiment, r["summary"])
if lv == "high":
highest = "high"
elif lv == "medium" and highest != "high":
@@ -72,10 +103,9 @@ def main():
}
STATE_PATH.write_text(json.dumps(state, ensure_ascii=False, indent=2))
# 标记为已处理
# 标记为已处理(含重试)
for r in rows:
conn.execute("UPDATE signal_news SET processed=1 WHERE id=?", (r["id"],))
conn.commit()
db_update(conn, "UPDATE signal_news SET processed=1 WHERE id=?", (r["id"],))
conn.close()
# no_agent 输出(有 HIGH 才主动出声)