Skip to content

Feature/rule engine#97

Merged
AfishInLake merged 9 commits into
masterfrom
feature/rule-engine
Jun 20, 2026
Merged

Feature/rule engine#97
AfishInLake merged 9 commits into
masterfrom
feature/rule-engine

Conversation

@AfishInLake

Copy link
Copy Markdown
Owner

📌 关联 Issue

  • Closes #xxx
  • Related to #yyy

🎯 变更概述

  • 兼容现有功能(默认选项)
  • 包含破坏性更新(如勾选,请完整填写以下内容)

⚠️ 破坏性更新说明(仅当上方勾选时填写)

  • 受影响的用户场景

    (例如:使用 v0.2 格式配置文件的用户升级后将遇到解析错误)

  • 具体变更点

    (例如:YAML 配置中 style.font_size 字段已移除,改为嵌套结构 style.font.size

  • 迁移建议

    (例如:请将 font_size: 12 更新为 font: { size: 12 }

  • 是否提供自动迁移工具?

    • 是(路径:scripts/migrate_v02_to_v03.py

✅ 提交前自查清单

🔹 测试保障

  • 已通过 make test(或等效命令)
  • 新增/修改的功能有对应单元测试(位于 tests/ 目录)
  • 所有测试均使用 io.BytesIO,未保存任何临时 .docx 文件到磁盘
  • 测试覆盖了正常路径、边界情况和错误输入

🔹 配置与兼容性

  • YAML 配置变更向后兼容(旧配置仍能运行,或提供迁移说明)
  • 新增配置项已在 example/ 中提供示例
  • 不依赖未声明的第三方库(requirements.txtpyproject.toml 已更新)

🔹 文档与示例

  • README.md 已更新(如新增功能说明、命令参数)
  • 示例文档(example/)能正常运行且反映最新能力
  • 复杂逻辑已添加必要注释(尤其是涉及 python-docx 底层操作的部分)

🔹 安全与资源

  • 无敏感信息泄露(如 API Key、本地路径)
  • 无内存泄漏风险(如大文档处理时及时释放对象)
  • 未使用不安全的反序列化(如 pickleyaml.load 未指定 Loader

🔹 其他

  • 分支基于最新 master 切出,无无关提交
  • Commit 信息清晰(建议遵循 Conventional Commits,如 feat: add table caption check

💡 温馨提示:勾选 [x] 表示你已确认该项。未勾选项可能成为 Review 阻塞点。

新增 FormatNode.RULES + _run_rules() 机制,开发者只需注册 handler 并专注
逻辑判断,是否生效由 YAML 配置的 enabled 字段控制。KeywordsCN/KeywordsEN 的
关键词数量和末尾标点校验、CaptionFigure/CaptionTable 的题注编号校验已接入。

- 新增 BaseRuleConfig 基类、KeywordCountRule、TrailingPunctRule、
  CaptionRulesConfig、KeywordsRulesConfig 等规则模型
- FormatNode 新增 RULES 字典和 _run_rules(doc, p) 自动调度方法
- _show_config() 改为从 Pydantic 模型递归生成,新增字段自动反映
- wordf config -o 导出 YAML 自动包含深层 rules 配置
- SKILL.md 新增纯文本替换流程,避免 AI 误将文本替换执行成格式化
- 同步更新 docs/、config_spec.md、validate_config.py 的字段白名单
- 新增 RULES + DEFAULT_RULES 机制,段落/字符样式由框架自动调度
- 批注统一格式:位置-问题类型:现状,规范:标准
- 批注缓冲合并:同段落多问题合并为一条,字符级锚在具体 run
- 样式继承回退:缩进、行距、段间距从样式链递归读取
- 半角标点检测:中文上下文中的半角标点提示改为全角
- 提醒级批注蓝色字体
- 新增图片段落识别 figure_image、表格对象 table_object
- 配置从 Pydantic 模型自动生成,测试与示例文件解耦
- 检测报告摘要(仅 check 模式):错误统计 + 字数问题 + 分级
- 引用上标限制第一章,检查模式不修改文档
- font_name_cn 仅当 run 含中文字符时才检查,避免引号/英文被误报
- Keywords 标签识别用全文位置匹配,防Keywords被拆成多run导致误判
- 半角标点补全引号/感叹号/问号,段首标点匹配
- 双向验证日志降为 debug,不再刷屏
- 关键词字段迁移至 rules 结构(keyword_count / trailing_punctuation)
- 新增 template_name 字段
- 新增 figures.image / tables.object 段落格式配置
- 新增 figures.rules / tables.rules 编号检查开关
- 新增 body_text.rules.punctuation 标点检查开关
- style_checks_warning 默认启用主要检查项
- API: GET /configs 列出可用配置,GET /configs/{name} 读取,POST /configs/save 保存
- UI: 配置生成器左侧新增配置模板侧边栏,点击快速切换模板
- 新增保存到服务器按钮,可将当前配置写入 configs/ 目录
- 默认附带 undergrad_thesis.yaml 示例配置
- 找到第一个含摘要/Abstract的段落,之前内容全部归为 other
- other 在 VOIDNODELIST 中,不参与格式检查
- other 子节点一并跳过遍历
@AfishInLake AfishInLake merged commit 0bd5e63 into master Jun 20, 2026
12 checks passed
@AfishInLake AfishInLake deleted the feature/rule-engine branch June 20, 2026 03:27
AfishInLake added a commit that referenced this pull request Jun 23, 2026
* feat: 声明式规则引擎 — 业务校验由配置驱动、框架自动调度

新增 FormatNode.RULES + _run_rules() 机制,开发者只需注册 handler 并专注
逻辑判断,是否生效由 YAML 配置的 enabled 字段控制。KeywordsCN/KeywordsEN 的
关键词数量和末尾标点校验、CaptionFigure/CaptionTable 的题注编号校验已接入。

- 新增 BaseRuleConfig 基类、KeywordCountRule、TrailingPunctRule、
  CaptionRulesConfig、KeywordsRulesConfig 等规则模型
- FormatNode 新增 RULES 字典和 _run_rules(doc, p) 自动调度方法
- _show_config() 改为从 Pydantic 模型递归生成,新增字段自动反映
- wordf config -o 导出 YAML 自动包含深层 rules 配置
- SKILL.md 新增纯文本替换流程,避免 AI 误将文本替换执行成格式化
- 同步更新 docs/、config_spec.md、validate_config.py 的字段白名单

* chore: bump version to 1.4.0

* feat: 声明式规则引擎、批注格式标准化、样式继承修复、标点检测

- 新增 RULES + DEFAULT_RULES 机制,段落/字符样式由框架自动调度
- 批注统一格式:位置-问题类型:现状,规范:标准
- 批注缓冲合并:同段落多问题合并为一条,字符级锚在具体 run
- 样式继承回退:缩进、行距、段间距从样式链递归读取
- 半角标点检测:中文上下文中的半角标点提示改为全角
- 提醒级批注蓝色字体
- 新增图片段落识别 figure_image、表格对象 table_object
- 配置从 Pydantic 模型自动生成,测试与示例文件解耦
- 检测报告摘要(仅 check 模式):错误统计 + 字数问题 + 分级
- 引用上标限制第一章,检查模式不修改文档

* fix: 中文字体检查仅含CJK字符的run、标签识别防拆分、半角标点补全

- font_name_cn 仅当 run 含中文字符时才检查,避免引号/英文被误报
- Keywords 标签识别用全文位置匹配,防Keywords被拆成多run导致误判
- 半角标点补全引号/感叹号/问号,段首标点匹配
- 双向验证日志降为 debug,不再刷屏

* fix: WordFormatUI 配置页面同步后端版本更新

- 关键词字段迁移至 rules 结构(keyword_count / trailing_punctuation)
- 新增 template_name 字段
- 新增 figures.image / tables.object 段落格式配置
- 新增 figures.rules / tables.rules 编号检查开关
- 新增 body_text.rules.punctuation 标点检查开关
- style_checks_warning 默认启用主要检查项

* feat: 新增配置模板列表侧边栏 + 服务器配置管理 API

- API: GET /configs 列出可用配置,GET /configs/{name} 读取,POST /configs/save 保存
- UI: 配置生成器左侧新增配置模板侧边栏,点击快速切换模板
- 新增保存到服务器按钮,可将当前配置写入 configs/ 目录
- 默认附带 undergrad_thesis.yaml 示例配置

* fix: 移除 Google Fonts 依赖,改用系统字体避免加载卡顿

* build: 更新前端构建产物(移除 Google Fonts、新增配置侧边栏)

* fix: 摘要前所有段落标记为 other,跳过封面/声明页检查

- 找到第一个含摘要/Abstract的段落,之前内容全部归为 other
- other 在 VOIDNODELIST 中,不参与格式检查
- other 子节点一并跳过遍历
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant