semantics update

This commit is contained in:
2026-01-13 09:11:27 +03:00
parent 9a9c5879e6
commit ae1d630ad6
21 changed files with 4389 additions and 3471 deletions

5
.gitignore vendored
View File

@@ -29,7 +29,7 @@ env/
backend/backups/* backend/backups/*
# Node.js # Node.js
node_modules/ frontend/node_modules/
npm-debug.log* npm-debug.log*
yarn-debug.log* yarn-debug.log*
yarn-error.log* yarn-error.log*
@@ -39,6 +39,7 @@ build/
dist/ dist/
.env* .env*
config.json config.json
package-lock.json
# Logs # Logs
*.log *.log
@@ -62,3 +63,5 @@ keyring passwords.py
*tech_spec* *tech_spec*
dashboards dashboards
backend/mappings.db backend/mappings.db

15
.kilocode/mcp.json Executable file → Normal file
View File

@@ -1,14 +1 @@
{ {"mcpServers":{"tavily":{"command":"npx","args":["-y","tavily-mcp@0.2.3"],"env":{"TAVILY_API_KEY":"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"},"alwaysAllow":[]}}}
"mcpServers": {
"tavily": {
"command": "npx",
"args": [
"-y",
"tavily-mcp@0.2.3"
],
"env": {
"TAVILY_API_KEY": "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"
}
}
}
}

Binary file not shown.

View File

@@ -41,3 +41,5 @@ tzlocal==5.3.1
urllib3==2.6.2 urllib3==2.6.2
uvicorn==0.38.0 uvicorn==0.38.0
websockets==15.0.1 websockets==15.0.1
pandas
psycopg2-binary

View File

@@ -6,7 +6,7 @@
# @CONSTRAINT: Must use belief_scope for logging. # @CONSTRAINT: Must use belief_scope for logging.
# [SECTION: IMPORTS] # [SECTION: IMPORTS]
from typing import List from typing import List, Optional
from fastapi import APIRouter, Depends, HTTPException, status from fastapi import APIRouter, Depends, HTTPException, status
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from ...core.database import get_db from ...core.database import get_db
@@ -19,6 +19,7 @@ from ...core.logger import logger, belief_scope
router = APIRouter() router = APIRouter()
# [DEF:ConnectionSchema:Class] # [DEF:ConnectionSchema:Class]
# @PURPOSE: Pydantic model for connection response.
class ConnectionSchema(BaseModel): class ConnectionSchema(BaseModel):
id: str id: str
name: str name: str
@@ -31,8 +32,10 @@ class ConnectionSchema(BaseModel):
class Config: class Config:
orm_mode = True orm_mode = True
# [/DEF:ConnectionSchema:Class]
# [DEF:ConnectionCreate:Class] # [DEF:ConnectionCreate:Class]
# @PURPOSE: Pydantic model for creating a connection.
class ConnectionCreate(BaseModel): class ConnectionCreate(BaseModel):
name: str name: str
type: str type: str
@@ -41,17 +44,28 @@ class ConnectionCreate(BaseModel):
database: Optional[str] = None database: Optional[str] = None
username: Optional[str] = None username: Optional[str] = None
password: Optional[str] = None password: Optional[str] = None
# [/DEF:ConnectionCreate:Class]
from typing import Optional
# [DEF:list_connections:Function] # [DEF:list_connections:Function]
# @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.
@router.get("", response_model=List[ConnectionSchema]) @router.get("", response_model=List[ConnectionSchema])
async def list_connections(db: Session = Depends(get_db)): async def list_connections(db: Session = Depends(get_db)):
with belief_scope("ConnectionsRouter.list_connections"): with belief_scope("ConnectionsRouter.list_connections"):
connections = db.query(ConnectionConfig).all() connections = db.query(ConnectionConfig).all()
return connections return connections
# [/DEF:list_connections:Function]
# [DEF:create_connection:Function] # [DEF:create_connection:Function]
# @PURPOSE: Creates a new connection configuration.
# @PRE: Connection name is unique.
# @POST: Connection is saved to DB.
# @PARAM: connection (ConnectionCreate) - Config data.
# @PARAM: db (Session) - Database session.
# @RETURN: ConnectionSchema - Created connection.
@router.post("", response_model=ConnectionSchema, status_code=status.HTTP_201_CREATED) @router.post("", response_model=ConnectionSchema, status_code=status.HTTP_201_CREATED)
async def create_connection(connection: ConnectionCreate, db: Session = Depends(get_db)): async def create_connection(connection: ConnectionCreate, db: Session = Depends(get_db)):
with belief_scope("ConnectionsRouter.create_connection", f"name={connection.name}"): with belief_scope("ConnectionsRouter.create_connection", f"name={connection.name}"):
@@ -61,8 +75,15 @@ async def create_connection(connection: ConnectionCreate, db: Session = Depends(
db.refresh(db_connection) db.refresh(db_connection)
logger.info(f"[ConnectionsRouter.create_connection][Success] Created connection {db_connection.id}") logger.info(f"[ConnectionsRouter.create_connection][Success] Created connection {db_connection.id}")
return db_connection return db_connection
# [/DEF:create_connection:Function]
# [DEF:delete_connection:Function] # [DEF:delete_connection:Function]
# @PURPOSE: Deletes a connection configuration.
# @PRE: Connection ID exists.
# @POST: Connection is removed from DB.
# @PARAM: connection_id (str) - ID to delete.
# @PARAM: db (Session) - Database session.
# @RETURN: None.
@router.delete("/{connection_id}", status_code=status.HTTP_204_NO_CONTENT) @router.delete("/{connection_id}", status_code=status.HTTP_204_NO_CONTENT)
async def delete_connection(connection_id: str, db: Session = Depends(get_db)): async def delete_connection(connection_id: str, db: Session = Depends(get_db)):
with belief_scope("ConnectionsRouter.delete_connection", f"id={connection_id}"): with belief_scope("ConnectionsRouter.delete_connection", f"id={connection_id}"):
@@ -74,5 +95,6 @@ async def delete_connection(connection_id: str, db: Session = Depends(get_db)):
db.commit() db.commit()
logger.info(f"[ConnectionsRouter.delete_connection][Success] Deleted connection {connection_id}") logger.info(f"[ConnectionsRouter.delete_connection][Success] Deleted connection {connection_id}")
return return
# [/DEF:delete_connection:Function]
# [/DEF:ConnectionsRouter:Module] # [/DEF:ConnectionsRouter:Module]

View File

@@ -11,7 +11,7 @@ from ...dependencies import get_plugin_loader
router = APIRouter() router = APIRouter()
@router.get("/", response_model=List[PluginConfig]) @router.get("", response_model=List[PluginConfig])
async def list_plugins( async def list_plugins(
plugin_loader = Depends(get_plugin_loader) plugin_loader = Depends(get_plugin_loader)
): ):

View File

@@ -11,7 +11,7 @@ from pathlib import Path
project_root = Path(__file__).resolve().parent.parent.parent project_root = Path(__file__).resolve().parent.parent.parent
sys.path.append(str(project_root)) sys.path.append(str(project_root))
from fastapi import FastAPI, WebSocket, WebSocketDisconnect, Depends, Request from fastapi import FastAPI, WebSocket, WebSocketDisconnect, Depends, Request, HTTPException
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles from fastapi.staticfiles import StaticFiles
from fastapi.responses import FileResponse from fastapi.responses import FileResponse
@@ -138,6 +138,10 @@ if frontend_path.exists():
# Serve other static files from the root of build directory # Serve other static files from the root of build directory
@app.get("/{file_path:path}") @app.get("/{file_path:path}")
async def serve_spa(file_path: str): async def serve_spa(file_path: str):
# Don't serve SPA for API routes that fell through
if file_path.startswith("api/"):
raise HTTPException(status_code=404, detail="API endpoint not found")
full_path = frontend_path / file_path full_path = frontend_path / file_path
if full_path.is_file(): if full_path.is_file():
return FileResponse(str(full_path)) return FileResponse(str(full_path))

View File

@@ -87,6 +87,11 @@ class DebugPlugin(PluginBase):
# [/DEF:DebugPlugin.execute:Function] # [/DEF:DebugPlugin.execute:Function]
# [DEF:DebugPlugin._test_db_api:Function] # [DEF:DebugPlugin._test_db_api:Function]
# @PURPOSE: Tests database API connectivity for source and target environments.
# @PRE: source_env and target_env params exist.
# @POST: Returns DB counts for both envs.
# @PARAM: params (Dict) - Plugin parameters.
# @RETURN: Dict - Comparison results.
async def _test_db_api(self, params: Dict[str, Any]) -> Dict[str, Any]: async def _test_db_api(self, params: Dict[str, Any]) -> Dict[str, Any]:
source_env_name = params.get("source_env") source_env_name = params.get("source_env")
target_env_name = params.get("target_env") target_env_name = params.get("target_env")
@@ -112,8 +117,14 @@ class DebugPlugin(PluginBase):
} }
return results return results
# [/DEF:DebugPlugin._test_db_api:Function]
# [DEF:DebugPlugin._get_dataset_structure:Function] # [DEF:DebugPlugin._get_dataset_structure:Function]
# @PURPOSE: Retrieves the structure of a dataset.
# @PRE: env and dataset_id params exist.
# @POST: Returns dataset JSON structure.
# @PARAM: params (Dict) - Plugin parameters.
# @RETURN: Dict - Dataset structure.
async def _get_dataset_structure(self, params: Dict[str, Any]) -> Dict[str, Any]: async def _get_dataset_structure(self, params: Dict[str, Any]) -> Dict[str, Any]:
env_name = params.get("env") env_name = params.get("env")
dataset_id = params.get("dataset_id") dataset_id = params.get("dataset_id")
@@ -132,6 +143,7 @@ class DebugPlugin(PluginBase):
dataset_response = client.get_dataset(dataset_id) dataset_response = client.get_dataset(dataset_id)
return dataset_response.get('result') or {} return dataset_response.get('result') or {}
# [/DEF:DebugPlugin._get_dataset_structure:Function]
# [/DEF:DebugPlugin:Class] # [/DEF:DebugPlugin:Class]
# [/DEF:DebugPluginModule:Module] # [/DEF:DebugPluginModule:Module]

Binary file not shown.

View File

@@ -912,7 +912,6 @@
"integrity": "sha512-Vp3zX/qlwerQmHMP6x0Ry1oY7eKKRcOWGc2P59srOp4zcqyn+etJyQpELgOi4+ZSUgteX8Y387NuwruLgGXLUQ==", "integrity": "sha512-Vp3zX/qlwerQmHMP6x0Ry1oY7eKKRcOWGc2P59srOp4zcqyn+etJyQpELgOi4+ZSUgteX8Y387NuwruLgGXLUQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@standard-schema/spec": "^1.0.0", "@standard-schema/spec": "^1.0.0",
"@sveltejs/acorn-typescript": "^1.0.5", "@sveltejs/acorn-typescript": "^1.0.5",
@@ -952,7 +951,6 @@
"integrity": "sha512-YZs/OSKOQAQCnJvM/P+F1URotNnYNeU3P2s4oIpzm1uFaqUEqRxUB0g5ejMjEb5Gjb9/PiBI5Ktrq4rUUF8UVQ==", "integrity": "sha512-YZs/OSKOQAQCnJvM/P+F1URotNnYNeU3P2s4oIpzm1uFaqUEqRxUB0g5ejMjEb5Gjb9/PiBI5Ktrq4rUUF8UVQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@sveltejs/vite-plugin-svelte-inspector": "^5.0.0", "@sveltejs/vite-plugin-svelte-inspector": "^5.0.0",
"debug": "^4.4.1", "debug": "^4.4.1",
@@ -1006,7 +1004,6 @@
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"bin": { "bin": {
"acorn": "bin/acorn" "acorn": "bin/acorn"
}, },
@@ -1155,7 +1152,6 @@
} }
], ],
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"baseline-browser-mapping": "^2.9.0", "baseline-browser-mapping": "^2.9.0",
"caniuse-lite": "^1.0.30001759", "caniuse-lite": "^1.0.30001759",
@@ -1613,7 +1609,6 @@
"integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"bin": { "bin": {
"jiti": "bin/jiti.js" "jiti": "bin/jiti.js"
} }
@@ -1851,7 +1846,6 @@
} }
], ],
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"nanoid": "^3.3.11", "nanoid": "^3.3.11",
"picocolors": "^1.1.1", "picocolors": "^1.1.1",
@@ -2224,7 +2218,6 @@
"integrity": "sha512-ZhLtvroYxUxr+HQJfMZEDRsGsmU46x12RvAv/zi9584f5KOX7bUrEbhPJ7cKFmUvZTJXi/CFZUYwDC6M1FigPw==", "integrity": "sha512-ZhLtvroYxUxr+HQJfMZEDRsGsmU46x12RvAv/zi9584f5KOX7bUrEbhPJ7cKFmUvZTJXi/CFZUYwDC6M1FigPw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@jridgewell/remapping": "^2.3.4", "@jridgewell/remapping": "^2.3.4",
"@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/sourcemap-codec": "^1.5.0",
@@ -2348,7 +2341,6 @@
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"engines": { "engines": {
"node": ">=12" "node": ">=12"
}, },
@@ -2430,7 +2422,6 @@
"integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==", "integrity": "sha512-dZwN5L1VlUBewiP6H9s2+B3e3Jg96D0vzN+Ry73sOefebhYr9f94wwkMNN/9ouoU8pV1BqA1d1zGk8928cx0rg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"esbuild": "^0.27.0", "esbuild": "^0.27.0",
"fdir": "^6.5.0", "fdir": "^6.5.0",
@@ -2524,7 +2515,6 @@
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"engines": { "engines": {
"node": ">=12" "node": ">=12"
}, },

View File

@@ -45,6 +45,7 @@
isSubmitting = false; isSubmitting = false;
} }
} }
// [/DEF:handleSubmit:Function]
function resetForm() { function resetForm() {
name = ''; name = '';

View File

@@ -29,6 +29,7 @@
isLoading = false; isLoading = false;
} }
} }
// [/DEF:fetchConnections:Function]
// [DEF:handleDelete:Function] // [DEF:handleDelete:Function]
// @PURPOSE: Deletes a connection configuration. // @PURPOSE: Deletes a connection configuration.
@@ -43,6 +44,7 @@
addToast(e.message, 'error'); addToast(e.message, 'error');
} }
} }
// [/DEF:handleDelete:Function]
onMount(fetchConnections); onMount(fetchConnections);

View File

@@ -23,6 +23,13 @@
let results = null; let results = null;
let pollInterval; let pollInterval;
// [DEF:fetchEnvironments:Function]
/**
* @purpose Fetches available environments.
* @pre API is available.
* @post envs variable is populated.
* @returns {Promise<void>}
*/
async function fetchEnvironments() { async function fetchEnvironments() {
try { try {
const res = await fetch('/api/environments'); const res = await fetch('/api/environments');
@@ -31,7 +38,15 @@
addToast('Failed to fetch environments', 'error'); addToast('Failed to fetch environments', 'error');
} }
} }
// [/DEF:fetchEnvironments:Function]
// [DEF:handleRunDebug:Function]
/**
* @purpose Triggers the debug task.
* @pre Required fields are selected.
* @post Task is started and polling begins.
* @returns {Promise<void>}
*/
async function handleRunDebug() { async function handleRunDebug() {
isRunning = true; isRunning = true;
results = null; results = null;
@@ -66,7 +81,16 @@
addToast(e.message, 'error'); addToast(e.message, 'error');
} }
} }
// [/DEF:handleRunDebug:Function]
// [DEF:startPolling:Function]
/**
* @purpose Polls for task completion.
* @pre Task ID is valid.
* @post Polls until success/failure.
* @param {string} taskId - ID of the task.
* @returns {void}
*/
function startPolling(taskId) { function startPolling(taskId) {
if (pollInterval) clearInterval(pollInterval); if (pollInterval) clearInterval(pollInterval);
pollInterval = setInterval(async () => { pollInterval = setInterval(async () => {
@@ -89,6 +113,7 @@
} }
}, 2000); }, 2000);
} }
// [/DEF:startPolling:Function]
onMount(fetchEnvironments); onMount(fetchEnvironments);
</script> </script>
@@ -161,4 +186,5 @@
</div> </div>
</div> </div>
{/if} {/if}
</div> </div>
<!-- [/DEF:DebugTool:Component] -->

View File

@@ -37,6 +37,7 @@
addToast('Failed to fetch data', 'error'); addToast('Failed to fetch data', 'error');
} }
} }
// [/DEF:fetchData:Function]
// [DEF:handleRunMapper:Function] // [DEF:handleRunMapper:Function]
// @PURPOSE: Triggers the MapperPlugin task. // @PURPOSE: Triggers the MapperPlugin task.
@@ -77,6 +78,7 @@
isRunning = false; isRunning = false;
} }
} }
// [/DEF:handleRunMapper:Function]
onMount(fetchData); onMount(fetchData);
</script> </script>

View File

@@ -30,6 +30,7 @@
addToast('Failed to fetch environments', 'error'); addToast('Failed to fetch environments', 'error');
} }
} }
// [/DEF:fetchEnvironments:Function]
// [DEF:handleSearch:Function] // [DEF:handleSearch:Function]
// @PURPOSE: Triggers the SearchPlugin task. // @PURPOSE: Triggers the SearchPlugin task.
@@ -56,6 +57,7 @@
addToast(e.message, 'error'); addToast(e.message, 'error');
} }
} }
// [/DEF:handleSearch:Function]
// [DEF:startPolling:Function] // [DEF:startPolling:Function]
// @PURPOSE: Polls for task completion and results. // @PURPOSE: Polls for task completion and results.
@@ -84,6 +86,7 @@
} }
}, 2000); }, 2000);
} }
// [/DEF:startPolling:Function]
onMount(fetchEnvironments); onMount(fetchEnvironments);
</script> </script>

View File

@@ -0,0 +1,98 @@
# Semantic Compliance Report
**Generated At:** 2026-01-12T21:16:07.922245
**Global Compliance Score:** 90.4%
**Scanned Files:** 80
## Critical Parsing Errors
- 🔴 frontend/src/components/tools/ConnectionForm.svelte:99 Mismatched closing anchor. Expected [/DEF:handleSubmit:Function], found [/DEF:ConnectionForm:Component].
- 🔴 frontend/src/components/tools/ConnectionList.svelte:82 Mismatched closing anchor. Expected [/DEF:handleDelete:Function], found [/DEF:ConnectionList:Component].
- 🔴 frontend/src/components/tools/MapperTool.svelte:159 Mismatched closing anchor. Expected [/DEF:handleRunMapper:Function], found [/DEF:MapperTool:Component].
- 🔴 frontend/src/components/tools/SearchTool.svelte:177 Mismatched closing anchor. Expected [/DEF:startPolling:Function], found [/DEF:SearchTool:Component].
- 🔴 backend/src/api/routes/connections.py:76 Mismatched closing anchor. Expected [/DEF:delete_connection:Function], found [/DEF:ConnectionsRouter:Module].
- 🔴 backend/src/plugins/debug.py:136 Mismatched closing anchor. Expected [/DEF:DebugPlugin._get_dataset_structure:Function], found [/DEF:DebugPlugin:Class].
- 🔴 backend/src/plugins/debug.py:137 Mismatched closing anchor. Expected [/DEF:DebugPlugin._get_dataset_structure:Function], found [/DEF:DebugPluginModule:Module].
## File Compliance Status
| File | Score | Issues |
|------|-------|--------|
| frontend/.svelte-kit/output/server/entries/pages/migration/_page.svelte.js | 🔴 0% | [handleSort] Unclosed Anchor at end of file (started line 65)<br>[handleSort] Unclosed Anchor: [DEF:handleSort:Function] started at line 65<br>[handleSelectionChange] Unclosed Anchor at end of file (started line 68)<br>[handleSelectionChange] Unclosed Anchor: [DEF:handleSelectionChange:Function] started at line 68<br>[handleSelectionChange] Unclosed Anchor: [DEF:handleSelectionChange:Function] started at line 68<br>[handleSelectAll] Unclosed Anchor at end of file (started line 71)<br>[handleSelectAll] Unclosed Anchor: [DEF:handleSelectAll:Function] started at line 71<br>[handleSelectAll] Unclosed Anchor: [DEF:handleSelectAll:Function] started at line 71<br>[handleSelectAll] Unclosed Anchor: [DEF:handleSelectAll:Function] started at line 71<br>[goToPage] Unclosed Anchor at end of file (started line 74)<br>[goToPage] Unclosed Anchor: [DEF:goToPage:Function] started at line 74<br>[goToPage] Unclosed Anchor: [DEF:goToPage:Function] started at line 74<br>[goToPage] Unclosed Anchor: [DEF:goToPage:Function] started at line 74<br>[goToPage] Unclosed Anchor: [DEF:goToPage:Function] started at line 74 |
| frontend/src/components/tools/ConnectionForm.svelte | 🔴 0% | [ConnectionForm] Unclosed Anchor at end of file (started line 1)<br>[ConnectionForm] Unclosed Anchor: [DEF:ConnectionForm:Component] started at line 1<br>[handleSubmit] Unclosed Anchor at end of file (started line 26)<br>[handleSubmit] Unclosed Anchor: [DEF:handleSubmit:Function] started at line 26<br>[handleSubmit] Unclosed Anchor: [DEF:handleSubmit:Function] started at line 26 |
| frontend/src/components/tools/ConnectionList.svelte | 🔴 0% | [ConnectionList] Unclosed Anchor at end of file (started line 1)<br>[ConnectionList] Unclosed Anchor: [DEF:ConnectionList:Component] started at line 1<br>[fetchConnections] Unclosed Anchor at end of file (started line 20)<br>[fetchConnections] Unclosed Anchor: [DEF:fetchConnections:Function] started at line 20<br>[fetchConnections] Unclosed Anchor: [DEF:fetchConnections:Function] started at line 20<br>[handleDelete] Unclosed Anchor at end of file (started line 33)<br>[handleDelete] Unclosed Anchor: [DEF:handleDelete:Function] started at line 33<br>[handleDelete] Unclosed Anchor: [DEF:handleDelete:Function] started at line 33<br>[handleDelete] Unclosed Anchor: [DEF:handleDelete:Function] started at line 33 |
| frontend/src/components/tools/MapperTool.svelte | 🔴 0% | [MapperTool] Unclosed Anchor at end of file (started line 1)<br>[MapperTool] Unclosed Anchor: [DEF:MapperTool:Component] started at line 1<br>[fetchData] Unclosed Anchor at end of file (started line 29)<br>[fetchData] Unclosed Anchor: [DEF:fetchData:Function] started at line 29<br>[fetchData] Unclosed Anchor: [DEF:fetchData:Function] started at line 29<br>[handleRunMapper] Unclosed Anchor at end of file (started line 41)<br>[handleRunMapper] Unclosed Anchor: [DEF:handleRunMapper:Function] started at line 41<br>[handleRunMapper] Unclosed Anchor: [DEF:handleRunMapper:Function] started at line 41<br>[handleRunMapper] Unclosed Anchor: [DEF:handleRunMapper:Function] started at line 41 |
| frontend/src/components/tools/DebugTool.svelte | 🔴 0% | [DebugTool] Unclosed Anchor at end of file (started line 1)<br>[DebugTool] Unclosed Anchor: [DEF:DebugTool:Component] started at line 1 |
| frontend/src/components/tools/SearchTool.svelte | 🔴 0% | [SearchTool] Unclosed Anchor at end of file (started line 1)<br>[SearchTool] Unclosed Anchor: [DEF:SearchTool:Component] started at line 1<br>[fetchEnvironments] Unclosed Anchor at end of file (started line 23)<br>[fetchEnvironments] Unclosed Anchor: [DEF:fetchEnvironments:Function] started at line 23<br>[fetchEnvironments] Unclosed Anchor: [DEF:fetchEnvironments:Function] started at line 23<br>[handleSearch] Unclosed Anchor at end of file (started line 34)<br>[handleSearch] Unclosed Anchor: [DEF:handleSearch:Function] started at line 34<br>[handleSearch] Unclosed Anchor: [DEF:handleSearch:Function] started at line 34<br>[handleSearch] Unclosed Anchor: [DEF:handleSearch:Function] started at line 34<br>[startPolling] Unclosed Anchor at end of file (started line 60)<br>[startPolling] Unclosed Anchor: [DEF:startPolling:Function] started at line 60<br>[startPolling] Unclosed Anchor: [DEF:startPolling:Function] started at line 60<br>[startPolling] Unclosed Anchor: [DEF:startPolling:Function] started at line 60<br>[startPolling] Unclosed Anchor: [DEF:startPolling:Function] started at line 60 |
| backend/src/api/routes/connections.py | 🔴 0% | [ConnectionsRouter] Unclosed Anchor at end of file (started line 1)<br>[ConnectionsRouter] Unclosed Anchor: [DEF:ConnectionsRouter:Module] started at line 1<br>[ConnectionSchema] Unclosed Anchor at end of file (started line 21)<br>[ConnectionSchema] Unclosed Anchor: [DEF:ConnectionSchema:Class] started at line 21<br>[ConnectionSchema] Missing Mandatory Tag: @PURPOSE<br>[ConnectionSchema] Unclosed Anchor: [DEF:ConnectionSchema:Class] started at line 21<br>[ConnectionSchema] Missing Mandatory Tag: @PURPOSE<br>[ConnectionCreate] Unclosed Anchor at end of file (started line 35)<br>[ConnectionCreate] Unclosed Anchor: [DEF:ConnectionCreate:Class] started at line 35<br>[ConnectionCreate] Missing Mandatory Tag: @PURPOSE<br>[ConnectionCreate] Unclosed Anchor: [DEF:ConnectionCreate:Class] started at line 35<br>[ConnectionCreate] Missing Mandatory Tag: @PURPOSE<br>[ConnectionCreate] Unclosed Anchor: [DEF:ConnectionCreate:Class] started at line 35<br>[ConnectionCreate] Missing Mandatory Tag: @PURPOSE<br>[list_connections] Unclosed Anchor at end of file (started line 45)<br>[list_connections] Unclosed Anchor: [DEF:list_connections:Function] started at line 45<br>[list_connections] Missing Mandatory Tag: @PURPOSE<br>[list_connections] Unclosed Anchor: [DEF:list_connections:Function] started at line 45<br>[list_connections] Missing Mandatory Tag: @PURPOSE<br>[list_connections] Unclosed Anchor: [DEF:list_connections:Function] started at line 45<br>[list_connections] Missing Mandatory Tag: @PURPOSE<br>[list_connections] Unclosed Anchor: [DEF:list_connections:Function] started at line 45<br>[list_connections] Missing Mandatory Tag: @PURPOSE<br>[create_connection] Unclosed Anchor at end of file (started line 52)<br>[create_connection] Unclosed Anchor: [DEF:create_connection:Function] started at line 52<br>[create_connection] Missing Mandatory Tag: @PURPOSE<br>[create_connection] Unclosed Anchor: [DEF:create_connection:Function] started at line 52<br>[create_connection] Missing Mandatory Tag: @PURPOSE<br>[create_connection] Unclosed Anchor: [DEF:create_connection:Function] started at line 52<br>[create_connection] Missing Mandatory Tag: @PURPOSE<br>[create_connection] Unclosed Anchor: [DEF:create_connection:Function] started at line 52<br>[create_connection] Missing Mandatory Tag: @PURPOSE<br>[create_connection] Unclosed Anchor: [DEF:create_connection:Function] started at line 52<br>[create_connection] Missing Mandatory Tag: @PURPOSE<br>[delete_connection] Unclosed Anchor at end of file (started line 63)<br>[delete_connection] Unclosed Anchor: [DEF:delete_connection:Function] started at line 63<br>[delete_connection] Missing Mandatory Tag: @PURPOSE<br>[delete_connection] Unclosed Anchor: [DEF:delete_connection:Function] started at line 63<br>[delete_connection] Missing Mandatory Tag: @PURPOSE<br>[delete_connection] Unclosed Anchor: [DEF:delete_connection:Function] started at line 63<br>[delete_connection] Missing Mandatory Tag: @PURPOSE<br>[delete_connection] Unclosed Anchor: [DEF:delete_connection:Function] started at line 63<br>[delete_connection] Missing Mandatory Tag: @PURPOSE<br>[delete_connection] Unclosed Anchor: [DEF:delete_connection:Function] started at line 63<br>[delete_connection] Missing Mandatory Tag: @PURPOSE<br>[delete_connection] Unclosed Anchor: [DEF:delete_connection:Function] started at line 63<br>[delete_connection] Missing Mandatory Tag: @PURPOSE |
| backend/src/plugins/debug.py | 🔴 33% | [DebugPluginModule] Unclosed Anchor at end of file (started line 1)<br>[DebugPluginModule] Unclosed Anchor: [DEF:DebugPluginModule:Module] started at line 1<br>[DebugPlugin] Unclosed Anchor at end of file (started line 15)<br>[DebugPlugin] Unclosed Anchor: [DEF:DebugPlugin:Class] started at line 15<br>[DebugPlugin] Unclosed Anchor: [DEF:DebugPlugin:Class] started at line 15<br>[DebugPlugin._test_db_api] Unclosed Anchor at end of file (started line 89)<br>[DebugPlugin._test_db_api] Unclosed Anchor: [DEF:DebugPlugin._test_db_api:Function] started at line 89<br>[DebugPlugin._test_db_api] Missing Mandatory Tag: @PURPOSE<br>[DebugPlugin._test_db_api] Unclosed Anchor: [DEF:DebugPlugin._test_db_api:Function] started at line 89<br>[DebugPlugin._test_db_api] Missing Mandatory Tag: @PURPOSE<br>[DebugPlugin._test_db_api] Unclosed Anchor: [DEF:DebugPlugin._test_db_api:Function] started at line 89<br>[DebugPlugin._test_db_api] Missing Mandatory Tag: @PURPOSE<br>[DebugPlugin._get_dataset_structure] Unclosed Anchor at end of file (started line 116)<br>[DebugPlugin._get_dataset_structure] Unclosed Anchor: [DEF:DebugPlugin._get_dataset_structure:Function] started at line 116<br>[DebugPlugin._get_dataset_structure] Missing Mandatory Tag: @PURPOSE<br>[DebugPlugin._get_dataset_structure] Unclosed Anchor: [DEF:DebugPlugin._get_dataset_structure:Function] started at line 116<br>[DebugPlugin._get_dataset_structure] Missing Mandatory Tag: @PURPOSE<br>[DebugPlugin._get_dataset_structure] Unclosed Anchor: [DEF:DebugPlugin._get_dataset_structure:Function] started at line 116<br>[DebugPlugin._get_dataset_structure] Missing Mandatory Tag: @PURPOSE<br>[DebugPlugin._get_dataset_structure] Unclosed Anchor: [DEF:DebugPlugin._get_dataset_structure:Function] started at line 116<br>[DebugPlugin._get_dataset_structure] Missing Mandatory Tag: @PURPOSE |
| generate_semantic_map.py | 🟢 100% | OK |
| migration_script.py | 🟢 100% | OK |
| superset_tool/exceptions.py | 🟢 100% | OK |
| superset_tool/models.py | 🟢 100% | OK |
| superset_tool/client.py | 🟢 100% | OK |
| superset_tool/__init__.py | 🟢 100% | OK |
| superset_tool/utils/init_clients.py | 🟢 100% | OK |
| superset_tool/utils/logger.py | 🟢 100% | OK |
| superset_tool/utils/fileio.py | 🟢 100% | OK |
| superset_tool/utils/network.py | 🟢 100% | OK |
| superset_tool/utils/whiptail_fallback.py | 🟢 100% | OK |
| superset_tool/utils/dataset_mapper.py | 🟢 100% | OK |
| superset_tool/utils/__init__.py | 🟢 100% | OK |
| frontend/src/main.js | 🟢 100% | OK |
| frontend/src/App.svelte | 🟢 100% | OK |
| frontend/src/lib/stores.js | 🟢 100% | OK |
| frontend/src/lib/toasts.js | 🟢 100% | OK |
| frontend/src/lib/api.js | 🟢 100% | OK |
| frontend/src/routes/migration/+page.svelte | 🟢 100% | OK |
| frontend/src/routes/migration/mappings/+page.svelte | 🟢 100% | OK |
| frontend/src/routes/tools/search/+page.svelte | 🟢 100% | OK |
| frontend/src/routes/tools/mapper/+page.svelte | 🟢 100% | OK |
| frontend/src/routes/tools/debug/+page.svelte | 🟢 100% | OK |
| frontend/src/routes/settings/connections/+page.svelte | 🟢 100% | OK |
| frontend/src/pages/Dashboard.svelte | 🟢 100% | OK |
| frontend/src/pages/Settings.svelte | 🟢 100% | OK |
| frontend/src/components/PasswordPrompt.svelte | 🟢 100% | OK |
| frontend/src/components/MappingTable.svelte | 🟢 100% | OK |
| frontend/src/components/TaskLogViewer.svelte | 🟢 100% | OK |
| frontend/src/components/Footer.svelte | 🟢 100% | OK |
| frontend/src/components/MissingMappingModal.svelte | 🟢 100% | OK |
| frontend/src/components/DashboardGrid.svelte | 🟢 100% | OK |
| frontend/src/components/Navbar.svelte | 🟢 100% | OK |
| frontend/src/components/TaskHistory.svelte | 🟢 100% | OK |
| frontend/src/components/Toast.svelte | 🟢 100% | OK |
| frontend/src/components/TaskRunner.svelte | 🟢 100% | OK |
| frontend/src/components/TaskList.svelte | 🟢 100% | OK |
| frontend/src/components/DynamicForm.svelte | 🟢 100% | OK |
| frontend/src/components/EnvSelector.svelte | 🟢 100% | OK |
| backend/src/app.py | 🟢 100% | OK |
| backend/src/dependencies.py | 🟢 100% | OK |
| backend/src/core/superset_client.py | 🟢 100% | OK |
| backend/src/core/config_manager.py | 🟢 100% | OK |
| backend/src/core/scheduler.py | 🟢 100% | OK |
| backend/src/core/config_models.py | 🟢 100% | OK |
| backend/src/core/database.py | 🟢 100% | OK |
| backend/src/core/logger.py | 🟢 100% | OK |
| backend/src/core/plugin_loader.py | 🟢 100% | OK |
| backend/src/core/migration_engine.py | 🟢 100% | OK |
| backend/src/core/plugin_base.py | 🟢 100% | OK |
| backend/src/core/utils/matching.py | 🟢 100% | OK |
| backend/src/core/task_manager/persistence.py | 🟢 100% | OK |
| backend/src/core/task_manager/manager.py | 🟢 100% | OK |
| backend/src/core/task_manager/models.py | 🟢 100% | OK |
| backend/src/core/task_manager/cleanup.py | 🟢 100% | OK |
| backend/src/core/task_manager/__init__.py | 🟢 100% | OK |
| backend/src/api/auth.py | 🟢 100% | OK |
| backend/src/api/routes/environments.py | 🟢 100% | OK |
| backend/src/api/routes/migration.py | 🟢 100% | OK |
| backend/src/api/routes/plugins.py | 🟢 100% | OK |
| backend/src/api/routes/mappings.py | 🟢 100% | OK |
| backend/src/api/routes/settings.py | 🟢 100% | OK |
| backend/src/api/routes/tasks.py | 🟢 100% | OK |
| backend/src/models/task.py | 🟢 100% | OK |
| backend/src/models/connection.py | 🟢 100% | OK |
| backend/src/models/mapping.py | 🟢 100% | OK |
| backend/src/models/dashboard.py | 🟢 100% | OK |
| backend/src/services/mapping_service.py | 🟢 100% | OK |
| backend/src/plugins/backup.py | 🟢 100% | OK |
| backend/src/plugins/search.py | 🟢 100% | OK |
| backend/src/plugins/mapper.py | 🟢 100% | OK |
| backend/src/plugins/migration.py | 🟢 100% | OK |

View File

@@ -0,0 +1,89 @@
# Semantic Compliance Report
**Generated At:** 2026-01-12T21:18:57.549358
**Global Compliance Score:** 96.8%
**Scanned Files:** 80
## File Compliance Status
| File | Score | Issues |
|------|-------|--------|
| frontend/.svelte-kit/output/server/entries/pages/migration/_page.svelte.js | 🔴 0% | [handleSort] Unclosed Anchor at end of file (started line 65)<br>[handleSort] Unclosed Anchor: [DEF:handleSort:Function] started at line 65<br>[handleSelectionChange] Unclosed Anchor at end of file (started line 68)<br>[handleSelectionChange] Unclosed Anchor: [DEF:handleSelectionChange:Function] started at line 68<br>[handleSelectionChange] Unclosed Anchor: [DEF:handleSelectionChange:Function] started at line 68<br>[handleSelectAll] Unclosed Anchor at end of file (started line 71)<br>[handleSelectAll] Unclosed Anchor: [DEF:handleSelectAll:Function] started at line 71<br>[handleSelectAll] Unclosed Anchor: [DEF:handleSelectAll:Function] started at line 71<br>[handleSelectAll] Unclosed Anchor: [DEF:handleSelectAll:Function] started at line 71<br>[goToPage] Unclosed Anchor at end of file (started line 74)<br>[goToPage] Unclosed Anchor: [DEF:goToPage:Function] started at line 74<br>[goToPage] Unclosed Anchor: [DEF:goToPage:Function] started at line 74<br>[goToPage] Unclosed Anchor: [DEF:goToPage:Function] started at line 74<br>[goToPage] Unclosed Anchor: [DEF:goToPage:Function] started at line 74 |
| frontend/src/components/tools/DebugTool.svelte | 🔴 0% | [DebugTool] Unclosed Anchor at end of file (started line 1)<br>[DebugTool] Unclosed Anchor: [DEF:DebugTool:Component] started at line 1 |
| backend/src/api/routes/connections.py | 🟡 58% | [ConnectionSchema] Missing Mandatory Tag: @PURPOSE<br>[ConnectionSchema] Missing Mandatory Tag: @PURPOSE<br>[ConnectionCreate] Missing Mandatory Tag: @PURPOSE<br>[ConnectionCreate] Missing Mandatory Tag: @PURPOSE<br>[list_connections] Missing Mandatory Tag: @PURPOSE<br>[list_connections] Missing Mandatory Tag: @PURPOSE<br>[create_connection] Missing Mandatory Tag: @PURPOSE<br>[create_connection] Missing Mandatory Tag: @PURPOSE<br>[delete_connection] Missing Mandatory Tag: @PURPOSE<br>[delete_connection] Missing Mandatory Tag: @PURPOSE |
| backend/src/plugins/debug.py | 🟡 83% | [DebugPlugin._test_db_api] Missing Mandatory Tag: @PURPOSE<br>[DebugPlugin._test_db_api] Missing Mandatory Tag: @PURPOSE<br>[DebugPlugin._test_db_api] Missing Mandatory Tag: @PURPOSE<br>[DebugPlugin._get_dataset_structure] Missing Mandatory Tag: @PURPOSE<br>[DebugPlugin._get_dataset_structure] Missing Mandatory Tag: @PURPOSE<br>[DebugPlugin._get_dataset_structure] Missing Mandatory Tag: @PURPOSE |
| generate_semantic_map.py | 🟢 100% | OK |
| migration_script.py | 🟢 100% | OK |
| superset_tool/exceptions.py | 🟢 100% | OK |
| superset_tool/models.py | 🟢 100% | OK |
| superset_tool/client.py | 🟢 100% | OK |
| superset_tool/__init__.py | 🟢 100% | OK |
| superset_tool/utils/init_clients.py | 🟢 100% | OK |
| superset_tool/utils/logger.py | 🟢 100% | OK |
| superset_tool/utils/fileio.py | 🟢 100% | OK |
| superset_tool/utils/network.py | 🟢 100% | OK |
| superset_tool/utils/whiptail_fallback.py | 🟢 100% | OK |
| superset_tool/utils/dataset_mapper.py | 🟢 100% | OK |
| superset_tool/utils/__init__.py | 🟢 100% | OK |
| frontend/src/main.js | 🟢 100% | OK |
| frontend/src/App.svelte | 🟢 100% | OK |
| frontend/src/lib/stores.js | 🟢 100% | OK |
| frontend/src/lib/toasts.js | 🟢 100% | OK |
| frontend/src/lib/api.js | 🟢 100% | OK |
| frontend/src/routes/migration/+page.svelte | 🟢 100% | OK |
| frontend/src/routes/migration/mappings/+page.svelte | 🟢 100% | OK |
| frontend/src/routes/tools/search/+page.svelte | 🟢 100% | OK |
| frontend/src/routes/tools/mapper/+page.svelte | 🟢 100% | OK |
| frontend/src/routes/tools/debug/+page.svelte | 🟢 100% | OK |
| frontend/src/routes/settings/connections/+page.svelte | 🟢 100% | OK |
| frontend/src/pages/Dashboard.svelte | 🟢 100% | OK |
| frontend/src/pages/Settings.svelte | 🟢 100% | OK |
| frontend/src/components/PasswordPrompt.svelte | 🟢 100% | OK |
| frontend/src/components/MappingTable.svelte | 🟢 100% | OK |
| frontend/src/components/TaskLogViewer.svelte | 🟢 100% | OK |
| frontend/src/components/Footer.svelte | 🟢 100% | OK |
| frontend/src/components/MissingMappingModal.svelte | 🟢 100% | OK |
| frontend/src/components/DashboardGrid.svelte | 🟢 100% | OK |
| frontend/src/components/Navbar.svelte | 🟢 100% | OK |
| frontend/src/components/TaskHistory.svelte | 🟢 100% | OK |
| frontend/src/components/Toast.svelte | 🟢 100% | OK |
| frontend/src/components/TaskRunner.svelte | 🟢 100% | OK |
| frontend/src/components/TaskList.svelte | 🟢 100% | OK |
| frontend/src/components/DynamicForm.svelte | 🟢 100% | OK |
| frontend/src/components/EnvSelector.svelte | 🟢 100% | OK |
| frontend/src/components/tools/ConnectionForm.svelte | 🟢 100% | OK |
| frontend/src/components/tools/ConnectionList.svelte | 🟢 100% | OK |
| frontend/src/components/tools/MapperTool.svelte | 🟢 100% | OK |
| frontend/src/components/tools/SearchTool.svelte | 🟢 100% | OK |
| backend/src/app.py | 🟢 100% | OK |
| backend/src/dependencies.py | 🟢 100% | OK |
| backend/src/core/superset_client.py | 🟢 100% | OK |
| backend/src/core/config_manager.py | 🟢 100% | OK |
| backend/src/core/scheduler.py | 🟢 100% | OK |
| backend/src/core/config_models.py | 🟢 100% | OK |
| backend/src/core/database.py | 🟢 100% | OK |
| backend/src/core/logger.py | 🟢 100% | OK |
| backend/src/core/plugin_loader.py | 🟢 100% | OK |
| backend/src/core/migration_engine.py | 🟢 100% | OK |
| backend/src/core/plugin_base.py | 🟢 100% | OK |
| backend/src/core/utils/matching.py | 🟢 100% | OK |
| backend/src/core/task_manager/persistence.py | 🟢 100% | OK |
| backend/src/core/task_manager/manager.py | 🟢 100% | OK |
| backend/src/core/task_manager/models.py | 🟢 100% | OK |
| backend/src/core/task_manager/cleanup.py | 🟢 100% | OK |
| backend/src/core/task_manager/__init__.py | 🟢 100% | OK |
| backend/src/api/auth.py | 🟢 100% | OK |
| backend/src/api/routes/environments.py | 🟢 100% | OK |
| backend/src/api/routes/migration.py | 🟢 100% | OK |
| backend/src/api/routes/plugins.py | 🟢 100% | OK |
| backend/src/api/routes/mappings.py | 🟢 100% | OK |
| backend/src/api/routes/settings.py | 🟢 100% | OK |
| backend/src/api/routes/tasks.py | 🟢 100% | OK |
| backend/src/models/task.py | 🟢 100% | OK |
| backend/src/models/connection.py | 🟢 100% | OK |
| backend/src/models/mapping.py | 🟢 100% | OK |
| backend/src/models/dashboard.py | 🟢 100% | OK |
| backend/src/services/mapping_service.py | 🟢 100% | OK |
| backend/src/plugins/backup.py | 🟢 100% | OK |
| backend/src/plugins/search.py | 🟢 100% | OK |
| backend/src/plugins/mapper.py | 🟢 100% | OK |
| backend/src/plugins/migration.py | 🟢 100% | OK |

View File

@@ -0,0 +1,89 @@
# Semantic Compliance Report
**Generated At:** 2026-01-13T09:02:04.771961
**Global Compliance Score:** 98.8%
**Scanned Files:** 80
## File Compliance Status
| File | Score | Issues |
|------|-------|--------|
| frontend/.svelte-kit/output/server/entries/pages/migration/_page.svelte.js | 🔴 0% | [handleSort] Unclosed Anchor at end of file (started line 65)<br>[handleSort] Unclosed Anchor: [DEF:handleSort:Function] started at line 65<br>[handleSelectionChange] Unclosed Anchor at end of file (started line 68)<br>[handleSelectionChange] Unclosed Anchor: [DEF:handleSelectionChange:Function] started at line 68<br>[handleSelectionChange] Unclosed Anchor: [DEF:handleSelectionChange:Function] started at line 68<br>[handleSelectAll] Unclosed Anchor at end of file (started line 71)<br>[handleSelectAll] Unclosed Anchor: [DEF:handleSelectAll:Function] started at line 71<br>[handleSelectAll] Unclosed Anchor: [DEF:handleSelectAll:Function] started at line 71<br>[handleSelectAll] Unclosed Anchor: [DEF:handleSelectAll:Function] started at line 71<br>[goToPage] Unclosed Anchor at end of file (started line 74)<br>[goToPage] Unclosed Anchor: [DEF:goToPage:Function] started at line 74<br>[goToPage] Unclosed Anchor: [DEF:goToPage:Function] started at line 74<br>[goToPage] Unclosed Anchor: [DEF:goToPage:Function] started at line 74<br>[goToPage] Unclosed Anchor: [DEF:goToPage:Function] started at line 74 |
| generate_semantic_map.py | 🟢 100% | OK |
| migration_script.py | 🟢 100% | OK |
| superset_tool/exceptions.py | 🟢 100% | OK |
| superset_tool/models.py | 🟢 100% | OK |
| superset_tool/client.py | 🟢 100% | OK |
| superset_tool/__init__.py | 🟢 100% | OK |
| superset_tool/utils/init_clients.py | 🟢 100% | OK |
| superset_tool/utils/logger.py | 🟢 100% | OK |
| superset_tool/utils/fileio.py | 🟢 100% | OK |
| superset_tool/utils/network.py | 🟢 100% | OK |
| superset_tool/utils/whiptail_fallback.py | 🟢 100% | OK |
| superset_tool/utils/dataset_mapper.py | 🟢 100% | OK |
| superset_tool/utils/__init__.py | 🟢 100% | OK |
| frontend/src/main.js | 🟢 100% | OK |
| frontend/src/App.svelte | 🟢 100% | OK |
| frontend/src/lib/stores.js | 🟢 100% | OK |
| frontend/src/lib/toasts.js | 🟢 100% | OK |
| frontend/src/lib/api.js | 🟢 100% | OK |
| frontend/src/routes/migration/+page.svelte | 🟢 100% | OK |
| frontend/src/routes/migration/mappings/+page.svelte | 🟢 100% | OK |
| frontend/src/routes/tools/search/+page.svelte | 🟢 100% | OK |
| frontend/src/routes/tools/mapper/+page.svelte | 🟢 100% | OK |
| frontend/src/routes/tools/debug/+page.svelte | 🟢 100% | OK |
| frontend/src/routes/settings/connections/+page.svelte | 🟢 100% | OK |
| frontend/src/pages/Dashboard.svelte | 🟢 100% | OK |
| frontend/src/pages/Settings.svelte | 🟢 100% | OK |
| frontend/src/components/PasswordPrompt.svelte | 🟢 100% | OK |
| frontend/src/components/MappingTable.svelte | 🟢 100% | OK |
| frontend/src/components/TaskLogViewer.svelte | 🟢 100% | OK |
| frontend/src/components/Footer.svelte | 🟢 100% | OK |
| frontend/src/components/MissingMappingModal.svelte | 🟢 100% | OK |
| frontend/src/components/DashboardGrid.svelte | 🟢 100% | OK |
| frontend/src/components/Navbar.svelte | 🟢 100% | OK |
| frontend/src/components/TaskHistory.svelte | 🟢 100% | OK |
| frontend/src/components/Toast.svelte | 🟢 100% | OK |
| frontend/src/components/TaskRunner.svelte | 🟢 100% | OK |
| frontend/src/components/TaskList.svelte | 🟢 100% | OK |
| frontend/src/components/DynamicForm.svelte | 🟢 100% | OK |
| frontend/src/components/EnvSelector.svelte | 🟢 100% | OK |
| frontend/src/components/tools/ConnectionForm.svelte | 🟢 100% | OK |
| frontend/src/components/tools/ConnectionList.svelte | 🟢 100% | OK |
| frontend/src/components/tools/MapperTool.svelte | 🟢 100% | OK |
| frontend/src/components/tools/DebugTool.svelte | 🟢 100% | OK |
| frontend/src/components/tools/SearchTool.svelte | 🟢 100% | OK |
| backend/src/app.py | 🟢 100% | OK |
| backend/src/dependencies.py | 🟢 100% | OK |
| backend/src/core/superset_client.py | 🟢 100% | OK |
| backend/src/core/config_manager.py | 🟢 100% | OK |
| backend/src/core/scheduler.py | 🟢 100% | OK |
| backend/src/core/config_models.py | 🟢 100% | OK |
| backend/src/core/database.py | 🟢 100% | OK |
| backend/src/core/logger.py | 🟢 100% | OK |
| backend/src/core/plugin_loader.py | 🟢 100% | OK |
| backend/src/core/migration_engine.py | 🟢 100% | OK |
| backend/src/core/plugin_base.py | 🟢 100% | OK |
| backend/src/core/utils/matching.py | 🟢 100% | OK |
| backend/src/core/task_manager/persistence.py | 🟢 100% | OK |
| backend/src/core/task_manager/manager.py | 🟢 100% | OK |
| backend/src/core/task_manager/models.py | 🟢 100% | OK |
| backend/src/core/task_manager/cleanup.py | 🟢 100% | OK |
| backend/src/core/task_manager/__init__.py | 🟢 100% | OK |
| backend/src/api/auth.py | 🟢 100% | OK |
| backend/src/api/routes/connections.py | 🟢 100% | OK |
| backend/src/api/routes/environments.py | 🟢 100% | OK |
| backend/src/api/routes/migration.py | 🟢 100% | OK |
| backend/src/api/routes/plugins.py | 🟢 100% | OK |
| backend/src/api/routes/mappings.py | 🟢 100% | OK |
| backend/src/api/routes/settings.py | 🟢 100% | OK |
| backend/src/api/routes/tasks.py | 🟢 100% | OK |
| backend/src/models/task.py | 🟢 100% | OK |
| backend/src/models/connection.py | 🟢 100% | OK |
| backend/src/models/mapping.py | 🟢 100% | OK |
| backend/src/models/dashboard.py | 🟢 100% | OK |
| backend/src/services/mapping_service.py | 🟢 100% | OK |
| backend/src/plugins/backup.py | 🟢 100% | OK |
| backend/src/plugins/debug.py | 🟢 100% | OK |
| backend/src/plugins/search.py | 🟢 100% | OK |
| backend/src/plugins/mapper.py | 🟢 100% | OK |
| backend/src/plugins/migration.py | 🟢 100% | OK |

View File

@@ -0,0 +1,89 @@
# Semantic Compliance Report
**Generated At:** 2026-01-13T09:08:58.209356
**Global Compliance Score:** 98.8%
**Scanned Files:** 80
## File Compliance Status
| File | Score | Issues |
|------|-------|--------|
| frontend/.svelte-kit/output/server/entries/pages/migration/_page.svelte.js | 🔴 0% | [handleSort] Unclosed Anchor at end of file (started line 65)<br>[handleSort] Unclosed Anchor: [DEF:handleSort:Function] started at line 65<br>[handleSelectionChange] Unclosed Anchor at end of file (started line 68)<br>[handleSelectionChange] Unclosed Anchor: [DEF:handleSelectionChange:Function] started at line 68<br>[handleSelectionChange] Unclosed Anchor: [DEF:handleSelectionChange:Function] started at line 68<br>[handleSelectAll] Unclosed Anchor at end of file (started line 71)<br>[handleSelectAll] Unclosed Anchor: [DEF:handleSelectAll:Function] started at line 71<br>[handleSelectAll] Unclosed Anchor: [DEF:handleSelectAll:Function] started at line 71<br>[handleSelectAll] Unclosed Anchor: [DEF:handleSelectAll:Function] started at line 71<br>[goToPage] Unclosed Anchor at end of file (started line 74)<br>[goToPage] Unclosed Anchor: [DEF:goToPage:Function] started at line 74<br>[goToPage] Unclosed Anchor: [DEF:goToPage:Function] started at line 74<br>[goToPage] Unclosed Anchor: [DEF:goToPage:Function] started at line 74<br>[goToPage] Unclosed Anchor: [DEF:goToPage:Function] started at line 74 |
| generate_semantic_map.py | 🟢 100% | OK |
| migration_script.py | 🟢 100% | OK |
| superset_tool/exceptions.py | 🟢 100% | OK |
| superset_tool/models.py | 🟢 100% | OK |
| superset_tool/client.py | 🟢 100% | OK |
| superset_tool/__init__.py | 🟢 100% | OK |
| superset_tool/utils/init_clients.py | 🟢 100% | OK |
| superset_tool/utils/logger.py | 🟢 100% | OK |
| superset_tool/utils/fileio.py | 🟢 100% | OK |
| superset_tool/utils/network.py | 🟢 100% | OK |
| superset_tool/utils/whiptail_fallback.py | 🟢 100% | OK |
| superset_tool/utils/dataset_mapper.py | 🟢 100% | OK |
| superset_tool/utils/__init__.py | 🟢 100% | OK |
| frontend/src/main.js | 🟢 100% | OK |
| frontend/src/App.svelte | 🟢 100% | OK |
| frontend/src/lib/stores.js | 🟢 100% | OK |
| frontend/src/lib/toasts.js | 🟢 100% | OK |
| frontend/src/lib/api.js | 🟢 100% | OK |
| frontend/src/routes/migration/+page.svelte | 🟢 100% | OK |
| frontend/src/routes/migration/mappings/+page.svelte | 🟢 100% | OK |
| frontend/src/routes/tools/search/+page.svelte | 🟢 100% | OK |
| frontend/src/routes/tools/mapper/+page.svelte | 🟢 100% | OK |
| frontend/src/routes/tools/debug/+page.svelte | 🟢 100% | OK |
| frontend/src/routes/settings/connections/+page.svelte | 🟢 100% | OK |
| frontend/src/pages/Dashboard.svelte | 🟢 100% | OK |
| frontend/src/pages/Settings.svelte | 🟢 100% | OK |
| frontend/src/components/PasswordPrompt.svelte | 🟢 100% | OK |
| frontend/src/components/MappingTable.svelte | 🟢 100% | OK |
| frontend/src/components/TaskLogViewer.svelte | 🟢 100% | OK |
| frontend/src/components/Footer.svelte | 🟢 100% | OK |
| frontend/src/components/MissingMappingModal.svelte | 🟢 100% | OK |
| frontend/src/components/DashboardGrid.svelte | 🟢 100% | OK |
| frontend/src/components/Navbar.svelte | 🟢 100% | OK |
| frontend/src/components/TaskHistory.svelte | 🟢 100% | OK |
| frontend/src/components/Toast.svelte | 🟢 100% | OK |
| frontend/src/components/TaskRunner.svelte | 🟢 100% | OK |
| frontend/src/components/TaskList.svelte | 🟢 100% | OK |
| frontend/src/components/DynamicForm.svelte | 🟢 100% | OK |
| frontend/src/components/EnvSelector.svelte | 🟢 100% | OK |
| frontend/src/components/tools/ConnectionForm.svelte | 🟢 100% | OK |
| frontend/src/components/tools/ConnectionList.svelte | 🟢 100% | OK |
| frontend/src/components/tools/MapperTool.svelte | 🟢 100% | OK |
| frontend/src/components/tools/DebugTool.svelte | 🟢 100% | OK |
| frontend/src/components/tools/SearchTool.svelte | 🟢 100% | OK |
| backend/src/app.py | 🟢 100% | OK |
| backend/src/dependencies.py | 🟢 100% | OK |
| backend/src/core/superset_client.py | 🟢 100% | OK |
| backend/src/core/config_manager.py | 🟢 100% | OK |
| backend/src/core/scheduler.py | 🟢 100% | OK |
| backend/src/core/config_models.py | 🟢 100% | OK |
| backend/src/core/database.py | 🟢 100% | OK |
| backend/src/core/logger.py | 🟢 100% | OK |
| backend/src/core/plugin_loader.py | 🟢 100% | OK |
| backend/src/core/migration_engine.py | 🟢 100% | OK |
| backend/src/core/plugin_base.py | 🟢 100% | OK |
| backend/src/core/utils/matching.py | 🟢 100% | OK |
| backend/src/core/task_manager/persistence.py | 🟢 100% | OK |
| backend/src/core/task_manager/manager.py | 🟢 100% | OK |
| backend/src/core/task_manager/models.py | 🟢 100% | OK |
| backend/src/core/task_manager/cleanup.py | 🟢 100% | OK |
| backend/src/core/task_manager/__init__.py | 🟢 100% | OK |
| backend/src/api/auth.py | 🟢 100% | OK |
| backend/src/api/routes/connections.py | 🟢 100% | OK |
| backend/src/api/routes/environments.py | 🟢 100% | OK |
| backend/src/api/routes/migration.py | 🟢 100% | OK |
| backend/src/api/routes/plugins.py | 🟢 100% | OK |
| backend/src/api/routes/mappings.py | 🟢 100% | OK |
| backend/src/api/routes/settings.py | 🟢 100% | OK |
| backend/src/api/routes/tasks.py | 🟢 100% | OK |
| backend/src/models/task.py | 🟢 100% | OK |
| backend/src/models/connection.py | 🟢 100% | OK |
| backend/src/models/mapping.py | 🟢 100% | OK |
| backend/src/models/dashboard.py | 🟢 100% | OK |
| backend/src/services/mapping_service.py | 🟢 100% | OK |
| backend/src/plugins/backup.py | 🟢 100% | OK |
| backend/src/plugins/debug.py | 🟢 100% | OK |
| backend/src/plugins/search.py | 🟢 100% | OK |
| backend/src/plugins/mapper.py | 🟢 100% | OK |
| backend/src/plugins/migration.py | 🟢 100% | OK |

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff