Files
fin-tracker/docs/ai
Dmitry 4a0b4e0532 feat(deploy): healthcheck api и worker, отдельный migrate-сервис, лимит загрузки отчёта
Миграции вынесены из команды api в one-shot сервис migrate, api и worker стартуют после него. /health отвечает 503 при недоступной БД. Отчёт больше MAX_UPLOAD_BYTES (25 МиБ) получает 413, Caddy режет на 30 МБ раньше. Том uploads убран, секреты env_file передаются сервисам явно. В CI добавлена сборка образа бэкенда без push, test_migrations сверяет модели с историей Alembic.
2026-09-19 21:55:33 +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 и референсы.
  • offline-cache.md — офлайн-кэш Flutter-клиента: контракт Cached<T>, CacheInterceptor, баннер «данные на …» (фаза 5).
  • design-system.md — визуальный язык Flutter-клиента: токены темы, SectionHeader/TileCarousel, группированный NavSidebar (обкатано на Обзоре).