# -*- coding: utf-8 -*-
"""
V2-021 DraftStage - DraftAdapter Bridge

역할:
- DraftStage는 직접 초안을 만들지 않는다.
- DraftAdapter를 호출하고 결과를 PipelineContext에 저장한다.
"""

import time

from services.v2.base_stage import BaseStage
from services.v2.pipeline_result import PipelineResult
from services.v2.draft_adapter import DraftAdapter


class DraftStage(BaseStage):
    name = "draft"

    def __init__(self, adapter=None):
        self.adapter = adapter or DraftAdapter()

    def run(self, context) -> PipelineResult:
        started = time.time()

        context.current_stage = self.name
        context.log("[DRAFT] start")

        result = self.adapter.generate(context)

        drafts = result.get("drafts", [])
        failed = result.get("failed", [])
        data = result.get("data", {})

        context.put("drafts", drafts)
        context.put("draft_count", len(drafts))
        context.put("draft_failed_count", len(failed))
        context.put("draft_data", data)

        elapsed = time.time() - started

        if result.get("success"):
            context.log(f"[DRAFT] generated={len(drafts)}, failed={len(failed)}")
        else:
            context.log(f"[DRAFT] failed: {result.get('message', '')}")

        return PipelineResult(
            success=result.get("success", False),
            stage=self.name,
            message=result.get("message", ""),
            elapsed=elapsed,
        )
