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).
This commit is contained in:
Dmitry
2026-09-19 12:40:08 +03:00
parent 95cd6f176e
commit ffc5ed959a
21 changed files with 15852 additions and 60 deletions
+8 -1
View File
@@ -24,6 +24,8 @@
pkgs.just
pkgs.postgresql_17 # local dev cluster (`just db-start`) and psql
pkgs.openapi-generator-cli # `just gen-client`
pkgs.jq # `just app-web-assets` reads package_config.json / pub deps
pkgs.curl # `just app-web-assets` fetches sqlite3.wasm from GitHub releases
];
commonHook = ''
@@ -49,7 +51,12 @@
};
# backend + Flutter toolchain (large download on first use)
app = pkgs.mkShell {
packages = backendTools ++ [ pkgs.flutter ];
packages = backendTools ++ [
pkgs.flutter
# Linux desktop build: flutter_secure_storage_linux links libsecret via pkg-config
pkgs.pkg-config
pkgs.libsecret
];
shellHook = commonHook;
};
};