System Overview
The following diagram provides a single-page view of the main runtime components and their relationships.
flowchart TD
subgraph External["External Systems"]
FYERS_REST["FYERS REST API"]
FYERS_DATA_WS["FYERS Data WebSocket"]
FYERS_ORDER_WS["FYERS Order WebSocket"]
end
subgraph App["Backtrader Integration (src/)"]
STORE["FyersStore<br/>src/fyers_store/store.py"]
BROKER["FyersBroker<br/>src/fyers_store/broker.py"]
FEED["FyersData<br/>src/fyers_store/data_feed.py"]
REST_ADAPTER["REST Adapter<br/>src/fyers_store/adapters/fyers_rest.py"]
DATA_WS_ADAPTER["Data WS Adapter<br/>src/fyers_store/adapters/fyers_ws.py"]
ORDER_WS_ADAPTER["Order WS Adapter<br/>src/fyers_store/adapters/fyers_ws.py"]
CACHE["SQLite Historical Cache<br/>src/fyers_store/persistence/sqlite_cache.py"]
STATE_DB["SQLite State Store<br/>src/fyers_store/state/"]
LOGGING["Logging<br/>src/logging_module/"]
AUTH["Auth Helpers<br/>src/fyers/auth.py"]
FAIL_AUTH["AuthError<br/>fail-fast"]
FAIL_RECONCILE["ReconcileFailure<br/>fail-fast"]
FAIL_ORDER["Unknown Order State<br/>manual reconcile"]
end
FEED -->|poll/consume| STORE
BROKER -->|submit/modify/cancel| STORE
STORE -->|history DB-first| CACHE
STORE -->|REST calls| REST_ADAPTER
STORE -->|drain market queue| DATA_WS_ADAPTER
STORE -->|drain order queue| ORDER_WS_ADAPTER
REST_ADAPTER --> FYERS_REST
DATA_WS_ADAPTER --> FYERS_DATA_WS
ORDER_WS_ADAPTER --> FYERS_ORDER_WS
BROKER -->|persist/recover| STATE_DB
BROKER -->|logs| LOGGING
FEED -->|logs| LOGGING
STORE -->|logs| LOGGING
REST_ADAPTER -->|logs| LOGGING
DATA_WS_ADAPTER -->|logs| LOGGING
ORDER_WS_ADAPTER -->|logs| LOGGING
AUTH --> FYERS_REST
AUTH -->|logs| LOGGING
REST_ADAPTER -.auth failure.-> FAIL_AUTH
DATA_WS_ADAPTER -.auth failure.-> FAIL_AUTH
ORDER_WS_ADAPTER -.auth failure.-> FAIL_AUTH
BROKER -.reconcile failure.-> FAIL_RECONCILE
REST_ADAPTER -.place_order timeout.-> FAIL_ORDER