This commit is contained in:
Neo
2026-03-15 10:15:02 +08:00
parent 2dd217522c
commit 72bb11b34f
916 changed files with 65306 additions and 16102803 deletions

View 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="目标 IDmember_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"),
}