Releases: linhut/gongwen-skill
Releases · linhut/gongwen-skill
Release list
v1.12.55
v1.12.55 — 表格虚线边框优化
- generator._add_table 显式写入
tblBorders(w:val=dashed六边:top/left/bottom/right/insideH/insideV),直接格式覆盖 Table Grid 实线样式 - 便于裁剪打印(虚线表线为公文表格规范常用样式)
- 移除残留 tblBorders,避免实线叠加
验证
- md2docx 生成含表格文档:6 边边框 val=dashed sz=4 ✅
- 全量回归 99/99 通过 ✅
v1.12.54
v1.12.54 — v1.12.53 优化方案修复 + 结语检查按文种差异化
FIX-V153-01 [P2] 0 处批注验证误报
- optimize-content tracked + full-review 两路径:
len(suggestions)==0时验证短路直接通过,
无变更 → 无 comments.xml 属正常,不再误报失败
FIX-V153-02 [P2] ending.check 结语检查实现
- 新增
_check_ending+_infer_doc_type_from_rule+ending.分发分支 - 5 文种(通知/请示/报告/批复/函)结尾格式检查从跳过变为实际触发
- 修复 CHK-RPT/CHK-RP 前缀被 CHK-R 误判的匹配顺序 bug
- 按文种差异化:
_ENDING_TAIL_SIZE(批复/函收窄为 3 段)、排除落款/日期/批注段、
original_text可为空
FIX-V153-03 [P3] 新增 CHANGELOG.md
- 记录 v1.12.50~v1.12.53 变更历史
验证
- 全量回归 99/99 通过
- 多文种布局验证:含结语+落款不报、无结语报、短文种收窄
v1.12.53
v1.12.53 — v1.12.52 优化方案修复(FIX-A001~A003 + FIX-B001)
- FIX-A001 [P1]:
_atomic_saveos.replace增加重试(3次×0.3s),解决 Windows 文件锁 - FIX-A002 [P1]:批注锚定段落索引映射跳过空段(
_build_content_para_map) - FIX-A003 [P2]:修订未注入时验证逻辑拆分,修订为 0 时不误报
- FIX-B001 [P2]:
usage-prompts.md+README.md行距 28.95→33pt 同步 - 全量回归 99/99 通过
v1.12.52
v1.12.52 — 后续修复(md2docx 页码注入 PermissionError + 行距值同步)
- inject.py:
inject_page_number打开文件前增加重试机制(5×0.2s),
解决generate_docx后文件句柄未释放导致的 PermissionError - template_builder.py:96:
body_configfallback 28.95 → 33(与 YAML 配置一致) - generator.py:1048: 注释中 28.95pt → 33pt 同步
验证
- 全量回归 99/99 通过
- 页码注入端到端验证(无 PermissionError,页脚含 PAGE 域)
v1.12.51
v1.12.51 — v1.12.50 优化方案修复 + 座签样式对齐示例
批次一 P0
- FIX-A001(check-fix 死循环):CHK/FIX 页边距行距同步——FIX-C003 页边距改 2.8/2.8/2.7/2.7cm、
FIX-C015/body/CHK-C006/speech.yaml 行距统一 33pt;Python 硬编码 16 处清零
(gongwen×6 / inject×8 含 EMU 367665→419100、twips '579'→'660' / modifier×1 / style_profile×3) - FIX-A002+B003(批注锚定):
_anchor_comment重构——向上追溯锚定点到 w:p 直接子元素
(commentRangeStart/End 不再落入 w:ins/w:del 内部)+ w:delText 搜索(纯删除段可锚定) - FIX-A003(验证误报):批注验证 W 命名空间去花括号,f-string 展开与 lxml tag 一致
批次二 P1
- FIX-B001(座签 BOM):三层防御——gongwen utf-8-sig + parse_name_list 入口剥离 + _format_name 深层剥离
- FIX-B002(md2docx 页码):generate_docx 后注入
- {PAGE} -(宋体 14pt 居中) - FIX-B003:并入 FIX-A002(delText 搜索)
批次三 P2
- FIX-C001(md2docx BOM):输入改 utf-8-sig(顺带修复 # 标题失配)
- FIX-C002(docx_to_image):subprocess 统一 encoding='utf-8'
座签样式(对齐示新座签.docx)
- 页面 20.99×29.70cm、表格 2 行 1 列(正反各 1 行)、边框 color=auto、
修复 tblW 重复节点 bug(宽 10838 twips)、新增模板布局测试
验证
- 全量回归 99/99 通过
v1.12.50
v1.12.50 — 格式清理优化(颜色统一为黑色 + 句前空格去除)
① 颜色修复:统一为黑色
- 新增
modifier.unify_text_color:正文区 run 文字统一为黑色(000000),跳过 annotation 标注段(修改说明的灰色/红色标注有意保留) - fixer 注册
set_color/unify_color动作 +_common.yaml新增 FIX-C051 规则
② 句前空格去除(AI 生成内容通病)
remove_extra_spaces扩展为三段处理:- 连续 2+ 空格压缩为 1 个
- 段首空格删除(首行缩进由 first_line_indent 属性实现,不依赖空格)
- 中文标点(,。;:!?、)前空格删除
③ 各路径接入
- optimize:规则引擎全量规则自动覆盖 FIX-C004(空格)+ FIX-C051(颜色)
- fix-common:
_ALLOWED集合加入 FIX-C004/FIX-C051(按文种动态筛选) - md2docx:构建后手动调用
remove_extra_spaces+unify_text_color
测试与验证
- 新增
tests/test_modifier_cleanup.py8 用例(颜色统一×4 + 空格去除×4) - 全量回归 98/98 通过(90 + 8 新增)
v1.12.49
v1.12.49 — v1.12.48 全量审计修复(P0×7 + P1×14 + P2×13 + 测试 90/90)
P0 紧急修复(7 项)
- P0-1:tracked_changes 补 logger 导入(except 分支不再二次崩溃)
- P0-2:table_sign
if not body:改显式判空(lxml Element 布尔值恒真的隐患) - P0-3:editor 透传 perspective/background 给 make_revision_model(修订说明补【视角】【依据】)
- P0-4:subprocess 显式 utf-8 编码(Windows GBK 中文 tag 乱码修复)
- P0-5:cmd_audit 删除未使用的 qn 导入(无 python-docx 环境不再必崩)
- P0-6:CHK-C001~C003/C011 页边距对齐省筹委会规范(2.8/2.8/2.7/2.7cm),消除 check 100% 误报
- P0-7:
--template改非必填(内置默认模板兜底),座签零配置可用
P1 功能修复(14 项)
- gongwen.py:
_detect_doc_type统一传 None、revision_author 缺省用默认作者、
reviewers fallback 对齐 6、paragraph_index None 不再转 -1、fix-common selected_rule_ids
按文种动态筛选、BytesIO 验证签名已支持、删重复打印、移除无效 --verbose - engine:optimizer 删除重复 outline 拆分逻辑、页码默认值字体改用 PAGE_NUMBER_FONT 常量、
fact_check 背景按行分段提取实体 - YAML:CHK-C024 message 改半角短横线、CHK-TS001 message 补全字号、numbered_body.bold 验证
P2 代码质量 + 安全(13 项)
- tracked 公共模块 tracked_common.py 提取(消除两模块重复计数器)、修改说明字号统一
10.5pt/#999999、座签分支提取 tmpl、FutureWarning 修复 - SEC-1:config.py 拒绝符号链接目录
- SEC-2/3:fact_check 新增
_safe_fetch_url(SSRF 防护:拒绝内网/回环/保留地址 + 重定向限 3 跳)
测试
- 2 个 CLI 测试修复(--template 非必填适配 + Windows utf-8 编码),90/90 全绿
v1.12.48
v1.12.48 — 座签功能优化 + 默认模板优化 + 真实姓名隐去
座签功能优化(P0×3 + P1×5 + P2×5 全部)
- CLI 修复(P0-1/P0-2):注册必填
--template与--placeholder参数,cmd_table_signs 传入 template_path,命令不再崩溃 - YAML 重写(P0-3/P1-4/P1-5):
table_sign.yaml动态字号(font_size_table156/120/100/80pt)、华文新魏不加粗、页面/表格布局配置、CHK-TS001005 + FIX-TS001004 - 字号空格对齐(P1-1/P1-2):
_calc_font_size对齐 WPS 实测(312/240/200/160 sz),两字名插入 2 空格 - help 修正(P1-3):A4纵向/华文新魏/动态字号
- 占位符参数化(P2-3):4 处函数全链路 placeholder 传递
- 内置默认模板(P2-2):新增
table_sign_template.py+table_sign.dotx,零配置可用 - 页面布局校验(P2-1):新增
validate_page_setup - 测试覆盖(P2-5):新增 20 个桌签测试用例
默认模板优化(省筹委会规范)
- 页边距 2.8/2.8/2.7/2.7cm + 页眉 1.5/页脚 2.3cm 配置化
- 标题行距 CHK/FIX 统一 33pt(修复既有矛盾)
- 新增四级标题 heading_4 + CHK-C047
050/FIX-C047050 - 页码格式
- {PAGE} -(半角短横线) - 罗马数字/英文序号识别与转换(I.→一、A.→(一))
- 空行插入
_insert_blank_lines+ blank_line_rules 配置
其他
- SKILL.md 移除版本历史区(减小 Agent 上下文占用)
- 隐去真实姓名(覃万成/赖泳源 → XXX)
验证
- pytest 90/90 通过(70 旧 + 20 新增)
- 座签独立/合并模式 CLI 端到端通过(字号/空格/分页符落地校验)
v1.12.47
v1.12.47 — 加粗检查与修复机制优化(B-01~B-10 全部)
统一边界正则(B-02)
- 新增
FIRST_SENTENCE_DELIMITERS(句号/叹号/问号/冒号),三套加粗实现统一使用 - 顿号
、与分号;不再作为分句边界(并列关系)
文种感知(B-01)
fix_bold_range增加 doc_type 参数,speech 文种跳过整段加粗修复- CHK-C030 对 speech 文种同步跳过整段加粗检查
段落类型感知(B-09/B-10)
- CHK-C030 排除称呼/导语/过渡/署名/会议日期段(不报告整段加粗)
PARAGRAPH_TYPE_RULES显式注册 title/annotation 为 False- 移除
fix_bold_range的_EXCLUDE_ROLES第二层过滤(统一到should_bold_first_sentence)
策略对齐(B-05/B-06/B-03/B-04)
- 编号词领句整体加粗到句号(editor 对齐 modifier,删除仅2字短路径)
- 移除 30 字阈值(短段落如"二是聚焦主责主业。"也修复)
- optimize 增加首句加粗能力(非 speech 文种,与 fix-common 对齐)
- FIX-C031 依赖重排(
_reorder_by_dependencies,在 FIX-C041~C044 之后执行)
正则补充(B-07/B-08)
- 导语补充"为了/经/据/奉";过渡补充"因此/故/由此可见/从上述"
- 署名补充"〇"字符 + "印发/部/草/修订"后缀(保留末尾锚定)
验收(全部通过)
- speech optimize 整段加粗保留、notice optimize 首句加粗、边界三套统一、
编号词整体加粗、CHK-C030 段落类型感知、短段落修复、日期段/导语段不加粗 - pytest 70/70 通过
v1.12.46
v1.12.46 — 全量审计优化(P0+P1+P2+P3 共 91 项全部修复)
P0 紧急修复(4 项)
- 表格位置错位:
_replace_paragraphs改为 body 子元素交错遍历(<w:tbl>不消耗段落索引) - 修订接受前置:
_accept_all_revisions移到段落替换之前,避免新内容被残留修订破坏 - W 命名空间未定义(tracked 批注验证必崩)→ 函数开头定义
_m未绑定(--output-tasks 必崩)→ 显式初始化
P1 高优先级(14 项)
多 run markdown 按比例重分配、合并单元格 id 去重、checker 同 rule_id 去重汇总、
fix-common 复用规则引擎 apply_fixes()、handoff 合并写入 + 原子写入(os.replace)等
P2 设计缺陷(33 项)
段落类型字段检查(recipient/attachment/cc + 5 类段落)、CHK-C046 签名字号检查、
title→doc_title 键名统一、规则缓存 mtime 感知、页码字体常量、handoff --write 选项等
P3 代码质量(40 项)
重复导入清理、AI 声明段独立函数 _apply_ai_declaration、page_number 检查实现、
severity 降级警告、validate_rule 字段校验、SKILL.md 编号/表述修正等
测试覆盖(52 → 70 用例)
新增 tests/conftest.py、test_font_utils.py;补充 font_utils/models validator/
handoff 并发/save-delete 规则/deep_merge 直测/集成断言深度测试
验证
- 单元测试 70/70 通过
- CLI 端到端回归 7 项全绿(md2docx/fix-common/optimize/handoff/check-update/含表格 round-trip)