# -*- coding: utf-8 -*-
"""
小程序 AI 缓存查询路由 —— 查询各 AI 应用的最新缓存结果。

端点清单：
- GET /api/ai/cache/{cache_type}?target_id=xxx — 查询最新缓存
"""

from __future__ import annotations

import logging

from fastapi import APIRouter, Depends, HTTPException, Query, status

from app.ai.cache_service import AICacheService
from app.ai.schemas import CacheTypeEnum
from app.auth.dependencies import CurrentUser, get_current_user
from app.trace.decorators import trace_service

logger = logging.getLogger(__name__)

router = APIRouter(prefix="/api/ai", tags=["小程序 AI 缓存"])


@router.get("/cache/{cache_type}")
@trace_service("查询 AI 缓存", "Get AI cache")
async def get_ai_cache(
    cache_type: str,
    target_id: str = Query(..., description="目标 ID（member_id / assistant_id_member_id / 时间维度编码）"),
    user: CurrentUser = Depends(get_current_user),
):
    """查询指定类型的最新 AI 缓存结果。

    site_id 从 JWT 提取，强制过滤，确保门店隔离。
    """
    # 校验 cache_type 合法性
    valid_types = {e.value for e in CacheTypeEnum}
    if cache_type not in valid_types:
        raise HTTPException(
            status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
            detail=f"无效的 cache_type: {cache_type}，合法值: {sorted(valid_types)}",
        )

    cache_svc = AICacheService()
    result = cache_svc.get_latest(
        cache_type=cache_type,
        site_id=user.site_id,
        target_id=target_id,
    )

    if result is None:
        return None

    return {
        "id": result.get("id"),
        "cache_type": result.get("cache_type"),
        "target_id": result.get("target_id"),
        "result_json": result.get("result_json"),
        "score": result.get("score"),
        "created_at": result.get("created_at"),
    }
