fix: ревью Opus — баги #1-2 + Protocol расширен + BatchGroupingResult
This commit is contained in:
+10
-5
@@ -15,10 +15,11 @@ class ParseResult:
|
||||
@classmethod
|
||||
def from_row(cls, row: dict):
|
||||
"""Из строки БД (documents)."""
|
||||
elements = row.get("elements_json", [])
|
||||
return cls(
|
||||
status=row.get("status", "error"),
|
||||
element_count=0, # вычисляется отдельно
|
||||
elements=row.get("elements_json", []),
|
||||
element_count=len(elements) if isinstance(elements, list) else 0,
|
||||
elements=elements,
|
||||
error=row.get("error_message"),
|
||||
)
|
||||
|
||||
@@ -44,22 +45,26 @@ class ClassifyResult:
|
||||
)
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class BatchGroupingResult:
|
||||
"""Выход grouping.py — результат группировки всего батча."""
|
||||
groups: list = field(default_factory=list) # list[GroupingResult]
|
||||
unresolved: list = field(default_factory=list) # документы без группы
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class GroupingResult:
|
||||
"""Выход grouping.py — результат группировки по контрактам."""
|
||||
contract_number: str # нормализованный номер договора
|
||||
counterparty: Optional[str] = None
|
||||
documents: list = field(default_factory=list) # [{doc_id, filename, doc_type, ...}]
|
||||
unresolved: list = field(default_factory=list) # документы без группы
|
||||
|
||||
@classmethod
|
||||
def from_row(cls, row: dict):
|
||||
"""Из строки БД или вычисленной группы."""
|
||||
return cls(
|
||||
contract_number=row.get("contract_number", ""),
|
||||
counterparty=row.get("counterparty"),
|
||||
documents=row.get("documents", []),
|
||||
unresolved=row.get("unresolved", []),
|
||||
)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user