refactor: 统一代码格式,调整多行代码换行风格

对多个文件进行代码格式化调整,将长行参数拆分为多行书写,提升代码可读性,包括:
- 调整函数定义、调用的多行换行格式
- 优化列表、元组、字典的多行排版
- 新增README.md项目说明文档
This commit is contained in:
2026-07-30 14:25:12 +08:00
parent dce9e31bde
commit fdb664e546
10 changed files with 491 additions and 49 deletions
+6 -2
View File
@@ -102,7 +102,9 @@ def _parse_pdf(content: bytes) -> str:
if not settings.pdf_ocr_enabled:
return ""
ocr_text = _ocr_pdf(content, max_pages=settings.pdf_ocr_max_pages, dpi=settings.pdf_ocr_dpi)
ocr_text = _ocr_pdf(
content, max_pages=settings.pdf_ocr_max_pages, dpi=settings.pdf_ocr_dpi
)
return ocr_text
@@ -143,7 +145,9 @@ def _ocr_pdf(content: bytes, max_pages: int, dpi: int) -> str:
result, _ = _ocr_engine(pil_image)
if result:
# result: [[box, text, score], ...],按行拼接
lines = [item[1] for item in result if item and len(item) >= 2 and item[1]]
lines = [
item[1] for item in result if item and len(item) >= 2 and item[1]
]
if lines:
page_texts.append("\n".join(lines))
pdf.close()
+44 -12
View File
@@ -43,7 +43,9 @@ class IngestTaskStatus(StrEnum):
# 终态集合
TERMINAL_STATUSES: frozenset[str] = frozenset({IngestTaskStatus.DONE, IngestTaskStatus.FAILED})
TERMINAL_STATUSES: frozenset[str] = frozenset(
{IngestTaskStatus.DONE, IngestTaskStatus.FAILED}
)
def _utc_now_iso() -> str:
@@ -54,7 +56,9 @@ def _utc_now_iso() -> str:
class IngestTaskManager:
"""入库异步任务管理器:登记、后台执行、状态查询与 Redis 持久镜像"""
def __init__(self, ingester: Ingester, redis: RedisCache | None, settings: Settings) -> None:
def __init__(
self, ingester: Ingester, redis: RedisCache | None, settings: Settings
) -> None:
self._ingester = ingester
self._redis = redis
self._settings = settings
@@ -123,7 +127,11 @@ class IngestTaskManager:
try:
return await self._redis.get_json(f"{REDIS_KEY_PREFIX}{task_id}")
except Exception:
logger.warning("入库任务状态读取 Redis 失败,降级为未命中", task_id=task_id, exc_info=True)
logger.warning(
"入库任务状态读取 Redis 失败,降级为未命中",
task_id=task_id,
exc_info=True,
)
return None
async def wait_done(self, task_id: str, timeout: float = 30.0) -> dict[str, Any]:
@@ -147,7 +155,9 @@ class IngestTaskManager:
"""后台执行入库:并发限流 + 阶段状态推进 + 结果/错误落账 + 去重记录写入"""
async with self._semaphore:
try:
result = await self._ingester.ingest(doc, progress_cb=lambda stage: self._on_progress(task_id, stage))
result = await self._ingester.ingest(
doc, progress_cb=lambda stage: self._on_progress(task_id, stage)
)
except IngestionError as exc:
# 入库已知失败:透传阶段与已产出的部分总结
self._finish_failed(
@@ -155,11 +165,18 @@ class IngestTaskManager:
{
"stage": exc.stage,
"message": str(exc),
"partial_summary": exc.summary.model_dump(mode="json") if exc.summary is not None else None,
"partial_summary": (
exc.summary.model_dump(mode="json")
if exc.summary is not None
else None
),
},
)
except Exception as exc:
self._finish_failed(task_id, {"stage": "unknown", "message": str(exc), "partial_summary": None})
self._finish_failed(
task_id,
{"stage": "unknown", "message": str(exc), "partial_summary": None},
)
else:
result_dict = result.model_dump(mode="json")
self._tasks[task_id].update(
@@ -178,7 +195,9 @@ class IngestTaskManager:
try:
return await self._redis.get_json(f"{DEDUP_KEY_PREFIX}{text_hash}")
except Exception:
logger.warning("去重记录查询失败,降级为未命中", text_hash=text_hash, exc_info=True)
logger.warning(
"去重记录查询失败,降级为未命中", text_hash=text_hash, exc_info=True
)
return None
async def _record_dedup(self, text_hash: str, result_dict: dict[str, Any]) -> None:
@@ -196,9 +215,16 @@ class IngestTaskManager:
def _finish_failed(self, task_id: str, error: dict[str, Any]) -> None:
"""将任务置为 failed 并记录错误信息"""
self._tasks[task_id].update(status=IngestTaskStatus.FAILED, updated_at=_utc_now_iso(), error=error)
self._tasks[task_id].update(
status=IngestTaskStatus.FAILED, updated_at=_utc_now_iso(), error=error
)
self._schedule_mirror(task_id)
logger.error("入库任务失败", task_id=task_id, stage=error["stage"], error=error["message"])
logger.error(
"入库任务失败",
task_id=task_id,
stage=error["stage"],
error=error["message"],
)
def _on_progress(self, task_id: str, stage: str) -> None:
"""Ingester 阶段回调:推进任务状态并同步镜像(同步函数,供 progress_cb 使用)"""
@@ -213,7 +239,9 @@ class IngestTaskManager:
"""将当前任务状态快照异步镜像到 Redis(同步上下文也可调用)"""
if self._redis is None:
return
mirror = asyncio.create_task(self._mirror_to_redis(task_id, dict(self._tasks[task_id])))
mirror = asyncio.create_task(
self._mirror_to_redis(task_id, dict(self._tasks[task_id]))
)
self._mirror_tasks.add(mirror)
mirror.add_done_callback(self._mirror_tasks.discard)
@@ -225,6 +253,10 @@ class IngestTaskManager:
else self._settings.ingest_task_ttl_done
)
try:
await self._redis.set_json(f"{REDIS_KEY_PREFIX}{task_id}", snapshot, ttl=ttl)
await self._redis.set_json(
f"{REDIS_KEY_PREFIX}{task_id}", snapshot, ttl=ttl
)
except Exception:
logger.warning("入库任务状态镜像 Redis 失败", task_id=task_id, exc_info=True)
logger.warning(
"入库任务状态镜像 Redis 失败", task_id=task_id, exc_info=True
)