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