- Implemented Citations component to display citation data. - Created WatchlistDrawer and ChatSidebar components for managing watchlists and AI chat functionality. - Integrated API calls for watchlist management and chat interactions. - Updated index.tsx to include new components in the main application layout. - Added API client in lib/api.ts for structured API interactions. - Developed Alerts, Dashboard, Portfolio, Routines, Screener, and Report pages with relevant data fetching and UI components. - Introduced styles in tokens.css for consistent theming across the application. - Configured TypeScript and Vite for project setup and development.
80 lines
4.1 KiB
SQL
80 lines
4.1 KiB
SQL
-- FlowSight schema v1. SQLite for hackathon; kept Postgres-compatible
|
|
-- (integer PKs, TEXT JSON payloads, no SQLite-only DDL).
|
|
CREATE TABLE IF NOT EXISTS snapshots(
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
ticker TEXT NOT NULL, date TEXT NOT NULL, source TEXT NOT NULL,
|
|
payload_json TEXT NOT NULL, fetched_at TEXT NOT NULL
|
|
);
|
|
CREATE INDEX IF NOT EXISTS idx_snapshots_ticker_date_source ON snapshots(ticker, date, source);
|
|
CREATE TABLE IF NOT EXISTS broker_activity(
|
|
broker_code TEXT NOT NULL, ticker TEXT NOT NULL, date TEXT NOT NULL,
|
|
buy REAL NOT NULL DEFAULT 0, sell REAL NOT NULL DEFAULT 0, net REAL NOT NULL DEFAULT 0,
|
|
lots REAL NOT NULL DEFAULT 0, freq INTEGER NOT NULL DEFAULT 0, avg_price REAL NOT NULL DEFAULT 0,
|
|
PRIMARY KEY(broker_code, ticker, date)
|
|
);
|
|
CREATE INDEX IF NOT EXISTS idx_broker_activity_ticker_date ON broker_activity(ticker, date);
|
|
CREATE INDEX IF NOT EXISTS idx_broker_activity_broker_date ON broker_activity(broker_code, date);
|
|
CREATE TABLE IF NOT EXISTS foreign_flow(
|
|
ticker TEXT NOT NULL, date TEXT NOT NULL, net_inflow REAL NOT NULL DEFAULT 0,
|
|
PRIMARY KEY(ticker, date)
|
|
);
|
|
CREATE TABLE IF NOT EXISTS news_items(
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
ticker TEXT NOT NULL, date TEXT NOT NULL, source TEXT NOT NULL DEFAULT '',
|
|
sentiment TEXT NOT NULL DEFAULT 'neutral', confidence REAL NOT NULL DEFAULT 0,
|
|
url TEXT NOT NULL DEFAULT '', title TEXT NOT NULL DEFAULT ''
|
|
);
|
|
CREATE INDEX IF NOT EXISTS idx_news_ticker_date ON news_items(ticker, date);
|
|
CREATE TABLE IF NOT EXISTS filings(
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
ticker TEXT NOT NULL, date TEXT NOT NULL, holder_type TEXT NOT NULL DEFAULT '',
|
|
txn_type TEXT NOT NULL DEFAULT '', volume REAL NOT NULL DEFAULT 0, price REAL NOT NULL DEFAULT 0
|
|
);
|
|
CREATE INDEX IF NOT EXISTS idx_filings_ticker_date ON filings(ticker, date);
|
|
CREATE TABLE IF NOT EXISTS routines(
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
user_key TEXT NOT NULL, type TEXT NOT NULL, schedule_cron TEXT NOT NULL DEFAULT '',
|
|
channels_json TEXT NOT NULL DEFAULT '[]', enabled INTEGER NOT NULL DEFAULT 1
|
|
);
|
|
CREATE TABLE IF NOT EXISTS routine_runs(
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
routine_id INTEGER NOT NULL, started_at TEXT NOT NULL, status TEXT NOT NULL DEFAULT 'ok',
|
|
payload_json TEXT NOT NULL DEFAULT '{}', credits_used INTEGER NOT NULL DEFAULT 0
|
|
);
|
|
CREATE INDEX IF NOT EXISTS idx_routine_runs_routine ON routine_runs(routine_id, started_at);
|
|
CREATE TABLE IF NOT EXISTS alerts(
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
user_key TEXT NOT NULL, name TEXT NOT NULL, rule_json TEXT NOT NULL,
|
|
channels_json TEXT NOT NULL DEFAULT '[]', last_fired TEXT NOT NULL DEFAULT ''
|
|
);
|
|
CREATE TABLE IF NOT EXISTS alert_events(
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
alert_id INTEGER NOT NULL, ticker TEXT NOT NULL, date TEXT NOT NULL,
|
|
message TEXT NOT NULL, context_json TEXT NOT NULL DEFAULT '{}', citations_json TEXT NOT NULL DEFAULT '[]'
|
|
);
|
|
CREATE INDEX IF NOT EXISTS idx_alert_events_ticker_date ON alert_events(ticker, date);
|
|
CREATE TABLE IF NOT EXISTS watchlists(
|
|
user_key TEXT NOT NULL, ticker TEXT NOT NULL, added_at TEXT NOT NULL,
|
|
PRIMARY KEY(user_key, ticker)
|
|
);
|
|
CREATE TABLE IF NOT EXISTS reports(
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
ticker TEXT NOT NULL, generated_at TEXT NOT NULL,
|
|
payload_json TEXT NOT NULL, citations_json TEXT NOT NULL DEFAULT '[]'
|
|
);
|
|
CREATE TABLE IF NOT EXISTS agent_accuracy(
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
agent TEXT NOT NULL, ticker TEXT NOT NULL, prediction TEXT NOT NULL,
|
|
predict_date TEXT NOT NULL, resolved INTEGER NOT NULL DEFAULT 0,
|
|
hit INTEGER NOT NULL DEFAULT 0, actual_return REAL NOT NULL DEFAULT 0
|
|
);
|
|
CREATE INDEX IF NOT EXISTS idx_accuracy_agent ON agent_accuracy(agent, predict_date);
|
|
CREATE TABLE IF NOT EXISTS briefings(
|
|
date TEXT PRIMARY KEY, payload_json TEXT NOT NULL, citations_json TEXT NOT NULL DEFAULT '[]'
|
|
);
|
|
CREATE TABLE IF NOT EXISTS credit_ledger(
|
|
date TEXT NOT NULL, endpoint TEXT NOT NULL, calls INTEGER NOT NULL DEFAULT 0,
|
|
credits INTEGER NOT NULL DEFAULT 0, PRIMARY KEY(date, endpoint)
|
|
);
|
|
CREATE TABLE IF NOT EXISTS meta(key TEXT PRIMARY KEY, value TEXT NOT NULL DEFAULT '');
|