Files
jinzhenjandClaude Opus 4.7 c92e6f8abc feat: support legacy Office binary formats (doc/xls/ppt) end-to-end
myhloli 的 7 个 commit 在 backend/model 层加入 DOC/XLS/PPT 原生解析,
但上层 parser/doclib/filetypes/utils/docs/tests 未同步配套。本次补齐:

- filetypes.py: OFFICE_EXTENSIONS 加入 doc/xls/ppt,补全 MIME/FILE_TYPE 映射,
  删除 LEGACY_OFFICE_EXTENSION_UPGRADES(已原生支持,不再需要"请转换为 .docx"提示)
- parser/base.py: _build_middle_json_from_legacy 补 is_full_document=True
  (修复 1.0 schema 加载必崩的 bug),_LEGACY_DEFAULT_FILE_SUFFIX Literal 扩展
- parser/mineru_parser.py: _FileSuffix/_SUPPORTED_SUFFIXES 扩展,返回类型
  tuple[MiddleJson, Any] → tuple[MiddleJson, ModelJson]
- utils/guess_suffix_or_lang.py: 新增 OLE2 容器识别(D0CF11E0 magic +
  olefile 内部 stream 区分 doc/xls/ppt),插入 OOXML 失败后、Magika 兜底前
- doclib/services/parse_svc.py: page_count 默认值分支扩展到 doc/ppt/xls,
  _unsupported_file_type_message 删除误导性"请转换"提示
- doclib/core/file_io.py: _extract_office_meta 新增 doc/ppt/xls 分支,
  用 olefile 提取 OLE SummaryInformation 属性
- doclib/background/compaction.py: model_list_to_pages → model_json_to_pages
  迁移(myhloli 已删除 model_list_to_pages)
- docs: CLAUDE.md/AGENTS.md/output_files.md/quick_usage.md 更新支持格式列表
- tests: 新增 test_filetypes.py + test_guess_suffix_ole2.py,
  test_parse_result_contract.py 补 is_full_document 断言

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-08-25 12:12:54 +08:00

Symbolic link
9 B