Files
predictive_analysis/diagrams/04_application_architecture.py
2025-09-28 02:16:44 +03:00

71 lines
3.1 KiB
Python

"""
Application Architecture Diagram
Shows the modular Streamlit application structure and components
"""
from diagrams import Diagram, Cluster, Edge
from diagrams.onprem.client import Users
from diagrams.onprem.inmemory import Redis
from diagrams.programming.framework import Django, React
from diagrams.programming.language import Python
from diagrams.generic.storage import Storage
from diagrams.generic.compute import Rack
from diagrams.onprem.network import Nginx
with Diagram("Streamlit Application Architecture",
filename="diagrams/04_application_architecture",
show=False,
direction="TB"):
# Users
users = Users("End Users\n• Students\n• Educators\n• Administrators")
# Web Interface
streamlit_frontend = Django("Streamlit Frontend\n• Rose Pine Theme\n• Responsive UI\n• Interactive Forms")
# Authentication Layer
with Cluster("Authentication System"):
auth_service = Redis("Authentication Service\n• Session management\n• Role-based access\n• Security validation")
user_roles = Rack("User Roles\n• Admin (full access)\n• Educator (analytics)\n• User (predictions)")
# Application Core
with Cluster("Application Core (app.py)"):
main_app = Python("Main Application\n• Request routing\n• Session handling\n• Error management")
auth_decorator = Python("Auth Decorator\n• @require_auth\n• Permission checks\n• Session validation")
# Configuration Layer
with Cluster("Configuration (src/config/)"):
theme_config = React("Theme Configuration\n• Rose Pine CSS\n• Color constants\n• UI styling")
mappings_config = Storage("Feature Mappings\n• Human-readable labels\n• Preset templates\n• Validation rules")
# Utility Services
with Cluster("Utility Services (src/utils/)"):
model_utils = Python("Model Utilities\n• Model loading\n• Preprocessing\n• Prediction logic")
auth_utils = Python("Auth Utilities\n• User validation\n• Session management\n• Password hashing")
# UI Components
with Cluster("UI Components (src/components/)"):
form_components = React("Form Components\n• Input sections\n• Validation feedback\n• Preset selection")
prediction_display = React("Prediction Display\n• Results visualization\n• Confidence scores\n• Recommendations")
# Model Layer
with Cluster("Model Layer"):
trained_model = Storage("Trained Model\nrandom_forest_model.pkl\n93.84% accuracy")
preprocessing_pipeline = Storage("Preprocessing Pipeline\npreprocessing_info.json\nFeature transformations")
# Data Flow
users >> streamlit_frontend
streamlit_frontend >> auth_service >> user_roles
auth_service >> main_app >> auth_decorator
main_app >> theme_config
main_app >> mappings_config
main_app >> form_components
main_app >> prediction_display
form_components >> model_utils
model_utils >> trained_model
model_utils >> preprocessing_pipeline
model_utils >> prediction_display
auth_decorator >> auth_utils