From b45233537081ceecf21d2c7050e6ea3aa8001eb9 Mon Sep 17 00:00:00 2001 From: busya Date: Fri, 6 Mar 2026 15:22:14 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=BE=D1=87=D0=B8=D0=BD=D0=B8=D0=BB?= =?UTF-8?q?=D0=B8=20=D1=81=D0=BA=D0=B0=D1=87=D0=B8=D0=B2=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .ai/MODULE_MAP.md | 334 +- .ai/PROJECT_MAP.md | 453 +- .../src/components/storage/FileList.svelte | 28 +- frontend/src/services/storageService.js | 56 +- semantics/semantic_map.json | 9260 +++++++++++++---- 5 files changed, 7679 insertions(+), 2452 deletions(-) diff --git a/.ai/MODULE_MAP.md b/.ai/MODULE_MAP.md index 9a4892f..3cc0dcc 100644 --- a/.ai/MODULE_MAP.md +++ b/.ai/MODULE_MAP.md @@ -2,12 +2,12 @@ > High-level module structure for AI Context. Generated automatically. -**Generated:** 2026-03-04T13:18:11.370535 +**Generated:** 2026-03-06T15:13:36.187520 ## Summary -- **Total Modules:** 83 -- **Total Entities:** 2349 +- **Total Modules:** 90 +- **Total Entities:** 2508 ## Module Hierarchy @@ -54,9 +54,9 @@ ### πŸ“ `routes/` - πŸ—οΈ **Layers:** API, UI (API) - - πŸ“Š **Tiers:** CRITICAL: 11, STANDARD: 226, TRIVIAL: 8 - - πŸ“„ **Files:** 18 - - πŸ“¦ **Entities:** 245 + - πŸ“Š **Tiers:** CRITICAL: 12, STANDARD: 240, TRIVIAL: 8 + - πŸ“„ **Files:** 19 + - πŸ“¦ **Entities:** 260 **Key Entities:** @@ -86,15 +86,15 @@ - πŸ”— DEPENDS_ON -> ConfigManager - πŸ”— DEPENDS_ON -> ConfigModels - πŸ”— DEPENDS_ON -> backend.src.core.database + - πŸ”— DEPENDS_ON -> backend.src.core.database.get_db - πŸ”— DEPENDS_ON -> backend.src.core.superset_client - - πŸ”— DEPENDS_ON -> backend.src.core.task_manager ### πŸ“ `__tests__/` - πŸ—οΈ **Layers:** API, Domain, Domain (Tests), UI (API Tests), Unknown - - πŸ“Š **Tiers:** STANDARD: 63, TRIVIAL: 134 - - πŸ“„ **Files:** 12 - - πŸ“¦ **Entities:** 197 + - πŸ“Š **Tiers:** STANDARD: 81, TRIVIAL: 134 + - πŸ“„ **Files:** 13 + - πŸ“¦ **Entities:** 215 **Key Entities:** @@ -126,9 +126,9 @@ ### πŸ“ `core/` - πŸ—οΈ **Layers:** Core - - πŸ“Š **Tiers:** CRITICAL: 45, STANDARD: 88, TRIVIAL: 8 - - πŸ“„ **Files:** 10 - - πŸ“¦ **Entities:** 141 + - πŸ“Š **Tiers:** CRITICAL: 45, STANDARD: 94, TRIVIAL: 8 + - πŸ“„ **Files:** 11 + - πŸ“¦ **Entities:** 147 **Key Entities:** @@ -161,12 +161,26 @@ - πŸ”— DEPENDS_ON -> backend.src.core.auth.config - πŸ”— DEPENDS_ON -> backend.src.core.logger + ### πŸ“ `__tests__/` + + - πŸ—οΈ **Layers:** Domain + - πŸ“Š **Tiers:** STANDARD: 7 + - πŸ“„ **Files:** 1 + - πŸ“¦ **Entities:** 7 + + **Key Entities:** + + - β„‚ **_RecordingNetworkClient** (Class) + - Records request payloads and returns scripted responses for ... + - πŸ“¦ **backend.src.core.__tests__.test_superset_profile_lookup** (Module) + - Verifies Superset profile lookup adapter payload normalizati... + ### πŸ“ `auth/` - πŸ—οΈ **Layers:** Core - - πŸ“Š **Tiers:** CRITICAL: 26 + - πŸ“Š **Tiers:** CRITICAL: 28 - πŸ“„ **Files:** 6 - - πŸ“¦ **Entities:** 26 + - πŸ“¦ **Entities:** 28 **Key Entities:** @@ -252,9 +266,9 @@ ### πŸ“ `task_manager/` - πŸ—οΈ **Layers:** Core - - πŸ“Š **Tiers:** CRITICAL: 10, STANDARD: 63, TRIVIAL: 5 + - πŸ“Š **Tiers:** CRITICAL: 10, STANDARD: 63, TRIVIAL: 6 - πŸ“„ **Files:** 7 - - πŸ“¦ **Entities:** 78 + - πŸ“¦ **Entities:** 79 **Key Entities:** @@ -338,9 +352,9 @@ ### πŸ“ `models/` - πŸ—οΈ **Layers:** Domain, Model - - πŸ“Š **Tiers:** CRITICAL: 20, STANDARD: 33, TRIVIAL: 29 - - πŸ“„ **Files:** 12 - - πŸ“¦ **Entities:** 82 + - πŸ“Š **Tiers:** CRITICAL: 20, STANDARD: 35, TRIVIAL: 29 + - πŸ“„ **Files:** 13 + - πŸ“¦ **Entities:** 84 **Key Entities:** @@ -370,8 +384,8 @@ - πŸ”— DEPENDS_ON -> Role - πŸ”— DEPENDS_ON -> TaskRecord - πŸ”— DEPENDS_ON -> backend.src.core.task_manager.models + - πŸ”— DEPENDS_ON -> backend.src.models.auth - πŸ”— DEPENDS_ON -> backend.src.models.mapping - - πŸ”— DEPENDS_ON -> sqlalchemy ### πŸ“ `__tests__/` @@ -495,9 +509,9 @@ ### πŸ“ `schemas/` - πŸ—οΈ **Layers:** API - - πŸ“Š **Tiers:** CRITICAL: 10, TRIVIAL: 3 - - πŸ“„ **Files:** 1 - - πŸ“¦ **Entities:** 13 + - πŸ“Š **Tiers:** CRITICAL: 10, STANDARD: 7, TRIVIAL: 3 + - πŸ“„ **Files:** 2 + - πŸ“¦ **Entities:** 20 **Key Entities:** @@ -507,20 +521,20 @@ - Represents an AD Group to Role mapping in API responses. - β„‚ **PermissionSchema** (Class) `[TRIVIAL]` - Represents a permission in API responses. + - β„‚ **ProfilePreference** (Class) + - Represents persisted profile preference for a single authent... + - β„‚ **ProfilePreferenceResponse** (Class) + - Response envelope for profile preference read/update endpoin... + - β„‚ **ProfilePreferenceUpdateRequest** (Class) + - Request payload for updating current user's dashboard filter... - β„‚ **RoleCreate** (Class) `[CRITICAL]` - Schema for creating a new role. - β„‚ **RoleSchema** (Class) `[CRITICAL]` - Represents a role in API responses. - β„‚ **RoleUpdate** (Class) `[CRITICAL]` - Schema for updating an existing role. - - β„‚ **Token** (Class) `[TRIVIAL]` - - Represents a JWT access token response. - - β„‚ **TokenData** (Class) `[TRIVIAL]` - - Represents the data encoded in a JWT token. - - β„‚ **User** (Class) `[CRITICAL]` - - Schema for user data in API responses. - - β„‚ **UserBase** (Class) `[CRITICAL]` - - Base schema for user data. + - β„‚ **SupersetAccountCandidate** (Class) + - Canonical account candidate projected from Superset users pa... **Dependencies:** @@ -529,14 +543,16 @@ ### πŸ“ `scripts/` - πŸ—οΈ **Layers:** Scripts, UI, Unknown - - πŸ“Š **Tiers:** CRITICAL: 2, STANDARD: 25, TRIVIAL: 3 + - πŸ“Š **Tiers:** CRITICAL: 2, STANDARD: 27, TRIVIAL: 14 - πŸ“„ **Files:** 7 - - πŸ“¦ **Entities:** 30 + - πŸ“¦ **Entities:** 43 **Key Entities:** + - β„‚ **CleanReleaseTUI** (Class) + - Curses-based application for compliance monitoring. - πŸ“¦ **backend.src.scripts.clean_release_tui** (Module) - - Provide clean release TUI entrypoint placeholder for phased ... + - Interactive terminal interface for Enterprise Clean Release ... - πŸ“¦ **backend.src.scripts.create_admin** (Module) - CLI tool for creating the initial admin user. - πŸ“¦ **backend.src.scripts.init_auth_db** (Module) `[CRITICAL]` @@ -550,12 +566,17 @@ - πŸ“¦ **test_dataset_dashboard_relations** (Module) `[TRIVIAL]` - Auto-generated module for backend/src/scripts/test_dataset_d... + **Dependencies:** + + - πŸ”— DEPENDS_ON -> backend.src.services.clean_release.compliance_orchestrator + - πŸ”— DEPENDS_ON -> backend.src.services.clean_release.repository + ### πŸ“ `services/` - πŸ—οΈ **Layers:** Core, Domain, Service - - πŸ“Š **Tiers:** CRITICAL: 7, STANDARD: 76, TRIVIAL: 6 - - πŸ“„ **Files:** 7 - - πŸ“¦ **Entities:** 89 + - πŸ“Š **Tiers:** CRITICAL: 9, STANDARD: 104, TRIVIAL: 7 + - πŸ“„ **Files:** 9 + - πŸ“¦ **Entities:** 120 **Key Entities:** @@ -563,37 +584,37 @@ - Provides high-level authentication services. - β„‚ **EncryptionManager** (Class) `[CRITICAL]` - Handles encryption and decryption of sensitive data like API... + - β„‚ **EnvironmentNotFoundError** (Class) + - Raised when environment_id from lookup request is unknown in... - β„‚ **GitService** (Class) - Wrapper for GitPython operations with semantic logging and e... - β„‚ **LLMProviderService** (Class) - Service to manage LLM provider lifecycle. - β„‚ **MappingService** (Class) - Service for handling database mapping logic. + - β„‚ **ProfileAuthorizationError** (Class) + - Raised when caller attempts cross-user preference mutation. + - β„‚ **ProfileService** (Class) `[CRITICAL]` + - Implements profile preference read/update flow and Superset ... + - β„‚ **ProfileValidationError** (Class) + - Domain validation error for profile preference update reques... - β„‚ **ResourceService** (Class) - Provides centralized access to resource data with enhanced m... - - πŸ“¦ **backend.src.services** (Module) - - Package initialization for services module - - πŸ“¦ **backend.src.services.auth_service** (Module) `[CRITICAL]` - - Orchestrates authentication business logic. - - πŸ“¦ **backend.src.services.git_service** (Module) - - Core Git logic using GitPython to manage dashboard repositor... - - πŸ“¦ **backend.src.services.llm_prompt_templates** (Module) - - Provide default LLM prompt templates and normalization helpe... **Dependencies:** + - πŸ”— DEPENDS_ON -> backend.src.core.auth.repository - πŸ”— DEPENDS_ON -> backend.src.core.config_manager - πŸ”— DEPENDS_ON -> backend.src.core.database - πŸ”— DEPENDS_ON -> backend.src.core.superset_client - πŸ”— DEPENDS_ON -> backend.src.core.task_manager - - πŸ”— DEPENDS_ON -> backend.src.core.utils.matching ### πŸ“ `__tests__/` - - πŸ—οΈ **Layers:** Domain, Domain Tests, Service, Unknown - - πŸ“Š **Tiers:** STANDARD: 24, TRIVIAL: 17 - - πŸ“„ **Files:** 4 - - πŸ“¦ **Entities:** 41 + - πŸ—οΈ **Layers:** Domain, Domain Tests, Service, Service Tests, Unknown + - πŸ“Š **Tiers:** STANDARD: 29, TRIVIAL: 17 + - πŸ“„ **Files:** 5 + - πŸ“¦ **Entities:** 46 **Key Entities:** @@ -601,6 +622,8 @@ - Validate EncryptionManager encrypt/decrypt roundtrip, unique... - πŸ“¦ **backend.src.services.__tests__.test_llm_prompt_templates** (Module) - Validate normalization and rendering behavior for configurab... + - πŸ“¦ **backend.src.services.__tests__.test_rbac_permission_catalog** (Module) + - Verifies RBAC permission catalog discovery and idempotent sy... - πŸ“¦ **backend.src.services.__tests__.test_resource_service** (Module) - Unit tests for ResourceService - πŸ“¦ **test_encryption_manager** (Module) @@ -615,13 +638,17 @@ ### πŸ“ `clean_release/` - πŸ—οΈ **Layers:** Domain, Infra - - πŸ“Š **Tiers:** CRITICAL: 3, STANDARD: 12, TRIVIAL: 33 + - πŸ“Š **Tiers:** CRITICAL: 3, STANDARD: 16, TRIVIAL: 32 - πŸ“„ **Files:** 10 - - πŸ“¦ **Entities:** 48 + - πŸ“¦ **Entities:** 51 **Key Entities:** + - β„‚ **CleanComplianceOrchestrator** (Class) + - Coordinate clean-release compliance verification stages. - β„‚ **CleanPolicyEngine** (Class) + - β„‚ **CleanReleaseRepository** (Class) + - Data access object for clean release lifecycle. - πŸ“¦ **backend.src.services.clean_release** (Module) - Initialize clean release service package and provide explici... - πŸ“¦ **backend.src.services.clean_release.audit_service** (Module) @@ -636,10 +663,6 @@ - Prepare release candidate by policy evaluation and determini... - πŸ“¦ **backend.src.services.clean_release.report_builder** (Module) `[CRITICAL]` - Build and persist compliance reports with consistent counter... - - πŸ“¦ **backend.src.services.clean_release.repository** (Module) - - Provide repository adapter for clean release entities with d... - - πŸ“¦ **backend.src.services.clean_release.source_isolation** (Module) - - Validate that all resource endpoints belong to the approved ... **Dependencies:** @@ -720,9 +743,9 @@ ### πŸ“ `tests/` - πŸ—οΈ **Layers:** Core, Domain (Tests), Logging (Tests), Test, Unknown - - πŸ“Š **Tiers:** STANDARD: 86, TRIVIAL: 85 + - πŸ“Š **Tiers:** STANDARD: 87, TRIVIAL: 85 - πŸ“„ **Files:** 10 - - πŸ“¦ **Entities:** 171 + - πŸ“¦ **Entities:** 172 **Key Entities:** @@ -750,9 +773,9 @@ ### πŸ“ `core/` - πŸ—οΈ **Layers:** Domain, Unknown - - πŸ“Š **Tiers:** STANDARD: 5, TRIVIAL: 33 + - πŸ“Š **Tiers:** STANDARD: 6, TRIVIAL: 45 - πŸ“„ **Files:** 4 - - πŸ“¦ **Entities:** 38 + - πŸ“¦ **Entities:** 51 **Key Entities:** @@ -779,12 +802,24 @@ - πŸ“¦ **backend.tests.core.migration.test_dry_run_orchestrator** (Module) - Unit tests for MigrationDryRunService diff and risk computat... + ### πŸ“ `scripts/` + + - πŸ—οΈ **Layers:** Scripts + - πŸ“Š **Tiers:** STANDARD: 1, TRIVIAL: 7 + - πŸ“„ **Files:** 1 + - πŸ“¦ **Entities:** 8 + + **Key Entities:** + + - πŸ“¦ **backend.tests.scripts.test_clean_release_tui** (Module) + - Unit tests for the interactive curses TUI of the clean relea... + ### πŸ“ `components/` - πŸ—οΈ **Layers:** Component, Feature, UI, UI -->, Unknown - - πŸ“Š **Tiers:** STANDARD: 69, TRIVIAL: 4 + - πŸ“Š **Tiers:** STANDARD: 73, TRIVIAL: 4 - πŸ“„ **Files:** 14 - - πŸ“¦ **Entities:** 73 + - πŸ“¦ **Entities:** 77 **Key Entities:** @@ -824,21 +859,21 @@ ### πŸ“ `auth/` - πŸ—οΈ **Layers:** Component - - πŸ“Š **Tiers:** TRIVIAL: 1 + - πŸ“Š **Tiers:** CRITICAL: 2 - πŸ“„ **Files:** 1 - - πŸ“¦ **Entities:** 1 + - πŸ“¦ **Entities:** 2 **Key Entities:** - - 🧩 **ProtectedRoute** (Component) `[TRIVIAL]` - - Wraps content to ensure only authenticated users can access ... + - 🧩 **ProtectedRoute** (Component) `[CRITICAL]` + - Wraps content to ensure only authenticated and authorized us... ### πŸ“ `git/` - πŸ—οΈ **Layers:** Component - - πŸ“Š **Tiers:** STANDARD: 45 + - πŸ“Š **Tiers:** STANDARD: 46 - πŸ“„ **Files:** 6 - - πŸ“¦ **Entities:** 45 + - πŸ“¦ **Entities:** 46 **Key Entities:** @@ -890,9 +925,9 @@ ### πŸ“ `storage/` - πŸ—οΈ **Layers:** UI - - πŸ“Š **Tiers:** STANDARD: 7 + - πŸ“Š **Tiers:** STANDARD: 8 - πŸ“„ **Files:** 2 - - πŸ“¦ **Entities:** 7 + - πŸ“¦ **Entities:** 8 **Key Entities:** @@ -1002,16 +1037,30 @@ ### πŸ“ `auth/` - - πŸ—οΈ **Layers:** Feature - - πŸ“Š **Tiers:** CRITICAL: 7 - - πŸ“„ **Files:** 1 - - πŸ“¦ **Entities:** 7 + - πŸ—οΈ **Layers:** Domain, Feature + - πŸ“Š **Tiers:** CRITICAL: 11, TRIVIAL: 1 + - πŸ“„ **Files:** 2 + - πŸ“¦ **Entities:** 12 **Key Entities:** + - πŸ“¦ **frontend.src.lib.auth.permissions** (Module) `[CRITICAL]` + - Shared frontend RBAC utilities for route guards and menu vis... - πŸ—„οΈ **authStore** (Store) `[CRITICAL]` - Manages the global authentication state on the frontend. + ### πŸ“ `__tests__/` + + - πŸ—οΈ **Layers:** UI (Tests) + - πŸ“Š **Tiers:** STANDARD: 1 + - πŸ“„ **Files:** 1 + - πŸ“¦ **Entities:** 1 + + **Key Entities:** + + - πŸ“¦ **frontend.src.lib.auth.__tests__.permissions** (Module) + - Verifies frontend RBAC permission parsing and access checks. + ### πŸ“ `assistant/` - πŸ—οΈ **Layers:** UI, Unknown @@ -1041,9 +1090,9 @@ ### πŸ“ `layout/` - πŸ—οΈ **Layers:** UI, Unknown - - πŸ“Š **Tiers:** STANDARD: 8, TRIVIAL: 48 - - πŸ“„ **Files:** 4 - - πŸ“¦ **Entities:** 56 + - πŸ“Š **Tiers:** STANDARD: 11, TRIVIAL: 47 + - πŸ“„ **Files:** 5 + - πŸ“¦ **Entities:** 58 **Key Entities:** @@ -1063,16 +1112,24 @@ - Auto-generated module for frontend/src/lib/components/layout... - πŸ“¦ **TopNavbar** (Module) `[TRIVIAL]` - Auto-generated module for frontend/src/lib/components/layout... + - πŸ“¦ **frontend.src.lib.components.layout.sidebarNavigation** (Module) + - Build sidebar navigation categories filtered by current user... + + **Dependencies:** + + - πŸ”— DEPENDS_ON -> frontend.src.lib.auth.permissions.hasPermission ### πŸ“ `__tests__/` - - πŸ—οΈ **Layers:** Unknown - - πŸ“Š **Tiers:** TRIVIAL: 3 - - πŸ“„ **Files:** 1 - - πŸ“¦ **Entities:** 3 + - πŸ—οΈ **Layers:** UI (Tests), Unknown + - πŸ“Š **Tiers:** STANDARD: 1, TRIVIAL: 4 + - πŸ“„ **Files:** 2 + - πŸ“¦ **Entities:** 5 **Key Entities:** + - πŸ“¦ **frontend.src.lib.components.layout.__tests__.sidebarNavigation** (Module) + - Verifies RBAC-based sidebar category and subitem visibility. - πŸ“¦ **test_breadcrumbs.svelte** (Module) `[TRIVIAL]` - Auto-generated module for frontend/src/lib/components/layout... @@ -1347,9 +1404,9 @@ ### πŸ“ `dashboards/` - πŸ—οΈ **Layers:** UI, Unknown - - πŸ“Š **Tiers:** STANDARD: 24, TRIVIAL: 61 + - πŸ“Š **Tiers:** STANDARD: 26, TRIVIAL: 63 - πŸ“„ **Files:** 1 - - πŸ“¦ **Entities:** 85 + - πŸ“¦ **Entities:** 89 **Key Entities:** @@ -1368,6 +1425,18 @@ - πŸ“¦ **+page** (Module) `[TRIVIAL]` - Auto-generated module for frontend/src/routes/dashboards/[id... + ### πŸ“ `__tests__/` + + - πŸ—οΈ **Layers:** UI (Tests) + - πŸ“Š **Tiers:** STANDARD: 1, TRIVIAL: 2 + - πŸ“„ **Files:** 1 + - πŸ“¦ **Entities:** 3 + + **Key Entities:** + + - πŸ“¦ **frontend.src.routes.dashboards.__tests__.dashboard_profile_override_integration** (Module) + - Verifies temporary show-all override and restore-on-return b... + ### πŸ“ `datasets/` - πŸ—οΈ **Layers:** UI, Unknown @@ -1441,6 +1510,43 @@ - 🧩 **MappingManagement** (Component) `[CRITICAL]` - Page for managing database mappings between environments. + ### πŸ“ `profile/` + + - πŸ—οΈ **Layers:** Unknown + - πŸ“Š **Tiers:** TRIVIAL: 9 + - πŸ“„ **Files:** 1 + - πŸ“¦ **Entities:** 9 + + **Key Entities:** + + - πŸ“¦ **+page** (Module) `[TRIVIAL]` + - Auto-generated module for frontend/src/routes/profile/+page.... + + ### πŸ“ `__tests__/` + + - πŸ—οΈ **Layers:** UI (Tests) + - πŸ“Š **Tiers:** STANDARD: 2 + - πŸ“„ **Files:** 2 + - πŸ“¦ **Entities:** 2 + + **Key Entities:** + + - πŸ“¦ **frontend.src.routes.profile.__tests__.profile_preferences_integration** (Module) + - Verifies profile binding happy path and degraded lookup manu... + - πŸ“¦ **frontend.src.routes.profile.__tests__.profile_settings_state_integration** (Module) + - Verifies profile settings preload, cancel without persistenc... + + ### πŸ“ `fixtures/` + + - πŸ“Š **Tiers:** TRIVIAL: 1 + - πŸ“„ **Files:** 1 + - πŸ“¦ **Entities:** 1 + + **Key Entities:** + + - πŸ“¦ **frontend.src.routes.profile.__tests__.fixtures.profile_fixtures** (Module) `[TRIVIAL]` + - Shared fixture placeholders for profile page integration tes... + ### πŸ“ `reports/` - πŸ—οΈ **Layers:** UI, Unknown @@ -1512,9 +1618,9 @@ ### πŸ“ `repos/` - - πŸ“Š **Tiers:** STANDARD: 3 + - πŸ“Š **Tiers:** STANDARD: 4 - πŸ“„ **Files:** 1 - - πŸ“¦ **Entities:** 3 + - πŸ“¦ **Entities:** 4 ### πŸ“ `debug/` @@ -1543,9 +1649,9 @@ ### πŸ“ `storage/` - πŸ—οΈ **Layers:** UI - - πŸ“Š **Tiers:** STANDARD: 6 + - πŸ“Š **Tiers:** STANDARD: 7 - πŸ“„ **Files:** 1 - - πŸ“¦ **Entities:** 6 + - πŸ“¦ **Entities:** 7 **Key Entities:** @@ -1555,9 +1661,9 @@ ### πŸ“ `services/` - πŸ—οΈ **Layers:** Service - - πŸ“Š **Tiers:** STANDARD: 33, TRIVIAL: 1 + - πŸ“Š **Tiers:** STANDARD: 35, TRIVIAL: 1 - πŸ“„ **Files:** 6 - - πŸ“¦ **Entities:** 34 + - πŸ“¦ **Entities:** 36 **Key Entities:** @@ -1586,17 +1692,15 @@ ### πŸ“ `root/` -- πŸ—οΈ **Layers:** DevOps/Tooling, Domain, Unknown -- πŸ“Š **Tiers:** CRITICAL: 11, STANDARD: 27, TRIVIAL: 12 -- πŸ“„ **Files:** 4 -- πŸ“¦ **Entities:** 50 +- πŸ—οΈ **Layers:** DevOps/Tooling, Unknown +- πŸ“Š **Tiers:** CRITICAL: 11, STANDARD: 17, TRIVIAL: 9 +- πŸ“„ **Files:** 2 +- πŸ“¦ **Entities:** 37 **Key Entities:** - β„‚ **ComplianceIssue** (Class) `[TRIVIAL]` - Represents a single compliance issue with severity. - - β„‚ **ReportsService** (Class) - - Service layer for list/detail report retrieval and normaliza... - β„‚ **SemanticEntity** (Class) `[CRITICAL]` - Represents a code entity (Module, Function, Component) found... - β„‚ **SemanticMapGenerator** (Class) `[CRITICAL]` @@ -1605,20 +1709,10 @@ - Severity levels for compliance issues. - β„‚ **Tier** (Class) `[TRIVIAL]` - Enumeration of semantic tiers defining validation strictness... - - πŸ“¦ **backend.src.services.reports.report_service** (Module) - - Aggregate, normalize, filter, and paginate task reports for ... - πŸ“¦ **check_test_data** (Module) `[TRIVIAL]` - Auto-generated module for check_test_data.py - πŸ“¦ **generate_semantic_map** (Module) - Scans the codebase to generate a Semantic Map, Module Map, a... - - πŸ“¦ **test_analyze** (Module) `[TRIVIAL]` - - Auto-generated module for test_analyze.py - -**Dependencies:** - - - πŸ”— DEPENDS_ON -> backend.src.core.task_manager.manager.TaskManager - - πŸ”— DEPENDS_ON -> backend.src.models.report - - πŸ”— DEPENDS_ON -> backend.src.services.reports.normalizer ## Cross-Module Dependencies @@ -1655,6 +1749,10 @@ graph TD routes-->|DEPENDS_ON|backend routes-->|DEPENDS_ON|backend routes-->|DEPENDS_ON|backend + routes-->|DEPENDS_ON|backend + routes-->|DEPENDS_ON|backend + routes-->|DEPENDS_ON|backend + __tests__-->|TESTS|backend __tests__-->|TESTS|backend __tests__-->|TESTS|backend __tests__-->|TESTS|backend @@ -1664,12 +1762,15 @@ graph TD __tests__-->|DEPENDS_ON|backend __tests__-->|DEPENDS_ON|backend __tests__-->|VERIFIES|backend + core-->|DEPENDS_ON|backend + core-->|DEPENDS_ON|backend core-->|USES|backend core-->|USES|backend core-->|DEPENDS_ON|backend core-->|DEPENDS_ON|backend core-->|DEPENDS_ON|backend core-->|DEPENDS_ON|backend + __tests__-->|TESTS|backend auth-->|USES|backend auth-->|USES|backend auth-->|USES|backend @@ -1688,12 +1789,16 @@ graph TD models-->|DEPENDS_ON|backend models-->|USED_BY|backend models-->|INHERITS_FROM|backend + models-->|DEPENDS_ON|backend + models-->|INHERITS_FROM|backend __tests__-->|TESTS|backend llm_analysis-->|IMPLEMENTS|backend llm_analysis-->|IMPLEMENTS|backend storage-->|DEPENDS_ON|backend scripts-->|USES|backend scripts-->|USES|backend + scripts-->|DEPENDS_ON|backend + scripts-->|DEPENDS_ON|backend scripts-->|READS_FROM|backend scripts-->|READS_FROM|backend scripts-->|USES|backend @@ -1708,6 +1813,13 @@ graph TD services-->|DEPENDS_ON|backend services-->|DEPENDS_ON|backend services-->|DEPENDS_ON|backend + services-->|DEPENDS_ON|backend + services-->|DEPENDS_ON|backend + services-->|DEPENDS_ON|backend + services-->|DEPENDS_ON|backend + services-->|DEPENDS_ON|backend + services-->|CALLS|backend + services-->|DEPENDS_ON|backend services-->|USES|backend services-->|USES|backend services-->|USES|backend @@ -1716,6 +1828,7 @@ graph TD __tests__-->|TESTS|backend __tests__-->|DEPENDS_ON|backend __tests__-->|TESTS|backend + __tests__-->|TESTS|backend clean_release-->|DEPENDS_ON|backend clean_release-->|DEPENDS_ON|backend clean_release-->|DEPENDS_ON|backend @@ -1753,9 +1866,12 @@ graph TD core-->|VERIFIES|backend migration-->|VERIFIES|backend migration-->|VERIFIES|backend + scripts-->|TESTS|backend __tests__-->|VERIFIES|components __tests__-->|VERIFIES|components + __tests__-->|TESTS|lib __tests__-->|VERIFIES|lib + __tests__-->|TESTS|lib reports-->|DEPENDS_ON|lib __tests__-->|TESTS|routes __tests__-->|TESTS|routes @@ -1763,7 +1879,7 @@ graph TD __tests__-->|TESTS|lib __tests__-->|TESTS|lib __tests__-->|TESTS|routes - root-->|DEPENDS_ON|backend - root-->|DEPENDS_ON|backend - root-->|DEPENDS_ON|backend + __tests__-->|TESTS|routes + __tests__-->|TESTS|routes + __tests__-->|TESTS|routes ``` diff --git a/.ai/PROJECT_MAP.md b/.ai/PROJECT_MAP.md index 1fa1447..e9d1b1b 100644 --- a/.ai/PROJECT_MAP.md +++ b/.ai/PROJECT_MAP.md @@ -7,45 +7,6 @@ - πŸ—οΈ Layer: Unknown - Ζ’ **check_file** (`Function`) `[TRIVIAL]` - πŸ“ Auto-detected function (orphan) -- πŸ“¦ **backend.src.services.reports.report_service** (`Module`) - - πŸ“ Aggregate, normalize, filter, and paginate task reports for unified list/detail API use cases. - - πŸ—οΈ Layer: Domain - - πŸ”’ Invariant: List responses are deterministic and include applied filter echo metadata. - - πŸ”— DEPENDS_ON -> `backend.src.core.task_manager.manager.TaskManager` - - πŸ”— DEPENDS_ON -> `backend.src.models.report` - - πŸ”— DEPENDS_ON -> `backend.src.services.reports.normalizer` - - β„‚ **ReportsService** (`Class`) - - πŸ“ Service layer for list/detail report retrieval and normalization. - - πŸ”’ Invariant: Service methods are read-only over task history source. - - Ζ’ **__init__** (`Function`) - - πŸ“ Initialize service with TaskManager dependency. - - πŸ”’ Invariant: Constructor performs no task mutations. - - Ζ’ **_load_normalized_reports** (`Function`) - - πŸ“ Build normalized reports from all available tasks. - - πŸ”’ Invariant: Every returned item is a TaskReport. - - Ζ’ **_to_utc_datetime** (`Function`) - - πŸ“ Normalize naive/aware datetime values to UTC-aware datetime for safe comparisons. - - πŸ”’ Invariant: Naive datetimes are interpreted as UTC to preserve deterministic ordering/filtering. - - Ζ’ **_datetime_sort_key** (`Function`) - - πŸ“ Produce stable numeric sort key for report timestamps. - - πŸ”’ Invariant: Mixed naive/aware datetimes never raise TypeError. - - Ζ’ **_matches_query** (`Function`) - - πŸ“ Apply query filtering to a report. - - πŸ”’ Invariant: Filter evaluation is side-effect free. - - Ζ’ **_sort_reports** (`Function`) - - πŸ“ Sort reports deterministically according to query settings. - - πŸ”’ Invariant: Sorting criteria are deterministic for equal input. - - Ζ’ **list_reports** (`Function`) - - πŸ“ Return filtered, sorted, paginated report collection. - - Ζ’ **get_report_detail** (`Function`) - - πŸ“ Return one normalized report with timeline/diagnostics/next actions. - - Ζ’ **print_entity** (`Function`) `[TRIVIAL]` - - πŸ“ Auto-detected function (orphan) -- πŸ“¦ **test_analyze** (`Module`) `[TRIVIAL]` - - πŸ“ Auto-generated module for test_analyze.py - - πŸ—οΈ Layer: Unknown - - Ζ’ **print_issues** (`Function`) `[TRIVIAL]` - - πŸ“ Auto-detected function (orphan) - πŸ“¦ **generate_semantic_map** (`Module`) - πŸ“ Scans the codebase to generate a Semantic Map, Module Map, and Compliance Report based on the System Standard. - πŸ—οΈ Layer: DevOps/Tooling @@ -206,6 +167,21 @@ - πŸ“ Clears authentication state and storage. - Ζ’ **setLoading** (`Function`) `[CRITICAL]` - πŸ“ Updates the loading state. +- πŸ“¦ **frontend.src.lib.auth.permissions** (`Module`) `[CRITICAL]` + - πŸ“ Shared frontend RBAC utilities for route guards and menu visibility. + - πŸ—οΈ Layer: Domain + - πŸ”’ Invariant: Admin role always bypasses explicit permission checks. + - Ζ’ **normalizePermissionRequirement** (`Function`) `[CRITICAL]` + - πŸ“ Convert permission requirement string to canonical resource/action tuple. + - Ζ’ **isAdminUser** (`Function`) `[CRITICAL]` + - πŸ“ Determine whether user has Admin role. + - Ζ’ **hasPermission** (`Function`) `[CRITICAL]` + - πŸ“ Check if user has a required resource/action permission. + - Ζ’ **normalizeAction** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) +- πŸ“¦ **frontend.src.lib.auth.__tests__.permissions** (`Module`) + - πŸ“ Verifies frontend RBAC permission parsing and access checks. + - πŸ—οΈ Layer: UI (Tests) - πŸ“¦ **Debounce** (`Module`) `[TRIVIAL]` - πŸ“ Debounce utility for limiting function execution rate - πŸ—οΈ Layer: Infra @@ -559,12 +535,10 @@ - πŸ”’ Invariant: Always shows active category and item - ⬅️ READS_FROM `app` - ⬅️ READS_FROM `lib` - - ⬅️ READS_FROM `t` + - ⬅️ READS_FROM `sidebarStore` - πŸ“¦ **Sidebar** (`Module`) `[TRIVIAL]` - πŸ“ Auto-generated module for frontend/src/lib/components/layout/Sidebar.svelte - πŸ—οΈ Layer: Unknown - - Ζ’ **buildCategories** (`Function`) `[TRIVIAL]` - - πŸ“ Auto-detected function (orphan) - Ζ’ **handleItemClick** (`Function`) `[TRIVIAL]` - πŸ“ Auto-detected function (orphan) - Ζ’ **handleCategoryToggle** (`Function`) `[TRIVIAL]` @@ -690,6 +664,15 @@ - πŸ“ Auto-detected function (orphan) - Ζ’ **connectWebSocket** (`Function`) `[TRIVIAL]` - πŸ“ Auto-detected function (orphan) +- πŸ“¦ **frontend.src.lib.components.layout.sidebarNavigation** (`Module`) + - πŸ“ Build sidebar navigation categories filtered by current user permissions. + - πŸ—οΈ Layer: UI + - πŸ”’ Invariant: Admin role can access all categories and subitems through permission utility. + - πŸ”— DEPENDS_ON -> `frontend.src.lib.auth.permissions.hasPermission` + - Ζ’ **isItemAllowed** (`Function`) + - πŸ“ Check whether a single menu node can be shown for a given user. + - Ζ’ **buildSidebarCategories** (`Function`) + - πŸ“ Build translated sidebar categories and filter them by RBAC permissions. - πŸ“¦ **test_breadcrumbs.svelte** (`Module`) `[TRIVIAL]` - πŸ“ Auto-generated module for frontend/src/lib/components/layout/__tests__/test_breadcrumbs.svelte.js - πŸ—οΈ Layer: Unknown @@ -697,6 +680,11 @@ - πŸ“ Auto-detected function (orphan) - Ζ’ **formatBreadcrumbLabel** (`Function`) `[TRIVIAL]` - πŸ“ Auto-detected function (orphan) +- πŸ“¦ **frontend.src.lib.components.layout.__tests__.sidebarNavigation** (`Module`) + - πŸ“ Verifies RBAC-based sidebar category and subitem visibility. + - πŸ—οΈ Layer: UI (Tests) + - Ζ’ **makeUser** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) - πŸ“¦ **ErrorPage** (`Page`) - πŸ“ Global error page displaying HTTP status and messages - πŸ—οΈ Layer: UI @@ -830,6 +818,8 @@ - πŸ“ Fetches the list of available environments. - Ζ’ **fetchDashboards** (`Function`) - πŸ“ Fetches dashboards for a specific environment. + - Ζ’ **filterDashboardsWithRepositories** (`Function`) + - πŸ“ Keep only dashboards that already have initialized Git repositories. - πŸ“¦ **DashboardHub** (`Page`) - πŸ“ Dashboard Hub - Central hub for managing dashboards with Git status and task actions - πŸ—οΈ Layer: UI @@ -846,6 +836,10 @@ - πŸ“ Normalize owners payload to unique non-empty display labels. - Ζ’ **DashboardHub.loadDashboards** (`Function`) - πŸ“ Load full dashboard dataset for current environment and hydrate grid projection. + - Ζ’ **DashboardHub.handleTemporaryShowAll** (`Function`) + - πŸ“ Temporarily disable profile-default dashboard filter for current page context. + - Ζ’ **DashboardHub.handleRestoreProfileFilter** (`Function`) + - πŸ“ Re-enable persisted profile-default filtering after temporary override. - Ζ’ **DashboardHub.formatDate** (`Function`) - πŸ“ Convert ISO timestamp to locale date string. - Ζ’ **DashboardHub.getGitSummaryLabel** (`Function`) @@ -903,6 +897,10 @@ - πŸ“ Auto-detected function (orphan) - Ζ’ **handlePageSizeChange** (`Function`) `[TRIVIAL]` - πŸ“ Auto-detected function (orphan) + - Ζ’ **handleTemporaryShowAll** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **handleRestoreProfileFilter** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) - Ζ’ **updateSelectionState** (`Function`) `[TRIVIAL]` - πŸ“ Auto-detected function (orphan) - Ζ’ **handleCheckboxChange** (`Function`) `[TRIVIAL]` @@ -1003,6 +1001,13 @@ - πŸ“ Auto-detected function (orphan) - Ζ’ **getPaginationRange** (`Function`) `[TRIVIAL]` - πŸ“ Auto-detected function (orphan) +- πŸ“¦ **frontend.src.routes.dashboards.__tests__.dashboard_profile_override_integration** (`Module`) + - πŸ“ Verifies temporary show-all override and restore-on-return behavior for profile-default dashboard filtering. + - πŸ—οΈ Layer: UI (Tests) + - Ζ’ **buildFilteredResponse** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **buildUnfilteredResponse** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) - πŸ“¦ **DashboardDetail** (`Page`) - πŸ“ Dashboard Detail View - Overview of charts and datasets linked to a dashboard - πŸ—οΈ Layer: UI @@ -1168,6 +1173,33 @@ - πŸ“ Fetches databases from both environments and gets suggestions. - Ζ’ **handleUpdate** (`Function`) `[CRITICAL]` - πŸ“ Saves a mapping to the backend. +- πŸ“¦ **+page** (`Module`) `[TRIVIAL]` + - πŸ“ Auto-generated module for frontend/src/routes/profile/+page.svelte + - πŸ—οΈ Layer: Unknown + - Ζ’ **parseValidationErrorsFromError** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **setSavedSnapshot** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **loadPreference** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **loadLookupCandidates** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **handleSelectCandidate** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **handleEnvironmentChange** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **handleSave** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **handleCancel** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) +- πŸ“¦ **frontend.src.routes.profile.__tests__.profile_settings_state_integration** (`Module`) + - πŸ“ Verifies profile settings preload, cancel without persistence, and saved-state reload behavior. + - πŸ—οΈ Layer: UI (Tests) +- πŸ“¦ **frontend.src.routes.profile.__tests__.profile_preferences_integration** (`Module`) + - πŸ“ Verifies profile binding happy path and degraded lookup manual fallback save flow. + - πŸ—οΈ Layer: UI (Tests) +- πŸ“¦ **frontend.src.routes.profile.__tests__.fixtures.profile_fixtures** (`Module`) `[TRIVIAL]` + - πŸ“ Shared fixture placeholders for profile page integration tests. - 🧩 **StoragePage** (`Component`) - πŸ“ Main page for unified file storage management. - πŸ—οΈ Layer: UI @@ -1177,6 +1209,8 @@ - ➑️ WRITES_TO `page` - Ζ’ **loadFiles** (`Function`) - πŸ“ Fetches the list of files from the server. + - Ζ’ **resolveStorageQueryFromPath** (`Function`) + - πŸ“ Splits UI path into storage API category and category-local subpath. - Ζ’ **handleDelete** (`Function`) - πŸ“ Handles the file deletion process. - Ζ’ **handleNavigate** (`Function`) @@ -1383,6 +1417,8 @@ - πŸ—οΈ Layer: Service - Ζ’ **getStorageAuthHeaders** (`Function`) - πŸ“ Returns headers with Authorization for storage API calls. + - Ζ’ **encodeStoragePath** (`Function`) + - πŸ“ Encodes a storage-relative path preserving slash separators. - Ζ’ **listFiles** (`Function`) - πŸ“ Fetches the list of files for a given category and subpath. - Ζ’ **uploadFile** (`Function`) @@ -1391,6 +1427,8 @@ - πŸ“ Deletes a file or directory from storage. - Ζ’ **downloadFileUrl** (`Function`) - πŸ“ Returns the URL for downloading a file. + - Ζ’ **downloadFile** (`Function`) + - πŸ“ Downloads a file using authenticated fetch and saves it in browser. - 🧩 **DashboardGrid** (`Component`) - πŸ“ Displays a grid of dashboards with selection and pagination. - πŸ—οΈ Layer: Component @@ -1423,8 +1461,16 @@ - Ζ’ **handleBulkCommit** (`Function`) - Ζ’ **handleBulkPull** (`Function`) - Ζ’ **handleBulkPush** (`Function`) + - Ζ’ **handleBulkDelete** (`Function`) + - πŸ“ Removes selected repositories from storage and binding table. - Ζ’ **handleManageSelected** (`Function`) - πŸ“ Opens Git manager for exactly one selected dashboard. + - Ζ’ **resolveDashboardRef** (`Function`) + - πŸ“ Resolves dashboard slug from payload fields. + - Ζ’ **openGitManagerForDashboard** (`Function`) + - πŸ“ Opens Git manager for provided dashboard metadata. + - Ζ’ **handleInitializeRepositories** (`Function`) + - πŸ“ Opens Git manager from bulk actions to initialize selected repository. - Ζ’ **getSortStatusValue** (`Function`) - πŸ“ Returns sort value for status column based on mode. - Ζ’ **getStatusLabel** (`Function`) @@ -1597,12 +1643,16 @@ - ➑️ WRITES_TO `t` - Ζ’ **handleSelect** (`Function`) - πŸ“ Dispatches the selection change event. -- 🧩 **ProtectedRoute** (`Component`) `[TRIVIAL]` - - πŸ“ Wraps content to ensure only authenticated users can access it. +- 🧩 **ProtectedRoute** (`Component`) `[CRITICAL]` + - πŸ“ Wraps content to ensure only authenticated and authorized users can access it. - πŸ—οΈ Layer: Component - - πŸ”’ Invariant: Redirects to /login if user is not authenticated. + - πŸ”’ Invariant: Redirects to /login if user is not authenticated and to fallback route when permission is denied. + - πŸ“₯ Props: requiredPermission: string | null , fallbackPath: string - ⬅️ READS_FROM `app` + - ⬅️ READS_FROM `lib` - ⬅️ READS_FROM `auth` + - Ζ’ **verifySessionAndAccess** (`Function`) `[CRITICAL]` + - πŸ“ Validates active session and optional route permission before rendering protected slot. - 🧩 **TaskLogPanel** (`Component`) - πŸ“ Combines log filtering and display into a single cohesive dark-themed panel. - πŸ—οΈ Layer: UI @@ -1668,6 +1718,8 @@ - πŸ“ Formats file size in bytes into a human-readable string. - Ζ’ **formatDate** (`Function`) - πŸ“ Formats an ISO date string into a localized readable format. + - Ζ’ **handleDownload** (`Function`) + - πŸ“ Downloads selected file through authenticated API request. - 🧩 **FileUpload** (`Component`) - πŸ“ Provides a form for uploading files to a specific category. - πŸ—οΈ Layer: UI @@ -1796,9 +1848,9 @@ - 🧩 **GitManager** (`Component`) - πŸ“ Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ UI управлСния Git с фокусом Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠ° (commit -> promote -> deploy). - πŸ—οΈ Layer: Component + - ➑️ WRITES_TO `bindable` - ➑️ WRITES_TO `props` - ➑️ WRITES_TO `state` - - ➑️ WRITES_TO `derived` - Ζ’ **normalizeEnvStage** (`Function`) - πŸ“ Normalize environment stage with legacy fallback. - Ζ’ **stageBadgeClass** (`Function`) @@ -1833,6 +1885,8 @@ - πŸ“ Return currently selected git server config. - Ζ’ **resolveDefaultConfig** (`Function`) - πŸ“ Resolve default git config for current session. + - Ζ’ **resolvePushProviderLabel** (`Function`) + - πŸ“ Resolve lower-case provider label for auto-push checkbox. - Ζ’ **buildSuggestedRepoName** (`Function`) - πŸ“ Build deterministic repository name from dashboard title/id. - Ζ’ **handleCreateRemoteRepo** (`Function`) @@ -1974,10 +2028,37 @@ - Ζ’ **test_dashboard_dataset_relations** (`Function`) `[TRIVIAL]` - πŸ“ Auto-detected function (orphan) - πŸ“¦ **backend.src.scripts.clean_release_tui** (`Module`) - - πŸ“ Provide clean release TUI entrypoint placeholder for phased implementation. + - πŸ“ Interactive terminal interface for Enterprise Clean Release compliance validation. - πŸ—οΈ Layer: UI - - πŸ”’ Invariant: Entry point is executable and does not mutate release data in placeholder mode. - - πŸ”— BINDS_TO -> `specs/023-clean-repo-enterprise/ux_reference.md` + - πŸ”’ Invariant: TUI must provide a headless fallback for non-TTY environments. + - πŸ”— DEPENDS_ON -> `backend.src.services.clean_release.compliance_orchestrator` + - πŸ”— DEPENDS_ON -> `backend.src.services.clean_release.repository` + - β„‚ **CleanReleaseTUI** (`Class`) + - πŸ“ Curses-based application for compliance monitoring. + - Ζ’ **run_checks** (`Function`) + - πŸ“ Execute compliance orchestrator run and update UI state. + - Ζ’ **__init__** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **__init__** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **draw_header** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **draw_checks** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **draw_sources** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **draw_status** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **draw_footer** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **clear_history** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **refresh_screen** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **loop** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **tui_main** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) - Ζ’ **main** (`Function`) `[TRIVIAL]` - πŸ“ Auto-detected function (orphan) - πŸ“¦ **backend.src.scripts.migrate_sqlite_to_postgres** (`Module`) @@ -2050,6 +2131,39 @@ - πŸ“ Schema for updating an existing user. - β„‚ **User** (`Class`) `[CRITICAL]` - πŸ“ Schema for user data in API responses. +- πŸ“¦ **backend.src.schemas.profile** (`Module`) + - πŸ“ Defines API schemas for profile preference persistence and Superset account lookup flows. + - πŸ—οΈ Layer: API + - πŸ”’ Invariant: Schema shapes stay stable for profile UI states and dashboards filter metadata. + - πŸ”— DEPENDS_ON -> `pydantic` + - β„‚ **ProfilePreference** (`Class`) + - πŸ“ Represents persisted profile preference for a single authenticated user. + - β„‚ **ProfilePreferenceUpdateRequest** (`Class`) + - πŸ“ Request payload for updating current user's dashboard filter preference. + - β„‚ **ProfilePreferenceResponse** (`Class`) + - πŸ“ Response envelope for profile preference read/update endpoints. + - β„‚ **SupersetAccountLookupRequest** (`Class`) + - πŸ“ Query contract for Superset account lookup by selected environment. + - β„‚ **SupersetAccountCandidate** (`Class`) + - πŸ“ Canonical account candidate projected from Superset users payload. + - β„‚ **SupersetAccountLookupResponse** (`Class`) + - πŸ“ Response envelope for Superset account lookup (success or degraded mode). +- πŸ“¦ **backend.src.core.superset_profile_lookup** (`Module`) + - πŸ“ Provides environment-scoped Superset account lookup adapter with stable normalized output. + - πŸ—οΈ Layer: Core + - πŸ”’ Invariant: Adapter never leaks raw upstream payload shape to API consumers. + - πŸ”— DEPENDS_ON -> `backend.src.core.utils.network.APIClient` + - πŸ”— DEPENDS_ON -> `backend.src.core.logger` + - β„‚ **SupersetAccountLookupAdapter** (`Class`) + - πŸ“ Lookup Superset users and normalize candidates for profile binding. + - Ζ’ **__init__** (`Function`) + - πŸ“ Initializes lookup adapter with authenticated API client and environment context. + - Ζ’ **get_users_page** (`Function`) + - πŸ“ Fetch one users page from Superset with passthrough search/sort parameters. + - Ζ’ **_normalize_lookup_payload** (`Function`) + - πŸ“ Convert Superset users response variants into stable candidates payload. + - Ζ’ **normalize_user_payload** (`Function`) + - πŸ“ Project raw Superset user object to canonical candidate shape. - πŸ“¦ **backend.src.core.superset_client** (`Module`) - πŸ“ ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ высокоуровнСвый ΠΊΠ»ΠΈΠ΅Π½Ρ‚ для взаимодСйствия с Superset REST API, инкапсулируя Π»ΠΎΠ³ΠΈΠΊΡƒ запросов, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ошибок ΠΈ ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΡŽ. - πŸ—οΈ Layer: Core @@ -2425,6 +2539,10 @@ - πŸ“ Retrieves a permission by its unique ID. - Ζ’ **get_permission_by_resource_action** (`Function`) `[CRITICAL]` - πŸ“ Retrieves a permission by resource and action. + - Ζ’ **get_user_dashboard_preference** (`Function`) `[CRITICAL]` + - πŸ“ Retrieves dashboard preference by owner user ID. + - Ζ’ **save_user_dashboard_preference** (`Function`) `[CRITICAL]` + - πŸ“ Persists dashboard preference entity and returns refreshed row. - Ζ’ **list_permissions** (`Function`) `[CRITICAL]` - πŸ“ Lists all available permissions. - πŸ“¦ **test_auth** (`Module`) @@ -2580,6 +2698,21 @@ - πŸ”— CALLS -> `self.load_excel_mappings` - πŸ”— CALLS -> `superset_client.get_dataset` - πŸ”— CALLS -> `superset_client.update_dataset` +- πŸ“¦ **backend.src.core.__tests__.test_superset_profile_lookup** (`Module`) + - πŸ“ Verifies Superset profile lookup adapter payload normalization and fallback error precedence. + - πŸ—οΈ Layer: Domain + - β„‚ **_RecordingNetworkClient** (`Class`) + - πŸ“ Records request payloads and returns scripted responses for deterministic adapter tests. + - Ζ’ **__init__** (`Function`) + - πŸ“ Initializes scripted network responses. + - Ζ’ **request** (`Function`) + - πŸ“ Mimics APIClient.request while capturing call arguments. + - Ζ’ **test_get_users_page_sends_lowercase_order_direction** (`Function`) + - πŸ“ Ensures adapter sends lowercase order_direction compatible with Superset rison schema. + - Ζ’ **test_get_users_page_preserves_primary_schema_error_over_fallback_auth_error** (`Function`) + - πŸ“ Ensures fallback auth error does not mask primary schema/query failure. + - Ζ’ **test_get_users_page_uses_fallback_endpoint_when_primary_fails** (`Function`) + - πŸ“ Verifies adapter retries second users endpoint and succeeds when fallback is healthy. - πŸ“¦ **test_logger** (`Module`) - πŸ“ Unit tests for logger module - πŸ—οΈ Layer: Infra @@ -2694,7 +2827,7 @@ - Ζ’ **_parse_datetime** (`Function`) - πŸ“ Safely parse a datetime string from the database - Ζ’ **_resolve_environment_id** (`Function`) - - πŸ“ Resolve environment id based on provided value or fallback to default + - πŸ“ Resolve environment id into existing environments.id value to satisfy FK constraints. - Ζ’ **__init__** (`Function`) - πŸ“ Initializes the persistence service. - Ζ’ **persist_task** (`Function`) @@ -2723,6 +2856,8 @@ - πŸ“ Delete all logs for a specific task. - Ζ’ **delete_logs_for_tasks** (`Function`) - πŸ“ Delete all logs for multiple tasks. + - Ζ’ **normalize_token** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) - Ζ’ **json_serializable** (`Function`) `[TRIVIAL]` - πŸ“ Auto-detected function (orphan) - πŸ“¦ **TaskManagerModule** (`Module`) `[CRITICAL]` @@ -2958,6 +3093,10 @@ - πŸ“ Delete repository in Gitea for a saved Gitea config. - Ζ’ **init_repository** (`Function`) - πŸ“ Link a dashboard to a Git repository and perform initial clone/init. + - Ζ’ **get_repository_binding** (`Function`) + - πŸ“ Return repository binding with provider metadata for selected dashboard. + - Ζ’ **delete_repository** (`Function`) + - πŸ“ Delete local repository workspace and DB binding for selected dashboard. - Ζ’ **get_branches** (`Function`) - πŸ“ List all branches for a dashboard's repository. - Ζ’ **create_branch** (`Function`) @@ -3164,6 +3303,8 @@ - πŸ“ Schema for dashboard deployment requests. - β„‚ **RepoInitRequest** (`Class`) - πŸ“ Schema for repository initialization requests. + - β„‚ **RepositoryBindingSchema** (`Class`) + - πŸ“ Schema describing repository-to-config binding and provider metadata. - β„‚ **RepoStatusBatchRequest** (`Class`) - πŸ“ Schema for requesting repository statuses for multiple dashboards in a single call. - β„‚ **RepoStatusBatchResponse** (`Class`) @@ -3327,6 +3468,21 @@ - πŸ“ Return paginated unified reports list. - Ζ’ **get_report_detail** (`Function`) - πŸ“ Return one normalized report detail with diagnostics and next actions. +- πŸ“¦ **backend.src.api.routes.profile** (`Module`) `[CRITICAL]` + - πŸ“ Exposes self-scoped profile preference endpoints and environment-based Superset account lookup. + - πŸ—οΈ Layer: API + - πŸ”’ Invariant: Endpoints are self-scoped and never mutate another user preference. + - πŸ”— DEPENDS_ON -> `backend.src.services.profile_service` + - πŸ”— DEPENDS_ON -> `backend.src.dependencies.get_current_user` + - πŸ”— DEPENDS_ON -> `backend.src.core.database.get_db` + - Ζ’ **_get_profile_service** (`Function`) + - πŸ“ Build profile service for current request scope. + - Ζ’ **get_preferences** (`Function`) + - πŸ“ Get authenticated user's dashboard filter preference. + - Ζ’ **update_preferences** (`Function`) + - πŸ“ Update authenticated user's dashboard filter preference. + - Ζ’ **lookup_superset_accounts** (`Function`) + - πŸ“ Lookup Superset account candidates in selected environment. - πŸ“¦ **backend.src.api.routes.__init__** (`Module`) - πŸ“ Provide lazy route module loading to avoid heavyweight imports during tests. - πŸ—οΈ Layer: API @@ -3365,6 +3521,7 @@ - πŸ“¦ **GitStatus** (`DataClass`) - πŸ“¦ **LastTask** (`DataClass`) - πŸ“¦ **DashboardItem** (`DataClass`) + - πŸ“¦ **EffectiveProfileFilter** (`DataClass`) - πŸ“¦ **DashboardsResponse** (`DataClass`) - πŸ“¦ **DashboardChartItem** (`DataClass`) - πŸ“¦ **DashboardDatasetItem** (`DataClass`) @@ -3381,6 +3538,18 @@ - πŸ“ Normalize query filter values to lower-cased non-empty tokens. - Ζ’ **_dashboard_git_filter_value** (`Function`) - πŸ“ Build comparable git status token for dashboards filtering. + - Ζ’ **_normalize_actor_alias_token** (`Function`) + - πŸ“ Normalize actor alias token to comparable trim+lower text. + - Ζ’ **_normalize_owner_display_token** (`Function`) + - πŸ“ Project owner payload value into stable display string for API response contracts. + - Ζ’ **_normalize_dashboard_owner_values** (`Function`) + - πŸ“ Normalize dashboard owners payload to optional list of display strings. + - Ζ’ **_project_dashboard_response_items** (`Function`) + - πŸ“ Project dashboard payloads to response-contract-safe shape. + - Ζ’ **_resolve_profile_actor_aliases** (`Function`) + - πŸ“ Resolve stable actor aliases for profile filtering without per-dashboard detail fan-out. + - Ζ’ **_matches_dashboard_actor_aliases** (`Function`) + - πŸ“ Apply profile actor matching against multiple aliases (username + optional display name). - Ζ’ **get_dashboards** (`Function`) - πŸ“ Fetch list of dashboards from a specific environment with Git status and last task status - πŸ”— CALLS -> `ResourceService.get_dashboards_with_status` @@ -3431,6 +3600,16 @@ - Ζ’ **test_get_database_mappings_env_not_found** (`Function`) - Ζ’ **test_get_dashboard_tasks_history_filters_success** (`Function`) - Ζ’ **test_get_dashboard_thumbnail_success** (`Function`) + - Ζ’ **_build_profile_preference_stub** (`Function`) + - πŸ“ Creates profile preference payload stub for dashboards filter contract tests. + - Ζ’ **_matches_actor_case_insensitive** (`Function`) + - πŸ“ Applies trim + case-insensitive owners OR modified_by matching used by route contract tests. + - Ζ’ **test_get_dashboards_profile_filter_contract_owners_or_modified_by** (`Function`) + - Ζ’ **test_get_dashboards_override_show_all_contract** (`Function`) + - Ζ’ **test_get_dashboards_profile_filter_no_match_results_contract** (`Function`) + - Ζ’ **test_get_dashboards_page_context_other_disables_profile_default** (`Function`) + - Ζ’ **test_get_dashboards_profile_filter_matches_display_alias_without_detail_fanout** (`Function`) + - Ζ’ **test_get_dashboards_profile_filter_matches_owner_object_payload_contract** (`Function`) - Ζ’ **mock_deps** (`Function`) `[TRIVIAL]` - πŸ“ Auto-detected function (orphan) - Ζ’ **mock_get_dashboards** (`Function`) `[TRIVIAL]` @@ -3571,6 +3750,27 @@ - Ζ’ **test_get_datasets_superset_failure** (`Function`) - Ζ’ **mock_deps** (`Function`) `[TRIVIAL]` - πŸ“ Auto-detected function (orphan) +- πŸ“¦ **backend.src.api.routes.__tests__.test_profile_api** (`Module`) + - πŸ“ Verifies profile API route contracts for preference read/update and Superset account lookup. + - πŸ—οΈ Layer: API + - Ζ’ **mock_profile_route_dependencies** (`Function`) + - πŸ“ Provides deterministic dependency overrides for profile route tests. + - Ζ’ **profile_route_deps_fixture** (`Function`) + - πŸ“ Pytest fixture wrapper for profile route dependency overrides. + - Ζ’ **_build_preference_response** (`Function`) + - πŸ“ Builds stable profile preference response payload for route tests. + - Ζ’ **test_get_profile_preferences_returns_self_payload** (`Function`) + - πŸ“ Verifies GET /api/profile/preferences returns stable self-scoped payload. + - Ζ’ **test_patch_profile_preferences_success** (`Function`) + - πŸ“ Verifies PATCH /api/profile/preferences persists valid payload through route mapping. + - Ζ’ **test_patch_profile_preferences_validation_error** (`Function`) + - πŸ“ Verifies route maps domain validation failure to HTTP 422 with actionable details. + - Ζ’ **test_patch_profile_preferences_cross_user_denied** (`Function`) + - πŸ“ Verifies route maps domain authorization guard failure to HTTP 403. + - Ζ’ **test_lookup_superset_accounts_success** (`Function`) + - πŸ“ Verifies lookup route returns success payload with normalized candidates. + - Ζ’ **test_lookup_superset_accounts_env_not_found** (`Function`) + - πŸ“ Verifies lookup route maps missing environment to HTTP 404. - πŸ“¦ **backend.tests.test_reports_detail_api** (`Module`) - πŸ“ Contract tests for GET /api/reports/{report_id} detail endpoint behavior. - πŸ—οΈ Layer: Domain (Tests) @@ -4000,6 +4200,13 @@ - β„‚ **ADGroupMapping** (`Class`) `[CRITICAL]` - πŸ“ Maps an Active Directory group to a local System Role. - πŸ”— DEPENDS_ON -> `Role` +- πŸ“¦ **backend.src.models.profile** (`Module`) + - πŸ“ Defines persistent per-user dashboard filter preferences. + - πŸ—οΈ Layer: Domain + - πŸ”’ Invariant: Exactly one preference row exists per user_id. + - πŸ”— DEPENDS_ON -> `backend.src.models.auth` + - β„‚ **UserDashboardPreference** (`Class`) + - πŸ“ Stores Superset username binding and default "my dashboards" toggle for one authenticated user. - πŸ“¦ **test_models** (`Module`) `[TRIVIAL]` - πŸ“ Unit tests for data models - πŸ—οΈ Layer: Domain @@ -4083,6 +4290,52 @@ - πŸ“ Auto-detected function (orphan) - Ζ’ **test_report_validation** (`Function`) `[TRIVIAL]` - πŸ“ Auto-detected function (orphan) +- πŸ“¦ **backend.src.services.profile_service** (`Module`) `[CRITICAL]` + - πŸ“ Orchestrates profile preference persistence, Superset account lookup, and deterministic actor matching. + - πŸ—οΈ Layer: Domain + - πŸ”’ Invariant: Username normalization is trim+lower and shared by save and matching paths. + - πŸ”— DEPENDS_ON -> `backend.src.models.profile` + - πŸ”— DEPENDS_ON -> `backend.src.schemas.profile` + - πŸ”— DEPENDS_ON -> `backend.src.core.superset_client` + - πŸ”— DEPENDS_ON -> `backend.src.core.auth.repository` + - πŸ”— DEPENDS_ON -> `backend.src.models.auth` + - πŸ”— DEPENDS_ON -> `sqlalchemy.orm.Session` + - β„‚ **ProfileValidationError** (`Class`) + - πŸ“ Domain validation error for profile preference update requests. + - β„‚ **EnvironmentNotFoundError** (`Class`) + - πŸ“ Raised when environment_id from lookup request is unknown in app configuration. + - β„‚ **ProfileAuthorizationError** (`Class`) + - πŸ“ Raised when caller attempts cross-user preference mutation. + - β„‚ **ProfileService** (`Class`) `[CRITICAL]` + - πŸ“ Implements profile preference read/update flow and Superset account lookup degradation strategy. + - Ζ’ **__init__** (`Function`) + - πŸ“ Initialize service with DB session and config manager. + - Ζ’ **get_my_preference** (`Function`) + - πŸ“ Return current user's persisted preference or default non-configured view. + - Ζ’ **update_my_preference** (`Function`) + - πŸ“ Validate and persist current user's profile preference in self-scoped mode. + - Ζ’ **lookup_superset_accounts** (`Function`) + - πŸ“ Query Superset users in selected environment and project canonical account candidates. + - Ζ’ **matches_dashboard_actor** (`Function`) + - πŸ“ Apply trim+case-insensitive actor match across owners OR modified_by. + - Ζ’ **_resolve_environment** (`Function`) + - πŸ“ Resolve environment model from configured environments by id. + - Ζ’ **_get_preference_row** (`Function`) + - πŸ“ Return persisted preference row for user or None. + - Ζ’ **_get_or_create_preference_row** (`Function`) + - πŸ“ Return existing preference row or create new unsaved row. + - Ζ’ **_build_default_preference** (`Function`) + - πŸ“ Build non-persisted default preference DTO for unconfigured users. + - Ζ’ **_validate_update_payload** (`Function`) + - πŸ“ Validate username/toggle constraints for preference mutation. + - Ζ’ **_sanitize_username** (`Function`) + - πŸ“ Normalize raw username into trimmed form or None for empty input. + - Ζ’ **_normalize_username** (`Function`) + - πŸ“ Apply deterministic trim+lower normalization for actor matching. + - Ζ’ **_normalize_owner_tokens** (`Function`) + - πŸ“ Normalize owners payload into deduplicated lower-cased tokens. + - Ζ’ **__init__** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) - πŸ“¦ **backend.src.services.resource_service** (`Module`) - πŸ“ Shared service for fetching resource data with Git status and task status - πŸ—οΈ Layer: Service @@ -4181,6 +4434,26 @@ - πŸ“ Auto-detected function (orphan) - Ζ’ **__init__** (`Function`) `[TRIVIAL]` - πŸ“ Auto-detected function (orphan) +- πŸ“¦ **backend.src.services.rbac_permission_catalog** (`Module`) + - πŸ“ Discovers declared RBAC permissions from API routes/plugins and synchronizes them into auth database. + - πŸ—οΈ Layer: Service + - πŸ”’ Invariant: Synchronization is idempotent for existing (resource, action) permission pairs. + - πŸ”— CALLS -> `backend.src.core.plugin_loader.PluginLoader.get_all_plugin_configs` + - πŸ”— DEPENDS_ON -> `backend.src.models.auth.Permission` + - πŸ“¦ **HAS_PERMISSION_PATTERN** (`Constant`) + - πŸ“ Regex pattern for extracting has_permission("resource", "ACTION") declarations. + - πŸ“¦ **ROUTES_DIR** (`Constant`) + - πŸ“ Absolute directory path where API route RBAC declarations are defined. + - Ζ’ **_iter_route_files** (`Function`) + - πŸ“ Iterates API route files that may contain RBAC declarations. + - Ζ’ **_discover_route_permissions** (`Function`) + - πŸ“ Extracts explicit has_permission declarations from API route source code. + - Ζ’ **_discover_plugin_execute_permissions** (`Function`) + - πŸ“ Derives dynamic task permissions of form plugin:{plugin_id}:EXECUTE from plugin registry. + - Ζ’ **discover_declared_permissions** (`Function`) + - πŸ“ Builds canonical RBAC permission catalog from routes and plugin registry. + - Ζ’ **sync_permission_catalog** (`Function`) + - πŸ“ Persists missing RBAC permission pairs into auth database. - πŸ“¦ **backend.src.services** (`Module`) - πŸ“ Package initialization for services module - πŸ—οΈ Layer: Core @@ -4221,10 +4494,14 @@ - πŸ“ Persist repository local_path in GitRepository table when record exists. - Ζ’ **_migrate_repo_directory** (`Function`) - πŸ“ Move legacy repository directory to target path and sync DB metadata. + - Ζ’ **_ensure_gitflow_branches** (`Function`) + - πŸ“ Ensure standard GitFlow branches (main/dev/preprod) exist locally and on origin. - Ζ’ **_get_repo_path** (`Function`) - πŸ“ Resolves the local filesystem path for a dashboard's repository. - Ζ’ **init_repo** (`Function`) - πŸ“ Initialize or clone a repository for a dashboard. + - Ζ’ **delete_repo** (`Function`) + - πŸ“ Remove local repository and DB binding for a dashboard. - Ζ’ **get_repo** (`Function`) - πŸ“ Get Repo object for a dashboard. - Ζ’ **list_branches** (`Function`) @@ -4261,6 +4538,10 @@ - πŸ“ Create repository in Gitea for authenticated user. - Ζ’ **delete_gitea_repository** (`Function`) - πŸ“ Delete repository in Gitea. + - Ζ’ **_gitea_branch_exists** (`Function`) + - πŸ“ Check whether a branch exists in Gitea repository. + - Ζ’ **_build_gitea_pr_404_detail** (`Function`) + - πŸ“ Build actionable error detail for Gitea PR 404 responses. - Ζ’ **create_github_repository** (`Function`) - πŸ“ Create repository in GitHub or GitHub Enterprise. - Ζ’ **create_gitlab_repository** (`Function`) @@ -4374,6 +4655,18 @@ - Ζ’ **test_extract_resource_name_from_task** (`Function`) - Ζ’ **test_get_last_task_for_resource_empty_tasks** (`Function`) - Ζ’ **test_get_last_task_for_resource_no_match** (`Function`) +- πŸ“¦ **backend.src.services.__tests__.test_rbac_permission_catalog** (`Module`) + - πŸ“ Verifies RBAC permission catalog discovery and idempotent synchronization behavior. + - πŸ—οΈ Layer: Service Tests + - πŸ”’ Invariant: Synchronization adds only missing normalized permission pairs. + - Ζ’ **test_discover_route_permissions_extracts_declared_pairs_and_ignores_tests** (`Function`) + - πŸ“ Ensures route-scanner extracts has_permission pairs from route files and skips __tests__. + - Ζ’ **test_discover_declared_permissions_unions_route_and_plugin_permissions** (`Function`) + - πŸ“ Ensures full catalog includes route-level permissions plus dynamic plugin EXECUTE rights. + - Ζ’ **test_sync_permission_catalog_inserts_only_missing_normalized_pairs** (`Function`) + - πŸ“ Ensures synchronization inserts only missing pairs and normalizes action/resource tokens. + - Ζ’ **test_sync_permission_catalog_is_noop_when_all_permissions_exist** (`Function`) + - πŸ“ Ensures synchronization is idempotent when all declared pairs already exist. - πŸ“¦ **backend.src.services.clean_release.compliance_orchestrator** (`Module`) `[CRITICAL]` - πŸ“ Execute mandatory clean compliance stages and produce final COMPLIANT/BLOCKED/FAILED outcome. - πŸ—οΈ Layer: Domain @@ -4381,14 +4674,16 @@ - πŸ”— DEPENDS_ON -> `backend.src.services.clean_release.stages` - πŸ”— DEPENDS_ON -> `backend.src.services.clean_release.report_builder` - πŸ”— DEPENDS_ON -> `backend.src.services.clean_release.repository` + - β„‚ **CleanComplianceOrchestrator** (`Class`) + - πŸ“ Coordinate clean-release compliance verification stages. + - Ζ’ **start_check_run** (`Function`) + - πŸ“ Initiate a new compliance run session. + - Ζ’ **finalize_run** (`Function`) + - πŸ“ Finalize run status based on cumulative stage results. - Ζ’ **__init__** (`Function`) `[TRIVIAL]` - πŸ“ Auto-detected function (orphan) - - Ζ’ **start_check_run** (`Function`) `[TRIVIAL]` - - πŸ“ Auto-detected function (orphan) - Ζ’ **execute_stages** (`Function`) `[TRIVIAL]` - πŸ“ Auto-detected function (orphan) - - Ζ’ **finalize_run** (`Function`) `[TRIVIAL]` - - πŸ“ Auto-detected function (orphan) - πŸ“¦ **backend.src.services.clean_release.manifest_builder** (`Module`) - πŸ“ Build deterministic distribution manifest from classified artifact input. - πŸ—οΈ Layer: Domain @@ -4461,6 +4756,8 @@ - πŸ—οΈ Layer: Infra - πŸ”’ Invariant: Repository operations are side-effect free outside explicit save/update calls. - πŸ”— DEPENDS_ON -> `backend.src.models.clean_release` + - β„‚ **CleanReleaseRepository** (`Class`) + - πŸ“ Data access object for clean release lifecycle. - Ζ’ **save_candidate** (`Function`) `[TRIVIAL]` - πŸ“ Auto-detected function (orphan) - Ζ’ **get_candidate** (`Function`) `[TRIVIAL]` @@ -4491,6 +4788,8 @@ - πŸ“ Auto-detected function (orphan) - Ζ’ **get_violations_by_check_run** (`Function`) `[TRIVIAL]` - πŸ“ Auto-detected function (orphan) + - Ζ’ **clear_history** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) - πŸ“¦ **backend.src.services.clean_release.preparation_service** (`Module`) - πŸ“ Prepare release candidate by policy evaluation and deterministic manifest creation. - πŸ—οΈ Layer: Domain @@ -5066,6 +5365,8 @@ - πŸ“ Test deleting with empty list (no-op). - Ζ’ **test_persist_task_with_datetime_in_params** (`Function`) - πŸ“ Test json_serializable handles datetime in params. + - Ζ’ **test_persist_task_resolves_environment_slug_to_existing_id** (`Function`) + - πŸ“ Ensure slug-like environment token resolves to environments.id before persisting task. - Ζ’ **_patched** (`Function`) `[TRIVIAL]` - πŸ“ Auto-detected function (orphan) - Ζ’ **_make_task** (`Function`) `[TRIVIAL]` @@ -5360,6 +5661,24 @@ - πŸ“ Test deleting with empty list (no-op). - Ζ’ **_patched** (`Function`) `[TRIVIAL]` - πŸ“ Auto-detected function (orphan) +- πŸ“¦ **backend.tests.scripts.test_clean_release_tui** (`Module`) + - πŸ“ Unit tests for the interactive curses TUI of the clean release process. + - πŸ—οΈ Layer: Scripts + - πŸ”’ Invariant: TUI initializes, handles hotkeys (F5, F10) and safely falls back without TTY. + - Ζ’ **mock_stdscr** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **test_headless_fallback** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **test_tui_initial_render** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **test_tui_run_checks_f5** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **side_effect** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **test_tui_exit_f10** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **test_tui_clear_history_f7** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) - πŸ“¦ **backend.tests.core.test_git_service_gitea_pr** (`Module`) - πŸ“ Validate Gitea PR creation fallback behavior when configured server URL is stale. - πŸ—οΈ Layer: Domain @@ -5368,6 +5687,10 @@ - πŸ“ Ensure helper returns host base URL and removes embedded credentials. - Ζ’ **test_create_gitea_pull_request_retries_with_remote_host_on_404** (`Function`) - πŸ“ Verify create_gitea_pull_request retries with remote URL host after primary 404. + - Ζ’ **test_create_gitea_pull_request_returns_branch_error_when_target_missing** (`Function`) + - πŸ“ Ensure Gitea 404 on PR creation is mapped to actionable target-branch validation error. + - Ζ’ **fake_gitea_request** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) - Ζ’ **fake_gitea_request** (`Function`) `[TRIVIAL]` - πŸ“ Auto-detected function (orphan) - πŸ“¦ **backend.tests.core.test_mapping_service** (`Module`) @@ -5412,6 +5735,28 @@ - πŸ“ Auto-detected function (orphan) - Ζ’ **test_superset_client_import_dashboard_guard** (`Function`) `[TRIVIAL]` - πŸ“ Auto-detected function (orphan) + - Ζ’ **test_git_service_init_repo_reclones_when_path_is_not_a_git_repo** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **test_git_service_ensure_gitflow_branches_creates_and_pushes_missing_defaults** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **__init__** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **__init__** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **__init__** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **fetch** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **push** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **__init__** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **__init__** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **create_head** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) + - Ζ’ **remote** (`Function`) `[TRIVIAL]` + - πŸ“ Auto-detected function (orphan) - πŸ“¦ **backend.tests.core.test_migration_engine** (`Module`) - πŸ“ Unit tests for MigrationEngine's cross-filter patching algorithms. - πŸ—οΈ Layer: Domain diff --git a/frontend/src/components/storage/FileList.svelte b/frontend/src/components/storage/FileList.svelte index 5e3f668..97d3046 100644 --- a/frontend/src/components/storage/FileList.svelte +++ b/frontend/src/components/storage/FileList.svelte @@ -13,8 +13,9 @@ @@ -112,13 +128,13 @@ {formatDate(file.created_at)} {#if !isDirectory(file)} - handleDownload(file)} class="text-indigo-600 hover:text-indigo-900 mr-4" > {$t.storage.table.download} - + {/if}