实现Agent对话,合格自动提交,不合格补充材料的能力
This commit is contained in:
58
src/exceptions.py
Normal file
58
src/exceptions.py
Normal file
@@ -0,0 +1,58 @@
|
||||
"""项目级异常定义
|
||||
|
||||
异常层次:
|
||||
ReimbursementError — 所有业务异常的基类
|
||||
├── ExtractionError — 文档提取失败(单个文件/批量全失败)
|
||||
├── BrowserError — 浏览器自动化失败
|
||||
└── ValidationError — 校验失败(规则校验/语义校验)
|
||||
|
||||
使用规则:
|
||||
- 模块内部: 捕获具体异常 → 记录日志 → 截图(如适用) → re-raise
|
||||
- 模块边界: 不吞异常,向上传播
|
||||
- 顶层 (routes.py / orchestrator.py): 统一捕获 ReimbursementError
|
||||
- 可恢复场景: 返回结构化结果而非 raise
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any
|
||||
|
||||
|
||||
class ReimbursementError(Exception):
|
||||
"""业务异常基类"""
|
||||
|
||||
def __init__(self, message: str, details: dict[str, Any] | None = None) -> None:
|
||||
super().__init__(message)
|
||||
self.details = details or {}
|
||||
|
||||
|
||||
class ExtractionError(ReimbursementError):
|
||||
"""文档提取失败"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
message: str,
|
||||
failed_files: list[str] | None = None,
|
||||
details: dict[str, Any] | None = None,
|
||||
) -> None:
|
||||
super().__init__(message, details)
|
||||
self.failed_files = failed_files or []
|
||||
|
||||
|
||||
class BrowserError(ReimbursementError):
|
||||
"""浏览器自动化操作失败"""
|
||||
|
||||
pass
|
||||
|
||||
|
||||
class ValidationError(ReimbursementError):
|
||||
"""校验失败"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
message: str,
|
||||
missing_fields: list[str] | None = None,
|
||||
details: dict[str, Any] | None = None,
|
||||
) -> None:
|
||||
super().__init__(message, details)
|
||||
self.missing_fields = missing_fields or []
|
||||
Reference in New Issue
Block a user