Files
flowsight/docs/ARCHITECTURE.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

4.4 KiB
Raw Blame History

Architecture

Layout

flowsight/
  TODO.md / ROADMAP.md        # work tracking (shiro-neko style)
  docs/                       # specs (this folder) — change before code
  backend/                    # Go 1.23 module (see TECH-STACK.md)
    cmd/server/main.go        # entrypoint: HTTP server + scheduler in one process
    internal/
      config/                 # env (SECTORS_API_KEY), credit budget, schedules
      sectors/                # SectorsClient + endpoint packages per category
        client.go             # retry, credit counter, param narrowing defaults
        screener.go           # companies/, free-float/, taxonomy
        company.go            # report, segments, quarterly, actions, shareholders
        market.go             # close/, daily, idx-total, index-daily, movers
        brokers.go            # registry cache, activity, summary, foreign-flow
        events.go             # news, filings, suspensions
      store/
        db.go                 # database/sql connect + numbered migrations
        seed.go               # historical-replay fixture loader
        cache.go              # Redis wrapper + in-memory TTL fallback
      agents/                 # 7 specialists + synthesizer (see AGENT-SPECS.md)
        agent.go              # Agent contract: Analyze() -> AgentResult + citations
        smart_money.go broker_intel.go sentiment.go fundamental.go
        technical.go catalyst.go synthesizer.go
      routines/               # 7 routines (see ROUTINES.md)
        engine.go             # cron dispatch, run recording, delivery, SSE publish
        briefing.go           # R1 briefing + R2 radar + R3 reversal + R4 insider + R5/R6 countdowns + R7 review
      alerts/
        rules.go              # 6 detection rules over snapshots
        evaluate.go           # per-cycle evaluation
        notify.go             # Telegram/Discord webhooks
      reports/
        report.go             # 7-section assembly + citations[] (returns persisted id)
        render.go             # PDF/HTML/MD/JSON exporters
      api/                    # chi route handlers (see API.md)
        flow.go screen.go routines.go health.go alerts.go
        report.go interrogate.go watchlist.go portfolio.go chat.go stream.go
      scheduler/              # robfig/cron wiring (ingestion + routines)
  web/                        # SolidJS 1.9 + Vite 6 + typed CSS
    src/
      pages/                  # Dashboard, Routines, Alerts, Screener, Portfolio, Report
      components/             # cards, tables, rotation map, correlation matrix
      lib/api.ts              # typed backend client + SSE hooks
      styles/                 # CSS tokens + themes (tokens.css)
  backend/tests/
    fixtures/                 # historical snapshots (one trading week, manifest.json)
    seed + agents + rules + evaluate + api + routines + client + accuracy tests

Conventions

  • Spec-first: docs/ updated before code; a PR without a doc touch needs a reason.
  • Every outbound Sectors call goes through SectorsClient (credit counted, sections explicit, classification combos minimal). No raw HTTP to the API elsewhere.
  • Every number in user-visible output carries {endpoint, snapshot_at} citation. Builders that emit numbers without citations fail review.
  • Tests: one test file per agent/rule + budget test asserting per-cycle credits ≤ cap on fixtures. go vet + gofmt and tsc + vite build before commit.

Scheduler

  • Ingestion cycle every 30 min, 09:00–16:00 WIB (market hours). Steps in order: reference cache check → universe sweep → market context → per-watchlist depth → incremental events → quarterly freshness → rule evaluation → routine dispatch.
  • Routine schedules are cron exprs stored per routine row; engine records each run (started_at, status, payload) for the Routine Manager history view.

Citation pipeline

  1. Ingestion stores raw payload + snapshot_at in snapshots.
  2. Agents/detectors read snapshots, emit values tagged with snapshot IDs.
  3. Reports/alerts/briefings serialize citations[] alongside values.
  4. Frontend renders citation chips (endpoint + time); stale (>1 session) chips are visually marked.

SSE design

  • GET /api/stream (EventSource): channels agents (status+scores during runs), alerts (new events), activity (feed rows). Heartbeat 15 s; reconnect resumes from last event ID. No WebSocket — one-directional push is all the UI needs.