Files
ss-tools/semantics/semantic_map.json
2026-01-22 23:18:48 +03:00

8872 lines
310 KiB
JSON

{
"project_root": ".",
"generated_at": "2026-01-22T17:51:53.368228",
"modules": [
{
"name": "generate_semantic_map",
"type": "Module",
"start_line": 1,
"end_line": 613,
"tags": {
"SEMANTICS": "semantic_analysis, parser, map_generator, compliance_checker",
"PURPOSE": "Scans the codebase to generate a Semantic Map and Compliance Report based on the System Standard.",
"LAYER": "DevOps/Tooling"
},
"relations": [
{
"type": "READS",
"target": "FileSystem"
},
{
"type": "PRODUCES",
"target": "semantics/semantic_map.json"
},
{
"type": "PRODUCES",
"target": "specs/project_map.md"
},
{
"type": "PRODUCES",
"target": "semantics/reports/semantic_report_*.md"
}
],
"children": [
{
"name": "__init__",
"type": "Function",
"start_line": 21,
"end_line": 27,
"tags": {
"PURPOSE": "Mock init.",
"PRE": "name is a string.",
"POST": "Instance initialized."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager."
]
}
},
{
"name": "__enter__",
"type": "Function",
"start_line": 29,
"end_line": 35,
"tags": {
"PURPOSE": "Mock enter.",
"PRE": "Instance initialized.",
"POST": "Returns self."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager."
]
}
},
{
"name": "__exit__",
"type": "Function",
"start_line": 37,
"end_line": 43,
"tags": {
"PURPOSE": "Mock exit.",
"PRE": "Context entered.",
"POST": "Context exited."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager."
]
}
},
{
"name": "SemanticEntity",
"type": "Class",
"start_line": 67,
"end_line": 167,
"tags": {
"PURPOSE": "Represents a code entity (Module, Function, Component) found during parsing.",
"INVARIANT": "start_line is always set; end_line is set upon closure."
},
"relations": [],
"children": [
{
"name": "__init__",
"type": "Function",
"start_line": 71,
"end_line": 87,
"tags": {
"PURPOSE": "Initializes a new SemanticEntity instance.",
"PRE": "name, type_, start_line, file_path are provided.",
"POST": "Instance is initialized with default values."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "to_dict",
"type": "Function",
"start_line": 89,
"end_line": 109,
"tags": {
"PURPOSE": "Serializes the entity to a dictionary for JSON output.",
"PRE": "Entity is fully populated.",
"POST": "Returns a dictionary representation.",
"RETURN": "Dict representation of the entity."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "validate",
"type": "Function",
"start_line": 111,
"end_line": 140,
"tags": {
"PURPOSE": "Checks for semantic compliance (closure, mandatory tags, belief state).",
"PRE": "Entity structure is complete.",
"POST": "Populates self.compliance_issues."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_score",
"type": "Function",
"start_line": 142,
"end_line": 166,
"tags": {
"PURPOSE": "Calculates a compliance score (0.0 to 1.0).",
"PRE": "validate() has been called.",
"POST": "Returns a float score.",
"RETURN": "Float score."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_patterns",
"type": "Function",
"start_line": 170,
"end_line": 198,
"tags": {
"PURPOSE": "Returns regex patterns for a specific language.",
"PRE": "lang is either 'python' or 'svelte_js'.",
"POST": "Returns a dictionary of compiled regex patterns.",
"PARAM": "lang (str) - 'python' or 'svelte_js'",
"RETURN": "Dict containing compiled regex patterns."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "parse_file",
"type": "Function",
"start_line": 201,
"end_line": 324,
"tags": {
"PURPOSE": "Parses a single file to extract semantic entities.",
"PRE": "full_path, rel_path, lang are valid strings.",
"POST": "Returns extracted entities and list of issues.",
"PARAM": "lang - Language identifier.",
"RETURN": "Tuple[List[SemanticEntity], List[str]] - Entities found and global issues."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "SemanticMapGenerator",
"type": "Class",
"start_line": 327,
"end_line": 607,
"tags": {
"PURPOSE": "Orchestrates the mapping process."
},
"relations": [],
"children": [
{
"name": "__init__",
"type": "Function",
"start_line": 330,
"end_line": 341,
"tags": {
"PURPOSE": "Initializes the generator with a root directory.",
"PRE": "root_dir is a valid path string.",
"POST": "Generator instance is ready."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_load_gitignore",
"type": "Function",
"start_line": 343,
"end_line": 359,
"tags": {
"PURPOSE": "Loads patterns from .gitignore file.",
"PRE": ".gitignore exists in root_dir.",
"POST": "Returns set of ignore patterns.",
"RETURN": "Set of patterns to ignore."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_is_ignored",
"type": "Function",
"start_line": 361,
"end_line": 402,
"tags": {
"PURPOSE": "Checks if a path should be ignored based on .gitignore or hardcoded defaults.",
"PRE": "rel_path is a valid relative path string.",
"POST": "Returns True if the path should be ignored.",
"PARAM": "rel_path (str) - Path relative to root.",
"RETURN": "bool - True if ignored."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "run",
"type": "Function",
"start_line": 404,
"end_line": 416,
"tags": {
"PURPOSE": "Main execution flow.",
"PRE": "Generator is initialized.",
"POST": "Semantic map and reports are generated."
},
"relations": [
{
"type": "CALLS",
"target": "_walk_and_parse"
},
{
"type": "CALLS",
"target": "_generate_artifacts"
}
],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_walk_and_parse",
"type": "Function",
"start_line": 418,
"end_line": 447,
"tags": {
"PURPOSE": "Recursively walks directories and triggers parsing.",
"PRE": "root_dir exists.",
"POST": "All files are scanned and entities extracted."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_process_file_results",
"type": "Function",
"start_line": 449,
"end_line": 476,
"tags": {
"PURPOSE": "Validates entities and calculates file scores.",
"PRE": "Entities have been parsed from the file.",
"POST": "File score is calculated and issues collected."
},
"relations": [],
"children": [
{
"name": "validate_recursive",
"type": "Function",
"start_line": 458,
"end_line": 470,
"tags": {
"PURPOSE": "Recursively validates a list of entities.",
"PRE": "ent_list is a list of SemanticEntity objects.",
"POST": "All entities and their children are validated."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_generate_artifacts",
"type": "Function",
"start_line": 478,
"end_line": 501,
"tags": {
"PURPOSE": "Writes output files.",
"PRE": "Parsing and validation are complete.",
"POST": "JSON and Markdown artifacts are written to disk."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_generate_report",
"type": "Function",
"start_line": 503,
"end_line": 543,
"tags": {
"PURPOSE": "Generates the Markdown compliance report.",
"PRE": "File scores and issues are available.",
"POST": "Markdown report is created in reports directory."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_collect_issues",
"type": "Function",
"start_line": 545,
"end_line": 555,
"tags": {
"PURPOSE": "Helper to collect issues for a specific file from the entity tree.",
"PRE": "entities list and file_path are valid.",
"POST": "issues list is populated with compliance issues."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_generate_compressed_map",
"type": "Function",
"start_line": 557,
"end_line": 573,
"tags": {
"PURPOSE": "Generates the token-optimized project map.",
"PRE": "Entities have been processed.",
"POST": "Markdown project map is written."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_write_entity_md",
"type": "Function",
"start_line": 575,
"end_line": 605,
"tags": {
"PURPOSE": "Recursive helper to write entity tree to Markdown.",
"PRE": "f is an open file handle, entity is valid.",
"POST": "Entity details are written to the file."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "main",
"type": "Module",
"start_line": 1,
"end_line": 18,
"tags": {
"SEMANTICS": "entrypoint, svelte, init",
"PURPOSE": "Entry point for the Svelte application.",
"LAYER": "UI-Entry"
},
"relations": [],
"children": [
{
"name": "app_instance",
"type": "Data",
"start_line": 9,
"end_line": 15,
"tags": {
"PURPOSE": "Initialized Svelte app instance."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "App",
"type": "Component",
"start_line": 1,
"end_line": 117,
"tags": {
"SEMANTICS": "main, entrypoint, layout, navigation",
"PURPOSE": "The root component of the frontend application. Manages navigation and layout.",
"LAYER": "UI",
"RELATION": "DEPENDS_ON -> frontend/src/lib/stores.js",
"INVARIANT": "Navigation state must be persisted in the currentPage store."
},
"relations": [],
"children": [
{
"name": "handleFormSubmit",
"type": "Function",
"start_line": 24,
"end_line": 44,
"tags": {
"PURPOSE": "Handles form submission for task creation.",
"PRE": "event.detail contains form parameters.",
"POST": "Task is created and selectedTask is updated.",
"PARAM": "{CustomEvent} event - The submit event from DynamicForm."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "navigate",
"type": "Function",
"start_line": 46,
"end_line": 63,
"tags": {
"PURPOSE": "Changes the current page and resets state.",
"PRE": "Target page name is provided.",
"POST": "currentPage store is updated and selection state is reset.",
"PARAM": "{string} page - Target page name."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "stores_module",
"type": "Module",
"start_line": 1,
"end_line": 70,
"tags": {
"SEMANTICS": "state, stores, svelte, plugins, tasks",
"PURPOSE": "Global state management using Svelte stores.",
"LAYER": "UI-State"
},
"relations": [],
"children": [
{
"name": "plugins",
"type": "Data",
"start_line": 9,
"end_line": 12,
"tags": {
"PURPOSE": "Store for the list of available plugins."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "tasks",
"type": "Data",
"start_line": 14,
"end_line": 17,
"tags": {
"PURPOSE": "Store for the list of tasks."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "selectedPlugin",
"type": "Data",
"start_line": 19,
"end_line": 22,
"tags": {
"PURPOSE": "Store for the currently selected plugin."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "selectedTask",
"type": "Data",
"start_line": 24,
"end_line": 27,
"tags": {
"PURPOSE": "Store for the currently selected task."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "currentPage",
"type": "Data",
"start_line": 29,
"end_line": 32,
"tags": {
"PURPOSE": "Store for the current page."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "taskLogs",
"type": "Data",
"start_line": 34,
"end_line": 37,
"tags": {
"PURPOSE": "Store for the logs of the currently selected task."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "fetchPlugins",
"type": "Function",
"start_line": 39,
"end_line": 53,
"tags": {
"PURPOSE": "Fetches plugins from the API and updates the plugins store.",
"PRE": "None.",
"POST": "plugins store is updated with data from the API."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "fetchTasks",
"type": "Function",
"start_line": 55,
"end_line": 69,
"tags": {
"PURPOSE": "Fetches tasks from the API and updates the tasks store.",
"PRE": "None.",
"POST": "tasks store is updated with data from the API."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "toasts_module",
"type": "Module",
"start_line": 1,
"end_line": 38,
"tags": {
"SEMANTICS": "notification, toast, feedback, state",
"PURPOSE": "Manages toast notifications using a Svelte writable store.",
"LAYER": "UI-State"
},
"relations": [],
"children": [
{
"name": "toasts",
"type": "Data",
"start_line": 8,
"end_line": 11,
"tags": {
"PURPOSE": "Writable store containing the list of active toasts."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "addToast",
"type": "Function",
"start_line": 13,
"end_line": 26,
"tags": {
"PURPOSE": "Adds a new toast message.",
"PRE": "message string is provided.",
"POST": "New toast is added to the store and scheduled for removal.",
"PARAM": "duration (number) - Duration in ms before the toast is removed."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "removeToast",
"type": "Function",
"start_line": 28,
"end_line": 37,
"tags": {
"PURPOSE": "Removes a toast message by ID.",
"PRE": "id is provided.",
"POST": "Toast is removed from the store.",
"PARAM": "id (string) - The ID of the toast to remove."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "api_module",
"type": "Module",
"start_line": 1,
"end_line": 130,
"tags": {
"SEMANTICS": "api, client, fetch, rest",
"PURPOSE": "Handles all communication with the backend API.",
"LAYER": "Infra-API"
},
"relations": [],
"children": [
{
"name": "getWsUrl",
"type": "Function",
"start_line": 11,
"end_line": 26,
"tags": {
"PURPOSE": "Returns the WebSocket URL for a specific task, with fallback logic.",
"PRE": "taskId is provided.",
"POST": "Returns valid WebSocket URL string.",
"PARAM": "taskId (string) - The ID of the task.",
"RETURN": "string - The WebSocket URL."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "fetchApi",
"type": "Function",
"start_line": 28,
"end_line": 48,
"tags": {
"PURPOSE": "Generic GET request wrapper.",
"PRE": "endpoint string is provided.",
"POST": "Returns Promise resolving to JSON data or throws on error.",
"PARAM": "endpoint (string) - API endpoint.",
"RETURN": "Promise<any> - JSON response."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "postApi",
"type": "Function",
"start_line": 50,
"end_line": 77,
"tags": {
"PURPOSE": "Generic POST request wrapper.",
"PRE": "endpoint and body are provided.",
"POST": "Returns Promise resolving to JSON data or throws on error.",
"PARAM": "body (object) - Request payload.",
"RETURN": "Promise<any> - JSON response."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "requestApi",
"type": "Function",
"start_line": 79,
"end_line": 107,
"tags": {
"PURPOSE": "Generic request wrapper.",
"PRE": "endpoint and method are provided.",
"POST": "Returns Promise resolving to JSON data or throws on error."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "api",
"type": "Data",
"start_line": 109,
"end_line": 128,
"tags": {
"PURPOSE": "API client object with specific methods."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "selectPlugin",
"type": "Function",
"start_line": 17,
"end_line": 30,
"tags": {
"PURPOSE": "Handles plugin selection and navigation.",
"PRE": "plugin object must be provided.",
"POST": "Navigates to migration or sets selectedPlugin store."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handleFormSubmit",
"type": "Function",
"start_line": 32,
"end_line": 50,
"tags": {
"PURPOSE": "Handles task creation from dynamic form submission.",
"PRE": "event.detail must contain task parameters.",
"POST": "Task is created via API and selectedTask store is updated."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "load",
"type": "Function",
"start_line": 3,
"end_line": 23,
"tags": {
"PURPOSE": "Loads initial plugin data for the dashboard.",
"PRE": "None.",
"POST": "Returns an object with plugins or an error message.",
"TYPE": "{import('./$types').PageLoad} */"
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "TaskManagementPage",
"type": "Component",
"start_line": 1,
"end_line": 187,
"tags": {
"SEMANTICS": "tasks, management, history, logs",
"PURPOSE": "Page for managing and monitoring tasks.",
"LAYER": "Page",
"RELATION": "USES -> TaskLogViewer"
},
"relations": [],
"children": [
{
"name": "loadInitialData",
"type": "Function",
"start_line": 24,
"end_line": 47,
"tags": {
"PURPOSE": "Loads tasks and environments on page initialization.",
"PRE": "API must be reachable.",
"POST": "tasks and environments variables are populated."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "refreshTasks",
"type": "Function",
"start_line": 49,
"end_line": 66,
"tags": {
"PURPOSE": "Periodically refreshes the task list.",
"PRE": "API must be reachable.",
"POST": "tasks variable is updated if data is valid."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handleSelectTask",
"type": "Function",
"start_line": 68,
"end_line": 78,
"tags": {
"PURPOSE": "Updates the selected task ID when a task is clicked.",
"PRE": "event.detail.id must be provided.",
"POST": "selectedTaskId is updated."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handleRunBackup",
"type": "Function",
"start_line": 80,
"end_line": 104,
"tags": {
"PURPOSE": "Triggers a manual backup task for the selected environment.",
"PRE": "selectedEnvId must not be empty.",
"POST": "Backup task is created and task list is refreshed."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "MigrationDashboard",
"type": "Component",
"start_line": 1,
"end_line": 418,
"tags": {
"SEMANTICS": "migration, dashboard, environment, selection, database-replacement",
"PURPOSE": "Main dashboard for configuring and starting migrations.",
"LAYER": "Page",
"RELATION": "USES -> EnvSelector",
"INVARIANT": "Migration cannot start without source and target environments."
},
"relations": [],
"children": [
{
"name": "fetchEnvironments",
"type": "Function",
"start_line": 51,
"end_line": 68,
"tags": {
"PURPOSE": "Fetches the list of environments from the API.",
"PRE": "None.",
"POST": "environments state is updated."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "fetchDashboards",
"type": "Function",
"start_line": 70,
"end_line": 88,
"tags": {
"PURPOSE": "Fetches dashboards for the selected source environment.",
"PRE": "envId is a valid environment ID.",
"PARAM": "envId The environment ID.",
"POST": "dashboards state is updated."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "fetchDatabases",
"type": "Function",
"start_line": 95,
"end_line": 130,
"tags": {
"PURPOSE": "Fetches databases from both environments and gets suggestions.",
"PRE": "sourceEnvId and targetEnvId must be set.",
"POST": "sourceDatabases, targetDatabases, mappings, and suggestions are updated."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handleMappingUpdate",
"type": "Function",
"start_line": 132,
"end_line": 167,
"tags": {
"PURPOSE": "Saves a mapping to the backend.",
"PRE": "event.detail contains sourceUuid and targetUuid.",
"POST": "Mapping is saved and local mappings list is updated."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handleViewLogs",
"type": "Function",
"start_line": 169,
"end_line": 179,
"tags": {
"PURPOSE": "Opens the log viewer for a specific task.",
"PRE": "event.detail contains task object.",
"POST": "logViewer state updated and showLogViewer set to true."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handlePasswordPrompt",
"type": "Function",
"start_line": 181,
"end_line": 203,
"tags": {
"PURPOSE": "Reactive logic to show password prompt when a task is awaiting input.",
"PRE": "selectedTask status is AWAITING_INPUT.",
"POST": "showPasswordPrompt set to true with request data."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handleResumeMigration",
"type": "Function",
"start_line": 205,
"end_line": 223,
"tags": {
"PURPOSE": "Resumes a migration task with provided passwords.",
"PRE": "event.detail contains passwords.",
"POST": "resumeTask is called and showPasswordPrompt is hidden on success."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "startMigration",
"type": "Function",
"start_line": 225,
"end_line": 292,
"tags": {
"PURPOSE": "Starts the migration process.",
"PRE": "sourceEnvId and targetEnvId must be set and different.",
"POST": "Migration task is started and selectedTask is updated."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "MappingManagement",
"type": "Component",
"start_line": 1,
"end_line": 192,
"tags": {
"SEMANTICS": "mapping, management, database, fuzzy-matching",
"PURPOSE": "Page for managing database mappings between environments.",
"LAYER": "Page",
"RELATION": "USES -> MappingTable",
"INVARIANT": "Mappings are saved to the backend for persistence."
},
"relations": [],
"children": [
{
"name": "fetchEnvironments",
"type": "Function",
"start_line": 33,
"end_line": 48,
"tags": {
"PURPOSE": "Fetches the list of environments.",
"PRE": "None.",
"POST": "environments array is populated."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "fetchDatabases",
"type": "Function",
"start_line": 52,
"end_line": 88,
"tags": {
"PURPOSE": "Fetches databases from both environments and gets suggestions.",
"PRE": "sourceEnvId and targetEnvId must be set.",
"POST": "sourceDatabases, targetDatabases, mappings, and suggestions are updated."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handleUpdate",
"type": "Function",
"start_line": 90,
"end_line": 126,
"tags": {
"PURPOSE": "Saves a mapping to the backend.",
"PRE": "event.detail contains sourceUuid and targetUuid.",
"POST": "Mapping is saved and local mappings list is updated."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "SearchPage",
"type": "Component",
"start_line": 1,
"end_line": 26,
"tags": {
"SEMANTICS": "search, page, tool",
"PURPOSE": "Page for the dataset search tool.",
"LAYER": "UI"
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "MapperPage",
"type": "Component",
"start_line": 1,
"end_line": 26,
"tags": {
"SEMANTICS": "mapper, page, tool",
"PURPOSE": "Page for the dataset column mapper tool.",
"LAYER": "UI"
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "DebugPage",
"type": "Component",
"start_line": 1,
"end_line": 26,
"tags": {
"SEMANTICS": "debug, page, tool",
"PURPOSE": "Page for system diagnostics and debugging.",
"LAYER": "UI"
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handleSaveGlobal",
"type": "Function",
"start_line": 24,
"end_line": 40,
"tags": {
"PURPOSE": "Saves global application settings.",
"PRE": "settings.settings must contain valid configuration.",
"POST": "Global settings are updated via API."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handleAddOrUpdateEnv",
"type": "Function",
"start_line": 42,
"end_line": 68,
"tags": {
"PURPOSE": "Adds a new environment or updates an existing one.",
"PRE": "newEnv must contain valid environment details.",
"POST": "Environment is saved and page is reloaded to reflect changes."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handleDeleteEnv",
"type": "Function",
"start_line": 70,
"end_line": 89,
"tags": {
"PURPOSE": "Deletes a Superset environment.",
"PRE": "id must be a valid environment ID.",
"POST": "Environment is removed and page is reloaded."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handleTestEnv",
"type": "Function",
"start_line": 91,
"end_line": 112,
"tags": {
"PURPOSE": "Tests the connection to a Superset environment.",
"PRE": "id must be a valid environment ID.",
"POST": "Displays success or error toast based on connection result."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "editEnv",
"type": "Function",
"start_line": 114,
"end_line": 123,
"tags": {
"PURPOSE": "Populates the environment form for editing.",
"PRE": "env object must be provided.",
"POST": "newEnv and editingEnvId are updated."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "resetEnvForm",
"type": "Function",
"start_line": 125,
"end_line": 141,
"tags": {
"PURPOSE": "Resets the environment creation/edit form to default state.",
"PRE": "None.",
"POST": "newEnv is cleared and editingEnvId is set to null."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "load",
"type": "Function",
"start_line": 3,
"end_line": 29,
"tags": {
"PURPOSE": "Loads application settings and environment list.",
"PRE": "API must be reachable.",
"POST": "Returns settings object or default values on error.",
"TYPE": "{import('./$types').PageLoad} */"
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "ConnectionsSettingsPage",
"type": "Component",
"start_line": 1,
"end_line": 40,
"tags": {
"SEMANTICS": "settings, connections, page",
"PURPOSE": "Page for managing database connection configurations.",
"LAYER": "UI"
},
"relations": [],
"children": [
{
"name": "handleSuccess",
"type": "Function",
"start_line": 13,
"end_line": 23,
"tags": {
"PURPOSE": "Refreshes the connection list after a successful creation.",
"PRE": "listComponent must be bound.",
"POST": "Triggers the fetchConnections method on the list component."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "Dashboard",
"type": "Component",
"start_line": 1,
"end_line": 64,
"tags": {
"SEMANTICS": "dashboard, plugins, tools, list",
"PURPOSE": "Displays the list of available plugins and allows selecting one.",
"LAYER": "UI",
"RELATION": "DEPENDS_ON -> frontend/src/lib/stores.js",
"PROPS": "None",
"EVENTS": "None"
},
"relations": [],
"children": [
{
"name": "onMount",
"type": "Function",
"start_line": 17,
"end_line": 27,
"tags": {
"PURPOSE": "Fetch plugins when the component mounts.",
"PRE": "Component is mounting.",
"POST": "plugins store is populated with available tools."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "selectPlugin",
"type": "Function",
"start_line": 29,
"end_line": 40,
"tags": {
"PURPOSE": "Selects a plugin to display its form.",
"PRE": "plugin object is provided.",
"POST": "selectedPlugin store is updated.",
"PARAM": "{Object} plugin - The plugin object to select."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "Settings",
"type": "Component",
"start_line": 1,
"end_line": 347,
"tags": {
"SEMANTICS": "settings, ui, configuration",
"PURPOSE": "The main settings page for the application, allowing management of environments and global settings.",
"LAYER": "UI",
"RELATION": "USES -> stores.js",
"PROPS": "None",
"EVENTS": "None",
"INVARIANT": "Settings changes must be saved to the backend."
},
"relations": [],
"children": [
{
"name": "loadSettings",
"type": "Function",
"start_line": 50,
"end_line": 67,
"tags": {
"PURPOSE": "Loads settings from the backend.",
"PRE": "Component mounted or refresh requested.",
"POST": "settings object is populated with backend data."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handleSaveGlobal",
"type": "Function",
"start_line": 69,
"end_line": 86,
"tags": {
"PURPOSE": "Saves global settings to the backend.",
"PRE": "settings.settings contains valid configuration.",
"POST": "Backend global settings are updated."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handleAddOrUpdateEnv",
"type": "Function",
"start_line": 88,
"end_line": 112,
"tags": {
"PURPOSE": "Adds or updates an environment.",
"PRE": "newEnv contains valid environment details.",
"POST": "Environment list is updated on backend and reloaded locally."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handleDeleteEnv",
"type": "Function",
"start_line": 114,
"end_line": 135,
"tags": {
"PURPOSE": "Deletes an environment.",
"PRE": "id of environment to delete is provided.",
"POST": "Environment is removed from backend and list is reloaded.",
"PARAM": "{string} id - The ID of the environment to delete."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handleTestEnv",
"type": "Function",
"start_line": 137,
"end_line": 160,
"tags": {
"PURPOSE": "Tests the connection to an environment.",
"PRE": "Environment ID is valid.",
"POST": "Connection test result is displayed via toast.",
"PARAM": "{string} id - The ID of the environment to test."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "editEnv",
"type": "Function",
"start_line": 162,
"end_line": 173,
"tags": {
"PURPOSE": "Sets the form to edit an existing environment.",
"PRE": "env object is provided.",
"POST": "newEnv is populated with env data and editingEnvId is set.",
"PARAM": "{Object} env - The environment object to edit."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "resetEnvForm",
"type": "Function",
"start_line": 175,
"end_line": 196,
"tags": {
"PURPOSE": "Resets the environment form.",
"PRE": "None.",
"POST": "newEnv is reset to initial state and editingEnvId is cleared."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "getConnections",
"type": "Function",
"start_line": 7,
"end_line": 23,
"tags": {
"PURPOSE": "Fetch a list of saved connections.",
"PRE": "None.",
"POST": "Returns a promise resolving to an array of connections.",
"RETURNS": "{Promise<Array>} List of connections."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "createConnection",
"type": "Function",
"start_line": 25,
"end_line": 50,
"tags": {
"PURPOSE": "Create a new connection configuration.",
"PRE": "connectionData must be a valid object.",
"POST": "Returns a promise resolving to the created connection.",
"PARAM": "{Object} connectionData - The connection data.",
"RETURNS": "{Promise<Object>} The created connection instance."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "deleteConnection",
"type": "Function",
"start_line": 52,
"end_line": 70,
"tags": {
"PURPOSE": "Delete a connection configuration.",
"PRE": "connectionId must be a valid string.",
"POST": "Returns a promise that resolves when deletion is complete.",
"PARAM": "{string} connectionId - The ID of the connection to delete."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "runTask",
"type": "Function",
"start_line": 7,
"end_line": 33,
"tags": {
"PURPOSE": "Start a new task for a given plugin.",
"PRE": "pluginId and params must be provided.",
"POST": "Returns a promise resolving to the task instance.",
"PARAM": "{Object} params - Parameters for the plugin.",
"RETURNS": "{Promise<Object>} The created task instance."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "getTaskStatus",
"type": "Function",
"start_line": 35,
"end_line": 52,
"tags": {
"PURPOSE": "Fetch details for a specific task (to poll status or get result).",
"PRE": "taskId must be provided.",
"POST": "Returns a promise resolving to task details.",
"PARAM": "{string} taskId - The ID of the task.",
"RETURNS": "{Promise<Object>} Task details."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "getTasks",
"type": "Function",
"start_line": 7,
"end_line": 34,
"tags": {
"PURPOSE": "Fetch a list of tasks with pagination and optional status filter.",
"PRE": "limit and offset are numbers.",
"POST": "Returns a promise resolving to a list of tasks.",
"PARAM": "{string|null} status - Filter by task status (optional).",
"RETURNS": "{Promise<Array>} List of tasks."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "getTask",
"type": "Function",
"start_line": 36,
"end_line": 53,
"tags": {
"PURPOSE": "Fetch details for a specific task.",
"PRE": "taskId must be provided.",
"POST": "Returns a promise resolving to task details.",
"PARAM": "{string} taskId - The ID of the task.",
"RETURNS": "{Promise<Object>} Task details."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "getTaskLogs",
"type": "Function",
"start_line": 55,
"end_line": 75,
"tags": {
"PURPOSE": "Fetch logs for a specific task.",
"PRE": "taskId must be provided.",
"POST": "Returns a promise resolving to a list of log entries.",
"PARAM": "{string} taskId - The ID of the task.",
"RETURNS": "{Promise<Array>} List of log entries."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "resumeTask",
"type": "Function",
"start_line": 77,
"end_line": 103,
"tags": {
"PURPOSE": "Resume a task that is awaiting input (e.g., passwords).",
"PRE": "taskId and passwords must be provided.",
"POST": "Returns a promise resolving to the updated task object.",
"PARAM": "{Object} passwords - Map of database names to passwords.",
"RETURNS": "{Promise<Object>} Updated task object."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "resolveTask",
"type": "Function",
"start_line": 105,
"end_line": 131,
"tags": {
"PURPOSE": "Resolve a task that is awaiting mapping.",
"PRE": "taskId and resolutionParams must be provided.",
"POST": "Returns a promise resolving to the updated task object.",
"PARAM": "{Object} resolutionParams - Resolution parameters.",
"RETURNS": "{Promise<Object>} Updated task object."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "clearTasks",
"type": "Function",
"start_line": 133,
"end_line": 156,
"tags": {
"PURPOSE": "Clear tasks based on status.",
"PRE": "status is a string or null.",
"POST": "Returns a promise that resolves when tasks are cleared.",
"PARAM": "{string|null} status - Filter by task status (optional)."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "PasswordPrompt",
"type": "Component",
"start_line": 1,
"end_line": 133,
"tags": {
"SEMANTICS": "password, prompt, modal, input, security",
"PURPOSE": "A modal component to prompt the user for database passwords when a migration task is paused.",
"LAYER": "UI",
"RELATION": "EMITS -> resume, cancel"
},
"relations": [],
"children": [
{
"name": "handleSubmit",
"type": "Function",
"start_line": 21,
"end_line": 39,
"tags": {
"PURPOSE": "Validates and dispatches the passwords to resume the task.",
"PRE": "All database passwords must be entered.",
"POST": "'resume' event is dispatched with passwords."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handleCancel",
"type": "Function",
"start_line": 41,
"end_line": 49,
"tags": {
"PURPOSE": "Cancels the password prompt.",
"PRE": "Modal is open.",
"POST": "'cancel' event is dispatched and show is set to false."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "MappingTable",
"type": "Component",
"start_line": 1,
"end_line": 98,
"tags": {
"SEMANTICS": "mapping, table, database, editor",
"PURPOSE": "Displays and allows editing of database mappings.",
"LAYER": "Feature",
"RELATION": "BINDS_TO -> mappings state",
"INVARIANT": "Each source database can be mapped to one target database."
},
"relations": [],
"children": [
{
"name": "updateMapping",
"type": "Function",
"start_line": 25,
"end_line": 34,
"tags": {
"PURPOSE": "Updates a mapping for a specific source database.",
"PRE": "sourceUuid and targetUuid are provided.",
"POST": "'update' event is dispatched."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "getSuggestion",
"type": "Function",
"start_line": 36,
"end_line": 45,
"tags": {
"PURPOSE": "Finds a suggestion for a source database.",
"PRE": "sourceUuid is provided.",
"POST": "Returns matching suggestion object or undefined."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "TaskLogViewer",
"type": "Component",
"start_line": 1,
"end_line": 246,
"tags": {
"SEMANTICS": "task, log, viewer, modal, inline",
"PURPOSE": "Displays detailed logs for a specific task in a modal or inline.",
"LAYER": "UI",
"RELATION": "USES -> frontend/src/services/taskService.js"
},
"relations": [],
"children": [
{
"name": "fetchLogs",
"type": "Function",
"start_line": 28,
"end_line": 51,
"tags": {
"PURPOSE": "Fetches logs for the current task.",
"PRE": "taskId must be set.",
"POST": "logs array is updated with data from taskService."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "scrollToBottom",
"type": "Function",
"start_line": 53,
"end_line": 66,
"tags": {
"PURPOSE": "Scrolls the log container to the bottom.",
"PRE": "logContainer element must be bound.",
"POST": "logContainer scrollTop is set to scrollHeight."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handleScroll",
"type": "Function",
"start_line": 68,
"end_line": 81,
"tags": {
"PURPOSE": "Updates auto-scroll preference based on scroll position.",
"PRE": "logContainer scroll event fired.",
"POST": "autoScroll boolean is updated."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "close",
"type": "Function",
"start_line": 83,
"end_line": 93,
"tags": {
"PURPOSE": "Closes the log viewer modal.",
"PRE": "Modal is open.",
"POST": "Modal is closed and close event is dispatched."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "getLogLevelColor",
"type": "Function",
"start_line": 95,
"end_line": 110,
"tags": {
"PURPOSE": "Returns the CSS color class for a given log level.",
"PRE": "level string is provided.",
"POST": "Returns tailwind color class string."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "onDestroy",
"type": "Function",
"start_line": 129,
"end_line": 138,
"tags": {
"PURPOSE": "Cleans up the polling interval.",
"PRE": "Component is being destroyed.",
"POST": "Polling interval is cleared."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "Footer",
"type": "Component",
"start_line": 1,
"end_line": 10,
"tags": {
"SEMANTICS": "footer, layout, copyright",
"PURPOSE": "Displays the application footer with copyright information.",
"LAYER": "UI"
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "MissingMappingModal",
"type": "Component",
"start_line": 1,
"end_line": 118,
"tags": {
"SEMANTICS": "modal, mapping, prompt, migration",
"PURPOSE": "Prompts the user to provide a database mapping when one is missing during migration.",
"LAYER": "Feature",
"RELATION": "DISPATCHES -> resolve",
"INVARIANT": "Modal blocks migration progress until resolved or cancelled."
},
"relations": [],
"children": [
{
"name": "resolve",
"type": "Function",
"start_line": 26,
"end_line": 39,
"tags": {
"PURPOSE": "Dispatches the resolution event with the selected mapping.",
"PRE": "selectedTargetUuid must be set.",
"POST": "'resolve' event is dispatched and modal is hidden."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "cancel",
"type": "Function",
"start_line": 41,
"end_line": 49,
"tags": {
"PURPOSE": "Cancels the mapping resolution modal.",
"PRE": "Modal is open.",
"POST": "'cancel' event is dispatched and modal is hidden."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "DashboardGrid",
"type": "Component",
"start_line": 1,
"end_line": 213,
"tags": {
"SEMANTICS": "dashboard, grid, selection, pagination",
"PURPOSE": "Displays a grid of dashboards with selection and pagination.",
"LAYER": "Component",
"RELATION": "USED_BY -> frontend/src/routes/migration/+page.svelte",
"INVARIANT": "Selected IDs must be a subset of available dashboards."
},
"relations": [],
"children": [
{
"name": "handleSort",
"type": "Function",
"start_line": 62,
"end_line": 74,
"tags": {
"PURPOSE": "Toggles sort direction or changes sort column.",
"PRE": "column name is provided.",
"POST": "sortColumn and sortDirection state updated."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handleSelectionChange",
"type": "Function",
"start_line": 76,
"end_line": 90,
"tags": {
"PURPOSE": "Handles individual checkbox changes.",
"PRE": "dashboard ID and checked status provided.",
"POST": "selectedIds array updated and selectionChanged event dispatched."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handleSelectAll",
"type": "Function",
"start_line": 92,
"end_line": 110,
"tags": {
"PURPOSE": "Handles select all checkbox.",
"PRE": "checked status provided.",
"POST": "selectedIds array updated for all paginated items and event dispatched."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "goToPage",
"type": "Function",
"start_line": 112,
"end_line": 121,
"tags": {
"PURPOSE": "Changes current page.",
"PRE": "page index is provided.",
"POST": "currentPage state updated if within valid range."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "Navbar",
"type": "Component",
"start_line": 1,
"end_line": 59,
"tags": {
"SEMANTICS": "navbar, navigation, header, layout",
"PURPOSE": "Main navigation bar for the application.",
"LAYER": "UI",
"RELATION": "USES -> $app/stores"
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "TaskHistory",
"type": "Component",
"start_line": 1,
"end_line": 209,
"tags": {
"SEMANTICS": "task, history, list, status, monitoring",
"PURPOSE": "Displays a list of recent tasks with their status and allows selecting them for viewing logs.",
"LAYER": "UI",
"RELATION": "USES -> frontend/src/lib/api.js (inferred)"
},
"relations": [],
"children": [
{
"name": "fetchTasks",
"type": "Function",
"start_line": 18,
"end_line": 48,
"tags": {
"PURPOSE": "Fetches the list of recent tasks from the API.",
"PRE": "None.",
"POST": "tasks array is updated and selectedTask status synchronized."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "clearTasks",
"type": "Function",
"start_line": 50,
"end_line": 69,
"tags": {
"PURPOSE": "Clears tasks from the history, optionally filtered by status.",
"PRE": "User confirms deletion via prompt.",
"POST": "Tasks are deleted from backend and list is re-fetched."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "selectTask",
"type": "Function",
"start_line": 71,
"end_line": 91,
"tags": {
"PURPOSE": "Selects a task and fetches its full details.",
"PRE": "task object is provided.",
"POST": "selectedTask store is updated with full task details."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "getStatusColor",
"type": "Function",
"start_line": 93,
"end_line": 107,
"tags": {
"PURPOSE": "Returns the CSS color class for a given task status.",
"PRE": "status string is provided.",
"POST": "Returns tailwind color class string."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "onMount",
"type": "Function",
"start_line": 109,
"end_line": 117,
"tags": {
"PURPOSE": "Initializes the component by fetching tasks and starting polling.",
"PRE": "Component is mounting.",
"POST": "Tasks are fetched and 5s polling interval is started."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "onDestroy",
"type": "Function",
"start_line": 119,
"end_line": 126,
"tags": {
"PURPOSE": "Cleans up the polling interval when the component is destroyed.",
"PRE": "Component is being destroyed.",
"POST": "Polling interval is cleared."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "Toast",
"type": "Component",
"start_line": 1,
"end_line": 31,
"tags": {
"SEMANTICS": "toast, notification, feedback, ui",
"PURPOSE": "Displays transient notifications (toasts) in the bottom-right corner.",
"LAYER": "UI",
"RELATION": "DEPENDS_ON -> frontend/src/lib/toasts.js",
"PROPS": "None",
"EVENTS": "None"
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "TaskRunner",
"type": "Component",
"start_line": 1,
"end_line": 395,
"tags": {
"SEMANTICS": "task, runner, logs, websocket",
"PURPOSE": "Connects to a WebSocket to display real-time logs for a running task.",
"LAYER": "UI",
"RELATION": "DEPENDS_ON -> frontend/src/lib/stores.js",
"PROPS": "None",
"EVENTS": "None"
},
"relations": [],
"children": [
{
"name": "connect",
"type": "Function",
"start_line": 38,
"end_line": 132,
"tags": {
"PURPOSE": "Establishes WebSocket connection with exponential backoff.",
"PRE": "selectedTask must be set in the store.",
"POST": "WebSocket instance created and listeners attached."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "fetchTargetDatabases",
"type": "Function",
"start_line": 134,
"end_line": 156,
"tags": {
"PURPOSE": "Fetches the list of databases in the target environment.",
"PRE": "task must be selected and have a target environment parameter.",
"POST": "targetDatabases array is populated with database objects."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handleMappingResolve",
"type": "Function",
"start_line": 158,
"end_line": 201,
"tags": {
"PURPOSE": "Handles the resolution of a missing database mapping.",
"PRE": "event.detail contains sourceDbUuid, targetDbUuid, and targetDbName.",
"POST": "Mapping is saved and task is resumed."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handlePasswordResume",
"type": "Function",
"start_line": 203,
"end_line": 225,
"tags": {
"PURPOSE": "Handles the submission of database passwords to resume a task.",
"PRE": "event.detail contains passwords dictionary.",
"POST": "Task resume endpoint is called with passwords."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "startDataTimeout",
"type": "Function",
"start_line": 227,
"end_line": 239,
"tags": {
"PURPOSE": "Starts a timeout to detect when the log stream has stalled.",
"PRE": "None.",
"POST": "dataTimeout is set to check connection status after 5s."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "resetDataTimeout",
"type": "Function",
"start_line": 241,
"end_line": 250,
"tags": {
"PURPOSE": "Resets the data stall timeout.",
"PRE": "dataTimeout must be active.",
"POST": "dataTimeout is cleared and restarted."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "onMount",
"type": "Function",
"start_line": 252,
"end_line": 279,
"tags": {
"PURPOSE": "Initializes the component and subscribes to task selection changes.",
"PRE": "Svelte component is mounting.",
"POST": "Store subscription is created and returned for cleanup."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "onDestroy",
"type": "Function",
"start_line": 281,
"end_line": 295,
"tags": {
"PURPOSE": "Close WebSocket connection when the component is destroyed.",
"PRE": "Component is being destroyed.",
"POST": "WebSocket is closed and timeouts are cleared."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "TaskList",
"type": "Component",
"start_line": 1,
"end_line": 109,
"tags": {
"SEMANTICS": "tasks, list, status, history",
"PURPOSE": "Displays a list of tasks with their status and execution details.",
"LAYER": "Component",
"RELATION": "USES -> api.js"
},
"relations": [],
"children": [
{
"name": "getStatusColor",
"type": "Function",
"start_line": 18,
"end_line": 33,
"tags": {
"PURPOSE": "Returns the CSS color class for a given task status.",
"PRE": "status string is provided.",
"POST": "Returns tailwind color class string."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "formatTime",
"type": "Function",
"start_line": 35,
"end_line": 47,
"tags": {
"PURPOSE": "Formats a date string using date-fns.",
"PRE": "dateStr is a valid date string or null.",
"POST": "Returns human-readable relative time string."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handleTaskClick",
"type": "Function",
"start_line": 49,
"end_line": 56,
"tags": {
"PURPOSE": "Dispatches a select event when a task is clicked.",
"PRE": "taskId is provided.",
"POST": "'select' event is dispatched with task ID."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "DynamicForm",
"type": "Component",
"start_line": 1,
"end_line": 92,
"tags": {
"SEMANTICS": "form, schema, dynamic, json-schema",
"PURPOSE": "Generates a form dynamically based on a JSON schema.",
"LAYER": "UI",
"RELATION": "DEPENDS_ON -> svelte:createEventDispatcher",
"PROPS": "",
"EVENTS": ""
},
"relations": [],
"children": [
{
"name": "handleSubmit",
"type": "Function",
"start_line": 23,
"end_line": 33,
"tags": {
"PURPOSE": "Dispatches the submit event with the form data.",
"PRE": "formData contains user input.",
"POST": "'submit' event is dispatched with formData."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "initializeForm",
"type": "Function",
"start_line": 35,
"end_line": 48,
"tags": {
"PURPOSE": "Initialize form data with default values from the schema.",
"PRE": "schema is provided and contains properties.",
"POST": "formData is initialized with default values or empty strings."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "EnvSelector",
"type": "Component",
"start_line": 1,
"end_line": 60,
"tags": {
"SEMANTICS": "environment, selector, dropdown, migration",
"PURPOSE": "Provides a UI component for selecting source and target environments.",
"LAYER": "Feature",
"RELATION": "BINDS_TO -> environments store",
"INVARIANT": "Source and target environments must be selectable from the list of configured environments."
},
"relations": [],
"children": [
{
"name": "handleSelect",
"type": "Function",
"start_line": 24,
"end_line": 36,
"tags": {
"PURPOSE": "Dispatches the selection change event.",
"PRE": "event.target must be an HTMLSelectElement.",
"POST": "selectedId is updated and 'change' event is dispatched.",
"PARAM": "{Event} event - The change event from the select element."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "ConnectionForm",
"type": "Component",
"start_line": 1,
"end_line": 108,
"tags": {
"SEMANTICS": "connection, form, settings",
"PURPOSE": "UI component for creating a new database connection configuration.",
"LAYER": "UI",
"RELATION": "USES -> frontend/src/services/connectionService.js"
},
"relations": [],
"children": [
{
"name": "handleSubmit",
"type": "Function",
"start_line": 26,
"end_line": 50,
"tags": {
"PURPOSE": "Submits the connection form to the backend.",
"PRE": "All required fields (name, host, database, username, password) must be filled.",
"POST": "A new connection is created via the connection service and a success event is dispatched."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "resetForm",
"type": "Function",
"start_line": 52,
"end_line": 65,
"tags": {
"PURPOSE": "Resets the connection form fields to their default values.",
"PRE": "None.",
"POST": "All form input variables are reset."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "ConnectionList",
"type": "Component",
"start_line": 1,
"end_line": 88,
"tags": {
"SEMANTICS": "connection, list, settings",
"PURPOSE": "UI component for listing and deleting saved database connection configurations.",
"LAYER": "UI",
"RELATION": "USES -> frontend/src/services/connectionService.js"
},
"relations": [],
"children": [
{
"name": "fetchConnections",
"type": "Function",
"start_line": 20,
"end_line": 34,
"tags": {
"PURPOSE": "Fetches the list of connections from the backend.",
"PRE": "None.",
"POST": "connections array is populated."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handleDelete",
"type": "Function",
"start_line": 36,
"end_line": 51,
"tags": {
"PURPOSE": "Deletes a connection configuration.",
"PRE": "id is provided and user confirms deletion.",
"POST": "Connection is deleted from backend and list is reloaded."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "MapperTool",
"type": "Component",
"start_line": 1,
"end_line": 165,
"tags": {
"SEMANTICS": "mapper, tool, dataset, postgresql, excel",
"PURPOSE": "UI component for mapping dataset column verbose names using the MapperPlugin.",
"LAYER": "UI",
"RELATION": "USES -> frontend/src/services/connectionService.js"
},
"relations": [],
"children": [
{
"name": "fetchData",
"type": "Function",
"start_line": 29,
"end_line": 42,
"tags": {
"PURPOSE": "Fetches environments and saved connections.",
"PRE": "None.",
"POST": "envs and connections arrays are populated."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handleRunMapper",
"type": "Function",
"start_line": 44,
"end_line": 85,
"tags": {
"PURPOSE": "Triggers the MapperPlugin task.",
"PRE": "selectedEnv and datasetId are set; source-specific fields are valid.",
"POST": "Mapper task is started and selectedTask is updated."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "DebugTool",
"type": "Component",
"start_line": 1,
"end_line": 190,
"tags": {
"SEMANTICS": "debug, tool, api, structure",
"PURPOSE": "UI component for system diagnostics and debugging API responses.",
"LAYER": "UI",
"RELATION": "USES -> frontend/src/services/toolsService.js"
},
"relations": [],
"children": [
{
"name": "fetchEnvironments",
"type": "Function",
"start_line": 26,
"end_line": 41,
"tags": {
"PURPOSE": "Fetches available environments.",
"PRE": "API is available.",
"POST": "envs variable is populated.",
"RETURNS": "{Promise<void>}"
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handleRunDebug",
"type": "Function",
"start_line": 43,
"end_line": 84,
"tags": {
"PURPOSE": "Triggers the debug task.",
"PRE": "Required fields are selected.",
"POST": "Task is started and polling begins.",
"RETURNS": "{Promise<void>}"
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "startPolling",
"type": "Function",
"start_line": 86,
"end_line": 116,
"tags": {
"PURPOSE": "Polls for task completion.",
"PRE": "Task ID is valid.",
"POST": "Polls until success/failure.",
"PARAM": "{string} taskId - ID of the task.",
"RETURNS": "{void}"
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "SearchTool",
"type": "Component",
"start_line": 1,
"end_line": 186,
"tags": {
"SEMANTICS": "search, tool, dataset, regex",
"PURPOSE": "UI component for searching datasets using the SearchPlugin.",
"LAYER": "UI",
"RELATION": "USES -> frontend/src/services/toolsService.js"
},
"relations": [],
"children": [
{
"name": "fetchEnvironments",
"type": "Function",
"start_line": 23,
"end_line": 35,
"tags": {
"PURPOSE": "Fetches the list of available environments.",
"PRE": "None.",
"POST": "envs array is populated."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "handleSearch",
"type": "Function",
"start_line": 37,
"end_line": 64,
"tags": {
"PURPOSE": "Triggers the SearchPlugin task.",
"PRE": "selectedEnv and searchQuery must be set.",
"POST": "Task is started and polling begins."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "startPolling",
"type": "Function",
"start_line": 66,
"end_line": 95,
"tags": {
"PURPOSE": "Polls for task completion and results.",
"PRE": "taskId is provided.",
"POST": "pollInterval is set and results are updated on success."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "AppModule",
"type": "Module",
"start_line": 1,
"end_line": 188,
"tags": {
"SEMANTICS": "app, main, entrypoint, fastapi",
"PURPOSE": "The main entry point for the FastAPI application. It initializes the app, configures CORS, sets up dependencies, includes API routers, and defines the WebSocket endpoint for log streaming.",
"LAYER": "UI (API)",
"RELATION": "Depends on the dependency module and API route modules."
},
"relations": [],
"children": [
{
"name": "App",
"type": "Global",
"start_line": 24,
"end_line": 32,
"tags": {
"SEMANTICS": "app, fastapi, instance",
"PURPOSE": "The global FastAPI application instance."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "startup_event",
"type": "Function",
"start_line": 34,
"end_line": 44,
"tags": {
"PURPOSE": "Handles application startup tasks, such as starting the scheduler.",
"PRE": "None.",
"POST": "Scheduler is started."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "shutdown_event",
"type": "Function",
"start_line": 46,
"end_line": 56,
"tags": {
"PURPOSE": "Handles application shutdown tasks, such as stopping the scheduler.",
"PRE": "None.",
"POST": "Scheduler is stopped."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "log_requests",
"type": "Function",
"start_line": 68,
"end_line": 81,
"tags": {
"PURPOSE": "Middleware to log incoming HTTP requests and their response status.",
"PRE": "request is a FastAPI Request object.",
"POST": "Logs request and response details.",
"PARAM": "call_next (Callable) - The next middleware or route handler."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "websocket_endpoint",
"type": "Function",
"start_line": 92,
"end_line": 149,
"tags": {
"PURPOSE": "Provides a WebSocket endpoint for real-time log streaming of a task.",
"PRE": "task_id must be a valid task ID.",
"POST": "WebSocket connection is managed and logs are streamed until disconnect."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "StaticFiles",
"type": "Mount",
"start_line": 151,
"end_line": 187,
"tags": {
"SEMANTICS": "static, frontend, spa",
"PURPOSE": "Mounts the frontend build directory to serve static assets."
},
"relations": [],
"children": [
{
"name": "serve_spa",
"type": "Function",
"start_line": 159,
"end_line": 176,
"tags": {
"PURPOSE": "Serves frontend static files or index.html for SPA routing.",
"PRE": "file_path is requested by the client.",
"POST": "Returns the requested file or index.html as a fallback."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "read_root",
"type": "Function",
"start_line": 178,
"end_line": 186,
"tags": {
"PURPOSE": "A simple root endpoint to confirm that the API is running when frontend is missing.",
"PRE": "None.",
"POST": "Returns a JSON message indicating API status."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "Dependencies",
"type": "Module",
"start_line": 1,
"end_line": 80,
"tags": {
"SEMANTICS": "dependency, injection, singleton, factory",
"PURPOSE": "Manages the creation and provision of shared application dependencies, such as the PluginLoader and TaskManager, to avoid circular imports.",
"LAYER": "Core",
"RELATION": "Used by the main app and API routers to get access to shared instances."
},
"relations": [],
"children": [
{
"name": "get_config_manager",
"type": "Function",
"start_line": 24,
"end_line": 33,
"tags": {
"PURPOSE": "Dependency injector for the ConfigManager.",
"PRE": "Global config_manager must be initialized.",
"POST": "Returns shared ConfigManager instance.",
"RETURN": "ConfigManager - The shared config manager instance."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_plugin_loader",
"type": "Function",
"start_line": 47,
"end_line": 56,
"tags": {
"PURPOSE": "Dependency injector for the PluginLoader.",
"PRE": "Global plugin_loader must be initialized.",
"POST": "Returns shared PluginLoader instance.",
"RETURN": "PluginLoader - The shared plugin loader instance."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_task_manager",
"type": "Function",
"start_line": 58,
"end_line": 67,
"tags": {
"PURPOSE": "Dependency injector for the TaskManager.",
"PRE": "Global task_manager must be initialized.",
"POST": "Returns shared TaskManager instance.",
"RETURN": "TaskManager - The shared task manager instance."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_scheduler_service",
"type": "Function",
"start_line": 69,
"end_line": 78,
"tags": {
"PURPOSE": "Dependency injector for the SchedulerService.",
"PRE": "Global scheduler_service must be initialized.",
"POST": "Returns shared SchedulerService instance.",
"RETURN": "SchedulerService - The shared scheduler service instance."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "backend.src.core.superset_client",
"type": "Module",
"start_line": 1,
"end_line": 400,
"tags": {
"SEMANTICS": "superset, api, client, rest, http, dashboard, dataset, import, export",
"PURPOSE": "\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u044b\u0441\u043e\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u043a\u043b\u0438\u0435\u043d\u0442 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 Superset REST API, \u0438\u043d\u043a\u0430\u043f\u0441\u0443\u043b\u0438\u0440\u0443\u044f \u043b\u043e\u0433\u0438\u043a\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043e\u0448\u0438\u0431\u043e\u043a \u0438 \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u044e.",
"LAYER": "Core",
"INVARIANT": "All network operations must use the internal APIClient instance.",
"PUBLIC_API": "SupersetClient"
},
"relations": [
{
"type": "USES",
"target": "backend.src.core.utils.network.APIClient"
},
{
"type": "USES",
"target": "backend.src.core.config_models.Environment"
}
],
"children": [
{
"name": "SupersetClient",
"type": "Class",
"start_line": 24,
"end_line": 398,
"tags": {
"PURPOSE": "\u041a\u043b\u0430\u0441\u0441-\u043e\u0431\u0451\u0440\u0442\u043a\u0430 \u043d\u0430\u0434 Superset REST API, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0438\u0439 \u043c\u0435\u0442\u043e\u0434\u044b \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430\u043c\u0438 \u0438 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430\u043c\u0438."
},
"relations": [],
"children": [
{
"name": "__init__",
"type": "Function",
"start_line": 27,
"end_line": 53,
"tags": {
"PURPOSE": "\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043a\u043b\u0438\u0435\u043d\u0442, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e \u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u043a\u043b\u0438\u0435\u043d\u0442.",
"PRE": "`env` \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c Environment.",
"POST": "\u0410\u0442\u0440\u0438\u0431\u0443\u0442\u044b `env` \u0438 `network` \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0438 \u0433\u043e\u0442\u043e\u0432\u044b \u043a \u0440\u0430\u0431\u043e\u0442\u0435.",
"PARAM": "env (Environment) - \u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "authenticate",
"type": "Function",
"start_line": 55,
"end_line": 63,
"tags": {
"PURPOSE": "Authenticates the client using the configured credentials.",
"PRE": "self.network must be initialized with valid auth configuration.",
"POST": "Client is authenticated and tokens are stored.",
"RETURN": "Dict[str, str] - Authentication tokens."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "headers",
"type": "Function",
"start_line": 66,
"end_line": 71,
"tags": {
"PURPOSE": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 HTTP-\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0435 \u0441\u0435\u0442\u0435\u0432\u044b\u043c \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u043c."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST"
]
}
},
{
"name": "get_dashboards",
"type": "Function",
"start_line": 75,
"end_line": 93,
"tags": {
"PURPOSE": "\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044f \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u044e.",
"PARAM": "query (Optional[Dict]) - \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0434\u043b\u044f API.",
"RETURN": "Tuple[int, List[Dict]] - \u041a\u043e\u0440\u0442\u0435\u0436 (\u043e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e, \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u043e\u0432)."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST"
]
}
},
{
"name": "get_dashboards_summary",
"type": "Function",
"start_line": 95,
"end_line": 115,
"tags": {
"PURPOSE": "Fetches dashboard metadata optimized for the grid.",
"RETURN": "List[Dict]"
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST"
]
}
},
{
"name": "export_dashboard",
"type": "Function",
"start_line": 117,
"end_line": 136,
"tags": {
"PURPOSE": "\u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u0432 \u0432\u0438\u0434\u0435 ZIP-\u0430\u0440\u0445\u0438\u0432\u0430.",
"PARAM": "dashboard_id (int) - ID \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0430.",
"RETURN": "Tuple[bytes, str] - \u0411\u0438\u043d\u0430\u0440\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 ZIP-\u0430\u0440\u0445\u0438\u0432\u0430 \u0438 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST"
]
}
},
{
"name": "import_dashboard",
"type": "Function",
"start_line": 138,
"end_line": 163,
"tags": {
"PURPOSE": "\u0418\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u0438\u0437 ZIP-\u0444\u0430\u0439\u043b\u0430.",
"PARAM": "dash_slug (Optional[str]) - Slug \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430 \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 ID.",
"RETURN": "Dict - \u041e\u0442\u0432\u0435\u0442 API \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0441\u043f\u0435\u0445\u0430."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST"
]
}
},
{
"name": "delete_dashboard",
"type": "Function",
"start_line": 165,
"end_line": 177,
"tags": {
"PURPOSE": "\u0423\u0434\u0430\u043b\u044f\u0435\u0442 \u0434\u0430\u0448\u0431\u043e\u0440\u0434 \u043f\u043e \u0435\u0433\u043e ID \u0438\u043b\u0438 slug.",
"PARAM": "dashboard_id (Union[int, str]) - ID \u0438\u043b\u0438 slug \u0434\u0430\u0448\u0431\u043e\u0440\u0434\u0430."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST"
]
}
},
{
"name": "get_datasets",
"type": "Function",
"start_line": 183,
"end_line": 199,
"tags": {
"PURPOSE": "\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u043e\u0432, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044f \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u044e.",
"PARAM": "query (Optional[Dict]) - \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u0430.",
"RETURN": "Tuple[int, List[Dict]] - \u041a\u043e\u0440\u0442\u0435\u0436 (\u043e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e, \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u043e\u0432)."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST"
]
}
},
{
"name": "get_dataset",
"type": "Function",
"start_line": 201,
"end_line": 212,
"tags": {
"PURPOSE": "\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435 \u043f\u043e \u0435\u0433\u043e ID.",
"PARAM": "dataset_id (int) - ID \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430.",
"RETURN": "Dict - \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0435."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST"
]
}
},
{
"name": "update_dataset",
"type": "Function",
"start_line": 214,
"end_line": 231,
"tags": {
"PURPOSE": "\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 \u043f\u043e \u0435\u0433\u043e ID.",
"PARAM": "data (Dict) - \u0414\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f.",
"RETURN": "Dict - \u041e\u0442\u0432\u0435\u0442 API."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST"
]
}
},
{
"name": "get_databases",
"type": "Function",
"start_line": 237,
"end_line": 254,
"tags": {
"PURPOSE": "\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445.",
"PARAM": "query (Optional[Dict]) - \u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0437\u0430\u043f\u0440\u043e\u0441\u0430.",
"RETURN": "Tuple[int, List[Dict]] - \u041a\u043e\u0440\u0442\u0435\u0436 (\u043e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e, \u0441\u043f\u0438\u0441\u043e\u043a \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445)."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST"
]
}
},
{
"name": "get_database",
"type": "Function",
"start_line": 256,
"end_line": 267,
"tags": {
"PURPOSE": "\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u043e \u0435\u0451 ID.",
"PARAM": "database_id (int) - ID \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445.",
"RETURN": "Dict - \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST"
]
}
},
{
"name": "get_databases_summary",
"type": "Function",
"start_line": 269,
"end_line": 284,
"tags": {
"PURPOSE": "Fetch a summary of databases including uuid, name, and engine.",
"RETURN": "List[Dict] - Summary of databases."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST"
]
}
},
{
"name": "get_database_by_uuid",
"type": "Function",
"start_line": 286,
"end_line": 297,
"tags": {
"PURPOSE": "Find a database by its UUID.",
"PARAM": "db_uuid (str) - The UUID of the database.",
"RETURN": "Optional[Dict] - Database info if found, else None."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST"
]
}
},
{
"name": "_resolve_target_id_for_delete",
"type": "Function",
"start_line": 303,
"end_line": 319,
"tags": {},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Mandatory Tag: @PURPOSE",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PURPOSE",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PURPOSE",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST"
]
}
},
{
"name": "_do_import",
"type": "Function",
"start_line": 321,
"end_line": 336,
"tags": {},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Mandatory Tag: @PURPOSE",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PURPOSE",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PURPOSE",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST"
]
}
},
{
"name": "_validate_export_response",
"type": "Function",
"start_line": 338,
"end_line": 346,
"tags": {},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Mandatory Tag: @PURPOSE",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PURPOSE",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PURPOSE",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST"
]
}
},
{
"name": "_resolve_export_filename",
"type": "Function",
"start_line": 348,
"end_line": 358,
"tags": {},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Mandatory Tag: @PURPOSE",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PURPOSE",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PURPOSE",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST"
]
}
},
{
"name": "_validate_query_params",
"type": "Function",
"start_line": 360,
"end_line": 365,
"tags": {},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Mandatory Tag: @PURPOSE",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PURPOSE",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PURPOSE",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST"
]
}
},
{
"name": "_fetch_total_object_count",
"type": "Function",
"start_line": 367,
"end_line": 375,
"tags": {},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Mandatory Tag: @PURPOSE",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PURPOSE",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PURPOSE",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST"
]
}
},
{
"name": "_fetch_all_pages",
"type": "Function",
"start_line": 377,
"end_line": 381,
"tags": {},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Mandatory Tag: @PURPOSE",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PURPOSE",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PURPOSE",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST"
]
}
},
{
"name": "_validate_import_file",
"type": "Function",
"start_line": 383,
"end_line": 394,
"tags": {},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Mandatory Tag: @PURPOSE",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PURPOSE",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PURPOSE",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST"
]
}
}
],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "ConfigManagerModule",
"type": "Module",
"start_line": 1,
"end_line": 280,
"tags": {
"SEMANTICS": "config, manager, persistence, json",
"PURPOSE": "Manages application configuration, including loading/saving to JSON and CRUD for environments.",
"LAYER": "Core",
"INVARIANT": "Configuration must always be valid according to AppConfig model.",
"PUBLIC_API": "ConfigManager"
},
"relations": [
{
"type": "DEPENDS_ON",
"target": "ConfigModels"
},
{
"type": "CALLS",
"target": "logger"
},
{
"type": "WRITES_TO",
"target": "config.json"
}
],
"children": [
{
"name": "ConfigManager",
"type": "Class",
"start_line": 22,
"end_line": 278,
"tags": {
"PURPOSE": "A class to handle application configuration persistence and management."
},
"relations": [
{
"type": "WRITES_TO",
"target": "config.json"
}
],
"children": [
{
"name": "__init__",
"type": "Function",
"start_line": 27,
"end_line": 50,
"tags": {
"PURPOSE": "Initializes the ConfigManager.",
"PRE": "isinstance(config_path, str) and len(config_path) > 0",
"POST": "self.config is an instance of AppConfig",
"PARAM": "config_path (str) - Path to the configuration file."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_load_config",
"type": "Function",
"start_line": 52,
"end_line": 84,
"tags": {
"PURPOSE": "Loads the configuration from disk or creates a default one.",
"PRE": "self.config_path is set.",
"POST": "isinstance(return, AppConfig)",
"RETURN": "AppConfig - The loaded or default configuration."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_save_config_to_disk",
"type": "Function",
"start_line": 86,
"end_line": 105,
"tags": {
"PURPOSE": "Saves the provided configuration object to disk.",
"PRE": "isinstance(config, AppConfig)",
"POST": "Configuration saved to disk.",
"PARAM": "config (AppConfig) - The configuration to save."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "save",
"type": "Function",
"start_line": 107,
"end_line": 114,
"tags": {
"PURPOSE": "Saves the current configuration state to disk.",
"PRE": "self.config is set.",
"POST": "self._save_config_to_disk called."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_config",
"type": "Function",
"start_line": 116,
"end_line": 124,
"tags": {
"PURPOSE": "Returns the current configuration.",
"PRE": "self.config is set.",
"POST": "Returns self.config.",
"RETURN": "AppConfig - The current configuration."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "update_global_settings",
"type": "Function",
"start_line": 126,
"end_line": 146,
"tags": {
"PURPOSE": "Updates the global settings and persists the change.",
"PRE": "isinstance(settings, GlobalSettings)",
"POST": "self.config.settings updated and saved.",
"PARAM": "settings (GlobalSettings) - The new global settings."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "validate_path",
"type": "Function",
"start_line": 148,
"end_line": 167,
"tags": {
"PURPOSE": "Validates if a path exists and is writable.",
"PRE": "path is a string.",
"POST": "Returns (bool, str) status.",
"PARAM": "path (str) - The path to validate.",
"RETURN": "tuple (bool, str) - (is_valid, message)"
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_environments",
"type": "Function",
"start_line": 169,
"end_line": 177,
"tags": {
"PURPOSE": "Returns the list of configured environments.",
"PRE": "self.config is set.",
"POST": "Returns list of environments.",
"RETURN": "List[Environment] - List of environments."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "has_environments",
"type": "Function",
"start_line": 179,
"end_line": 187,
"tags": {
"PURPOSE": "Checks if at least one environment is configured.",
"PRE": "self.config is set.",
"POST": "Returns boolean indicating if environments exist.",
"RETURN": "bool - True if at least one environment exists."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_environment",
"type": "Function",
"start_line": 189,
"end_line": 201,
"tags": {
"PURPOSE": "Returns a single environment by ID.",
"PRE": "self.config is set and isinstance(env_id, str) and len(env_id) > 0.",
"POST": "Returns Environment object if found, None otherwise.",
"PARAM": "env_id (str) - The ID of the environment to retrieve.",
"RETURN": "Optional[Environment] - The environment with the given ID, or None."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "add_environment",
"type": "Function",
"start_line": 203,
"end_line": 222,
"tags": {
"PURPOSE": "Adds a new environment to the configuration.",
"PRE": "isinstance(env, Environment)",
"POST": "Environment added or updated in self.config.environments.",
"PARAM": "env (Environment) - The environment to add."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "update_environment",
"type": "Function",
"start_line": 224,
"end_line": 253,
"tags": {
"PURPOSE": "Updates an existing environment.",
"PRE": "isinstance(env_id, str) and len(env_id) > 0 and isinstance(updated_env, Environment)",
"POST": "Returns True if environment was found and updated.",
"PARAM": "updated_env (Environment) - The updated environment data.",
"RETURN": "bool - True if updated, False otherwise."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "delete_environment",
"type": "Function",
"start_line": 255,
"end_line": 276,
"tags": {
"PURPOSE": "Deletes an environment by ID.",
"PRE": "isinstance(env_id, str) and len(env_id) > 0",
"POST": "Environment removed from self.config.environments if it existed.",
"PARAM": "env_id (str) - The ID of the environment to delete."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "SchedulerModule",
"type": "Module",
"start_line": 1,
"end_line": 119,
"tags": {
"SEMANTICS": "scheduler, apscheduler, cron, backup",
"PURPOSE": "Manages scheduled tasks using APScheduler.",
"LAYER": "Core",
"RELATION": "Uses TaskManager to run scheduled backups."
},
"relations": [],
"children": [
{
"name": "SchedulerService",
"type": "Class",
"start_line": 16,
"end_line": 118,
"tags": {
"SEMANTICS": "scheduler, service, apscheduler",
"PURPOSE": "Provides a service to manage scheduled backup tasks."
},
"relations": [],
"children": [
{
"name": "__init__",
"type": "Function",
"start_line": 20,
"end_line": 30,
"tags": {
"PURPOSE": "Initializes the scheduler service with task and config managers.",
"PRE": "task_manager and config_manager must be provided.",
"POST": "Scheduler instance is created but not started."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "start",
"type": "Function",
"start_line": 32,
"end_line": 42,
"tags": {
"PURPOSE": "Starts the background scheduler and loads initial schedules.",
"PRE": "Scheduler should be initialized.",
"POST": "Scheduler is running and schedules are loaded."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "stop",
"type": "Function",
"start_line": 44,
"end_line": 53,
"tags": {
"PURPOSE": "Stops the background scheduler.",
"PRE": "Scheduler should be running.",
"POST": "Scheduler is shut down."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "load_schedules",
"type": "Function",
"start_line": 55,
"end_line": 68,
"tags": {
"PURPOSE": "Loads backup schedules from configuration and registers them.",
"PRE": "config_manager must have valid configuration.",
"POST": "All enabled backup jobs are added to the scheduler."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "add_backup_job",
"type": "Function",
"start_line": 70,
"end_line": 90,
"tags": {
"PURPOSE": "Adds a scheduled backup job for an environment.",
"PRE": "env_id and cron_expression must be valid strings.",
"POST": "A new job is added to the scheduler or replaced if it already exists.",
"PARAM": "cron_expression (str) - The cron expression for the schedule."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_trigger_backup",
"type": "Function",
"start_line": 92,
"end_line": 116,
"tags": {
"PURPOSE": "Triggered by the scheduler to start a backup task.",
"PRE": "env_id must be a valid environment ID.",
"POST": "A new backup task is created in the task manager if not already running.",
"PARAM": "env_id (str) - The ID of the environment."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "ConfigModels",
"type": "Module",
"start_line": 1,
"end_line": 62,
"tags": {
"SEMANTICS": "config, models, pydantic",
"PURPOSE": "Defines the data models for application configuration using Pydantic.",
"LAYER": "Core"
},
"relations": [
{
"type": "READS_FROM",
"target": "config.json"
},
{
"type": "USED_BY",
"target": "ConfigManager"
}
],
"children": [
{
"name": "Schedule",
"type": "DataClass",
"start_line": 11,
"end_line": 16,
"tags": {
"PURPOSE": "Represents a backup schedule configuration."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "Environment",
"type": "DataClass",
"start_line": 18,
"end_line": 30,
"tags": {
"PURPOSE": "Represents a Superset environment configuration."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "LoggingConfig",
"type": "DataClass",
"start_line": 32,
"end_line": 40,
"tags": {
"PURPOSE": "Defines the configuration for the application's logging system."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "GlobalSettings",
"type": "DataClass",
"start_line": 42,
"end_line": 53,
"tags": {
"PURPOSE": "Represents global application settings."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "AppConfig",
"type": "DataClass",
"start_line": 55,
"end_line": 60,
"tags": {
"PURPOSE": "The root configuration model containing all application settings."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "backend.src.core.database",
"type": "Module",
"start_line": 1,
"end_line": 86,
"tags": {
"SEMANTICS": "database, sqlite, sqlalchemy, session, persistence",
"PURPOSE": "Configures the SQLite database connection and session management.",
"LAYER": "Core",
"INVARIANT": "A single engine instance is used for the entire application."
},
"relations": [
{
"type": "DEPENDS_ON",
"target": "sqlalchemy"
},
{
"type": "USES",
"target": "backend.src.models.mapping"
}
],
"children": [
{
"name": "DATABASE_URL",
"type": "Constant",
"start_line": 22,
"end_line": 24,
"tags": {},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "TASKS_DATABASE_URL",
"type": "Constant",
"start_line": 26,
"end_line": 28,
"tags": {},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "engine",
"type": "Variable",
"start_line": 30,
"end_line": 32,
"tags": {},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "tasks_engine",
"type": "Variable",
"start_line": 34,
"end_line": 36,
"tags": {},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "SessionLocal",
"type": "Class",
"start_line": 38,
"end_line": 41,
"tags": {
"PURPOSE": "A session factory for the main mappings database."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "TasksSessionLocal",
"type": "Class",
"start_line": 43,
"end_line": 46,
"tags": {
"PURPOSE": "A session factory for the tasks execution database."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "init_db",
"type": "Function",
"start_line": 48,
"end_line": 56,
"tags": {
"PURPOSE": "Initializes the database by creating all tables.",
"PRE": "engine and tasks_engine are initialized.",
"POST": "Database tables created."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_db",
"type": "Function",
"start_line": 58,
"end_line": 70,
"tags": {
"PURPOSE": "Dependency for getting a database session.",
"PRE": "SessionLocal is initialized.",
"POST": "Session is closed after use.",
"RETURN": "Generator[Session, None, None]"
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_tasks_db",
"type": "Function",
"start_line": 72,
"end_line": 84,
"tags": {
"PURPOSE": "Dependency for getting a tasks database session.",
"PRE": "TasksSessionLocal is initialized.",
"POST": "Session is closed after use.",
"RETURN": "Generator[Session, None, None]"
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "LoggerModule",
"type": "Module",
"start_line": 1,
"end_line": 228,
"tags": {
"SEMANTICS": "logging, websocket, streaming, handler",
"PURPOSE": "Configures the application's logging system, including a custom handler for buffering logs and streaming them over WebSockets.",
"LAYER": "Core",
"RELATION": "Used by the main application and other modules to log events. The WebSocketLogHandler is used by the WebSocket endpoint in app.py."
},
"relations": [],
"children": [
{
"name": "BeliefFormatter",
"type": "Class",
"start_line": 22,
"end_line": 37,
"tags": {
"PURPOSE": "Custom logging formatter that adds belief state prefixes to log messages."
},
"relations": [],
"children": [
{
"name": "format",
"type": "Function",
"start_line": 25,
"end_line": 36,
"tags": {
"PURPOSE": "Formats the log record, adding belief state context if available.",
"PRE": "record is a logging.LogRecord.",
"POST": "Returns formatted string.",
"PARAM": "record (logging.LogRecord) - The log record to format.",
"RETURN": "str - The formatted log message."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager."
]
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "LogEntry",
"type": "Class",
"start_line": 40,
"end_line": 49,
"tags": {
"SEMANTICS": "log, entry, record, pydantic",
"PURPOSE": "A Pydantic model representing a single, structured log entry. This is a re-definition for consistency, as it's also defined in task_manager.py."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "belief_scope",
"type": "Function",
"start_line": 51,
"end_line": 84,
"tags": {
"PURPOSE": "Context manager for structured Belief State logging.",
"PARAM": "message (str) - Optional entry message.",
"PRE": "anchor_id must be provided.",
"POST": "Thread-local belief state is updated and entry/exit logs are generated."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager."
]
}
},
{
"name": "configure_logger",
"type": "Function",
"start_line": 86,
"end_line": 128,
"tags": {
"PURPOSE": "Configures the logger with the provided logging settings.",
"PRE": "config is a valid LoggingConfig instance.",
"POST": "Logger level, handlers, and belief state flag are updated.",
"PARAM": "config (LoggingConfig) - The logging configuration."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager."
]
}
},
{
"name": "WebSocketLogHandler",
"type": "Class",
"start_line": 130,
"end_line": 189,
"tags": {
"SEMANTICS": "logging, handler, websocket, buffer",
"PURPOSE": "A custom logging handler that captures log records into a buffer. It is designed to be extended for real-time log streaming over WebSockets."
},
"relations": [],
"children": [
{
"name": "__init__",
"type": "Function",
"start_line": 138,
"end_line": 148,
"tags": {
"PURPOSE": "Initializes the handler with a fixed-capacity buffer.",
"PRE": "capacity is an integer.",
"POST": "Instance initialized with empty deque.",
"PARAM": "capacity (int) - Maximum number of logs to keep in memory."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager."
]
}
},
{
"name": "emit",
"type": "Function",
"start_line": 150,
"end_line": 175,
"tags": {
"PURPOSE": "Captures a log record, formats it, and stores it in the buffer.",
"PRE": "record is a logging.LogRecord.",
"POST": "Log is added to the log_buffer.",
"PARAM": "record (logging.LogRecord) - The log record to emit."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager."
]
}
},
{
"name": "get_recent_logs",
"type": "Function",
"start_line": 177,
"end_line": 187,
"tags": {
"PURPOSE": "Returns a list of recent log entries from the buffer.",
"PRE": "None.",
"POST": "Returns list of LogEntry objects.",
"RETURN": "List[LogEntry] - List of buffered log entries."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager."
]
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "Logger",
"type": "Global",
"start_line": 191,
"end_line": 227,
"tags": {
"SEMANTICS": "logger, global, instance",
"PURPOSE": "The global logger instance for the application, configured with both a console handler and the custom WebSocket handler."
},
"relations": [],
"children": [
{
"name": "believed",
"type": "Function",
"start_line": 196,
"end_line": 206,
"tags": {
"PURPOSE": "A decorator that wraps a function in a belief scope.",
"PARAM": "anchor_id (str) - The identifier for the semantic block."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST",
"Missing Mandatory Tag: @PRE",
"Missing Mandatory Tag: @POST"
]
}
}
],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "PluginLoader",
"type": "Class",
"start_line": 9,
"end_line": 191,
"tags": {
"SEMANTICS": "plugin, loader, dynamic, import",
"PURPOSE": "Scans a specified directory for Python modules, dynamically loads them, and registers any classes that are valid implementations of the PluginBase interface.",
"LAYER": "Core",
"RELATION": "Depends on PluginBase. It is used by the main application to discover and manage available plugins."
},
"relations": [],
"children": [
{
"name": "__init__",
"type": "Function",
"start_line": 20,
"end_line": 31,
"tags": {
"PURPOSE": "Initializes the PluginLoader with a directory to scan.",
"PRE": "plugin_dir is a valid directory path.",
"POST": "Plugins are loaded and registered.",
"PARAM": "plugin_dir (str) - The directory containing plugin modules."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_load_plugins",
"type": "Function",
"start_line": 33,
"end_line": 57,
"tags": {
"PURPOSE": "Scans the plugin directory and loads all valid plugins.",
"PRE": "plugin_dir exists or can be created.",
"POST": "_load_module is called for each .py file."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_load_module",
"type": "Function",
"start_line": 59,
"end_line": 107,
"tags": {
"PURPOSE": "Loads a single Python module and discovers PluginBase implementations.",
"PRE": "module_name and file_path are valid.",
"POST": "Plugin classes are instantiated and registered.",
"PARAM": "file_path (str) - The path to the module file."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_register_plugin",
"type": "Function",
"start_line": 109,
"end_line": 147,
"tags": {
"PURPOSE": "Registers a PluginBase instance and its configuration.",
"PRE": "plugin_instance is a valid implementation of PluginBase.",
"POST": "Plugin is added to _plugins and _plugin_configs.",
"PARAM": "plugin_instance (PluginBase) - The plugin instance to register."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_plugin",
"type": "Function",
"start_line": 150,
"end_line": 162,
"tags": {
"PURPOSE": "Retrieves a loaded plugin instance by its ID.",
"PRE": "plugin_id is a string.",
"POST": "Returns plugin instance or None.",
"PARAM": "plugin_id (str) - The unique identifier of the plugin.",
"RETURN": "Optional[PluginBase] - The plugin instance if found, otherwise None."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_all_plugin_configs",
"type": "Function",
"start_line": 164,
"end_line": 175,
"tags": {
"PURPOSE": "Returns a list of all registered plugin configurations.",
"PRE": "None.",
"POST": "Returns list of all PluginConfig objects.",
"RETURN": "List[PluginConfig] - A list of plugin configurations."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "has_plugin",
"type": "Function",
"start_line": 177,
"end_line": 189,
"tags": {
"PURPOSE": "Checks if a plugin with the given ID is registered.",
"PRE": "plugin_id is a string.",
"POST": "Returns True if plugin exists.",
"PARAM": "plugin_id (str) - The unique identifier of the plugin.",
"RETURN": "bool - True if the plugin is registered, False otherwise."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "backend.src.core.migration_engine",
"type": "Module",
"start_line": 1,
"end_line": 104,
"tags": {
"SEMANTICS": "migration, engine, zip, yaml, transformation",
"PURPOSE": "Handles the interception and transformation of Superset asset ZIP archives.",
"LAYER": "Core",
"INVARIANT": "ZIP structure must be preserved after transformation."
},
"relations": [
{
"type": "DEPENDS_ON",
"target": "PyYAML"
}
],
"children": [
{
"name": "MigrationEngine",
"type": "Class",
"start_line": 22,
"end_line": 102,
"tags": {
"PURPOSE": "Engine for transforming Superset export ZIPs."
},
"relations": [],
"children": [
{
"name": "transform_zip",
"type": "Function",
"start_line": 26,
"end_line": 78,
"tags": {
"PURPOSE": "Extracts ZIP, replaces database UUIDs in YAMLs, and re-packages.",
"PARAM": "strip_databases (bool) - Whether to remove the databases directory from the archive.",
"PRE": "zip_path must point to a valid Superset export archive.",
"POST": "Transformed archive is saved to output_path.",
"RETURN": "bool - True if successful."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_transform_yaml",
"type": "Function",
"start_line": 80,
"end_line": 100,
"tags": {
"PURPOSE": "Replaces database_uuid in a single YAML file.",
"PARAM": "db_mapping (Dict[str, str]) - UUID mapping dictionary.",
"PRE": "file_path must exist and be readable.",
"POST": "File is modified in-place if source UUID matches mapping."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager."
]
}
}
],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "PluginBase",
"type": "Class",
"start_line": 7,
"end_line": 101,
"tags": {
"SEMANTICS": "plugin, interface, base, abstract",
"PURPOSE": "Defines the abstract base class that all plugins must implement to be recognized by the system. It enforces a common structure for plugin metadata and execution.",
"LAYER": "Core",
"RELATION": "Used by PluginLoader to identify valid plugins.",
"INVARIANT": "All plugins MUST inherit from this class."
},
"relations": [],
"children": [
{
"name": "id",
"type": "Function",
"start_line": 21,
"end_line": 30,
"tags": {
"PURPOSE": "Returns the unique identifier for the plugin.",
"PRE": "Plugin instance exists.",
"POST": "Returns string ID.",
"RETURN": "str - Plugin ID."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "name",
"type": "Function",
"start_line": 34,
"end_line": 43,
"tags": {
"PURPOSE": "Returns the human-readable name of the plugin.",
"PRE": "Plugin instance exists.",
"POST": "Returns string name.",
"RETURN": "str - Plugin name."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "description",
"type": "Function",
"start_line": 47,
"end_line": 56,
"tags": {
"PURPOSE": "Returns a brief description of the plugin.",
"PRE": "Plugin instance exists.",
"POST": "Returns string description.",
"RETURN": "str - Plugin description."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "version",
"type": "Function",
"start_line": 60,
"end_line": 69,
"tags": {
"PURPOSE": "Returns the version of the plugin.",
"PRE": "Plugin instance exists.",
"POST": "Returns string version.",
"RETURN": "str - Plugin version."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_schema",
"type": "Function",
"start_line": 72,
"end_line": 84,
"tags": {
"PURPOSE": "Returns the JSON schema for the plugin's input parameters.",
"PRE": "Plugin instance exists.",
"POST": "Returns dict schema.",
"RETURN": "Dict[str, Any] - JSON schema."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "execute",
"type": "Function",
"start_line": 87,
"end_line": 100,
"tags": {
"PURPOSE": "Executes the plugin's core logic.",
"PARAM": "params (Dict[str, Any]) - Validated input parameters.",
"PRE": "params must be a dictionary.",
"POST": "Plugin execution is completed."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "PluginConfig",
"type": "Class",
"start_line": 103,
"end_line": 115,
"tags": {
"SEMANTICS": "plugin, config, schema, pydantic",
"PURPOSE": "A Pydantic model used to represent the validated configuration and metadata of a loaded plugin. This object is what gets exposed to the API layer.",
"LAYER": "Core",
"RELATION": "Instantiated by PluginLoader after validating a PluginBase instance."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "backend.core.utils.fileio",
"type": "Module",
"start_line": 1,
"end_line": null,
"tags": {
"SEMANTICS": "file, io, zip, yaml, temp, archive, utility",
"PURPOSE": "\u041f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u0430\u0431\u043e\u0440 \u0443\u0442\u0438\u043b\u0438\u0442 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432\u044b\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u0444\u0430\u0439\u043b\u0430\u043c\u0438, \u0430\u0440\u0445\u0438\u0432\u0430\u043c\u0438 ZIP, \u0444\u0430\u0439\u043b\u0430\u043c\u0438 YAML \u0438 \u043e\u0447\u0438\u0441\u0442\u043a\u0443 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439.",
"LAYER": "Infra",
"PUBLIC_API": "create_temp_file, remove_empty_directories, read_dashboard_from_disk, calculate_crc32, RetentionPolicy, archive_exports, save_and_unpack_dashboard, update_yamls, create_dashboard_export, sanitize_filename, get_filename_from_headers, consolidate_archive_folders"
},
"relations": [
{
"type": "DEPENDS_ON",
"target": "backend.src.core.logger"
},
{
"type": "DEPENDS_ON",
"target": "pyyaml"
}
],
"children": [
{
"name": "InvalidZipFormatError",
"type": "Class",
"start_line": 26,
"end_line": null,
"tags": {},
"relations": [],
"children": [
{
"name": "create_temp_file",
"type": "Function",
"start_line": 30,
"end_line": 69,
"tags": {
"PURPOSE": "\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u0438\u043b\u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0441 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435\u043c.",
"PRE": "suffix \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u043e\u0439, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0435\u0439 \u0442\u0438\u043f \u0440\u0435\u0441\u0443\u0440\u0441\u0430.",
"POST": "\u0412\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0440\u0435\u0441\u0443\u0440\u0441 \u0441\u043e\u0437\u0434\u0430\u043d \u0438 \u043f\u0443\u0442\u044c \u043a \u043d\u0435\u043c\u0443 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d; \u0440\u0435\u0441\u0443\u0440\u0441 \u0443\u0434\u0430\u043b\u0435\u043d \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0445\u043e\u0434\u0430 \u0438\u0437 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0430.",
"PARAM": "mode (str) - \u0420\u0435\u0436\u0438\u043c \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u0444\u0430\u0439\u043b (e.g., 'wb').",
"YIELDS": "Path - \u041f\u0443\u0442\u044c \u043a \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c\u0443 \u0440\u0435\u0441\u0443\u0440\u0441\u0443.",
"THROW": "IOError - \u041f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u0430."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "remove_empty_directories",
"type": "Function",
"start_line": 71,
"end_line": 94,
"tags": {
"PURPOSE": "\u0420\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0432\u0441\u0435 \u043f\u0443\u0441\u0442\u044b\u0435 \u043f\u043e\u0434\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u0443\u0442\u0438.",
"PRE": "root_dir \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0443\u0442\u0435\u043c \u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438.",
"POST": "\u0412\u0441\u0435 \u043f\u0443\u0441\u0442\u044b\u0435 \u043f\u043e\u0434\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u044b, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u043e \u0438\u0445 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e.",
"PARAM": "root_dir (str) - \u041f\u0443\u0442\u044c \u043a \u043a\u043e\u0440\u043d\u0435\u0432\u043e\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0434\u043b\u044f \u043e\u0447\u0438\u0441\u0442\u043a\u0438.",
"RETURN": "int - \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0445 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0439."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "read_dashboard_from_disk",
"type": "Function",
"start_line": 96,
"end_line": 112,
"tags": {
"PURPOSE": "\u0427\u0438\u0442\u0430\u0435\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0444\u0430\u0439\u043b\u0430 \u0441 \u0434\u0438\u0441\u043a\u0430.",
"PRE": "file_path \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0444\u0430\u0439\u043b.",
"POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0431\u0430\u0439\u0442\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e \u0438 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430.",
"PARAM": "file_path (str) - \u041f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443.",
"RETURN": "Tuple[bytes, str] - \u041a\u043e\u0440\u0442\u0435\u0436 (\u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435, \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430).",
"THROW": "FileNotFoundError - \u0415\u0441\u043b\u0438 \u0444\u0430\u0439\u043b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "calculate_crc32",
"type": "Function",
"start_line": 114,
"end_line": 126,
"tags": {
"PURPOSE": "\u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0443\u044e \u0441\u0443\u043c\u043c\u0443 CRC32 \u0434\u043b\u044f \u0444\u0430\u0439\u043b\u0430.",
"PRE": "file_path \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c Path \u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 \u0444\u0430\u0439\u043b\u0443.",
"POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 8-\u0437\u043d\u0430\u0447\u043d\u0443\u044e hex-\u0441\u0442\u0440\u043e\u043a\u0443 CRC32.",
"PARAM": "file_path (Path) - \u041f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443.",
"RETURN": "str - 8-\u0437\u043d\u0430\u0447\u043d\u043e\u0435 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 CRC32.",
"THROW": "IOError - \u041f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "RetentionPolicy",
"type": "DataClass",
"start_line": 129,
"end_line": 136,
"tags": {
"PURPOSE": "\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0430\u0440\u0445\u0438\u0432\u043e\u0432 (\u0435\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u044b\u0435, \u0435\u0436\u0435\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u044b\u0435, \u0435\u0436\u0435\u043c\u0435\u0441\u044f\u0447\u043d\u044b\u0435)."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "archive_exports",
"type": "Function",
"start_line": 139,
"end_line": 220,
"tags": {
"PURPOSE": "\u0423\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0430\u0440\u0445\u0438\u0432\u043e\u043c \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432, \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438 \u0434\u0435\u0434\u0443\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044e.",
"PRE": "output_dir \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043f\u0443\u0442\u0435\u043c \u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438.",
"POST": "\u0421\u0442\u0430\u0440\u044b\u0435 \u0438\u043b\u0438 \u0434\u0443\u0431\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0435\u0441\u044f \u0430\u0440\u0445\u0438\u0432\u044b \u0443\u0434\u0430\u043b\u0435\u043d\u044b \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0435.",
"PARAM": "deduplicate (bool) - \u0424\u043b\u0430\u0433 \u0434\u043b\u044f \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u043e\u0432 \u043f\u043e CRC32."
},
"relations": [
{
"type": "CALLS",
"target": "apply_retention_policy"
},
{
"type": "CALLS",
"target": "calculate_crc32"
}
],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "apply_retention_policy",
"type": "Function",
"start_line": 222,
"end_line": 255,
"tags": {
"PURPOSE": "(Helper) \u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a \u0441\u043f\u0438\u0441\u043a\u0443 \u0444\u0430\u0439\u043b\u043e\u0432, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044f \u0442\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c.",
"PRE": "files_with_dates is a list of (Path, date) tuples.",
"POST": "Returns a set of files to keep.",
"PARAM": "policy (RetentionPolicy) - \u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f.",
"RETURN": "set - \u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0443\u0442\u0435\u0439 \u043a \u0444\u0430\u0439\u043b\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "save_and_unpack_dashboard",
"type": "Function",
"start_line": 257,
"end_line": 286,
"tags": {
"PURPOSE": "\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 ZIP-\u0430\u0440\u0445\u0438\u0432\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a \u0438 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0435\u0442 \u0435\u0433\u043e.",
"PRE": "zip_content \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0431\u0430\u0439\u0442\u0430\u043c\u0438 \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0433\u043e ZIP-\u0430\u0440\u0445\u0438\u0432\u0430.",
"POST": "ZIP-\u0444\u0430\u0439\u043b \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d, \u0438 \u0435\u0441\u043b\u0438 unpack=True, \u043e\u043d \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u0430\u043d \u0432 output_dir.",
"PARAM": "original_filename (Optional[str]) - \u0418\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f.",
"RETURN": "Tuple[Path, Optional[Path]] - \u041f\u0443\u0442\u044c \u043a ZIP-\u0444\u0430\u0439\u043b\u0443 \u0438, \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u043e, \u043f\u0443\u0442\u044c \u043a \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0441 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u043e\u0439.",
"THROW": "InvalidZipFormatError - \u041f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 ZIP."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "update_yamls",
"type": "Function",
"start_line": 288,
"end_line": 308,
"tags": {
"PURPOSE": "\u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u0432 YAML-\u0444\u0430\u0439\u043b\u0430\u0445, \u0437\u0430\u043c\u0435\u043d\u044f\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044f regex.",
"PRE": "path \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0435\u0439.",
"POST": "\u0412\u0441\u0435 YAML \u0444\u0430\u0439\u043b\u044b \u0432 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c.",
"THROW": "FileNotFoundError - \u0415\u0441\u043b\u0438 `path` \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.",
"PARAM": "replace_string (Optional[LiteralString]) - \u0421\u0442\u0440\u043e\u043a\u0430 \u0434\u043b\u044f \u0437\u0430\u043c\u0435\u043d\u044b."
},
"relations": [
{
"type": "CALLS",
"target": "_update_yaml_file"
}
],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_update_yaml_file",
"type": "Function",
"start_line": 310,
"end_line": 375,
"tags": {
"PURPOSE": "(Helper) \u041e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442 \u043e\u0434\u0438\u043d YAML \u0444\u0430\u0439\u043b.",
"PRE": "file_path \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c Path \u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 YAML \u0444\u0430\u0439\u043b\u0443.",
"POST": "\u0424\u0430\u0439\u043b \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u043c \u0438\u043b\u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u043c\u0443 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044e.",
"PARAM": "replace_string (Optional[str]) - \u0417\u0430\u043c\u0435\u043d\u0430."
},
"relations": [],
"children": [
{
"name": "replacer",
"type": "Function",
"start_line": 357,
"end_line": 366,
"tags": {
"PURPOSE": "\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0437\u0430\u043c\u0435\u043d\u044b, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0449\u0430\u044f \u043a\u0430\u0432\u044b\u0447\u043a\u0438 \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0431\u044b\u043b\u0438.",
"PRE": "match \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f.",
"POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0441 \u043d\u043e\u0432\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u0438 \u043a\u0430\u0432\u044b\u0447\u043a\u0438."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager."
]
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "create_dashboard_export",
"type": "Function",
"start_line": 377,
"end_line": 403,
"tags": {
"PURPOSE": "\u0421\u043e\u0437\u0434\u0430\u0435\u0442 ZIP-\u0430\u0440\u0445\u0438\u0432 \u0438\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u043f\u0443\u0442\u0435\u0439.",
"PRE": "source_paths \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043f\u0443\u0442\u0438.",
"POST": "ZIP-\u0430\u0440\u0445\u0438\u0432 \u0441\u043e\u0437\u0434\u0430\u043d \u043f\u043e \u043f\u0443\u0442\u0438 zip_path.",
"PARAM": "exclude_extensions (Optional[List[str]]) - \u0421\u043f\u0438\u0441\u043e\u043a \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f.",
"RETURN": "bool - `True` \u043f\u0440\u0438 \u0443\u0441\u043f\u0435\u0445\u0435, `False` \u043f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0435."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "sanitize_filename",
"type": "Function",
"start_line": 405,
"end_line": 414,
"tags": {
"PURPOSE": "\u041e\u0447\u0438\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u043e\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043d\u0435\u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0445 \u0432 \u0438\u043c\u0435\u043d\u0430\u0445 \u0444\u0430\u0439\u043b\u043e\u0432.",
"PRE": "filename \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u043e\u0439.",
"POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 \u0431\u0435\u0437 \u0441\u043f\u0435\u0446\u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432.",
"PARAM": "filename (str) - \u0418\u0441\u0445\u043e\u0434\u043d\u043e\u0435 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430.",
"RETURN": "str - \u041e\u0447\u0438\u0449\u0435\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_filename_from_headers",
"type": "Function",
"start_line": 416,
"end_line": 428,
"tags": {
"PURPOSE": "\u0418\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0438\u0437 HTTP \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430 'Content-Disposition'.",
"PRE": "headers \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u043c \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432.",
"POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0438\u043b\u0438 None, \u0435\u0441\u043b\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442.",
"PARAM": "headers (dict) - \u0421\u043b\u043e\u0432\u0430\u0440\u044c HTTP \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u0432.",
"RETURN": "Optional[str] - \u0418\u043c\u044f \u0444\u0430\u0439\u043b\u0430 or `None`."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "consolidate_archive_folders",
"type": "Function",
"start_line": 430,
"end_line": 484,
"tags": {
"PURPOSE": "\u041a\u043e\u043d\u0441\u043e\u043b\u0438\u0434\u0438\u0440\u0443\u0435\u0442 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0430\u0440\u0445\u0438\u0432\u043e\u0432 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u043e\u0431\u0449\u0435\u0433\u043e \u0441\u043b\u0430\u0433\u0430 \u0432 \u0438\u043c\u0435\u043d\u0438.",
"PRE": "root_directory \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c Path \u043a \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438.",
"POST": "\u0414\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0441 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u043e\u043c \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u044b \u0432 \u043e\u0434\u043d\u0443.",
"THROW": "TypeError, ValueError - \u0415\u0441\u043b\u0438 `root_directory` \u043d\u0435\u0432\u0430\u043b\u0438\u0434\u0435\u043d.",
"PARAM": "root_directory (Path) - \u041a\u043e\u0440\u043d\u0435\u0432\u0430\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f \u0434\u043b\u044f \u043a\u043e\u043d\u0441\u043e\u043b\u0438\u0434\u0430\u0446\u0438\u0438."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": false,
"issues": [
"Unclosed Anchor at end of file (started line 26)",
"Unclosed Anchor: [DEF:InvalidZipFormatError:Class] started at line 26",
"Missing Mandatory Tag: @PURPOSE",
"Unclosed Anchor: [DEF:InvalidZipFormatError:Class] started at line 26",
"Missing Mandatory Tag: @PURPOSE"
]
}
}
],
"compliance": {
"valid": false,
"issues": [
"Unclosed Anchor at end of file (started line 1)",
"Unclosed Anchor: [DEF:backend.core.utils.fileio:Module] started at line 1"
]
}
},
{
"name": "backend.core.utils.network",
"type": "Module",
"start_line": 1,
"end_line": null,
"tags": {
"SEMANTICS": "network, http, client, api, requests, session, authentication",
"PURPOSE": "\u0418\u043d\u043a\u0430\u043f\u0441\u0443\u043b\u0438\u0440\u0443\u0435\u0442 \u043d\u0438\u0437\u043a\u043e\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u0443\u044e HTTP-\u043b\u043e\u0433\u0438\u043a\u0443 \u0434\u043b\u044f \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441 Superset API, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0435\u0441\u0441\u0438\u0435\u0439, retry-\u043b\u043e\u0433\u0438\u043a\u0443 \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043e\u0448\u0438\u0431\u043e\u043a.",
"LAYER": "Infra",
"PUBLIC_API": "APIClient"
},
"relations": [
{
"type": "DEPENDS_ON",
"target": "backend.src.core.logger"
},
{
"type": "DEPENDS_ON",
"target": "requests"
}
],
"children": [
{
"name": "SupersetAPIError",
"type": "Class",
"start_line": 22,
"end_line": null,
"tags": {},
"relations": [],
"children": [
{
"name": "AuthenticationError",
"type": "Class",
"start_line": 28,
"end_line": null,
"tags": {},
"relations": [],
"children": [
{
"name": "PermissionDeniedError",
"type": "Class",
"start_line": 33,
"end_line": null,
"tags": {},
"relations": [],
"children": [
{
"name": "DashboardNotFoundError",
"type": "Class",
"start_line": 38,
"end_line": null,
"tags": {},
"relations": [],
"children": [
{
"name": "NetworkError",
"type": "Class",
"start_line": 43,
"end_line": null,
"tags": {},
"relations": [],
"children": [
{
"name": "APIClient",
"type": "Class",
"start_line": 49,
"end_line": 284,
"tags": {
"PURPOSE": "\u0418\u043d\u043a\u0430\u043f\u0441\u0443\u043b\u0438\u0440\u0443\u0435\u0442 HTTP-\u043b\u043e\u0433\u0438\u043a\u0443 \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u0435\u0441\u0441\u0438\u0438, \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e, \u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432."
},
"relations": [],
"children": [
{
"name": "__init__",
"type": "Function",
"start_line": 54,
"end_line": 71,
"tags": {
"PURPOSE": "\u0418\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 API \u043a\u043b\u0438\u0435\u043d\u0442 \u0441 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439, \u0441\u0435\u0441\u0441\u0438\u0435\u0439 \u0438 \u043b\u043e\u0433\u0433\u0435\u0440\u043e\u043c.",
"PARAM": "timeout (int) - \u0422\u0430\u0439\u043c\u0430\u0443\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.",
"PRE": "config must contain 'base_url' and 'auth'.",
"POST": "APIClient instance is initialized with a session."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_init_session",
"type": "Function",
"start_line": 73,
"end_line": 90,
"tags": {
"PURPOSE": "\u0421\u043e\u0437\u0434\u0430\u0435\u0442 \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u0442 `requests.Session` \u0441 retry-\u043b\u043e\u0433\u0438\u043a\u043e\u0439.",
"PRE": "self.request_settings must be initialized.",
"POST": "Returns a configured requests.Session instance.",
"RETURN": "requests.Session - \u041d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0430\u044f \u0441\u0435\u0441\u0441\u0438\u044f."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "authenticate",
"type": "Function",
"start_line": 92,
"end_line": 119,
"tags": {
"PURPOSE": "\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e \u0432 Superset API \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 access \u0438 CSRF \u0442\u043e\u043a\u0435\u043d\u044b.",
"PRE": "self.auth and self.base_url must be valid.",
"POST": "`self._tokens` \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d, `self._authenticated` \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 `True`.",
"RETURN": "Dict[str, str] - \u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0441 \u0442\u043e\u043a\u0435\u043d\u0430\u043c\u0438.",
"THROW": "AuthenticationError, NetworkError - \u043f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0430\u0445."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "headers",
"type": "Function",
"start_line": 122,
"end_line": 135,
"tags": {
"PURPOSE": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 HTTP-\u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0434\u043b\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432.",
"PRE": "APIClient is initialized and authenticated or can be authenticated.",
"POST": "Returns headers including auth tokens."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "request",
"type": "Function",
"start_line": 137,
"end_line": 161,
"tags": {
"PURPOSE": "\u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441 \u043a API.",
"PARAM": "raw_response (bool) - \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043b\u0438 \u0441\u044b\u0440\u043e\u0439 \u043e\u0442\u0432\u0435\u0442.",
"PRE": "method and endpoint must be strings.",
"POST": "Returns response content or raw Response object.",
"RETURN": "`requests.Response` \u0435\u0441\u043b\u0438 `raw_response=True`, \u0438\u043d\u0430\u0447\u0435 `dict`.",
"THROW": "SupersetAPIError, NetworkError \u0438 \u0438\u0445 \u043f\u043e\u0434\u043a\u043b\u0430\u0441\u0441\u044b."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_handle_http_error",
"type": "Function",
"start_line": 163,
"end_line": 176,
"tags": {
"PURPOSE": "(Helper) \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 HTTP \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0435 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f.",
"PARAM": "endpoint (str) - \u042d\u043d\u0434\u043f\u043e\u0438\u043d\u0442.",
"PRE": "e must be a valid HTTPError with a response.",
"POST": "Raises a specific SupersetAPIError or subclass."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_handle_network_error",
"type": "Function",
"start_line": 178,
"end_line": 190,
"tags": {
"PURPOSE": "(Helper) \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 `NetworkError`.",
"PARAM": "url (str) - URL.",
"PRE": "e must be a RequestException.",
"POST": "Raises a NetworkError."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "upload_file",
"type": "Function",
"start_line": 192,
"end_line": 219,
"tags": {
"PURPOSE": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u0444\u0430\u0439\u043b \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u0447\u0435\u0440\u0435\u0437 multipart/form-data.",
"PARAM": "timeout (Optional[int]) - \u0422\u0430\u0439\u043c\u0430\u0443\u0442.",
"PRE": "file_info must contain 'file_obj' and 'file_name'.",
"POST": "File is uploaded and response returned.",
"RETURN": "\u041e\u0442\u0432\u0435\u0442 API \u0432 \u0432\u0438\u0434\u0435 \u0441\u043b\u043e\u0432\u0430\u0440\u044f.",
"THROW": "SupersetAPIError, NetworkError, TypeError."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_perform_upload",
"type": "Function",
"start_line": 221,
"end_line": 247,
"tags": {
"PURPOSE": "(Helper) \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 POST \u0437\u0430\u043f\u0440\u043e\u0441 \u0441 \u0444\u0430\u0439\u043b\u043e\u043c.",
"PARAM": "timeout (Optional[int]) - \u0422\u0430\u0439\u043c\u0430\u0443\u0442.",
"PRE": "url, files, and headers must be provided.",
"POST": "POST request is performed and JSON response returned.",
"RETURN": "Dict - \u041e\u0442\u0432\u0435\u0442."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "fetch_paginated_count",
"type": "Function",
"start_line": 249,
"end_line": 261,
"tags": {
"PURPOSE": "\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043e\u0431\u0449\u0435\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u0438.",
"PARAM": "count_field (str) - \u041f\u043e\u043b\u0435 \u0441 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c.",
"PRE": "query_params must be a dictionary.",
"POST": "Returns total count of items.",
"RETURN": "int - \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "fetch_paginated_data",
"type": "Function",
"start_line": 263,
"end_line": 282,
"tags": {
"PURPOSE": "\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0441\u043e \u0432\u0441\u0435\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446 \u043f\u0430\u0433\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442\u0430.",
"PARAM": "pagination_options (Dict[str, Any]) - \u041e\u043f\u0446\u0438\u0438 \u043f\u0430\u0433\u0438\u043d\u0430\u0446\u0438\u0438.",
"PRE": "pagination_options must contain 'base_query', 'total_count', 'results_field'.",
"POST": "Returns all items across all pages.",
"RETURN": "List[Any] - \u0421\u043f\u0438\u0441\u043e\u043a \u0434\u0430\u043d\u043d\u044b\u0445."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": false,
"issues": [
"Unclosed Anchor at end of file (started line 43)",
"Unclosed Anchor: [DEF:NetworkError:Class] started at line 43",
"Missing Mandatory Tag: @PURPOSE",
"Unclosed Anchor: [DEF:NetworkError:Class] started at line 43",
"Missing Mandatory Tag: @PURPOSE",
"Unclosed Anchor: [DEF:NetworkError:Class] started at line 43",
"Missing Mandatory Tag: @PURPOSE",
"Unclosed Anchor: [DEF:NetworkError:Class] started at line 43",
"Missing Mandatory Tag: @PURPOSE",
"Unclosed Anchor: [DEF:NetworkError:Class] started at line 43",
"Missing Mandatory Tag: @PURPOSE",
"Unclosed Anchor: [DEF:NetworkError:Class] started at line 43",
"Missing Mandatory Tag: @PURPOSE"
]
}
}
],
"compliance": {
"valid": false,
"issues": [
"Unclosed Anchor at end of file (started line 38)",
"Unclosed Anchor: [DEF:DashboardNotFoundError:Class] started at line 38",
"Missing Mandatory Tag: @PURPOSE",
"Unclosed Anchor: [DEF:DashboardNotFoundError:Class] started at line 38",
"Missing Mandatory Tag: @PURPOSE",
"Unclosed Anchor: [DEF:DashboardNotFoundError:Class] started at line 38",
"Missing Mandatory Tag: @PURPOSE",
"Unclosed Anchor: [DEF:DashboardNotFoundError:Class] started at line 38",
"Missing Mandatory Tag: @PURPOSE",
"Unclosed Anchor: [DEF:DashboardNotFoundError:Class] started at line 38",
"Missing Mandatory Tag: @PURPOSE"
]
}
}
],
"compliance": {
"valid": false,
"issues": [
"Unclosed Anchor at end of file (started line 33)",
"Unclosed Anchor: [DEF:PermissionDeniedError:Class] started at line 33",
"Missing Mandatory Tag: @PURPOSE",
"Unclosed Anchor: [DEF:PermissionDeniedError:Class] started at line 33",
"Missing Mandatory Tag: @PURPOSE",
"Unclosed Anchor: [DEF:PermissionDeniedError:Class] started at line 33",
"Missing Mandatory Tag: @PURPOSE",
"Unclosed Anchor: [DEF:PermissionDeniedError:Class] started at line 33",
"Missing Mandatory Tag: @PURPOSE"
]
}
}
],
"compliance": {
"valid": false,
"issues": [
"Unclosed Anchor at end of file (started line 28)",
"Unclosed Anchor: [DEF:AuthenticationError:Class] started at line 28",
"Missing Mandatory Tag: @PURPOSE",
"Unclosed Anchor: [DEF:AuthenticationError:Class] started at line 28",
"Missing Mandatory Tag: @PURPOSE",
"Unclosed Anchor: [DEF:AuthenticationError:Class] started at line 28",
"Missing Mandatory Tag: @PURPOSE"
]
}
}
],
"compliance": {
"valid": false,
"issues": [
"Unclosed Anchor at end of file (started line 22)",
"Unclosed Anchor: [DEF:SupersetAPIError:Class] started at line 22",
"Missing Mandatory Tag: @PURPOSE",
"Unclosed Anchor: [DEF:SupersetAPIError:Class] started at line 22",
"Missing Mandatory Tag: @PURPOSE"
]
}
}
],
"compliance": {
"valid": false,
"issues": [
"Unclosed Anchor at end of file (started line 1)",
"Unclosed Anchor: [DEF:backend.core.utils.network:Module] started at line 1"
]
}
},
{
"name": "backend.src.core.utils.matching",
"type": "Module",
"start_line": 1,
"end_line": 53,
"tags": {
"SEMANTICS": "fuzzy, matching, rapidfuzz, database, mapping",
"PURPOSE": "Provides utility functions for fuzzy matching database names.",
"LAYER": "Core",
"INVARIANT": "Confidence scores are returned as floats between 0.0 and 1.0."
},
"relations": [
{
"type": "DEPENDS_ON",
"target": "rapidfuzz"
}
],
"children": [
{
"name": "suggest_mappings",
"type": "Function",
"start_line": 15,
"end_line": 51,
"tags": {
"PURPOSE": "Suggests mappings between source and target databases using fuzzy matching.",
"PRE": "source_databases and target_databases are lists of dictionaries with 'uuid' and 'database_name'.",
"POST": "Returns a list of suggested mappings with confidence scores.",
"PARAM": "threshold (int) - Minimum confidence score (0-100).",
"RETURN": "List[Dict] - Suggested mappings."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager."
]
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "backend.core.utils.dataset_mapper",
"type": "Module",
"start_line": 1,
"end_line": 237,
"tags": {
"SEMANTICS": "dataset, mapping, postgresql, xlsx, superset",
"PURPOSE": "\u042d\u0442\u043e\u0442 \u043c\u043e\u0434\u0443\u043b\u044c \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 (verbose_map) \u0432 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430\u0445 Superset, \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u044f \u0438\u0445 \u0438\u0437 PostgreSQL \u0438\u043b\u0438 XLSX-\u0444\u0430\u0439\u043b\u043e\u0432.",
"LAYER": "Domain",
"PUBLIC_API": "DatasetMapper"
},
"relations": [
{
"type": "DEPENDS_ON",
"target": "backend.core.superset_client"
},
{
"type": "DEPENDS_ON",
"target": "pandas"
},
{
"type": "DEPENDS_ON",
"target": "psycopg2"
}
],
"children": [
{
"name": "DatasetMapper",
"type": "Class",
"start_line": 18,
"end_line": 235,
"tags": {
"PURPOSE": "\u041a\u043b\u0430\u0441\u0441 \u0434\u043b\u044f \u043c\u0435\u043f\u043f\u0438\u043d\u0433\u0430 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f verbose_map \u0432 \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430\u0445 Superset."
},
"relations": [],
"children": [
{
"name": "__init__",
"type": "Function",
"start_line": 21,
"end_line": 26,
"tags": {
"PURPOSE": "Initializes the mapper.",
"POST": "\u041e\u0431\u044a\u0435\u043a\u0442 DatasetMapper \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Mandatory Tag: @PRE",
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Mandatory Tag: @PRE",
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Mandatory Tag: @PRE",
"Missing Belief State Logging: Function should use belief_scope context manager."
]
}
},
{
"name": "get_postgres_comments",
"type": "Function",
"start_line": 28,
"end_line": 91,
"tags": {
"PURPOSE": "\u0418\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u0442 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043a \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c \u0438\u0437 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 PostgreSQL.",
"PRE": "table_name \u0438 table_schema \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438.",
"POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u043e\u0432\u0430\u0440\u044c, \u0433\u0434\u0435 \u043a\u043b\u044e\u0447\u0438 - \u0438\u043c\u0435\u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u043e\u043a, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f - \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u0438\u0437 \u0411\u0414.",
"THROW": "Exception - \u041f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043a \u0411\u0414.",
"PARAM": "table_schema (str) - \u0421\u0445\u0435\u043c\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b.",
"RETURN": "Dict[str, str] - \u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0441 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u043c\u0438 \u043a \u043a\u043e\u043b\u043e\u043d\u043a\u0430\u043c."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "load_excel_mappings",
"type": "Function",
"start_line": 93,
"end_line": 111,
"tags": {
"PURPOSE": "\u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043c\u0435\u043f\u043f\u0438\u043d\u0433\u0438 'column_name' -> 'column_comment' \u0438\u0437 XLSX \u0444\u0430\u0439\u043b\u0430.",
"PRE": "file_path \u0434\u043e\u043b\u0436\u0435\u043d \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 XLSX \u0444\u0430\u0439\u043b.",
"POST": "\u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0441 \u043c\u0435\u043f\u043f\u0438\u043d\u0433\u0430\u043c\u0438 \u0438\u0437 \u0444\u0430\u0439\u043b\u0430.",
"THROW": "Exception - \u041f\u0440\u0438 \u043e\u0448\u0438\u0431\u043a\u0430\u0445 \u0447\u0442\u0435\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u0430 \u0438\u043b\u0438 \u043f\u0430\u0440\u0441\u0438\u043d\u0433\u0430.",
"PARAM": "file_path (str) - \u041f\u0443\u0442\u044c \u043a XLSX \u0444\u0430\u0439\u043b\u0443.",
"RETURN": "Dict[str, str] - \u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0441 \u043c\u0435\u043f\u043f\u0438\u043d\u0433\u0430\u043c\u0438."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "run_mapping",
"type": "Function",
"start_line": 113,
"end_line": 234,
"tags": {
"PURPOSE": "\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043c\u0435\u043f\u043f\u0438\u043d\u0433\u0430 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f verbose_map \u0434\u0430\u0442\u0430\u0441\u0435\u0442\u0430 \u0432 Superset.",
"PRE": "dataset_id \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c ID \u0432 Superset.",
"POST": "\u0415\u0441\u043b\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u0434\u0430\u0442\u0430\u0441\u0435\u0442 \u0432 Superset \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d \u0447\u0435\u0440\u0435\u0437 API.",
"PARAM": "table_schema (Optional[str]) - \u0421\u0445\u0435\u043c\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0432 PostgreSQL."
},
"relations": [
{
"type": "CALLS",
"target": "self.get_postgres_comments"
},
{
"type": "CALLS",
"target": "self.load_excel_mappings"
},
{
"type": "CALLS",
"target": "superset_client.get_dataset"
},
{
"type": "CALLS",
"target": "superset_client.update_dataset"
}
],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "TaskPersistenceModule",
"type": "Module",
"start_line": 1,
"end_line": 158,
"tags": {
"SEMANTICS": "persistence, sqlite, sqlalchemy, task, storage",
"PURPOSE": "Handles the persistence of tasks using SQLAlchemy and the tasks.db database.",
"LAYER": "Core",
"RELATION": "Used by TaskManager to save and load tasks.",
"INVARIANT": "Database schema must match the TaskRecord model structure."
},
"relations": [],
"children": [
{
"name": "TaskPersistenceService",
"type": "Class",
"start_line": 20,
"end_line": 157,
"tags": {
"SEMANTICS": "persistence, service, database, sqlalchemy",
"PURPOSE": "Provides methods to save and load tasks from the tasks.db database using SQLAlchemy."
},
"relations": [],
"children": [
{
"name": "__init__",
"type": "Function",
"start_line": 24,
"end_line": 32,
"tags": {
"PURPOSE": "Initializes the persistence service.",
"PRE": "None.",
"POST": "Service is ready."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "persist_task",
"type": "Function",
"start_line": 34,
"end_line": 77,
"tags": {
"PURPOSE": "Persists or updates a single task in the database.",
"PRE": "isinstance(task, Task)",
"POST": "Task record created or updated in database.",
"PARAM": "task (Task) - The task object to persist."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "persist_tasks",
"type": "Function",
"start_line": 79,
"end_line": 88,
"tags": {
"PURPOSE": "Persists multiple tasks.",
"PRE": "isinstance(tasks, list)",
"POST": "All tasks in list are persisted.",
"PARAM": "tasks (List[Task]) - The list of tasks to persist."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "load_tasks",
"type": "Function",
"start_line": 90,
"end_line": 135,
"tags": {
"PURPOSE": "Loads tasks from the database.",
"PRE": "limit is an integer.",
"POST": "Returns list of Task objects.",
"PARAM": "status (Optional[TaskStatus]) - Filter by status.",
"RETURN": "List[Task] - The loaded tasks."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "delete_tasks",
"type": "Function",
"start_line": 137,
"end_line": 155,
"tags": {
"PURPOSE": "Deletes specific tasks from the database.",
"PRE": "task_ids is a list of strings.",
"POST": "Specified task records deleted from database.",
"PARAM": "task_ids (List[str]) - List of task IDs to delete."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "TaskManagerModule",
"type": "Module",
"start_line": 1,
"end_line": 398,
"tags": {
"SEMANTICS": "task, manager, lifecycle, execution, state",
"PURPOSE": "Manages the lifecycle of tasks, including their creation, execution, and state tracking. It uses a thread pool to run plugins asynchronously.",
"LAYER": "Core",
"RELATION": "Depends on PluginLoader to get plugin instances. It is used by the API layer to create and query tasks.",
"INVARIANT": "Task IDs are unique.",
"CONSTRAINT": "Must use belief_scope for logging."
},
"relations": [],
"children": [
{
"name": "TaskManager",
"type": "Class",
"start_line": 20,
"end_line": 397,
"tags": {
"SEMANTICS": "task, manager, lifecycle, execution, state",
"PURPOSE": "Manages the lifecycle of tasks, including their creation, execution, and state tracking."
},
"relations": [],
"children": [
{
"name": "__init__",
"type": "Function",
"start_line": 28,
"end_line": 49,
"tags": {
"PURPOSE": "Initialize the TaskManager with dependencies.",
"PRE": "plugin_loader is initialized.",
"POST": "TaskManager is ready to accept tasks.",
"PARAM": "plugin_loader - The plugin loader instance."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "create_task",
"type": "Function",
"start_line": 51,
"end_line": 78,
"tags": {
"PURPOSE": "Creates and queues a new task for execution.",
"PRE": "Plugin with plugin_id exists. Params are valid.",
"POST": "Task is created, added to registry, and scheduled for execution.",
"PARAM": "user_id (Optional[str]) - ID of the user requesting the task.",
"RETURN": "Task - The created task instance.",
"THROWS": "ValueError if plugin not found or params invalid."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_run_task",
"type": "Function",
"start_line": 80,
"end_line": 120,
"tags": {
"PURPOSE": "Internal method to execute a task.",
"PRE": "Task exists in registry.",
"POST": "Task is executed, status updated to SUCCESS or FAILED.",
"PARAM": "task_id (str) - The ID of the task to run."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "resolve_task",
"type": "Function",
"start_line": 122,
"end_line": 144,
"tags": {
"PURPOSE": "Resumes a task that is awaiting mapping.",
"PRE": "Task exists and is in AWAITING_MAPPING state.",
"POST": "Task status updated to RUNNING, params updated, execution resumed.",
"PARAM": "resolution_params (Dict[str, Any]) - Params to resolve the wait.",
"THROWS": "ValueError if task not found or not awaiting mapping."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "wait_for_resolution",
"type": "Function",
"start_line": 146,
"end_line": 165,
"tags": {
"PURPOSE": "Pauses execution and waits for a resolution signal.",
"PRE": "Task exists.",
"POST": "Execution pauses until future is set.",
"PARAM": "task_id (str) - The ID of the task."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "wait_for_input",
"type": "Function",
"start_line": 167,
"end_line": 185,
"tags": {
"PURPOSE": "Pauses execution and waits for user input.",
"PRE": "Task exists.",
"POST": "Execution pauses until future is set via resume_task_with_password.",
"PARAM": "task_id (str) - The ID of the task."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_task",
"type": "Function",
"start_line": 187,
"end_line": 196,
"tags": {
"PURPOSE": "Retrieves a task by its ID.",
"PRE": "task_id is a string.",
"POST": "Returns Task object or None.",
"PARAM": "task_id (str) - ID of the task.",
"RETURN": "Optional[Task] - The task or None."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_all_tasks",
"type": "Function",
"start_line": 198,
"end_line": 206,
"tags": {
"PURPOSE": "Retrieves all registered tasks.",
"PRE": "None.",
"POST": "Returns list of all Task objects.",
"RETURN": "List[Task] - All tasks."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_tasks",
"type": "Function",
"start_line": 208,
"end_line": 224,
"tags": {
"PURPOSE": "Retrieves tasks with pagination and optional status filter.",
"PRE": "limit and offset are non-negative integers.",
"POST": "Returns a list of tasks sorted by start_time descending.",
"PARAM": "status (Optional[TaskStatus]) - Filter by task status.",
"RETURN": "List[Task] - List of tasks matching criteria."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_task_logs",
"type": "Function",
"start_line": 226,
"end_line": 236,
"tags": {
"PURPOSE": "Retrieves logs for a specific task.",
"PRE": "task_id is a string.",
"POST": "Returns list of LogEntry objects.",
"PARAM": "task_id (str) - ID of the task.",
"RETURN": "List[LogEntry] - List of log entries."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_add_log",
"type": "Function",
"start_line": 238,
"end_line": 260,
"tags": {
"PURPOSE": "Adds a log entry to a task and notifies subscribers.",
"PRE": "Task exists.",
"POST": "Log added to task and pushed to queues.",
"PARAM": "context (Optional[Dict]) - Log context."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "subscribe_logs",
"type": "Function",
"start_line": 262,
"end_line": 275,
"tags": {
"PURPOSE": "Subscribes to real-time logs for a task.",
"PRE": "task_id is a string.",
"POST": "Returns an asyncio.Queue for log entries.",
"PARAM": "task_id (str) - ID of the task.",
"RETURN": "asyncio.Queue - Queue for log entries."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "unsubscribe_logs",
"type": "Function",
"start_line": 277,
"end_line": 290,
"tags": {
"PURPOSE": "Unsubscribes from real-time logs for a task.",
"PRE": "task_id is a string, queue is asyncio.Queue.",
"POST": "Queue removed from subscribers.",
"PARAM": "queue (asyncio.Queue) - Queue to remove."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "load_persisted_tasks",
"type": "Function",
"start_line": 292,
"end_line": 302,
"tags": {
"PURPOSE": "Load persisted tasks using persistence service.",
"PRE": "None.",
"POST": "Persisted tasks loaded into self.tasks."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "await_input",
"type": "Function",
"start_line": 304,
"end_line": 324,
"tags": {
"PURPOSE": "Transition a task to AWAITING_INPUT state with input request.",
"PRE": "Task exists and is in RUNNING state.",
"POST": "Task status changed to AWAITING_INPUT, input_request set, persisted.",
"PARAM": "input_request (Dict) - Details about required input.",
"THROWS": "ValueError if task not found or not RUNNING."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "resume_task_with_password",
"type": "Function",
"start_line": 326,
"end_line": 353,
"tags": {
"PURPOSE": "Resume a task that is awaiting input with provided passwords.",
"PRE": "Task exists and is in AWAITING_INPUT state.",
"POST": "Task status changed to RUNNING, passwords injected, task resumed.",
"PARAM": "passwords (Dict[str, str]) - Mapping of database name to password.",
"THROWS": "ValueError if task not found, not awaiting input, or passwords invalid."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "clear_tasks",
"type": "Function",
"start_line": 355,
"end_line": 395,
"tags": {
"PURPOSE": "Clears tasks based on status filter.",
"PRE": "status is Optional[TaskStatus].",
"POST": "Tasks matching filter (or all non-active) cleared from registry and database.",
"PARAM": "status (Optional[TaskStatus]) - Filter by task status.",
"RETURN": "int - Number of tasks cleared."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "TaskManagerModels",
"type": "Module",
"start_line": 1,
"end_line": 68,
"tags": {
"SEMANTICS": "task, models, pydantic, enum, state",
"PURPOSE": "Defines the data models and enumerations used by the Task Manager.",
"LAYER": "Core",
"RELATION": "Used by TaskManager and API routes.",
"INVARIANT": "Task IDs are immutable once created.",
"CONSTRAINT": "Must use Pydantic for data validation."
},
"relations": [],
"children": [
{
"name": "TaskStatus",
"type": "Enum",
"start_line": 18,
"end_line": 28,
"tags": {
"SEMANTICS": "task, status, state, enum",
"PURPOSE": "Defines the possible states a task can be in during its lifecycle."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "LogEntry",
"type": "Class",
"start_line": 30,
"end_line": 38,
"tags": {
"SEMANTICS": "log, entry, record, pydantic",
"PURPOSE": "A Pydantic model representing a single, structured log entry associated with a task."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "Task",
"type": "Class",
"start_line": 40,
"end_line": 66,
"tags": {
"SEMANTICS": "task, job, execution, state, pydantic",
"PURPOSE": "A Pydantic model representing a single execution instance of a plugin, including its status, parameters, and logs."
},
"relations": [],
"children": [
{
"name": "__init__",
"type": "Function",
"start_line": 56,
"end_line": 65,
"tags": {
"PURPOSE": "Initializes the Task model and validates input_request for AWAITING_INPUT status.",
"PRE": "If status is AWAITING_INPUT, input_request must be provided.",
"POST": "Task instance is created or ValueError is raised.",
"PARAM": "**data - Keyword arguments for model initialization."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager."
]
}
}
],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "TaskCleanupModule",
"type": "Module",
"start_line": 1,
"end_line": 47,
"tags": {
"SEMANTICS": "task, cleanup, retention",
"PURPOSE": "Implements task cleanup and retention policies.",
"LAYER": "Core",
"RELATION": "Uses TaskPersistenceService to delete old tasks."
},
"relations": [],
"children": [
{
"name": "TaskCleanupService",
"type": "Class",
"start_line": 12,
"end_line": 46,
"tags": {
"PURPOSE": "Provides methods to clean up old task records."
},
"relations": [],
"children": [
{
"name": "__init__",
"type": "Function",
"start_line": 15,
"end_line": 22,
"tags": {
"PURPOSE": "Initializes the cleanup service with dependencies.",
"PRE": "persistence_service and config_manager are valid.",
"POST": "Cleanup service is ready."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager."
]
}
},
{
"name": "run_cleanup",
"type": "Function",
"start_line": 24,
"end_line": 44,
"tags": {
"PURPOSE": "Deletes tasks older than the configured retention period.",
"PRE": "Config manager has valid settings.",
"POST": "Old tasks are deleted from persistence."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "TaskManagerPackage",
"type": "Module",
"start_line": 1,
"end_line": 12,
"tags": {
"SEMANTICS": "task, manager, package, exports",
"PURPOSE": "Exports the public API of the task manager package.",
"LAYER": "Core",
"RELATION": "Aggregates models and manager."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "AuthModule",
"type": "Module",
"start_line": 1,
"end_line": 59,
"tags": {
"SEMANTICS": "auth, authentication, adfs, oauth, middleware",
"PURPOSE": "Implements ADFS authentication using Authlib for FastAPI. It provides a dependency to protect endpoints.",
"LAYER": "UI (API)",
"RELATION": "Used by API routers to protect endpoints that require authentication."
},
"relations": [],
"children": [
{
"name": "get_current_user",
"type": "Function",
"start_line": 34,
"end_line": 58,
"tags": {
"PURPOSE": "Dependency to get the current user from the ADFS token.",
"PARAM": "token (str) - The OAuth2 bearer token.",
"PRE": "token should be provided via Authorization header.",
"POST": "Returns user details if authenticated, else raises 401.",
"RETURN": "Dict[str, str] - User information."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager."
]
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "ConnectionsRouter",
"type": "Module",
"start_line": 1,
"end_line": 100,
"tags": {
"SEMANTICS": "api, router, connections, database",
"PURPOSE": "Defines the FastAPI router for managing external database connections.",
"LAYER": "UI (API)",
"RELATION": "Depends on SQLAlchemy session.",
"CONSTRAINT": "Must use belief_scope for logging."
},
"relations": [],
"children": [
{
"name": "ConnectionSchema",
"type": "Class",
"start_line": 21,
"end_line": 35,
"tags": {
"PURPOSE": "Pydantic model for connection response."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "ConnectionCreate",
"type": "Class",
"start_line": 37,
"end_line": 47,
"tags": {
"PURPOSE": "Pydantic model for creating a connection."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "list_connections",
"type": "Function",
"start_line": 49,
"end_line": 60,
"tags": {
"PURPOSE": "Lists all saved connections.",
"PRE": "Database session is active.",
"POST": "Returns list of connection configs.",
"PARAM": "db (Session) - Database session.",
"RETURN": "List[ConnectionSchema] - List of connections."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "create_connection",
"type": "Function",
"start_line": 62,
"end_line": 78,
"tags": {
"PURPOSE": "Creates a new connection configuration.",
"PRE": "Connection name is unique.",
"POST": "Connection is saved to DB.",
"PARAM": "db (Session) - Database session.",
"RETURN": "ConnectionSchema - Created connection."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "delete_connection",
"type": "Function",
"start_line": 80,
"end_line": 98,
"tags": {
"PURPOSE": "Deletes a connection configuration.",
"PRE": "Connection ID exists.",
"POST": "Connection is removed from DB.",
"PARAM": "db (Session) - Database session.",
"RETURN": "None."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "backend.src.api.routes.environments",
"type": "Module",
"start_line": 1,
"end_line": 122,
"tags": {
"SEMANTICS": "api, environments, superset, databases",
"PURPOSE": "API endpoints for listing environments and their databases.",
"LAYER": "API",
"INVARIANT": "Environment IDs must exist in the configuration."
},
"relations": [
{
"type": "DEPENDS_ON",
"target": "backend.src.dependencies"
},
{
"type": "DEPENDS_ON",
"target": "backend.src.core.superset_client"
}
],
"children": [
{
"name": "ScheduleSchema",
"type": "DataClass",
"start_line": 23,
"end_line": 27,
"tags": {},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "EnvironmentResponse",
"type": "DataClass",
"start_line": 29,
"end_line": 35,
"tags": {},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "DatabaseResponse",
"type": "DataClass",
"start_line": 37,
"end_line": 42,
"tags": {},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_environments",
"type": "Function",
"start_line": 44,
"end_line": 67,
"tags": {
"PURPOSE": "List all configured environments.",
"PRE": "config_manager is injected via Depends.",
"POST": "Returns a list of EnvironmentResponse objects.",
"RETURN": "List[EnvironmentResponse]"
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "update_environment_schedule",
"type": "Function",
"start_line": 69,
"end_line": 98,
"tags": {
"PURPOSE": "Update backup schedule for an environment.",
"PRE": "Environment id exists, schedule is valid ScheduleSchema.",
"POST": "Backup schedule updated and scheduler reloaded.",
"PARAM": "schedule (ScheduleSchema) - The new schedule."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_environment_databases",
"type": "Function",
"start_line": 100,
"end_line": 120,
"tags": {
"PURPOSE": "Fetch the list of databases from a specific environment.",
"PRE": "Environment id exists.",
"POST": "Returns a list of database summaries from the environment.",
"PARAM": "id (str) - The environment ID.",
"RETURN": "List[Dict] - List of databases."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "backend.src.api.routes.migration",
"type": "Module",
"start_line": 1,
"end_line": 68,
"tags": {
"SEMANTICS": "api, migration, dashboards",
"PURPOSE": "API endpoints for migration operations.",
"LAYER": "API"
},
"relations": [
{
"type": "DEPENDS_ON",
"target": "backend.src.dependencies"
},
{
"type": "DEPENDS_ON",
"target": "backend.src.models.dashboard"
}
],
"children": [
{
"name": "get_dashboards",
"type": "Function",
"start_line": 16,
"end_line": 32,
"tags": {
"PURPOSE": "Fetch all dashboards from the specified environment for the grid.",
"PRE": "Environment ID must be valid.",
"POST": "Returns a list of dashboard metadata.",
"PARAM": "env_id (str) - The ID of the environment to fetch from.",
"RETURN": "List[DashboardMetadata]"
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager."
]
}
},
{
"name": "execute_migration",
"type": "Function",
"start_line": 34,
"end_line": 66,
"tags": {
"PURPOSE": "Execute the migration of selected dashboards.",
"PRE": "Selection must be valid and environments must exist.",
"POST": "Starts the migration task and returns the task ID.",
"PARAM": "selection (DashboardSelection) - The dashboards to migrate.",
"RETURN": "Dict - {\"task_id\": str, \"message\": str}"
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Missing Belief State Logging: Function should use belief_scope context manager.",
"Missing Belief State Logging: Function should use belief_scope context manager."
]
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "PluginsRouter",
"type": "Module",
"start_line": 1,
"end_line": 30,
"tags": {
"SEMANTICS": "api, router, plugins, list",
"PURPOSE": "Defines the FastAPI router for plugin-related endpoints, allowing clients to list available plugins.",
"LAYER": "UI (API)",
"RELATION": "Depends on the PluginLoader and PluginConfig. It is included by the main app."
},
"relations": [],
"children": [
{
"name": "list_plugins",
"type": "Function",
"start_line": 15,
"end_line": 29,
"tags": {
"PURPOSE": "Retrieve a list of all available plugins.",
"PRE": "plugin_loader is injected via Depends.",
"POST": "Returns a list of PluginConfig objects.",
"RETURN": "List[PluginConfig] - List of registered plugins."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "backend.src.api.routes.mappings",
"type": "Module",
"start_line": 1,
"end_line": 119,
"tags": {
"SEMANTICS": "api, mappings, database, fuzzy-matching",
"PURPOSE": "API endpoints for managing database mappings and getting suggestions.",
"LAYER": "API",
"INVARIANT": "Mappings are persisted in the SQLite database."
},
"relations": [
{
"type": "DEPENDS_ON",
"target": "backend.src.dependencies"
},
{
"type": "DEPENDS_ON",
"target": "backend.src.core.database"
},
{
"type": "DEPENDS_ON",
"target": "backend.src.services.mapping_service"
}
],
"children": [
{
"name": "MappingCreate",
"type": "DataClass",
"start_line": 24,
"end_line": 32,
"tags": {},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "MappingResponse",
"type": "DataClass",
"start_line": 34,
"end_line": 46,
"tags": {},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "SuggestRequest",
"type": "DataClass",
"start_line": 48,
"end_line": 52,
"tags": {},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_mappings",
"type": "Function",
"start_line": 54,
"end_line": 71,
"tags": {
"PURPOSE": "List all saved database mappings.",
"PRE": "db session is injected.",
"POST": "Returns filtered list of DatabaseMapping records."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "create_mapping",
"type": "Function",
"start_line": 73,
"end_line": 99,
"tags": {
"PURPOSE": "Create or update a database mapping.",
"PRE": "mapping is valid MappingCreate, db session is injected.",
"POST": "DatabaseMapping created or updated in database."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "suggest_mappings_api",
"type": "Function",
"start_line": 101,
"end_line": 117,
"tags": {
"PURPOSE": "Get suggested mappings based on fuzzy matching.",
"PRE": "request is valid SuggestRequest, config_manager is injected.",
"POST": "Returns mapping suggestions."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "SettingsRouter",
"type": "Module",
"start_line": 1,
"end_line": 208,
"tags": {
"SEMANTICS": "settings, api, router, fastapi",
"PURPOSE": "Provides API endpoints for managing application settings and Superset environments.",
"LAYER": "UI (API)",
"INVARIANT": "All settings changes must be persisted via ConfigManager.",
"PUBLIC_API": "router"
},
"relations": [
{
"type": "DEPENDS_ON",
"target": "ConfigManager"
},
{
"type": "DEPENDS_ON",
"target": "ConfigModels"
}
],
"children": [
{
"name": "get_settings",
"type": "Function",
"start_line": 25,
"end_line": 40,
"tags": {
"PURPOSE": "Retrieves all application settings.",
"PRE": "Config manager is available.",
"POST": "Returns masked AppConfig.",
"RETURN": "AppConfig - The current configuration."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "update_global_settings",
"type": "Function",
"start_line": 42,
"end_line": 57,
"tags": {
"PURPOSE": "Updates global application settings.",
"PRE": "New settings are provided.",
"POST": "Global settings are updated.",
"PARAM": "settings (GlobalSettings) - The new global settings.",
"RETURN": "GlobalSettings - The updated settings."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_environments",
"type": "Function",
"start_line": 59,
"end_line": 69,
"tags": {
"PURPOSE": "Lists all configured Superset environments.",
"PRE": "Config manager is available.",
"POST": "Returns list of environments.",
"RETURN": "List[Environment] - List of environments."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "add_environment",
"type": "Function",
"start_line": 71,
"end_line": 95,
"tags": {
"PURPOSE": "Adds a new Superset environment.",
"PRE": "Environment data is valid and reachable.",
"POST": "Environment is added to config.",
"PARAM": "env (Environment) - The environment to add.",
"RETURN": "Environment - The added environment."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "update_environment",
"type": "Function",
"start_line": 97,
"end_line": 131,
"tags": {
"PURPOSE": "Updates an existing Superset environment.",
"PRE": "ID and valid environment data are provided.",
"POST": "Environment is updated in config.",
"PARAM": "env (Environment) - The updated environment data.",
"RETURN": "Environment - The updated environment."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "delete_environment",
"type": "Function",
"start_line": 133,
"end_line": 147,
"tags": {
"PURPOSE": "Deletes a Superset environment.",
"PRE": "ID is provided.",
"POST": "Environment is removed from config.",
"PARAM": "id (str) - The ID of the environment to delete."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "test_environment_connection",
"type": "Function",
"start_line": 149,
"end_line": 180,
"tags": {
"PURPOSE": "Tests the connection to a Superset environment.",
"PRE": "ID is provided.",
"POST": "Returns success or error status.",
"PARAM": "id (str) - The ID of the environment to test.",
"RETURN": "dict - Success message or error."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "validate_backup_path",
"type": "Function",
"start_line": 182,
"end_line": 206,
"tags": {
"PURPOSE": "Validates if a backup path exists and is writable.",
"PRE": "Path is provided in path_data.",
"POST": "Returns success or error status.",
"PARAM": "path (str) - The path to validate.",
"RETURN": "dict - Validation result."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "TasksRouter",
"type": "Module",
"start_line": 1,
"end_line": 187,
"tags": {
"SEMANTICS": "api, router, tasks, create, list, get",
"PURPOSE": "Defines the FastAPI router for task-related endpoints, allowing clients to create, list, and get the status of tasks.",
"LAYER": "UI (API)",
"RELATION": "Depends on the TaskManager. It is included by the main app."
},
"relations": [],
"children": [
{
"name": "create_task",
"type": "Function",
"start_line": 27,
"end_line": 50,
"tags": {
"PURPOSE": "Create and start a new task for a given plugin.",
"PARAM": "task_manager (TaskManager) - The task manager instance.",
"PRE": "plugin_id must exist and params must be valid for that plugin.",
"POST": "A new task is created and started.",
"RETURN": "Task - The created task instance."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "list_tasks",
"type": "Function",
"start_line": 53,
"end_line": 73,
"tags": {
"PURPOSE": "Retrieve a list of tasks with pagination and optional status filter.",
"PARAM": "task_manager (TaskManager) - The task manager instance.",
"PRE": "task_manager must be available.",
"POST": "Returns a list of tasks.",
"RETURN": "List[Task] - List of tasks."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_task",
"type": "Function",
"start_line": 76,
"end_line": 95,
"tags": {
"PURPOSE": "Retrieve the details of a specific task.",
"PARAM": "task_manager (TaskManager) - The task manager instance.",
"PRE": "task_id must exist.",
"POST": "Returns task details or raises 404.",
"RETURN": "Task - The task details."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_task_logs",
"type": "Function",
"start_line": 98,
"end_line": 117,
"tags": {
"PURPOSE": "Retrieve logs for a specific task.",
"PARAM": "task_manager (TaskManager) - The task manager instance.",
"PRE": "task_id must exist.",
"POST": "Returns a list of log entries or raises 404.",
"RETURN": "List[LogEntry] - List of log entries."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "resolve_task",
"type": "Function",
"start_line": 120,
"end_line": 142,
"tags": {
"PURPOSE": "Resolve a task that is awaiting mapping.",
"PARAM": "task_manager (TaskManager) - The task manager instance.",
"PRE": "task must be in AWAITING_MAPPING status.",
"POST": "Task is resolved and resumes execution.",
"RETURN": "Task - The updated task object."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "resume_task",
"type": "Function",
"start_line": 145,
"end_line": 167,
"tags": {
"PURPOSE": "Resume a task that is awaiting input (e.g., passwords).",
"PARAM": "task_manager (TaskManager) - The task manager instance.",
"PRE": "task must be in AWAITING_INPUT status.",
"POST": "Task resumes execution with provided input.",
"RETURN": "Task - The updated task object."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "clear_tasks",
"type": "Function",
"start_line": 170,
"end_line": 186,
"tags": {
"PURPOSE": "Clear tasks matching the status filter.",
"PARAM": "task_manager (TaskManager) - The task manager instance.",
"PRE": "task_manager is available.",
"POST": "Tasks are removed from memory/persistence."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "backend.src.models.task",
"type": "Module",
"start_line": 1,
"end_line": 35,
"tags": {
"SEMANTICS": "database, task, record, sqlalchemy, sqlite",
"PURPOSE": "Defines the database schema for task execution records.",
"LAYER": "Domain",
"INVARIANT": "All primary keys are UUID strings."
},
"relations": [
{
"type": "DEPENDS_ON",
"target": "sqlalchemy"
}
],
"children": [
{
"name": "TaskRecord",
"type": "Class",
"start_line": 17,
"end_line": 33,
"tags": {
"PURPOSE": "Represents a persistent record of a task execution."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "backend.src.models.connection",
"type": "Module",
"start_line": 1,
"end_line": 34,
"tags": {
"SEMANTICS": "database, connection, configuration, sqlalchemy, sqlite",
"PURPOSE": "Defines the database schema for external database connection configurations.",
"LAYER": "Domain",
"INVARIANT": "All primary keys are UUID strings."
},
"relations": [
{
"type": "DEPENDS_ON",
"target": "sqlalchemy"
}
],
"children": [
{
"name": "ConnectionConfig",
"type": "Class",
"start_line": 17,
"end_line": 32,
"tags": {
"PURPOSE": "Stores credentials for external databases used for column mapping."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "backend.src.models.mapping",
"type": "Module",
"start_line": 1,
"end_line": 70,
"tags": {
"SEMANTICS": "database, mapping, environment, migration, sqlalchemy, sqlite",
"PURPOSE": "Defines the database schema for environment metadata and database mappings using SQLAlchemy.",
"LAYER": "Domain",
"INVARIANT": "All primary keys are UUID strings.",
"CONSTRAINT": "source_env_id and target_env_id must be valid environment IDs."
},
"relations": [
{
"type": "DEPENDS_ON",
"target": "sqlalchemy"
}
],
"children": [
{
"name": "MigrationStatus",
"type": "Class",
"start_line": 21,
"end_line": 29,
"tags": {
"PURPOSE": "Enumeration of possible migration job statuses."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "Environment",
"type": "Class",
"start_line": 31,
"end_line": 40,
"tags": {
"PURPOSE": "Represents a Superset instance environment."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "DatabaseMapping",
"type": "Class",
"start_line": 42,
"end_line": 55,
"tags": {
"PURPOSE": "Represents a mapping between source and target databases."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "MigrationJob",
"type": "Class",
"start_line": 57,
"end_line": 68,
"tags": {
"PURPOSE": "Represents a single migration execution job."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "backend.src.models.dashboard",
"type": "Module",
"start_line": 1,
"end_line": 28,
"tags": {
"SEMANTICS": "dashboard, model, metadata, migration",
"PURPOSE": "Defines data models for dashboard metadata and selection.",
"LAYER": "Model"
},
"relations": [
{
"type": "USED_BY",
"target": "backend.src.api.routes.migration"
}
],
"children": [
{
"name": "DashboardMetadata",
"type": "Class",
"start_line": 10,
"end_line": 17,
"tags": {
"PURPOSE": "Represents a dashboard available for migration."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "DashboardSelection",
"type": "Class",
"start_line": 19,
"end_line": 26,
"tags": {
"PURPOSE": "Represents the user's selection of dashboards to migrate."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "backend.src.services.mapping_service",
"type": "Module",
"start_line": 1,
"end_line": 71,
"tags": {
"SEMANTICS": "service, mapping, fuzzy-matching, superset",
"PURPOSE": "Orchestrates database fetching and fuzzy matching suggestions.",
"LAYER": "Service",
"INVARIANT": "Suggestions are based on database names."
},
"relations": [
{
"type": "DEPENDS_ON",
"target": "backend.src.core.superset_client"
},
{
"type": "DEPENDS_ON",
"target": "backend.src.core.utils.matching"
}
],
"children": [
{
"name": "MappingService",
"type": "Class",
"start_line": 18,
"end_line": 69,
"tags": {
"PURPOSE": "Service for handling database mapping logic."
},
"relations": [],
"children": [
{
"name": "__init__",
"type": "Function",
"start_line": 22,
"end_line": 30,
"tags": {
"PURPOSE": "Initializes the mapping service with a config manager.",
"PRE": "config_manager is provided.",
"PARAM": "config_manager (ConfigManager) - The configuration manager.",
"POST": "Service is initialized."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_get_client",
"type": "Function",
"start_line": 32,
"end_line": 46,
"tags": {
"PURPOSE": "Helper to get an initialized SupersetClient for an environment.",
"PARAM": "env_id (str) - The ID of the environment.",
"PRE": "environment must exist in config.",
"POST": "Returns an initialized SupersetClient.",
"RETURN": "SupersetClient - Initialized client."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_suggestions",
"type": "Function",
"start_line": 48,
"end_line": 67,
"tags": {
"PURPOSE": "Fetches databases from both environments and returns fuzzy matching suggestions.",
"PARAM": "target_env_id (str) - Target environment ID.",
"PRE": "Both environments must be accessible.",
"POST": "Returns fuzzy-matched database suggestions.",
"RETURN": "List[Dict] - Suggested mappings."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "BackupPlugin",
"type": "Module",
"start_line": 1,
"end_line": 189,
"tags": {
"SEMANTICS": "backup, superset, automation, dashboard, plugin",
"PURPOSE": "A plugin that provides functionality to back up Superset dashboards.",
"LAYER": "App"
},
"relations": [
{
"type": "IMPLEMENTS",
"target": "PluginBase"
},
{
"type": "DEPENDS_ON",
"target": "superset_tool.client"
},
{
"type": "DEPENDS_ON",
"target": "superset_tool.utils"
}
],
"children": [
{
"name": "BackupPlugin",
"type": "Class",
"start_line": 27,
"end_line": 188,
"tags": {
"PURPOSE": "Implementation of the backup plugin logic."
},
"relations": [],
"children": [
{
"name": "id",
"type": "Function",
"start_line": 35,
"end_line": 43,
"tags": {
"PURPOSE": "Returns the unique identifier for the backup plugin.",
"PRE": "Plugin instance exists.",
"POST": "Returns string ID.",
"RETURN": "str - \"superset-backup\""
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "name",
"type": "Function",
"start_line": 46,
"end_line": 54,
"tags": {
"PURPOSE": "Returns the human-readable name of the backup plugin.",
"PRE": "Plugin instance exists.",
"POST": "Returns string name.",
"RETURN": "str - Plugin name."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "description",
"type": "Function",
"start_line": 57,
"end_line": 65,
"tags": {
"PURPOSE": "Returns a description of the backup plugin.",
"PRE": "Plugin instance exists.",
"POST": "Returns string description.",
"RETURN": "str - Plugin description."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "version",
"type": "Function",
"start_line": 68,
"end_line": 76,
"tags": {
"PURPOSE": "Returns the version of the backup plugin.",
"PRE": "Plugin instance exists.",
"POST": "Returns string version.",
"RETURN": "str - \"1.0.0\""
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_schema",
"type": "Function",
"start_line": 78,
"end_line": 107,
"tags": {
"PURPOSE": "Returns the JSON schema for backup plugin parameters.",
"PRE": "Plugin instance exists.",
"POST": "Returns dictionary schema.",
"RETURN": "Dict[str, Any] - JSON schema."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "execute",
"type": "Function",
"start_line": 109,
"end_line": 187,
"tags": {
"PURPOSE": "Executes the dashboard backup logic.",
"PARAM": "params (Dict[str, Any]) - Backup parameters (env, backup_path).",
"PRE": "Target environment must be configured. params must be a dictionary.",
"POST": "All dashboards are exported and archived."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "DebugPluginModule",
"type": "Module",
"start_line": 1,
"end_line": 187,
"tags": {
"SEMANTICS": "plugin, debug, api, database, superset",
"PURPOSE": "Implements a plugin for system diagnostics and debugging Superset API responses.",
"LAYER": "Plugins",
"RELATION": "Inherits from PluginBase. Uses SupersetClient from core.",
"CONSTRAINT": "Must use belief_scope for logging."
},
"relations": [],
"children": [
{
"name": "DebugPlugin",
"type": "Class",
"start_line": 15,
"end_line": 186,
"tags": {
"PURPOSE": "Plugin for system diagnostics and debugging."
},
"relations": [],
"children": [
{
"name": "id",
"type": "Function",
"start_line": 23,
"end_line": 31,
"tags": {
"PURPOSE": "Returns the unique identifier for the debug plugin.",
"PRE": "Plugin instance exists.",
"POST": "Returns string ID.",
"RETURN": "str - \"system-debug\""
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "name",
"type": "Function",
"start_line": 34,
"end_line": 42,
"tags": {
"PURPOSE": "Returns the human-readable name of the debug plugin.",
"PRE": "Plugin instance exists.",
"POST": "Returns string name.",
"RETURN": "str - Plugin name."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "description",
"type": "Function",
"start_line": 45,
"end_line": 53,
"tags": {
"PURPOSE": "Returns a description of the debug plugin.",
"PRE": "Plugin instance exists.",
"POST": "Returns string description.",
"RETURN": "str - Plugin description."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "version",
"type": "Function",
"start_line": 56,
"end_line": 64,
"tags": {
"PURPOSE": "Returns the version of the debug plugin.",
"PRE": "Plugin instance exists.",
"POST": "Returns string version.",
"RETURN": "str - \"1.0.0\""
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_schema",
"type": "Function",
"start_line": 66,
"end_line": 105,
"tags": {
"PURPOSE": "Returns the JSON schema for the debug plugin parameters.",
"PRE": "Plugin instance exists.",
"POST": "Returns dictionary schema.",
"RETURN": "Dict[str, Any] - JSON schema."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "execute",
"type": "Function",
"start_line": 107,
"end_line": 123,
"tags": {
"PURPOSE": "Executes the debug logic.",
"PARAM": "params (Dict[str, Any]) - Debug parameters.",
"PRE": "action must be provided in params.",
"POST": "Debug action is executed and results returned.",
"RETURN": "Dict[str, Any] - Execution results."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_test_db_api",
"type": "Function",
"start_line": 125,
"end_line": 157,
"tags": {
"PURPOSE": "Tests database API connectivity for source and target environments.",
"PRE": "source_env and target_env params exist in params.",
"POST": "Returns DB counts for both envs.",
"PARAM": "params (Dict) - Plugin parameters.",
"RETURN": "Dict - Comparison results."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_get_dataset_structure",
"type": "Function",
"start_line": 159,
"end_line": 184,
"tags": {
"PURPOSE": "Retrieves the structure of a dataset.",
"PRE": "env and dataset_id params exist in params.",
"POST": "Returns dataset JSON structure.",
"PARAM": "params (Dict) - Plugin parameters.",
"RETURN": "Dict - Dataset structure."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "SearchPluginModule",
"type": "Module",
"start_line": 1,
"end_line": 202,
"tags": {
"SEMANTICS": "plugin, search, datasets, regex, superset",
"PURPOSE": "Implements a plugin for searching text patterns across all datasets in a specific Superset environment.",
"LAYER": "Plugins",
"RELATION": "Inherits from PluginBase. Uses SupersetClient from core.",
"CONSTRAINT": "Must use belief_scope for logging."
},
"relations": [],
"children": [
{
"name": "SearchPlugin",
"type": "Class",
"start_line": 16,
"end_line": 201,
"tags": {
"PURPOSE": "Plugin for searching text patterns in Superset datasets."
},
"relations": [],
"children": [
{
"name": "id",
"type": "Function",
"start_line": 24,
"end_line": 32,
"tags": {
"PURPOSE": "Returns the unique identifier for the search plugin.",
"PRE": "Plugin instance exists.",
"POST": "Returns string ID.",
"RETURN": "str - \"search-datasets\""
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "name",
"type": "Function",
"start_line": 35,
"end_line": 43,
"tags": {
"PURPOSE": "Returns the human-readable name of the search plugin.",
"PRE": "Plugin instance exists.",
"POST": "Returns string name.",
"RETURN": "str - Plugin name."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "description",
"type": "Function",
"start_line": 46,
"end_line": 54,
"tags": {
"PURPOSE": "Returns a description of the search plugin.",
"PRE": "Plugin instance exists.",
"POST": "Returns string description.",
"RETURN": "str - Plugin description."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "version",
"type": "Function",
"start_line": 57,
"end_line": 65,
"tags": {
"PURPOSE": "Returns the version of the search plugin.",
"PRE": "Plugin instance exists.",
"POST": "Returns string version.",
"RETURN": "str - \"1.0.0\""
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_schema",
"type": "Function",
"start_line": 67,
"end_line": 90,
"tags": {
"PURPOSE": "Returns the JSON schema for the search plugin parameters.",
"PRE": "Plugin instance exists.",
"POST": "Returns dictionary schema.",
"RETURN": "Dict[str, Any] - JSON schema."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "execute",
"type": "Function",
"start_line": 92,
"end_line": 161,
"tags": {
"PURPOSE": "Executes the dataset search logic.",
"PARAM": "params (Dict[str, Any]) - Search parameters.",
"PRE": "Params contain valid 'env' and 'query'.",
"POST": "Returns a dictionary with count and results list.",
"RETURN": "Dict[str, Any] - Search results."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "_get_context",
"type": "Function",
"start_line": 163,
"end_line": 199,
"tags": {
"PURPOSE": "Extracts a small context around the match for display.",
"PARAM": "context_lines (int) - Number of lines of context to include.",
"PRE": "text and match_text must be strings.",
"POST": "Returns context string.",
"RETURN": "str - Extracted context."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "MapperPluginModule",
"type": "Module",
"start_line": 1,
"end_line": 195,
"tags": {
"SEMANTICS": "plugin, mapper, datasets, postgresql, excel",
"PURPOSE": "Implements a plugin for mapping dataset columns using external database connections or Excel files.",
"LAYER": "Plugins",
"RELATION": "Inherits from PluginBase. Uses DatasetMapper from superset_tool.",
"CONSTRAINT": "Must use belief_scope for logging."
},
"relations": [],
"children": [
{
"name": "MapperPlugin",
"type": "Class",
"start_line": 18,
"end_line": 194,
"tags": {
"PURPOSE": "Plugin for mapping dataset columns verbose names."
},
"relations": [],
"children": [
{
"name": "id",
"type": "Function",
"start_line": 26,
"end_line": 34,
"tags": {
"PURPOSE": "Returns the unique identifier for the mapper plugin.",
"PRE": "Plugin instance exists.",
"POST": "Returns string ID.",
"RETURN": "str - \"dataset-mapper\""
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "name",
"type": "Function",
"start_line": 37,
"end_line": 45,
"tags": {
"PURPOSE": "Returns the human-readable name of the mapper plugin.",
"PRE": "Plugin instance exists.",
"POST": "Returns string name.",
"RETURN": "str - Plugin name."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "description",
"type": "Function",
"start_line": 48,
"end_line": 56,
"tags": {
"PURPOSE": "Returns a description of the mapper plugin.",
"PRE": "Plugin instance exists.",
"POST": "Returns string description.",
"RETURN": "str - Plugin description."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "version",
"type": "Function",
"start_line": 59,
"end_line": 67,
"tags": {
"PURPOSE": "Returns the version of the mapper plugin.",
"PRE": "Plugin instance exists.",
"POST": "Returns string version.",
"RETURN": "str - \"1.0.0\""
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_schema",
"type": "Function",
"start_line": 69,
"end_line": 119,
"tags": {
"PURPOSE": "Returns the JSON schema for the mapper plugin parameters.",
"PRE": "Plugin instance exists.",
"POST": "Returns dictionary schema.",
"RETURN": "Dict[str, Any] - JSON schema."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "execute",
"type": "Function",
"start_line": 121,
"end_line": 192,
"tags": {
"PURPOSE": "Executes the dataset mapping logic.",
"PARAM": "params (Dict[str, Any]) - Mapping parameters.",
"PRE": "Params contain valid 'env', 'dataset_id', and 'source'. params must be a dictionary.",
"POST": "Updates the dataset in Superset.",
"RETURN": "Dict[str, Any] - Execution status."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "MigrationPlugin",
"type": "Module",
"start_line": 1,
"end_line": 387,
"tags": {
"SEMANTICS": "migration, superset, automation, dashboard, plugin",
"PURPOSE": "A plugin that provides functionality to migrate Superset dashboards between environments.",
"LAYER": "App"
},
"relations": [
{
"type": "IMPLEMENTS",
"target": "PluginBase"
},
{
"type": "DEPENDS_ON",
"target": "superset_tool.client"
},
{
"type": "DEPENDS_ON",
"target": "superset_tool.utils"
}
],
"children": [
{
"name": "MigrationPlugin",
"type": "Class",
"start_line": 23,
"end_line": 386,
"tags": {
"PURPOSE": "Implementation of the migration plugin logic."
},
"relations": [],
"children": [
{
"name": "id",
"type": "Function",
"start_line": 31,
"end_line": 39,
"tags": {
"PURPOSE": "Returns the unique identifier for the migration plugin.",
"PRE": "None.",
"POST": "Returns \"superset-migration\".",
"RETURN": "str - \"superset-migration\""
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "name",
"type": "Function",
"start_line": 42,
"end_line": 50,
"tags": {
"PURPOSE": "Returns the human-readable name of the migration plugin.",
"PRE": "None.",
"POST": "Returns the plugin name.",
"RETURN": "str - Plugin name."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "description",
"type": "Function",
"start_line": 53,
"end_line": 61,
"tags": {
"PURPOSE": "Returns a description of the migration plugin.",
"PRE": "None.",
"POST": "Returns the plugin description.",
"RETURN": "str - Plugin description."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "version",
"type": "Function",
"start_line": 64,
"end_line": 72,
"tags": {
"PURPOSE": "Returns the version of the migration plugin.",
"PRE": "None.",
"POST": "Returns \"1.0.0\".",
"RETURN": "str - \"1.0.0\""
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "get_schema",
"type": "Function",
"start_line": 74,
"end_line": 123,
"tags": {
"PURPOSE": "Returns the JSON schema for migration plugin parameters.",
"PRE": "Config manager is available.",
"POST": "Returns a valid JSON schema dictionary.",
"RETURN": "Dict[str, Any] - JSON schema."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "execute",
"type": "Function",
"start_line": 125,
"end_line": 385,
"tags": {
"PURPOSE": "Executes the dashboard migration logic.",
"PARAM": "params (Dict[str, Any]) - Migration parameters.",
"PRE": "Source and target environments must be configured.",
"POST": "Selected dashboards are migrated."
},
"relations": [],
"children": [
{
"name": "MigrationPlugin.execute",
"type": "Action",
"start_line": 145,
"end_line": 384,
"tags": {
"PURPOSE": "Execute the migration logic with proper task logging."
},
"relations": [],
"children": [
{
"name": "__init__",
"type": "Function",
"start_line": 152,
"end_line": 160,
"tags": {
"PURPOSE": "Initializes the proxy logger.",
"PRE": "None.",
"POST": "Instance is initialized."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "debug",
"type": "Function",
"start_line": 162,
"end_line": 169,
"tags": {
"PURPOSE": "Logs a debug message to the task manager.",
"PRE": "msg is a string.",
"POST": "Log is added to task manager if task_id exists."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "info",
"type": "Function",
"start_line": 171,
"end_line": 178,
"tags": {
"PURPOSE": "Logs an info message to the task manager.",
"PRE": "msg is a string.",
"POST": "Log is added to task manager if task_id exists."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "warning",
"type": "Function",
"start_line": 180,
"end_line": 187,
"tags": {
"PURPOSE": "Logs a warning message to the task manager.",
"PRE": "msg is a string.",
"POST": "Log is added to task manager if task_id exists."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "error",
"type": "Function",
"start_line": 189,
"end_line": 196,
"tags": {
"PURPOSE": "Logs an error message to the task manager.",
"PRE": "msg is a string.",
"POST": "Log is added to task manager if task_id exists."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "critical",
"type": "Function",
"start_line": 198,
"end_line": 205,
"tags": {
"PURPOSE": "Logs a critical message to the task manager.",
"PRE": "msg is a string.",
"POST": "Log is added to task manager if task_id exists."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "exception",
"type": "Function",
"start_line": 207,
"end_line": 214,
"tags": {
"PURPOSE": "Logs an exception message to the task manager.",
"PRE": "msg is a string.",
"POST": "Log is added to task manager if task_id exists."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
}
],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "test_environment_model",
"type": "Function",
"start_line": 5,
"end_line": null,
"tags": {
"PURPOSE": "Tests that Environment model correctly stores values.",
"PRE": "Environment class is available.",
"POST": "Values are verified."
},
"relations": [],
"children": [],
"compliance": {
"valid": false,
"issues": [
"Unclosed Anchor at end of file (started line 5)",
"Unclosed Anchor: [DEF:test_environment_model:Function] started at line 5"
]
}
},
{
"name": "test_belief_scope_logs_entry_action_exit",
"type": "Function",
"start_line": 5,
"end_line": 22,
"tags": {
"PURPOSE": "Test that belief_scope generates [ID][Entry], [ID][Action], and [ID][Exit] logs.",
"PRE": "belief_scope is available. caplog fixture is used.",
"POST": "Logs are verified to contain Entry, Action, and Exit tags."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "test_belief_scope_error_handling",
"type": "Function",
"start_line": 25,
"end_line": 42,
"tags": {
"PURPOSE": "Test that belief_scope logs Coherence:Failed on exception.",
"PRE": "belief_scope is available. caplog fixture is used.",
"POST": "Logs are verified to contain Coherence:Failed tag."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
},
{
"name": "test_belief_scope_success_coherence",
"type": "Function",
"start_line": 45,
"end_line": 59,
"tags": {
"PURPOSE": "Test that belief_scope logs Coherence:OK on success.",
"PRE": "belief_scope is available. caplog fixture is used.",
"POST": "Logs are verified to contain Coherence:OK tag."
},
"relations": [],
"children": [],
"compliance": {
"valid": true,
"issues": []
}
}
]
}