"""Phase 7 (T20): worker count resolver — env-based ThreadPool 크기 결정.

Phase 5 _resolve_workers (background_chain_render.py)와 동일 패턴이지만 env name이
일반화되어 여러 step에서 재사용 가능. BACKGROUND_RENDER_WORKERS는 새 표준 이름,
BACKGROUND_CHAIN_RENDER_WORKERS는 Phase 5 시절부터의 alias로 호환 유지.
"""
from __future__ import annotations

import logging
import os

logger = logging.getLogger(__name__)


def resolve_workers(default: int = 4, cap: int = 8) -> int:
    """BACKGROUND_RENDER_WORKERS / BACKGROUND_CHAIN_RENDER_WORKERS env → clamp [1, cap].

    우선순위: BACKGROUND_RENDER_WORKERS > BACKGROUND_CHAIN_RENDER_WORKERS > default.
    잘못된 값(int 아님)은 default. 4 step (fp_prompt, fp_render, bg_prompt, bg_render)이
    공유.
    """
    for env_name in ("BACKGROUND_RENDER_WORKERS", "BACKGROUND_CHAIN_RENDER_WORKERS"):
        raw = os.getenv(env_name, "").strip()
        if not raw:
            continue
        try:
            v = int(raw)
        except ValueError:
            logger.warning("%s=%r not int — using default %d", env_name, raw, default)
            return default
        if v < 1:
            return 1
        if v > cap:
            return cap
        return v
    return default
