import structlog

from app.state import EngineeringState
from app.tools.report_generator import ReportGenerator

logger = structlog.get_logger()


class ReporterAgent:
    """
    Reporter Agent
    职责：生成最终报告、生成 PR 说明、生成交付文档
    """

    def __init__(self, reports_dir: str = "./reports"):
        self.logger = structlog.get_logger().bind(agent="reporter")
        self.generator = ReportGenerator(output_dir=reports_dir)

    def generate_report(self, state: EngineeringState) -> dict:
        """生成完整的工程报告和 PR 说明"""
        self.logger.info("Reporter generating final report", task_id=state.get("task_id", ""))

        report = self.generator.generate_engineering_report(dict(state))
        pr_description = self.generator.generate_pr_description(dict(state))

        self.logger.info("Report generation complete")
        return {
            "report": report,
            "pr_description": pr_description,
        }
