feat: bank forceasts

This commit is contained in:
OpenSquared
2026-06-30 21:47:20 +02:00
parent bb614936c3
commit 292d2c6413
4 changed files with 655 additions and 3 deletions

View File

@@ -738,6 +738,54 @@ def init_db():
except Exception:
pass
# ── Bank Forecast Sources ──────────────────────────────────────────────────
c.execute("""CREATE TABLE IF NOT EXISTS bank_forecast_sources (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
url TEXT NOT NULL DEFAULT '',
active INTEGER NOT NULL DEFAULT 1,
last_scraped TEXT,
notes TEXT DEFAULT ''
)""")
# Pre-seed well-known public research sites (URL left blank — user fills in)
_default_banks = [
('BFS_ING', 'ING Think', ''),
('BFS_RABO', 'Rabobank Economics',''),
('BFS_COMM', 'Commerzbank Research',''),
('BFS_DANSK', 'Danske Research', ''),
('BFS_MUFG', 'MUFG Research', ''),
('BFS_WELLS', 'Wells Fargo Economics',''),
('BFS_BBVA', 'BBVA Research', ''),
('BFS_NATIX', 'Natixis Research', ''),
]
for _bid, _bname, _burl in _default_banks:
try:
c.execute("INSERT OR IGNORE INTO bank_forecast_sources (id,name,url) VALUES (?,?,?)",
(_bid, _bname, _burl))
except Exception:
pass
c.execute("""CREATE TABLE IF NOT EXISTS bank_forecasts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
source_id TEXT NOT NULL REFERENCES bank_forecast_sources(id),
series_id TEXT NOT NULL,
event_name TEXT NOT NULL DEFAULT '',
event_date TEXT NOT NULL,
forecast_value REAL,
unit TEXT DEFAULT '',
confidence TEXT DEFAULT 'medium',
snippet TEXT DEFAULT '',
source_url TEXT DEFAULT '',
extracted_at TEXT NOT NULL DEFAULT (datetime('now')),
UNIQUE(source_id, series_id, event_date)
)""")
try:
c.execute("CREATE INDEX IF NOT EXISTS idx_bf_series ON bank_forecasts(series_id, event_date)")
c.execute("CREATE INDEX IF NOT EXISTS idx_bf_date ON bank_forecasts(event_date)")
c.execute("CREATE INDEX IF NOT EXISTS idx_bf_source ON bank_forecasts(source_id)")
except Exception:
pass
# ── Specialist Desks ───────────────────────────────────────────────────────
c.execute("""CREATE TABLE IF NOT EXISTS specialist_reports (
id TEXT PRIMARY KEY,