1
This commit is contained in:
59
apps/backend/app/routers/xcx_ai_cache.py
Normal file
59
apps/backend/app/routers/xcx_ai_cache.py
Normal file
@@ -0,0 +1,59 @@
|
||||
# -*- 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
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
router = APIRouter(prefix="/api/ai", tags=["小程序 AI 缓存"])
|
||||
|
||||
|
||||
@router.get("/cache/{cache_type}")
|
||||
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"),
|
||||
}
|
||||
Reference in New Issue
Block a user