# xinofwang2001/graduationproject-code architecture

> Architecture diagram of the GitHub repository xinofwang2001/graduationproject-code, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/xinofwang2001/graduationproject-code
- Repository: https://github.com/xinofwang2001/graduationproject-code

## Overview

This is a data-science application for configuring data sources and workspaces, previewing extracted data, training and storing forecasting models, generating forecasts, and calculating KPIs. The main evidenced Python workflow maps a model request, extracts data, trains and validates a pipeline, then runs inference and returns results; separate endpoints persist or retrieve models. The graph includes the .NET UI/API boundary and the Python processing service. Wiring outside the sampled controller and pipeline implementations is shown only where the tree or excerpts support it.

Main entry points: [`App Python/controllers/model_operation_controller.py`](https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/controllers/model_operation_controller.py) (Model operations), [`App Python/services/ImplServices/ModelPipelines/ForecastingTrainingPipeline.py`](https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/services/ImplServices/ModelPipelines/ForecastingTrainingPipeline.py) (Forecast training), [`App Python/services/ImplServices/ModelPipelines/ForecastInferencePipeline.py`](https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/services/ImplServices/ModelPipelines/ForecastInferencePipeline.py) (Forecast inference), [`App Python/services/ImplServices/DataPipelines/PreviewDataPipeline.py`](https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/services/ImplServices/DataPipelines/PreviewDataPipeline.py) (Extract and preview)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Client UI"]
  node_ui["Workspace UI"]
  node_ui_proxies["API proxies"]
  node_server_api["Server API client<br/>[ServerAPI.cs]"]
end

subgraph group_api["Application API"]
  node_controllers["API controllers"]
  node_preview_service["Preview service"]
  node_repos["Persistence repositories"]
  node_kpi_domain["KPI calculations<br/>[DynamicKPI.cs]"]
end

subgraph group_python["Python processing"]
  node_model_controller["Model operations"]
  node_dto_mapping["Request and result mapping<br/>[DTODomainMapper.py]"]
  node_data_factory["Data pipeline factory"]
  node_data_pipelines["Extract and preview"]
  node_external_facade["Data service facade"]
  node_training_factory["Training factory"]
  node_training["Forecast training"]
  node_calculation["Calculations and KPIs"]
  node_model_builder["Model pipeline builder<br/>[PipelineBuilder.py]"]
  node_metrics["Forecast metrics<br/>[MetricsService.py]"]
  node_inference_factory["Inference factory"]
  node_inference["Forecast inference"]
  node_predictors["Forecast strategies"]
end

subgraph group_data["Data and models"]
  node_db[("Application database<br/>[LeapDSDbContext.cs]")]
  node_external_data["Data source services<br/>[IWYAService.py]"]
  node_model_repository["Model repository<br/>[ModelRepository.py]"]
  node_model_store[("Model storage<br/>[ModelLocation.py]")]
end

node_user(("User"))

node_user -->|"configures and requests"| node_ui
node_ui -->|"invokes"| node_ui_proxies
node_ui_proxies -->|"sends HTTP request"| node_server_api
node_server_api -->|"routes requests"| node_controllers
node_controllers -.->|"Python facade call"| node_model_controller
node_controllers -->|"requests preview"| node_preview_service
node_preview_service -->|"reads extract config"| node_repos
node_preview_service -.->|"requests Python preview"| node_model_controller
node_repos -->|"reads and writes"| node_db
node_model_controller -->|"maps requests and results"| node_dto_mapping
node_model_controller -->|"creates training pipeline"| node_training_factory
node_training_factory -->|"creates data pipeline"| node_data_factory
node_model_controller -->|"executes training"| node_training
node_training -->|"extracts data"| node_data_pipelines
node_data_factory -->|"creates preview or full pipeline"| node_data_pipelines
node_data_pipelines -->|"requests source data"| node_external_facade
node_external_facade -->|"dispatches service call"| node_external_data
node_training -->|"executes calculations"| node_calculation
node_training -->|"builds model pipeline"| node_model_builder
node_training -->|"computes validation metrics"| node_metrics
node_model_controller -->|"creates inference pipeline"| node_inference_factory
node_inference_factory -->|"creates full-data pipeline"| node_data_factory
node_model_controller -->|"executes forecast"| node_inference
node_inference -->|"loads data"| node_data_pipelines
node_inference -->|"executes calculations"| node_calculation
node_inference -->|"selects prediction strategy"| node_predictors
node_model_controller -->|"stores, loads, deletes model"| node_model_repository
node_model_repository -->|"persists model artifact"| node_model_store

click node_ui "https://github.com/xinofwang2001/graduationproject-code/blob/main/Ander%20systeem/DSTool/PageManagers/WorkspaceManager.cs"
click node_ui_proxies "https://github.com/xinofwang2001/graduationproject-code/blob/main/Ander%20systeem/DSTool/Services/Proxies/PreviewDataProxyService.cs"
click node_server_api "https://github.com/xinofwang2001/graduationproject-code/blob/main/Ander%20systeem/DSTool/API/ServerAPI.cs"
click node_controllers "https://github.com/xinofwang2001/graduationproject-code/blob/main/Ander%20systeem/DSAPI/Controllers/ModelOperationController.cs"
click node_preview_service "https://github.com/xinofwang2001/graduationproject-code/blob/main/Ander%20systeem/DSAPI/Services/Proxies/PreviewDataService.cs"
click node_repos "https://github.com/xinofwang2001/graduationproject-code/blob/main/Ander%20systeem/Infra.Data/ImplRepositories/WorkspaceRepository.cs"
click node_db "https://github.com/xinofwang2001/graduationproject-code/blob/main/Ander%20systeem/Infra.Data/DatabaseContext/LeapDSDbContext.cs"
click node_model_controller "https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/controllers/model_operation_controller.py"
click node_dto_mapping "https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/services/ImplServices/Mappers/DTODomainMapper.py"
click node_data_factory "https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/services/PipelineFactories/DataPipelineFactory.py"
click node_data_pipelines "https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/services/ImplServices/DataPipelines/PreviewDataPipeline.py"
click node_external_facade "https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/ExternalServices/ExternalServiceFacade.py"
click node_external_data "https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/ExternalServices/IWYAService.py"
click node_training_factory "https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/services/PipelineFactories/ModelPipelineFactory.py"
click node_training "https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/services/ImplServices/ModelPipelines/ForecastingTrainingPipeline.py"
click node_calculation "https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/services/ImplServices/DataPreprocessing/CalculationProcessing/CalculationRunner.py"
click node_model_builder "https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/services/ImplServices/ModelBuilder/PipelineBuilder.py"
click node_metrics "https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/services/ImplServices/Utils/MetricsService.py"
click node_inference_factory "https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/services/PipelineFactories/InferencePipelineFactory.py"
click node_inference "https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/services/ImplServices/ModelPipelines/ForecastInferencePipeline.py"
click node_predictors "https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/services/ImplServices/PredictorStrategy/PredictorStrategyPicker.py"
click node_model_repository "https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/ExternalServices/ModelRepository.py"
click node_model_store "https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/Domain/Domain/Input/ModelLocation.py"
click node_kpi_domain "https://github.com/xinofwang2001/graduationproject-code/blob/main/Ander%20systeem/Core.Domain/Domain/Calculations/DynamicKPI.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_ui,node_ui_proxies,node_server_api,node_user toneBlue
class node_controllers,node_preview_service,node_repos,node_kpi_domain toneAmber
class node_model_controller,node_dto_mapping,node_data_factory,node_data_pipelines,node_external_facade,node_training_factory,node_training,node_calculation,node_model_builder,node_metrics,node_inference_factory,node_inference,node_predictors toneMint
class node_db,node_external_data,node_model_repository,node_model_store toneRose
```

## Components

### Client UI

- [Workspace UI](https://github.com/xinofwang2001/graduationproject-code/blob/main/Ander%20systeem/DSTool/PageManagers/WorkspaceManager.cs): `Ander systeem/DSTool/PageManagers/WorkspaceManager.cs`
- [API proxies](https://github.com/xinofwang2001/graduationproject-code/blob/main/Ander%20systeem/DSTool/Services/Proxies/PreviewDataProxyService.cs): `Ander systeem/DSTool/Services/Proxies/PreviewDataProxyService.cs`
- [Server API client](https://github.com/xinofwang2001/graduationproject-code/blob/main/Ander%20systeem/DSTool/API/ServerAPI.cs): `Ander systeem/DSTool/API/ServerAPI.cs`

### Application API

- [API controllers](https://github.com/xinofwang2001/graduationproject-code/blob/main/Ander%20systeem/DSAPI/Controllers/ModelOperationController.cs): `Ander systeem/DSAPI/Controllers/ModelOperationController.cs`
- [Preview service](https://github.com/xinofwang2001/graduationproject-code/blob/main/Ander%20systeem/DSAPI/Services/Proxies/PreviewDataService.cs): `Ander systeem/DSAPI/Services/Proxies/PreviewDataService.cs`
- [Persistence repositories](https://github.com/xinofwang2001/graduationproject-code/blob/main/Ander%20systeem/Infra.Data/ImplRepositories/WorkspaceRepository.cs): `Ander systeem/Infra.Data/ImplRepositories/WorkspaceRepository.cs`
- [KPI calculations](https://github.com/xinofwang2001/graduationproject-code/blob/main/Ander%20systeem/Core.Domain/Domain/Calculations/DynamicKPI.cs): `Ander systeem/Core.Domain/Domain/Calculations/DynamicKPI.cs`

### Python processing

- [Model operations](https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/controllers/model_operation_controller.py): `App Python/controllers/model_operation_controller.py`
- [Request and result mapping](https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/services/ImplServices/Mappers/DTODomainMapper.py): `App Python/services/ImplServices/Mappers/DTODomainMapper.py`
- [Data pipeline factory](https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/services/PipelineFactories/DataPipelineFactory.py): `App Python/services/PipelineFactories/DataPipelineFactory.py`
- [Extract and preview](https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/services/ImplServices/DataPipelines/PreviewDataPipeline.py): `App Python/services/ImplServices/DataPipelines/PreviewDataPipeline.py`
- [Data service facade](https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/ExternalServices/ExternalServiceFacade.py): `App Python/ExternalServices/ExternalServiceFacade.py`
- [Training factory](https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/services/PipelineFactories/ModelPipelineFactory.py): `App Python/services/PipelineFactories/ModelPipelineFactory.py`
- [Forecast training](https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/services/ImplServices/ModelPipelines/ForecastingTrainingPipeline.py): `App Python/services/ImplServices/ModelPipelines/ForecastingTrainingPipeline.py`
- [Calculations and KPIs](https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/services/ImplServices/DataPreprocessing/CalculationProcessing/CalculationRunner.py): `App Python/services/ImplServices/DataPreprocessing/CalculationProcessing/CalculationRunner.py`
- [Model pipeline builder](https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/services/ImplServices/ModelBuilder/PipelineBuilder.py): `App Python/services/ImplServices/ModelBuilder/PipelineBuilder.py`
- [Forecast metrics](https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/services/ImplServices/Utils/MetricsService.py): `App Python/services/ImplServices/Utils/MetricsService.py`
- [Inference factory](https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/services/PipelineFactories/InferencePipelineFactory.py): `App Python/services/PipelineFactories/InferencePipelineFactory.py`
- [Forecast inference](https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/services/ImplServices/ModelPipelines/ForecastInferencePipeline.py): `App Python/services/ImplServices/ModelPipelines/ForecastInferencePipeline.py`
- [Forecast strategies](https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/services/ImplServices/PredictorStrategy/PredictorStrategyPicker.py): `App Python/services/ImplServices/PredictorStrategy/PredictorStrategyPicker.py`

### Data and models

- [Application database](https://github.com/xinofwang2001/graduationproject-code/blob/main/Ander%20systeem/Infra.Data/DatabaseContext/LeapDSDbContext.cs): `Ander systeem/Infra.Data/DatabaseContext/LeapDSDbContext.cs`
- [Data source services](https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/ExternalServices/IWYAService.py): `App Python/ExternalServices/IWYAService.py`
- [Model repository](https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/ExternalServices/ModelRepository.py): `App Python/ExternalServices/ModelRepository.py`
- [Model storage](https://github.com/xinofwang2001/graduationproject-code/blob/main/App%20Python/Domain/Domain/Input/ModelLocation.py): `App Python/Domain/Domain/Input/ModelLocation.py`

### Other components

- **User**

## Connections

- User → Workspace UI: configures and requests
- Workspace UI → API proxies: invokes
- API proxies → Server API client: sends HTTP request
- Server API client → API controllers: routes requests
- API controllers → Model operations: Python facade call
- API controllers → Preview service: requests preview
- Preview service → Persistence repositories: reads extract config
- Preview service → Model operations: requests Python preview
- Persistence repositories → Application database: reads and writes
- Model operations → Request and result mapping: maps requests and results
- Model operations → Training factory: creates training pipeline
- Training factory → Data pipeline factory: creates data pipeline
- Model operations → Forecast training: executes training
- Forecast training → Extract and preview: extracts data
- Data pipeline factory → Extract and preview: creates preview or full pipeline
- Extract and preview → Data service facade: requests source data
- Data service facade → Data source services: dispatches service call
- Forecast training → Calculations and KPIs: executes calculations
- Forecast training → Model pipeline builder: builds model pipeline
- Forecast training → Forecast metrics: computes validation metrics
- Model operations → Inference factory: creates inference pipeline
- Inference factory → Data pipeline factory: creates full-data pipeline
- Model operations → Forecast inference: executes forecast
- Forecast inference → Extract and preview: loads data
- Forecast inference → Calculations and KPIs: executes calculations
- Forecast inference → Forecast strategies: selects prediction strategy
- Model operations → Model repository: stores, loads, deletes model
- Model repository → Model storage: persists model artifact
