B21: терминология МЧС РБ — РЦУ РЧС / ОУМЧС / Г(Р)ОЧС
Правка Виктора: республиканский штаб → РЦУ РЧС; областное ЦОУ → ОУМЧС; райЦОУ → Г(Р)ОЧС. cou_units → mchs_units (иерархия rcu → oblast → gor_rayon); unit_id вместо cou_id; роли: admin=РЦУ РЧС, coordinator=ОУМЧС, operator=Г(Р)ОЧС. Статус: план согласован (Виктор: «в остальном согласен») — готов к E1.
This commit is contained in:
+22
-21
@@ -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 под своим
|
||||
|
||||
Reference in New Issue
Block a user