diff --git a/vector_tasks.md b/vector_tasks.md index 29a11ca..43d0d3b 100644 --- a/vector_tasks.md +++ b/vector_tasks.md @@ -968,8 +968,8 @@ sed -i 's/sar_mchs/vector_mchs/g; s#/root/sar-mchs#/root/vector#g' DEPLOY.md - **Несколько поисков одновременно** — сегодня API работает с произвольным case_id, но UI предполагает «текущий поиск»: дашборд, карта, анализ привязаны к одному кейсу без понятия «операция». -- **Много пользователей** — каждое ЦОУ (областное/районное) = аккаунты; - республиканский штаб видит все поиски, ЦОУ — свои. +- **Много пользователей** — каждое подразделение (ОУМЧС / Г(Р)ОЧС) = аккаунты; + РЦУ РЧС видит все поиски, подразделения — свои. - **КОНТУР подключается к каждому поиску** — outbound-контракт B20 операционно: зоны по конкретной операции, не «в абстракт». @@ -986,8 +986,8 @@ search_operations: title text -- «Поиск: Иванов П., Минский р-н» case_id fk → cases -- карточка (матмодель живёт в cases) status enum(planned, active, paused, completed, archived) - cou_id fk → cou_units -- ответственное ЦОУ - contour_operation_id uuid null -- заполняется при первой отправке зон в КОНТУР + unit_id fk → mchs_units -- ответственное подразделение (ОУМЧС/Г(Р)ОЧС) + contour_operation_id uuid null -- заполняется при первой отправке зон в КОНТУР created_by fk → users created_at / updated_at / closed_at ``` @@ -997,14 +997,15 @@ search_operations: — надстройка со статусом/владением/участниками. КОНТУР-маппинг: поле `contour_operation_id`, заполняется при первой отправке зон. -**2.2 Пользователи и ЦОУ (RBAC по образцу РВС)** +**2.2 Пользователи и подразделения (RBAC по образцу РВС)** ``` -cou_units: -- справочник ЦОУ - id uuid PK, name, region (область), kind (oblast|raion|resp), parent_id null +mchs_units: -- справочник подразделений МЧС + id uuid PK, name, region (область), kind (rcu|oblast|gor_rayon), parent_id null + -- РЦУ РЧС (kind=rcu) → ОУМЧС (oblast) → Г(Р)ОЧС (gor_rayon) users (расширение существующей): - + cou_id fk → cou_units, null -- принадлежность ЦОУ (admin=null) + + unit_id fk → mchs_units, null -- подразделение (у РЦУ РЧС-admin = null) + position text + status enum(active, locked, disabled) + failed_login_count, locked_until, must_change_password @@ -1018,25 +1019,25 @@ security_settings (password policy, lockout, timeouts) ``` Роли (стартовые, is_system): -- `admin` — республиканский штаб: все права, все операции -- `coordinator` — областное ЦОУ: все поиски своей области, управление - пользователями своих райЦОУ -- `operator` — районное ЦОУ: свои поиски (create/update) +- `admin` — РЦУ РЧС: все права, все операции +- `coordinator` — ОУМЧС: все поиски своей области, управление + пользователями подчинённых Г(Р)ОЧС +- `operator` — Г(Р)ОЧС: свои поиски (create/update) - `observer` — только просмотр (старшие смены, аналитика) **2.2.1 Скоуп данных (отличие от РВС)** К функциональным правам РВС добавляется **географический скоуп**: какие -поиски видны. Фильтр по `cou_id ∈ {своё ЦОУ + подчинённые}` (дерево -cou_units); admin — без фильтра. Тот же скоуп в cases/analyze/water. +поиски видны. Фильтр по `unit_id ∈ {своё подразделение + подчинённые}` (дерево +mchs_units); admin (РЦУ РЧС) — без фильтра. Тот же скоуп в cases/analyze/water. ### 3. Мультипоиск в UI - **Дашборд «Активные поиски»** (главная после логина): карточки активных - операций (title, ЦОУ, elapsed, статус), фильтры по статусу/области, + операций (title, подразделение, elapsed, статус), фильтры по статусу/области, счётчики. Клик → рабочее пространство операции (`/op/{id}/…`). -- **Создание поиска** = CaseForm + шаг «операция» (title, ЦОУ — по умолчанию - ЦОУ создателя). +- **Создание поиска** = CaseForm + шаг «операция» (title, подразделение — по умолчанию + подразделение создателя). - **Завершение**: статус completed + поля исхода (переезд из cases). ### 4. КОНТУР-интеграция (мультипоиск) @@ -1052,7 +1053,7 @@ cou_units); admin — без фильтра. Тот же скоуп в cases/ana | # | Этап | Состав | Зависимости | |---|------|--------|-------------| -| E1 | RBAC-ядро | cou_units, расширение users, роли/права, сессии, auth-журнал, seed; логин по пользователям, /me, смена пароля | паттерн РВС | +| E1 | RBAC-ядро | mchs_units, расширение users, роли/права, сессии, auth-журнал, seed; логин по пользователям, /me, смена пароля | паттерн РВС | | E2 | Скоуп и аудит | гео-скоуп в эндпоинтах, audit_events, security_settings, админ-панель пользователей (как РВС) | E1 | | E3 | Операции | search_operations + статусная машина, дашборд активных поисков, переключение | E1 | | E4 | КОНТУР-мультипоиск | contour_operation_id, отправка зон, areas-checked на карте | E3 | @@ -1060,15 +1061,15 @@ cou_units); admin — без фильтра. Тот же скоуп в cases/ana ### 6. Границы (НЕ делать сейчас) -- Саморегистрация ЦОУ — аккаунты создаёт админ/координатор. +- Саморегистрация подразделений — аккаунты создаёт РЦУ РЧС/ОУМЧС. - SSO/ActiveDirectory — после пилота. - B18/B19 — отдельные задачи. - WebSockets для списка поисков — polling на старте. ### 7. Критерии приёмки (сводно) -- Два одновременных активных поиска у двух ЦОУ: республиканский админ видит - оба, райЦОУ — только свой; переключение без потери контекста. +- Два одновременных активных поиска у двух подразделений: РЦУ РЧС видит + оба, Г(Р)ОЧС — только свой; переключение без потери контекста. - Вход через server-side сессии; аудит фиксирует входы и админ-действия, ретенция 90 дней. - Зоны операции уезжают в КОНТУР и видны в штаб-панели CT130:8080 под своим