使用 IRValidator 对章节结构做快速校验。 仅记录未通过的章节及前三条错误,不会中断流程;目的是在 重装订前发现潜在结构问题。 参数: chapters: 章节 JSON 列表
(chapters)
| 100 | |
| 101 | |
| 102 | def validate_chapters(chapters): |
| 103 | """ |
| 104 | 使用 IRValidator 对章节结构做快速校验。 |
| 105 | |
| 106 | 仅记录未通过的章节及前三条错误,不会中断流程;目的是在 |
| 107 | 重装订前发现潜在结构问题。 |
| 108 | |
| 109 | 参数: |
| 110 | chapters: 章节 JSON 列表 |
| 111 | """ |
| 112 | validator = IRValidator() |
| 113 | invalid = [] |
| 114 | for chapter in chapters: |
| 115 | ok, errors = validator.validate_chapter(chapter) |
| 116 | if not ok: |
| 117 | invalid.append((chapter.get("chapterId") or "unknown", errors)) |
| 118 | |
| 119 | if invalid: |
| 120 | logger.warning(f"有 {len(invalid)} 个章节未通过结构校验,将继续装订:") |
| 121 | for chapter_id, errors in invalid: |
| 122 | preview = "; ".join(errors[:3]) |
| 123 | logger.warning(f" - {chapter_id}: {preview}") |
| 124 | else: |
| 125 | logger.info("章节结构校验通过") |
| 126 | |
| 127 | |
| 128 | def stitch_document(report_id, metadata, chapters): |
no test coverage detected