fix: ревью Opus — баги #1-2 + Protocol расширен + BatchGroupingResult

This commit is contained in:
2026-06-28 09:31:59 +04:00
parent fb1362bedc
commit 08c2b0c3a7
3 changed files with 93 additions and 10 deletions
+10 -5
View File
@@ -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", []),
)