feat: auto sick tag in archive from journal mood issues

内照明心同步时匹配实例复盘情绪标签,自动标注犯病并锁定标签;中控不再手动选犯病。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-07-07 01:12:47 +08:00
parent 2a3d264c8f
commit d7fa596e68
5 changed files with 218 additions and 26 deletions
+31
View File
@@ -6,7 +6,9 @@ import unittest
from datetime import datetime
from lib.hub.hub_trades_lib import (
attach_journal_mood_tags,
fetch_trades_for_trading_day,
journal_trade_match_key,
summarize_trades,
trading_day_from_dt,
trading_day_window_bounds,
@@ -193,6 +195,35 @@ class HubTradesLibTest(unittest.TestCase):
self.assertEqual(rows[0]["result"], "时间平仓")
conn.close()
def test_attach_journal_mood_tags_marks_sick(self):
conn = sqlite3.connect(":memory:")
conn.row_factory = sqlite3.Row
conn.execute(
"""CREATE TABLE journal_entries (
coin TEXT, open_datetime TEXT, close_datetime TEXT, mood_issues TEXT, created_at TEXT
)"""
)
conn.execute(
"INSERT INTO journal_entries VALUES (?,?,?,?,?)",
("ETH", "2026-07-06 21:51", "2026-07-07 00:00", "报复开仓,扛单", "2026-07-07 00:05"),
)
conn.commit()
trades = [
{
"id": 42,
"symbol": "ETH/USDT",
"opened_at": "2026-07-06 21:51:00",
"closed_at": "2026-07-07 00:00:00",
}
]
attach_journal_mood_tags(conn, trades, cutoff_s="2026-01-01 00:00:00")
self.assertTrue(trades[0]["journal_mood_sick"])
self.assertEqual(trades[0]["behavior_tag"], "sick")
self.assertEqual(trades[0]["journal_mood_issues"], ["报复开仓", "扛单"])
key = journal_trade_match_key("ETH/USDT", "2026-07-06 21:51:00", "2026-07-07 00:00:00")
self.assertEqual(key, ("ETH", "2026-07-06 21:51", "2026-07-07 00:00"))
conn.close()
if __name__ == "__main__":
unittest.main()