feat: add playbook persistence with DB schema and CRUD store (issue #82)
Some checks failed
CI / test (pull_request) Has been cancelled
Some checks failed
CI / test (pull_request) Has been cancelled
- Add playbooks table to src/db.py with UNIQUE(date, market) constraint - PlaybookStore: save/load/delete, status management, match_count tracking, list_recent with market filter, stats without full deserialization - DayPlaybook JSON serialization via Pydantic model_dump_json/model_validate_json - 23 tests, 100% coverage on playbook_store.py Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
21
src/db.py
21
src/db.py
@@ -91,6 +91,27 @@ def init_db(db_path: str) -> sqlite3.Connection:
|
||||
"""
|
||||
)
|
||||
|
||||
# Playbook storage for pre-market strategy persistence
|
||||
conn.execute(
|
||||
"""
|
||||
CREATE TABLE IF NOT EXISTS playbooks (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
date TEXT NOT NULL,
|
||||
market TEXT NOT NULL,
|
||||
status TEXT NOT NULL DEFAULT 'pending',
|
||||
playbook_json TEXT NOT NULL,
|
||||
generated_at TEXT NOT NULL,
|
||||
token_count INTEGER DEFAULT 0,
|
||||
scenario_count INTEGER DEFAULT 0,
|
||||
match_count INTEGER DEFAULT 0,
|
||||
UNIQUE(date, market)
|
||||
)
|
||||
"""
|
||||
)
|
||||
|
||||
conn.execute("CREATE INDEX IF NOT EXISTS idx_playbooks_date ON playbooks(date)")
|
||||
conn.execute("CREATE INDEX IF NOT EXISTS idx_playbooks_market ON playbooks(market)")
|
||||
|
||||
# Create indices for efficient context queries
|
||||
conn.execute("CREATE INDEX IF NOT EXISTS idx_contexts_layer ON contexts(layer)")
|
||||
conn.execute("CREATE INDEX IF NOT EXISTS idx_contexts_timeframe ON contexts(timeframe)")
|
||||
|
||||
Reference in New Issue
Block a user