Files
fin-tracker/docs/ai
Dmitry 400d9922bb docs: состояние фазы 2 после аллокации, API и экранов портфеля
Плюс два ограничения, которые стоили времени: AssetClass нельзя выставлять наружу
енумом из-за значения index, и сектор не заполнен ни у одного инструмента — его нет
в ответе GetInstrumentBy, нужны потиповые Shares/Bonds.
2026-09-18 14:21:06 +03:00
..

docs/ai — обзор проекта

Назначение

fin-tracker объединяет два мира личных финансов:

  • ZenMoney — повседневные счета и транзакции (синкается с банками сам), читаем через POST /v8/diff/;
  • брокеры — T-Invest по gRPC API, Сбер и ВТБ через загрузку отчётов, прочее вручную/CSV;

и считает поверх них то, за что раньше платили Snowball Income: позиции по всем брокерам, P&L, XIRR/TWR, аллокацию, календарь дивидендов и купонов с прогнозом, ребалансировку, бенчмарки, налоги — плюс net worth, cash flow и runway по ZenMoney.

Система в общих чертах

sources/* ──sync──▶ raw_* (JSONB, идемпотентно) ──map──▶ core (account, instrument, event, cash_txn…)
                                                          │
worker (APScheduler, advisory locks)                      ▼
                                              ledger (лоты FIFO, дедуп, матчинг ZM↔брокер)
                                                          │
                                              analytics (polars, pyxirr) ──▶ metric_* ──▶ api ──▶ Flutter
  • backend/src/fintracker/sources/ — по одному пакету на источник, контракт в base.py.
  • worker/ — планировщик и запуск синков (runner.run_source): lock, sync_run, курсор.
  • api/ — FastAPI, /api/v1, ошибки RFC 7807, деньги строками.
  • app/ — Flutter, клиент сгенерирован из openapi/openapi.json.

Документы

  • architecture.md — домен, модули, потоки данных, API.
  • conventions.md — деньги, валюты, идемпотентность, стиль.
  • plan.md — фазы и чек-листы проверки.
  • ops.md — деплой на VPS, бэкапы, секреты.
  • links.md — внешние API и референсы.