feat: auto-sync file list + clear processing cache
- Auto-sync file_relations on every query (files appear immediately) - Add POST /api/files/reset-cache endpoint to delete output/result files and reset status to pending for reprocessing - Add "清除处理缓存" button to all 3 file views Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -15,7 +15,7 @@ from ..config import MAX_UPLOAD_SIZE, ALLOWED_EXTENSIONS
|
||||
from ..services.db_schema import (
|
||||
insert_file_metadata, query_file_history, query_file_stats,
|
||||
query_file_relations, delete_file_relations, sync_file_relations,
|
||||
query_file_relations_stats,
|
||||
query_file_relations_stats, reset_file_cache,
|
||||
)
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -301,9 +301,12 @@ async def get_file_relations(
|
||||
page_size: int = Query(50, ge=1, le=200),
|
||||
sort_by: Optional[str] = None,
|
||||
sort_order: str = "desc",
|
||||
sync: bool = Query(True, description="Auto-sync file relations before querying"),
|
||||
current_user: dict = Depends(get_current_user),
|
||||
):
|
||||
"""Query file relations with optional view filter."""
|
||||
if sync:
|
||||
sync_file_relations()
|
||||
items, total = query_file_relations(view=view, status=status, page=page, page_size=page_size,
|
||||
sort_by=sort_by, sort_order=sort_order)
|
||||
return {"items": items, "total": total}
|
||||
@@ -326,6 +329,24 @@ async def sync_relations(
|
||||
return {"message": "文件关系表已重建"}
|
||||
|
||||
|
||||
class ResetCacheRequest(BaseModel):
|
||||
files: list[dict] # [{input_image, output_excel, result_purchase}, ...]
|
||||
|
||||
|
||||
@router.post("/reset-cache")
|
||||
async def reset_cache(
|
||||
req: ResetCacheRequest,
|
||||
current_user: dict = Depends(get_current_user),
|
||||
):
|
||||
"""Delete output/result files and reset status to pending for reprocessing.
|
||||
|
||||
Each item in files should have: {input_image?, output_excel?, result_purchase?}
|
||||
The corresponding files on disk are deleted, and the relation status is reset.
|
||||
"""
|
||||
result = reset_file_cache(req.files)
|
||||
return result
|
||||
|
||||
|
||||
@router.delete("/relations")
|
||||
async def delete_relations(
|
||||
body: RelationDeleteRequest,
|
||||
|
||||
Reference in New Issue
Block a user