"""Общий вид строк шагов 6–8 у сервиса и ядра.""" from dataclasses import dataclass from decimal import Decimal from arm_statements.model import LineStatus @dataclass(frozen=True, slots=True) class EvalValue: column: str # ключ колонки: str(column_index) у сервиса, ключ хоста у ядра amount: Decimal | None text: str | None confidence: float | None is_recognized: bool fixed: bool = False # правлено или подтверждено аналитиком @dataclass(frozen=True, slots=True) class EvalLine: key: str # ref у сервиса, ключ хоста у ядра order: int | None # row_index; у ядра None — строка правки line_status: LineStatus line_code: str | None code_confidence: float | None code_fixed: bool values: tuple[EvalValue, ...] def is_check_line(line: EvalLine) -> bool: """Строка участвует в §7: `ok` с кодом; строка правки (`order is None`) — только с суммой (P1-8).""" if line.line_status is not LineStatus.OK or line.line_code is None: return False if line.order is None: return any(value.amount is not None for value in line.values) return True