#/apps/aroflo_connector_app/agent/cheap/zone_resolvers/userpositions.py
from __future__ import annotations

from typing import Any, Dict, Set

from ..plan import Plan
from ..extractors import extract_kv_params


ZONE_CODE = "userpositions"
OP_LIST = "list_userpositions"

ALLOWED_KEYS_BY_OP: Dict[str, Set[str]] = {
    OP_LIST: {"page"},  # doc solo muestra page
}


def build_plan(question: str, intent: str, available_ops: set[str]) -> Plan:
    op_code = OP_LIST

    # Params base
    params: Dict[str, Any] = {"page": 1}

    kv = extract_kv_params(question)
    if kv:
        params.update(kv)

    allowed = ALLOWED_KEYS_BY_OP.get(op_code, set())
    filtered = {k: v for k, v in (params or {}).items() if k in allowed}

    return Plan(
        zone_code=ZONE_CODE,
        op_code=op_code,
        params=filtered,
        side_effect="read",
        needs_confirmation=False,
        summary=f"{ZONE_CODE}.{op_code} (read)",
    )
