feat: Forex Factory calendar — unified past+future list style Trading Economics
- New ff_calendar table (event_date, time, currency, impact, actual, forecast, previous) - New service ff_calendar.py: bulk CSV import (83K events 2007-2025) + live sync from faireconomy.media JSON endpoint (this week / next week) - New API endpoints: POST /api/eco/ff-import, POST /api/eco/ff-sync, GET /api/eco/calendar (period filter), GET /api/eco/ff-stats - CalendarPage.tsx full rewrite: period tabs (Recent/Today/Tomorrow/This Week…), currency flags filter, impact filter, unified date-grouped table with Time·Flag·Currency·Impact·Event·Actual·Forecast·Previous columns, green/red actual vs forecast, TODAY badge, auto-refresh 60s Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -685,6 +685,29 @@ def init_db():
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# ── Forex Factory Calendar ─────────────────────────────────────────────────
|
||||
c.execute("""CREATE TABLE IF NOT EXISTS ff_calendar (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
event_date TEXT NOT NULL,
|
||||
event_time TEXT,
|
||||
currency TEXT NOT NULL,
|
||||
impact TEXT,
|
||||
event_name TEXT NOT NULL,
|
||||
actual_value TEXT,
|
||||
forecast_value TEXT,
|
||||
previous_value TEXT,
|
||||
detail TEXT,
|
||||
source TEXT DEFAULT 'ff_cache',
|
||||
fetched_at TEXT DEFAULT (datetime('now')),
|
||||
UNIQUE(event_date, event_time, currency, event_name)
|
||||
)""")
|
||||
try:
|
||||
c.execute("CREATE INDEX IF NOT EXISTS idx_ff_date ON ff_calendar(event_date)")
|
||||
c.execute("CREATE INDEX IF NOT EXISTS idx_ff_currency ON ff_calendar(currency)")
|
||||
c.execute("CREATE INDEX IF NOT EXISTS idx_ff_impact ON ff_calendar(impact)")
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# ── Specialist Desks ───────────────────────────────────────────────────────
|
||||
c.execute("""CREATE TABLE IF NOT EXISTS specialist_reports (
|
||||
id TEXT PRIMARY KEY,
|
||||
|
||||
Reference in New Issue
Block a user