feat(onboarding+modules): чеклист новой org, MedSchedule за флагом, удаление Capacitor
Шаги 1.9 и 1.10 плана production-готовности: - OnboardingChecklist (форма→коллеги→задача) на главной, фикс EmptyState в Tasks - organizations.medschedule_enabled (миграция 0081), гейт модуля по флагу - Capacitor-стек удалён (5 зависимостей, push-notifications.ts, capacitor.config) - check/lint/build чисто, vitest 96/96
This commit is contained in:
@@ -277,3 +277,24 @@
|
||||
- Что изменено: `DOCKER.md` — раздел «Бэкапы PostgreSQL (production)»: расписание (3:00 pg_dump + 3:30 CSV, ротация 14/7), RPO 24ч/RTO 15–30 мин, команды восстановления, что НЕ входит в дамп (MinIO/Ollama/crm_data), риск «бэкапы на том же VPS» (выгрузка наружу — в бэклог).
|
||||
- Как проверялось: восстановление свежего дампа (2026-09-07 03:00, 11 МБ) в scratch-БД на сервере — 0 ошибок pg_restore, 125 таблиц, 990 задач/49 пользователей/14 форм/6024 значений полей, последняя миграция 0078 (дамп предшествует 0079/0080 — консистентно). Scratch-БД удалена.
|
||||
- Влияние на поиск/UX: нет.
|
||||
|
||||
---
|
||||
|
||||
## [1.9] Onboarding
|
||||
|
||||
- Статус: ✅ done
|
||||
- Зачем: новая организация не попадает в тупик (Фаза 1).
|
||||
- Что изменено: `client/src/components/OnboardingChecklist.tsx` — чеклист «Начало работы · N из 3» (форма → коллеги → задача), состояние из реальных данных, скрытие per org (localStorage); встроен в Home.tsx. `client/src/pages/Tasks.tsx` — при отсутствии форм EmptyState с кнопкой «Создать форму» вместо задизейбленной «Создать задачу».
|
||||
- Как проверялось: `npm run check`/lint/build чисто; vitest 96/96.
|
||||
- Влияние на поиск/UX: нет (новая плашка только для пустых организаций).
|
||||
|
||||
## [1.10] Модули и мёртвый код
|
||||
|
||||
- Статус: ✅ done
|
||||
- Зачем: MedSchedule не в ядре без флага; мёртвый Capacitor-стек удалён (Фаза 1).
|
||||
- Что изменено:
|
||||
- MedSchedule за org-флагом `organizations.medschedule_enabled` (миграция 0081, default FALSE, TRUE для slug='medschedule'; выбран org-флаг как наименее инвазивный и соответствующий прежнему org-ориентированному гейту, admin-override сохранён): `/api/auth/me` отдаёт флаг, серверный гейт requireMedOrganization, сайдбар и страница модуля по флагу. Worker оставлен (работает только с org medschedule).
|
||||
- Capacitor удалён полностью: capacitor.config.ts, client/src/lib/push-notifications.ts (единственный файл с импортами @capacitor/*), вызов в App.tsx, 5 зависимостей @capacitor/* из package.json. Expo (mobile/) не тронут — рабочее. Web-Push через @/lib/pwa остался.
|
||||
- Как проверялось: grep — упоминаний Capacitor не осталось (и в lockfile); `npm run check`/lint/build чисто; vitest 96/96.
|
||||
- Влияние на поиск/UX: нет.
|
||||
- Подводные камни: включение MedSchedule для другой org — SQL UPDATE (UI-переключателя нет, как у GPS-флагов до матрицы).
|
||||
|
||||
Reference in New Issue
Block a user