"""数据查询Skill"""
import httpx
from typing import Any, Dict

from src.agent.executor import SkillContext, SkillResult
from src.config import get_settings


class DataQuerySkill:
    """数据查询Skill"""

    name = "data_query"
    version = "1.0.0"

    def __init__(self):
        self.capabilities = {
            "query_employee_info": self._query_employee_info,
        }
        self.triggers = [
            {
                "pattern": r"查询.*员工",
                "capability": "query_employee_info",
                "priority": 100,
                "match_config": {"case_sensitive": False},
            }
        ]

    async def execute(
        self,
        capability: str,
        params: Dict[str, Any],
        context: SkillContext
    ) -> SkillResult:
        """执行数据查询"""
        handler = self.capabilities.get(capability)
        if not handler:
            raise ValueError(f"Unknown capability: {capability}")

        return await handler(params, context)

    async def _query_employee_info(
        self,
        params: Dict[str, Any],
        context: SkillContext
    ) -> SkillResult:
        """查询员工信息"""
        # TODO: 实际调用HR系统API
        # 这里使用模拟数据
        department = params.get("department", "")

        mock_data = {
            "count": 15,
            "department": department,
            "employees": [
                {"id": "emp_001", "name": "张三", "title": "高级工程师"},
                {"id": "emp_002", "name": "李四", "title": "工程师"},
            ]
        }

        return SkillResult(
            data=mock_data,
            confidence=1.0,
            sources=[{
                "skill": "data_query",
                "capability": "query_employee_info",
                "endpoint": "hr.company.com/api/v1/employees",
                "method": "GET",
            }],
            metadata={"source_type": "api", "cache_hit": False},
            execution_time_ms=0
        )
