from __future__ import annotations

import logging

from .models import QSDrillDefinition, QSDrillScorecard, TrainingEpochResult
from .trainer_loop import QSTrainerLoop

logger = logging.getLogger("dscons.takeoff_training.service")


class AIQuynhTrainingService:
    """Dịch vụ Học viện đào tạo và bài tập tự trị nâng cao năng lực cho AI Quỳnh QS."""

    def __init__(self) -> None:
        self.trainer = QSTrainerLoop()

    def list_available_drills(self) -> list[QSDrillDefinition]:
        """Lấy danh sách các bài tập kiểm chuẩn thực tế từ kho HĐ-2026."""
        return self.trainer.list_drills()

    def run_drill(self, drill_id: str) -> QSDrillScorecard:
        """Thực hiện chấm điểm bài tập kiểm chuẩn bóc tách BoQ."""
        return self.trainer.execute_drill(drill_id)

    def run_autonomous_learning_loop(
        self,
        drill_id: str,
        max_epochs: int = 3,
    ) -> list[TrainingEpochResult]:
        """Kích hoạt vòng lặp tự học đa chu kỳ, tự sinh Learned Rules vào DB."""
        return self.trainer.run_autonomous_training_loop(
            drill_id=drill_id, max_epochs=max_epochs
        )

    def get_latest_scorecard(
        self, drill_id: str = "DRILL-NVH-DAITHANG-2026"
    ) -> QSDrillScorecard:
        """Lấy bảng điểm kiểm chuẩn gần nhất của AI Quỳnh."""
        return self.trainer.execute_drill(drill_id)


ai_quynh_training_service = AIQuynhTrainingService()
