# -*- coding: utf-8 -*-
"""
V2-011 CollectStage - CollectAdapter Bridge

역할:
- CollectStage는 직접 수집하지 않는다.
- CollectAdapter를 호출하고 결과를 PipelineContext에 저장한다.
- CollectAdapter 내부에서 기존 V1 수집 Job을 호출한다.
"""

import time

from services.v2.base_stage import BaseStage
from services.v2.pipeline_result import PipelineResult
from services.v2.collect_adapter import CollectAdapter


class CollectStage(BaseStage):
    name = "collect"

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

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

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

        result = self.adapter.collect(context)

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

        context.put("collected_articles", articles)
        context.put("collect_count", data.get("collect_count", len(articles)))
        context.put("collect_data", data)

        elapsed = time.time() - started

        if result.get("success"):
            context.log(f"[COLLECT] collected={len(articles)}")
        else:
            context.log(f"[COLLECT] failed: {result.get('message', '')}")

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