feat(confluence): add racks, evaluations, and signal-history schema + repository (M22 slice 3)

This commit is contained in:
Investor Flow Build
2026-08-10 15:13:08 -04:00
parent 49bcfc3d3a
commit 93593f3ecf
5 changed files with 588 additions and 0 deletions
+42
View File
@@ -212,6 +212,48 @@ function runMigrations(db: DatabaseSync): void {
sent_at TEXT
)`,
`CREATE INDEX IF NOT EXISTS idx_notification_outbox_pending ON notification_outbox(status, created_at)`,
// Confluence Signal Engine (M22) — racks, evaluations, signal history.
`CREATE TABLE IF NOT EXISTS confluence_racks (
id TEXT PRIMARY KEY,
owner_id TEXT,
name TEXT NOT NULL,
slot_ids_json TEXT NOT NULL,
description TEXT,
is_system INTEGER NOT NULL DEFAULT 0,
created_at TEXT NOT NULL
)`,
`CREATE INDEX IF NOT EXISTS idx_confluence_racks_owner ON confluence_racks(owner_id)`,
`CREATE TABLE IF NOT EXISTS confluence_evaluations (
id TEXT PRIMARY KEY,
symbol TEXT NOT NULL,
as_of TEXT NOT NULL,
rack_id TEXT NOT NULL REFERENCES confluence_racks(id) ON DELETE CASCADE,
assessments_json TEXT NOT NULL,
bull_evidence REAL NOT NULL,
bear_evidence REAL NOT NULL,
bull_count INTEGER NOT NULL,
bear_count INTEGER NOT NULL,
assessed_count INTEGER NOT NULL,
net_evidence REAL NOT NULL,
total_evidence REAL NOT NULL,
quality TEXT NOT NULL,
created_at TEXT NOT NULL,
UNIQUE(symbol, as_of, rack_id)
)`,
`CREATE INDEX IF NOT EXISTS idx_confluence_evals_symbol_asof ON confluence_evaluations(symbol, as_of DESC)`,
`CREATE TABLE IF NOT EXISTS confluence_signal_history (
id TEXT PRIMARY KEY,
symbol TEXT NOT NULL,
slot_id TEXT NOT NULL,
rack_id TEXT NOT NULL REFERENCES confluence_racks(id) ON DELETE CASCADE,
fired_at TEXT NOT NULL,
quality_at_fire TEXT NOT NULL,
price_resolved INTEGER NOT NULL DEFAULT 0,
price_confirmed INTEGER NOT NULL DEFAULT 0,
resolved_at TEXT,
verdict TEXT
)`,
`CREATE INDEX IF NOT EXISTS idx_confluence_signal_symbol_slot ON confluence_signal_history(symbol, slot_id)`,
];
for (const sql of migrations) {
try { db.exec(sql); } catch { /* column already exists */ }