Files
flowsight/docs/DATA-MODEL.md
T
asepharyana 8c184ccae1 feat: add Citations and WatchlistChat components, integrate with API
- 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.
2026-09-15 12:36:48 +07:00

2.1 KiB
Raw Blame History

Data model

SQLite for the hackathon; schema kept Postgres-compatible (serial → integer PK, JSON → TEXT with JSON1, no SQLite-only DDL). Migrations numbered in backend/internal/store/migrations/.

Tables

  • snapshots(id, ticker, date, source, payload_json, fetched_at) — raw API rows. Index (ticker, date, source). Retention: 180d, then compact to weekly.
  • broker_activity(broker_code, ticker, date, buy, sell, net, lots, freq, avg_price) Index (ticker, date), (broker_code, date).
  • foreign_flow(ticker, date, net_inflow) — PK (ticker, date).
  • news_items(id, ticker, date, source, sentiment, confidence, url, title) — Index (ticker, date).
  • filings(id, ticker, date, holder_type, txn_type, volume, price) — Index (ticker, date).
  • routines(id, user_key, type, schedule_cron, channels_json, enabled) — 7 types (R1–R7).
  • routine_runs(id, routine_id, started_at, status, payload_json, credits_used).
  • alerts(id, user_key, name, rule_json, channels_json, last_fired).
  • notification_destinations(id, user_key, kind, label, bot_token, chat_id, webhook_url, enabled, created_at) — per-user push targets. kind telegram needs bot_token+chat_id, discord needs webhook_url (https). Secrets never leave the server in API responses.
  • alert_events(id, alert_id, ticker, date, message, context_json, citations_json).
  • watchlists(user_key, ticker, added_at) — PK (user_key, ticker).
  • reports(id, ticker, generated_at, payload_json, citations_json).
  • agent_accuracy(id, agent, ticker, prediction, predict_date, resolved, hit, actual_return).
  • briefings(date, payload_json, citations_json) — PK date.
  • credit_ledger(date, endpoint, calls, credits) — daily spend audit.

Seed strategy

seed.py loads one historical trading week into snapshots + derived tables so the full demo (briefing → radar → report → interrogation) runs offline. Fixtures live in tests/fixtures/ as JSON exports of real API shapes (field names match schema.json).

Cursors

  • meta(key, value): quarterly_since (universe poll cursor), news_since, filings_since — persisted so restarts resume incrementally.