feat: data_models 扩展 MixedParagraph/MixedSheet(段落容器)

This commit is contained in:
lhl
2026-08-09 04:04:14 +08:00
parent 0f137b945b
commit 539945be67
4 changed files with 47 additions and 4 deletions
+20 -3
View File
@@ -1,8 +1,8 @@
from __future__ import annotations
from dataclasses import dataclass
from dataclasses import dataclass, field
from enum import Enum
from typing import Any
from typing import Any, Literal
class SheetType(Enum):
@@ -222,4 +222,21 @@ class StructuredSource:
rule_docs: list[RuleDocument]
image_analyses: list[ImageAnalysis]
existing_system: ExistingSystemInfo | None
comments: list[CellComment]
comments: list[CellComment]
@dataclass
class MixedParagraph:
"""混合 sheet 的一个段落(表格或自由文本)"""
kind: Literal["table", "free_text"]
matrix: list[list[Any]] | None = None # 该段原始矩阵(调试/重现)
table: ExcelTable | None = None # kind="table" 时填充
text: str | None = None # kind="free_text" 时填充(段全文)
source_range: tuple[int, int] | None = None # (first_row, last_row) 矩阵 0-based
@dataclass
class MixedSheet:
"""混合 sheet 的段落集合"""
name: str
paragraphs: list[MixedParagraph] = field(default_factory=list)
+2 -1
View File
@@ -3,7 +3,7 @@ from __future__ import annotations
from dataclasses import dataclass, field
from pathlib import Path
from genesis.data_models import CellComment, ExcelTable
from genesis.data_models import CellComment, ExcelTable, MixedSheet
from genesis.parsers.excel_reader import open_workbook, sheet_matrix
from genesis.parsers.sheet_detector import detect_sheet_type
from genesis.parsers.sheet_nature import SheetNature, classify_sheet, find_header_row
@@ -19,6 +19,7 @@ class ExcelParseResult:
tables: list[ExcelTable] = field(default_factory=list)
comments: list[CellComment] = field(default_factory=list)
skipped: list[str] = field(default_factory=list)
mixed: list[MixedSheet] = field(default_factory=list)
class ExcelParser: