/
mssnle
/
learning-path-analyzer
Обзор
Документация
Войти
/
mssnle
/
learning-path-analyzer
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main.py
130 строк
5 KB
mssnle
create src/main.py
13 дек 2025, 17:10
13 дек 2025, 17:10
f6d2b2e
Код
Авторство
О чём код?
#!/usr/bin/env python3 """ Learning Path Analyzer - Основной модуль Анализирует путь обучения студентов на основе логов LMS """ import argparse import sys from datetime import datetime import pandas as pd from pathlib import Path from .data_loader import load_lms_data, merge_student_data from .analyzer import ( analyze_student_performance, calculate_correlations, identify_effective_activities, predict_dropout_risk, ) from .visualizer import ( create_student_progress_chart, create_correlation_matrix, generate_html_report, ) from .recommender import generate_recommendations from .utils import setup_logging, save_results def main(): """Основная функция CLI""" parser = argparse.ArgumentParser( description="Learning Path Analyzer - Анализ пути обучения студентов" ) parser.add_argument( "--input", "-i", type=str, default="data/sample_logs.csv", help="Путь к файлу с логами LMS" ) parser.add_argument( "--student", "-s", type=str, help="ID студента для анализа" ) parser.add_argument( "--output", "-o", type=str, default="reports/analysis_output", help="Директория для сохранения результатов" ) parser.add_argument( "--mode", choices=["single", "batch", "compare"], default="single", help="Режим анализа" ) parser.add_argument( "--verbose", "-v", action="store_true", help="Подробный вывод" ) args = parser.parse_args() # Настройка логирования logger = setup_logging(verbose=args.verbose) try: # Загрузка данных logger.info(f"Загрузка данных из {args.input}") data = load_lms_data(args.input) if args.mode == "single" and args.student: # Анализ одного студента logger.info(f"Анализ студента {args.student}") result = analyze_student_performance(data, args.student) # Генерация рекомендаций recommendations = generate_recommendations(result) # Визуализация chart = create_student_progress_chart(result) # Сохранение результатов output_dir = Path(args.output) output_dir.mkdir(parents=True, exist_ok=True) save_results(result, output_dir / "analysis_results.json") # Генерация HTML отчета report_path = output_dir / "student_report.html" generate_html_report(result, recommendations, str(report_path)) logger.info(f"Отчет сохранен в {report_path}") # Вывод в консоль print("\n" + "="*50) print(f"ОТЧЕТ ПО СТУДЕНТУ: {args.student}") print("="*50) print(f"Общая успеваемость: {result['overall_score']:.1f}%") print(f"Всего активностей: {result['total_activities']}") print(f"Риск отчисления: {result['dropout_risk']:.1%}") print("\nТоп-3 эффективных активности:") for activity in result['effective_activities'][:3]: print(f" • {activity['name']}: корреляция {activity['correlation']:.2f}") elif args.mode == "batch": # Пакетный анализ всех студентов logger.info("Пакетный анализ всех студентов") # Реализация пакетного анализа else: print("Пожалуйста, укажите ID студента с помощью --student") sys.exit(1) except FileNotFoundError as e: logger.error(f"Файл не найден: {e}") sys.exit(1) except Exception as e: logger.error(f"Ошибка при анализе: {e}") sys.exit(1) if __name__ == "__main__": main()