from django.db import models
from django.utils import timezone
from users.models import Student

class RiskPrediction(models.Model):
    RISK_LEVELS = (
        ('low', 'Низкий (0-30%)'),
        ('medium', 'Средний (31-60%)'),
        ('high', 'Высокий (61-85%)'),
        ('critical', 'Критический (86-100%)'),
    )
    student = models.ForeignKey(Student, on_delete=models.CASCADE, related_name='risk_predictions', verbose_name='Студент')
    prediction_date = models.DateField(default=timezone.now, verbose_name='Дата прогноза')
    risk_score = models.DecimalField(max_digits=5, decimal_places=2, verbose_name='Оценка риска (%)')
    risk_level = models.CharField(max_length=20, choices=RISK_LEVELS, verbose_name='Уровень риска')
    top_factors = models.TextField(blank=True, verbose_name='Основные факторы')
    recommended_action = models.TextField(blank=True, verbose_name='Рекомендация')
    reviewed_by_curator = models.BooleanField(default=False, verbose_name='Просмотрено куратором')

    class Meta:
        ordering = ['-prediction_date', '-risk_score']
        verbose_name = 'Прогноз риска'
        verbose_name_plural = 'Прогнозы рисков'

    def __str__(self):
        return f"{self.student} - {self.risk_level} ({self.risk_score}%)"