fix: search_documents 端点添加异常处理防止 traceback 泄露

This commit is contained in:
2026-07-10 15:18:46 +08:00
parent 284a4b9e09
commit 0a4a4c766c
3 changed files with 14 additions and 21 deletions
-12
View File
@@ -63,18 +63,6 @@ for label, d in targets:
skipped.append((f.name, size))
continue
files.append((label, str(f)))
# 顶层 .md 文件
for target_info in targets:
d = target_info[1]
p = Path(d)
if not p.exists():
continue
for f in p.glob("*.md"):
sz = f.stat().st_size
if sz > MAX_SIZE:
skipped.append((f.name, sz))
else:
files.append(("顶层/" + p.name, str(f)))
log(f"待处理: {len(files)} 个文件")
if skipped:
+5 -6
View File
@@ -32,12 +32,11 @@ class PDFSplitter:
pdf_path = text # text 参数实际是文件路径
extracted_pages = []
try:
doc = fitz.open(pdf_path)
for page in doc:
page_text = page.get_text()
if page_text.strip():
extracted_pages.append(page_text)
doc.close()
with fitz.open(pdf_path) as doc:
for page in doc:
page_text = page.get_text()
if page_text.strip():
extracted_pages.append(page_text)
except Exception as e:
logger.error("PDF 解析失败: %s%s", pdf_path, e)
raise ValueError(f"PDF 解析失败: {e}") from e
+9 -3
View File
@@ -150,9 +150,15 @@ def search_documents(
state: AppState = Depends(get_state),
_: bool = Depends(verify_api_key),
):
searcher = state.get_searcher(req.collection)
results = searcher.search(req.query, top_k=req.top_k)
return {"results": results, "collection": searcher.collection_name}
try:
searcher = state.get_searcher(req.collection)
results = searcher.search(req.query, top_k=req.top_k)
return {"results": results, "collection": searcher.collection_name}
except HTTPException:
raise
except Exception:
logger.exception("检索失败")
raise HTTPException(status_code=500, detail="服务器内部错误")
@app.delete("/api/v1/documents/{file_name}")