feat: auto sick tag in archive from journal mood issues
内照明心同步时匹配实例复盘情绪标签,自动标注犯病并锁定标签;中控不再手动选犯病。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user