diff --git a/docs/TZ.md b/docs/TZ.md index 37093f2..f9b91b5 100644 --- a/docs/TZ.md +++ b/docs/TZ.md @@ -4,7 +4,7 @@ | | | |---|---| -| Версия ТЗ | 0.26 | +| Версия ТЗ | 0.27 | | Дата | 2026-09-21 | | Статус | На обсуждении | @@ -357,6 +357,27 @@ редирект на вход; после переподключения — форс-рефреш всех открытых видов (данные за время разрыва могли измениться). +### 3.15. PWA + +Приложение устанавливается на устройство как приложение (Chrome/Android; вопрос +оффлайн-режима данных — открытый вопрос 8.4, пока приложение всегда онлайн). + +- **Манифест**: standalone, тёмная палитра кита (`#16161e` — фон и theme-color, + чтобы не мигало белым при запуске и не зеленела шапка окна), иконки 192/512 + + maskable-512, `id`/`start_url` = `/`, язык ru. +- **Service Worker** (vite-plugin-pwa, `autoUpdate`): precache оболочки — собранные + ассеты, шрифты/иконки кита (~6 МБ лимит), `/api/*`, `/auth/*`, `/mcp/*` никогда + не кэшируются и не получают fallback на `index.html`. +- **Оффлайн-оболочка**: при отсутствии сети SW отдаёт оболочку приложения + (SPA-fallback) — интерфейс открывается, данные при этом недоступны (запросы к + API не кэшируются). Вложения и статические ассеты — CacheFirst. +- **Обновление**: новая версия подхватывается автоматически при следующем визите + (`autoUpdate`); SSE-соединение при обновлении рвётся — reconnect покрывает (3.14). +- **Установка с телефона**: требует secure context — при доступе по LAN по HTTP + (не localhost) браузер SW не зарегистрирует; нужен HTTPS (M7 Docker/nginx). +- **Dev-режим**: SW не включён (`devOptions` выключен) — PWA проверяется на + прод-сборке (`dist`), не на dev-сервере. + ## 4. Нефункциональные требования @@ -373,6 +394,7 @@ | Мобильность | На старте — **только PWA**; Android-приложение — вне скоупа стартовой версии (вернуться к нему позже) | | Приватность | Все данные и LLM-вызовы — на собственном сервере | | Реактивность | SSE (`/api/events`): грубозернистые события + refetch, см. 3.14 | +| PWA | манифест + SW (precache оболочки, autoUpdate), оффлайн-оболочка без кэша API, см. 3.15 | Внешние зависимости проекта (не форкать, обновлять через пакетный менеджер): diff --git a/frontend/index.html b/frontend/index.html index 8871f44..e30b1a0 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -3,7 +3,7 @@
- +