Livoa LogoLivoa
Admin


+id (pk)

+username: String

+email: String

+created_at: DateTime


+dashboard()

+files()

+file_logs()

+users()

+risk_results()

+ai_console()

+scan_file_ai(file_id: int)

+delete_file(file_id: int)

User


+id (pk)

+username: String

+email: String

+password_hash: String

+is_admin: Boolean

+is_resigned: Boolean

+created_at: DateTime

+files: File[*]

+file_logs: FileLog[*]

+user_id (fk)


+register()

+login()

+logout()

+resign_user(user_id: int) (fk)

File


+id (pk)

+user_id: Integer

+filename: String

+filepath: String

+file_type_code: Integer

+type_name: String

+size: Integer

+uploaded_at: DateTime

+risk_results: RiskResult[1]

+file_id (fk)

+user_id (fk)


+upload_file()

+myfile()

+scan_file(file_id: int) (fk)

+delete_file(file_id: int) (fk)

+scan_file_ai(file_id: int) (fk)

RiskResult


+id (pk)

+file_id: Integer

+filename: String

+file_size: Integer

+entropy: Float

+risk_score: Float

+is_anomaly: Boolean

+attack_type: String

+description: String

+model_score: Float

+created_at: DateTime

+file_id (fk)


+predict() → dict

+calculate_entropy(data: bytes) → float

+detect_file_attack_type(filename: str, content: bytes) → Optional[str]

+attack_description(attack_type: Optional[str]) → str

+calculate_risk_score(attack_type: Optional[str], file_size: int, entropy: float) → float

PredictAPI


table: TrainRecord

+id (pk)

+timestamp: DateTime

+source: String

+record_count: Integer

+status: String

+message: Text


+predict(): Response

+health(): Response

+predict_file(file_path: str) → dict (fk)

TrainRecord


+id (pk)

+timestamp: DateTime

+source: String

+record_count: Integer

+status: String

+message: Text


+train_from_csv(filepath: str) → dict

+train_from_files(file_list: List[str], label: Optional[str] = None) → dict

+train_from_directory(directory_path: str, label: Optional[str] = None) → dict

+train_from_any_file(filepath: str, label: Optional[str] = None) → dict

+train_logs()

FileLog


+id (pk)

+user_id: Integer

+file_id: Integer

+username: String

+action_type: String

+timestamp: DateTime

+ip_address: String

+device: String

+browser: String

+status: String

+file_name: String

+is_admin: Boolean

+device_type: Integer

+browser_type: Integer

+user_agent: String

+status_code: Integer

+request_type: Integer

+file_type_code: Integer

+login_success: Integer

+session_duration: Integer

+location: String

+user_id (fk)

+file_id (fk)


+log_action(user: Any, action_type: str, file_name: Optional[str], status: str)

ModelTrainer


+train_from_csv(filepath: str) → dict

+train_from_files(file_list: List[str], label: Optional[str] = None) → dict (fk)

+train_from_directory(directory_path: str, label: Optional[str] = None) → dict (fk)

+train_from_any_file(filepath: str, label: str, label: Optional[str] = None) → dict

FeatureExtractor


+ext_features: Dict[str, int]


+calculate_entropy(data: bytes) → float

+count_string_patterns(content: bytes, patterns: List[bytes]) → List[int]

+extract_file_features(filename: str, content: bytes) → List[float] (fk)

+build_feature_vector(file_data: dict) → List[float] (fk)

AI_Module_Config


+MODEL_PATH: string

+LABEL_ENCODER_PATH: string

+FEATURE_COLUMNS_PATH: string

+feature_columns: List[str]

+pipeline: sklearn.Pipeline

+label_encoder: sklearn.LabelEncoder

AttackDetector


table: TrainRecord

+id (pk)

+timestamp: DateTime

+source: String

+record_count: Integer

+status: String

+message: Text


+train_from_csv(filepath: str) → dict

+train_from_files(file_list: List[str], label: Optional[str] = None) → dict

+train_from_directory(directory_path: str, label: Optional[str] = None) → dict

+train_from_any_file(filepath: str, label: Optional[str] = None) → dict

+train_logs()

1
m
m
1
1
1
m
m
m
1
m
m
1
m

class diagram

by hong

0
0 uses