chapter_policy.py 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. """统一定义各章节对模板结构的编辑权限。"""
  2. from __future__ import annotations
  3. from enum import Enum
  4. class ChapterEditMode(str, Enum):
  5. """章节相对模板的编辑模式。"""
  6. # 允许生成补充性子标题,但不授权删除或改写模板原文。当前仅用于
  7. # “需求理解”章,最终 DOCX 装配必须采用“保留并增补”策略。
  8. RESTRUCTURE = "restructure"
  9. PRESERVE_STRUCTURE = "preserve_structure"
  10. _RESTRUCTURE_KEYWORDS = ("需求理解",)
  11. def get_chapter_edit_mode(title: str) -> ChapterEditMode:
  12. """返回章节结构权限。
  13. 只有“需求理解”可以生成补充性章内子标题;其余所有章节均锁定模板结构。
  14. 此权限不代表可以删除模板原文。正文是否允许改写是另一项权限,不再
  15. 通过结构枚举表达。
  16. """
  17. normalized = "".join((title or "").split())
  18. if any(keyword in normalized for keyword in _RESTRUCTURE_KEYWORDS):
  19. return ChapterEditMode.RESTRUCTURE
  20. return ChapterEditMode.PRESERVE_STRUCTURE
  21. __all__ = ["ChapterEditMode", "get_chapter_edit_mode"]