|
feat: раздел Настройки (.env-оверрайды UI) и PWA с web-push каналом
Настройки: реестр app/settings_registry.py + хранение оверрайдов в app_settings (settings_store, без кэша). Дефолт из .env, перебивается из админки без перезапуска. Секреты (VAPID private, тг-токен, SMTP-пароль) — write-only: записываются через UI, никогда не возвращаются API. Эндпоинты GET/PUT /api/v1/admin/settings. Web-push: канал push (целенаправлен как user — адресат из payload.user_id), таблица push_subscriptions, самопользовательская подписка браузера через /me/push* (upsert по endpoint, чужой 404). Воркер send_push: pywebpush (DER base64url ключи), 404/410 — подписка удаляется, ретраи как у s2s. PWA: manifest + sw.js (pass-through, push/notificationclick), иконки из gnexus-mark.svg, /settings с личным пуш-блоком и админ-конфигами. Миграция 0006 (ck_channel ×3 +push, app_settings, push_subscriptions). Верификация: 47 бэкенд-проверок + mecheck/retcheck + 17 puppeteer — ALL OK. Co-Authored-By: Claude Code <noreply@anthropic.com> |
|---|
|
|
| CLAUDE.md |
|---|
| alembic/versions/20261003_0006_push_settings.py 0 → 100644 |
|---|
| app/api/admin_routes.py |
|---|
| app/api/admin_schemas.py |
|---|
| app/api/events_routes.py |
|---|
| app/api/me_routes.py |
|---|
| app/models/__init__.py |
|---|
| app/models/dicts.py |
|---|
| app/models/events.py |
|---|
| app/models/settings.py 0 → 100644 |
|---|
| app/settings_registry.py 0 → 100644 |
|---|
| app/settings_store.py 0 → 100644 |
|---|
| app/worker/senders.py |
|---|
| app/worker/tasks.py |
|---|
| docs/05-ingestion-api.md |
|---|
| docs/06-settings-pwa.md 0 → 100644 |
|---|
| frontend/index.html |
|---|
| frontend/public/assets/imgs/apple-touch-icon-180.png 0 → 100644 |
|---|
|
|
| frontend/public/assets/imgs/synapse-icon-192.png 0 → 100644 |
|---|
|
|
| frontend/public/assets/imgs/synapse-icon-512.png 0 → 100644 |
|---|
|
|
| frontend/public/manifest.webmanifest 0 → 100644 |
|---|
| frontend/public/sw.js 0 → 100644 |
|---|
| frontend/src/App.vue |
|---|
| frontend/src/api.js |
|---|
| frontend/src/main.js |
|---|
| frontend/src/push.js 0 → 100644 |
|---|
| frontend/src/router.js |
|---|
| frontend/src/views/SettingsView.vue 0 → 100644 |
|---|
| requirements.txt |
|---|