diff --git a/docs/ai/plan.md b/docs/ai/plan.md index 980157a..df03502 100644 --- a/docs/ai/plan.md +++ b/docs/ai/plan.md @@ -545,10 +545,26 @@ backup/restore, страница здоровья (`/sync/status`, счётчи `pkg-config` для линуксовой сборки уже добавлены в `flake.nix`. - `docs/ai/ops.md` поправлен: убрана ссылка на «появится в фазе 2» у `metrics refresh`. -Не начато: CI-джоба для Flutter (`just app-check` в CI, сборка Linux/Windows), консолидация -страницы здоровья (сейчас статусы синка на `/sync`, data quality — блоком на дашборде), -Android release-подпись (нужен keystore от пользователя), off-site бэкап (см. открытый -вопрос §7.9 — решения ещё нет). +Сделано дополнительно, параллельно в отдельных worktree: + +- **CI для Flutter** — джоба `app` (`flutter analyze && flutter test`) и отдельные + `app-build-linux`/`app-build-windows` в `.github/workflows/ci.yml`. По пути найден и + починен пре-существующий баг: `flutter build linux` не собирался вовсе — не хватало + `libsecret-1-dev`/`pkg-config`, а после этого `flutter_secure_storage_linux` падал на + `-Werror=deprecated-literal-operator` в своём вендоренном `nlohmann/json.hpp` + (подавлено через `add_compile_options` в `app/linux/CMakeLists.txt`). Windows-джоба + добавлена по аналогии, но не проверена — нет Windows-машины. +- **Страница здоровья** — `/sync` и блок data quality с дашборда сведены в один `/health` + (вкладки «Источники» / «Качество данных»); список находок вынесен в общий + `DataQualityList`, дашборд ссылается на `/health?tab=quality` вместо своего bottom sheet. +- **Offline-кэш на остальных экранах** — accounts, cashflow, categories, goals, income, + portfolio (+ карточка инструмента), rebalance, tax, rules переведены на `Cached` по + контракту `offline-cache.md`. Второстепенные cross-screen селекторы (`scopesProvider`, + `categoriesListProvider` и т.п.) оставлены без баннера — их GET всё равно кэшируется + интерцептором прозрачно, баннер просто не нужен для не-основного контента экрана. + +Не начато: Android release-подпись (нужен keystore от пользователя), off-site бэкап (см. +открытый вопрос §7.9 — решения ещё нет). ## 7. Открытые вопросы (дефолт в скобках, можно менять по ходу)