AGENTS.md и docs/ai/plan.md — фаза 2 закрыта (линки, брокерские потоки, ручные цены), фазы 3 и 4 закрыты и протестированы на живых отчётах и фикстурах; порядок шагов пересчёта дополнен benchmarks/rebalance/income/tax.
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 и референсы.