Files
fin-tracker/docs/ai/ops.md
T
Dmitry ffc5ed959a feat(app): offline-кэш GET-запросов на дашборде — фаза 5
CacheInterceptor кэширует каждый успешный GET по путь+параметры в drift
(sqlite нативно, wasm+OPFS в браузере) и подменяет им сетевую ошибку;
провайдер отдаёт Cached<T>, экран показывает баннер «данные на …».
Контракт для остальных экранов — docs/ai/offline-cache.md.

flake.nix: libsecret/pkg-config для линуксовой сборки, jq/curl для
just app-web-assets (сборка sqlite3.wasm + drift_worker.js).
2026-09-19 12:40:08 +03:00

2.6 KiB
Raw Blame History

Эксплуатация

VPS (Docker Compose)

cp .env.example .env        # заполнить POSTGRES_PASSWORD, JWT_SECRET (openssl rand -hex 32), DOMAIN, токены
just up                     # docker compose up -d --build: db, api (миграции при старте), worker, caddy, pg-backup
docker compose exec api fintracker create-user you@example.com
  • Caddy: авто-TLS на DOMAIN, /api/* → api:8000, остальное — Flutter web из app/build/web.
  • Worker — единственный экземпляр планировщика; ручной синк через POST /api/v1/sync/{source} ставит задачу в sync_job, worker забирает её раз в 5 с.
  • pg-backup делает pg_dump -Fc раз в сутки в ./backups, хранит 14 дней; off-site копию настраивает хост (rclone/cron), см. открытый вопрос в плане.

Восстановление

docker compose up -d db
docker compose exec -T db pg_restore -U $POSTGRES_USER -d $POSTGRES_DB --clean < backups/fintracker_<ts>.dump
docker compose up -d

Метрики пересчитываются из raw/core: docker compose exec worker fintracker metrics refresh.

Секреты

Только .env на сервере. В чат и в git не попадают. T-Invest токен — read-only.

Проверено с podman (2026-09-17)

  • podman 5.8 + podman-compose 1.6: стек db api worker поднимается, depends_on.condition: service_healthy работает.
  • Имена образов в docker-compose.yml и Dockerfile полностью квалифицированы (docker.io/library/...) — podman без unqualified-search-registries короткие имена не резолвит.
  • Прокси хоста впекается в образ при podman build/compose --build (HTTP_PROXY попадает в Config.Env), после чего запросы к localhost внутри контейнера идут в недостижимый прокси. Поэтому just up собирает с env -u …proxy…. На VPS без прокси это ни на что не влияет.
  • env_file: .env в compose — буквальный путь; --env-file меняет только подстановку ${…} в самом compose-файле.
  • Команда api использует exec, иначе sh -c не передаёт SIGTERM uvicorn'у и compose добивает контейнер по таймауту.