From c161643ac11f6bdc7c1e943910557a8536237604 Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Fri, 6 Nov 2026 22:46:48 +0400 Subject: [PATCH] =?UTF-8?q?feat(#190):=20=D0=BF=D1=80=D0=B0=D0=B2=D0=BE=20?= =?UTF-8?q?QUALITY=5FMETRICS=5FVIEW=20=D0=B2=D1=81=D0=B5=D0=BC=20=D1=80?= =?UTF-8?q?=D0=BE=D0=BB=D1=8F=D0=BC=20(design=20=C2=A78)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 5 --- api/seed/core/permissions.yaml | 4 ++++ api/seed/core/role_permissions.yaml | 7 +++++++ api/tests/test_seed_roles.py | 11 +++++++++-- web/src/api/types.ts | 2 +- 4 files changed, 21 insertions(+), 3 deletions(-) diff --git a/api/seed/core/permissions.yaml b/api/seed/core/permissions.yaml index 34b518a..6e5dd5b 100644 --- a/api/seed/core/permissions.yaml +++ b/api/seed/core/permissions.yaml @@ -65,3 +65,7 @@ object: AUDIT action: VIEW name: "Журнал действий: просмотр" +- code: QUALITY_METRICS_VIEW + object: QUALITY_METRICS + action: VIEW + name: "Метрики качества: просмотр" diff --git a/api/seed/core/role_permissions.yaml b/api/seed/core/role_permissions.yaml index 8c5559f..485bef2 100644 --- a/api/seed/core/role_permissions.yaml +++ b/api/seed/core/role_permissions.yaml @@ -13,12 +13,14 @@ ADMIN: - EX_VIEW - USERS_ADMIN - AUDIT_VIEW + - QUALITY_METRICS_VIEW CURATOR_GO: - DIRECTORY_VIEW - DIRECTORY_EDIT - CONSOLIDATION_VIEW - KFO_VIEW - EX_VIEW + - QUALITY_METRICS_VIEW KA_RF: - DIRECTORY_VIEW - DIRECTORY_EDIT @@ -30,6 +32,7 @@ KA_RF: - KFO_EXPORT - EX_VIEW - EXPORT + - QUALITY_METRICS_VIEW RKA: - DIRECTORY_VIEW - DIRECTORY_EDIT @@ -40,6 +43,7 @@ RKA: - KFO_APPROVE - EX_VIEW - EXPORT + - QUALITY_METRICS_VIEW KA_GO: - DIRECTORY_VIEW - DIRECTORY_EDIT @@ -52,15 +56,18 @@ KA_GO: - KFO_EXPORT - EX_VIEW - EXPORT + - QUALITY_METRICS_VIEW EXPERT: - DIRECTORY_VIEW - DOCUMENT_VIEW - CONSOLIDATION_VIEW - KFO_VIEW - EX_VIEW + - QUALITY_METRICS_VIEW CLIENT_MANAGER: - DIRECTORY_VIEW - DOCUMENT_VIEW - DOCUMENT_EDIT - CONSOLIDATION_VIEW - KFO_VIEW + - QUALITY_METRICS_VIEW diff --git a/api/tests/test_seed_roles.py b/api/tests/test_seed_roles.py index 64fd184..8ff5b36 100644 --- a/api/tests/test_seed_roles.py +++ b/api/tests/test_seed_roles.py @@ -30,6 +30,7 @@ MATRIX_S10: dict[str, set[tuple[str, str]]] = { ("EX", "VIEW"), ("USERS", "ADMIN"), ("AUDIT", "VIEW"), + ("QUALITY_METRICS", "VIEW"), }, "CURATOR_GO": { ("DIRECTORY", "VIEW"), @@ -37,6 +38,7 @@ MATRIX_S10: dict[str, set[tuple[str, str]]] = { ("CONSOLIDATION", "VIEW"), ("KFO", "VIEW"), ("EX", "VIEW"), + ("QUALITY_METRICS", "VIEW"), }, "KA_RF": { ("DIRECTORY", "VIEW"), @@ -49,6 +51,7 @@ MATRIX_S10: dict[str, set[tuple[str, str]]] = { ("KFO", "EXPORT"), ("EX", "VIEW"), ("EXPORT", "EXPORT"), + ("QUALITY_METRICS", "VIEW"), }, "RKA": { ("DIRECTORY", "VIEW"), @@ -60,6 +63,7 @@ MATRIX_S10: dict[str, set[tuple[str, str]]] = { ("KFO", "APPROVE"), ("EX", "VIEW"), ("EXPORT", "EXPORT"), + ("QUALITY_METRICS", "VIEW"), }, "KA_GO": { ("DIRECTORY", "VIEW"), @@ -73,6 +77,7 @@ MATRIX_S10: dict[str, set[tuple[str, str]]] = { ("KFO", "EXPORT"), ("EX", "VIEW"), ("EXPORT", "EXPORT"), + ("QUALITY_METRICS", "VIEW"), }, "EXPERT": { ("DIRECTORY", "VIEW"), @@ -80,6 +85,7 @@ MATRIX_S10: dict[str, set[tuple[str, str]]] = { ("CONSOLIDATION", "VIEW"), ("KFO", "VIEW"), ("EX", "VIEW"), + ("QUALITY_METRICS", "VIEW"), }, "CLIENT_MANAGER": { ("DIRECTORY", "VIEW"), @@ -87,11 +93,12 @@ MATRIX_S10: dict[str, set[tuple[str, str]]] = { ("DOCUMENT", "EDIT"), ("CONSOLIDATION", "VIEW"), ("KFO", "VIEW"), + ("QUALITY_METRICS", "VIEW"), }, } ROLE_COUNT = 7 -PERMISSION_COUNT = 16 -GRANT_COUNT = sum(len(pairs) for pairs in MATRIX_S10.values()) # 52 +PERMISSION_COUNT = 17 +GRANT_COUNT = sum(len(pairs) for pairs in MATRIX_S10.values()) # 59 ROLE_CODES = {"KA_RF", "KA_GO", "RKA", "CLIENT_MANAGER", "CURATOR_GO", "EXPERT", "ADMIN"} diff --git a/web/src/api/types.ts b/web/src/api/types.ts index d6166a0..4cfae5b 100644 --- a/web/src/api/types.ts +++ b/web/src/api/types.ts @@ -3,7 +3,7 @@ export type BusinessSegment = 'DKB' | 'DMSB' | 'DM'; /** Как `PermissionObject` / `PermissionAction` в api/src/models/enums.py. */ -export type PermissionObject = 'DIRECTORY' | 'DOCUMENT' | 'CONSOLIDATION' | 'KFO' | 'EX' | 'EXPORT' | 'USERS' | 'AUDIT'; +export type PermissionObject = 'DIRECTORY' | 'DOCUMENT' | 'CONSOLIDATION' | 'KFO' | 'EX' | 'EXPORT' | 'USERS' | 'AUDIT' | 'QUALITY_METRICS'; export type PermissionAction = 'VIEW' | 'EDIT' | 'APPROVE' | 'VERIFY' | 'DELETE' | 'EXPORT' | 'ADMIN'; /** Страница списка верхнего уровня (`schemas/common.py:Page`). */