From 15e7e27cb855bd11a26db59316018b1226808aa8 Mon Sep 17 00:00:00 2001 From: viktot14-ai Date: Wed, 9 Sep 2026 21:00:19 +0300 Subject: [PATCH] =?UTF-8?q?B21:=20=D1=82=D0=B5=D1=80=D0=BC=D0=B8=D0=BD?= =?UTF-8?q?=D0=BE=D0=BB=D0=BE=D0=B3=D0=B8=D1=8F=20=D0=9C=D0=A7=D0=A1=20?= =?UTF-8?q?=D0=A0=D0=91=20=E2=80=94=20=D0=A0=D0=A6=D0=A3=20=D0=A0=D0=A7?= =?UTF-8?q?=D0=A1=20/=20=D0=9E=D0=A3=D0=9C=D0=A7=D0=A1=20/=20=D0=93(=D0=A0?= =?UTF-8?q?)=D0=9E=D0=A7=D0=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Правка Виктора: республиканский штаб → РЦУ РЧС; областное ЦОУ → ОУМЧС; райЦОУ → Г(Р)ОЧС. cou_units → mchs_units (иерархия rcu → oblast → gor_rayon); unit_id вместо cou_id; роли: admin=РЦУ РЧС, coordinator=ОУМЧС, operator=Г(Р)ОЧС. Статус: план согласован (Виктор: «в остальном согласен») — готов к E1. --- vector_tasks.md | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) 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 под своим