feat(server): 系统缓存清理接口与 OCR 文本层兜底增强
- 新增 system_cache 模块与 POST /settings/cache/clear,管理员可一键清理 OCR 结果/运行时配置/模型失败冷却/知识库索引/地点语义等进程内缓存 - 各服务暴露 clear_*_cache 方法(ocr/runtime_settings/runtime_chat/knowledge/application_location_semantic),SettingsCacheClearRead 汇总清理项 - OCR 转图片失败时尝试用 PDF 文本层兜底构建识别文档(有效字符≥8),并写结果缓存;OcrService 暴露 clear_result_cache - receipt_folder 车票过滤补充身份证号关键词,附件文档/操作/展示模块同步适配 - 新增 system_cache_endpoints 测试,更新 openapi_schema/ocr/receipt_folder/attachment_association_jobs 测试
This commit is contained in:
@@ -5,18 +5,20 @@ from typing import Annotated
|
||||
from fastapi import APIRouter, Depends, Header, HTTPException, status
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.api.deps import get_db
|
||||
from app.api.deps import CurrentUserContext, get_db, require_admin_user
|
||||
from app.core.config import get_settings as get_runtime_settings
|
||||
from app.schemas.common import ErrorResponse
|
||||
from app.schemas.settings import (
|
||||
ModelConnectivityTestRead,
|
||||
ModelConnectivityTestRequest,
|
||||
RuntimeModelConfigRead,
|
||||
SettingsCacheClearRead,
|
||||
SettingsRead,
|
||||
SettingsWrite,
|
||||
)
|
||||
from app.services.model_connectivity import probe_model_connectivity
|
||||
from app.services.settings import SettingsService
|
||||
from app.services.system_cache import SystemCacheService
|
||||
|
||||
router = APIRouter(prefix="/settings")
|
||||
DbSession = Annotated[Session, Depends(get_db)]
|
||||
@@ -93,6 +95,24 @@ def test_model_connectivity(
|
||||
return probe_model_connectivity(resolved_payload)
|
||||
|
||||
|
||||
@router.post(
|
||||
"/cache/clear",
|
||||
response_model=SettingsCacheClearRead,
|
||||
summary="清理系统缓存",
|
||||
description="清理 OCR、模型失败冷却、知识库索引和运行时配置等进程内缓存,不删除业务文件或数据库记录。",
|
||||
responses={
|
||||
status.HTTP_403_FORBIDDEN: {
|
||||
"model": ErrorResponse,
|
||||
"description": "只有管理员可以清理系统缓存。",
|
||||
}
|
||||
},
|
||||
)
|
||||
def clear_system_cache(
|
||||
_: Annotated[CurrentUserContext, Depends(require_admin_user)],
|
||||
) -> SettingsCacheClearRead:
|
||||
return SystemCacheService().clear_all()
|
||||
|
||||
|
||||
@router.get(
|
||||
"/runtime-models/{slot}",
|
||||
response_model=RuntimeModelConfigRead,
|
||||
|
||||
Reference in New Issue
Block a user