Skip to content

Releases: linhut/gongwen-skill

v1.12.55

Choose a tag to compare

@linhut linhut released this 07 Aug 00:26

v1.12.55 — 表格虚线边框优化

  • generator._add_table 显式写入 tblBordersw:val=dashed 六边:top/left/bottom/right/insideH/insideV),直接格式覆盖 Table Grid 实线样式
  • 便于裁剪打印(虚线表线为公文表格规范常用样式)
  • 移除残留 tblBorders,避免实线叠加

验证

  • md2docx 生成含表格文档:6 边边框 val=dashed sz=4 ✅
  • 全量回归 99/99 通过 ✅

v1.12.54

Choose a tag to compare

@linhut linhut released this 05 Aug 09:08

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

Choose a tag to compare

@linhut linhut released this 05 Aug 00:39

v1.12.53 — v1.12.52 优化方案修复(FIX-A001~A003 + FIX-B001)

  • FIX-A001 [P1]:_atomic_save os.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

Choose a tag to compare

@linhut linhut released this 04 Aug 18:30

v1.12.52 — 后续修复(md2docx 页码注入 PermissionError + 行距值同步)

  • inject.py: inject_page_number 打开文件前增加重试机制(5×0.2s),
    解决 generate_docx 后文件句柄未释放导致的 PermissionError
  • template_builder.py:96: body_config fallback 28.95 → 33(与 YAML 配置一致)
  • generator.py:1048: 注释中 28.95pt → 33pt 同步

验证

  • 全量回归 99/99 通过
  • 页码注入端到端验证(无 PermissionError,页脚含 PAGE 域)

v1.12.51

Choose a tag to compare

@linhut linhut released this 04 Aug 11:27

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

Choose a tag to compare

@linhut linhut released this 04 Aug 02:44

v1.12.50 — 格式清理优化(颜色统一为黑色 + 句前空格去除)

① 颜色修复:统一为黑色

  • 新增 modifier.unify_text_color:正文区 run 文字统一为黑色(000000),跳过 annotation 标注段(修改说明的灰色/红色标注有意保留)
  • fixer 注册 set_color/unify_color 动作 + _common.yaml 新增 FIX-C051 规则

② 句前空格去除(AI 生成内容通病)

  • remove_extra_spaces 扩展为三段处理:
    1. 连续 2+ 空格压缩为 1 个
    2. 段首空格删除(首行缩进由 first_line_indent 属性实现,不依赖空格)
    3. 中文标点(,。;:!?、)前空格删除

③ 各路径接入

  • optimize:规则引擎全量规则自动覆盖 FIX-C004(空格)+ FIX-C051(颜色)
  • fix-common_ALLOWED 集合加入 FIX-C004/FIX-C051(按文种动态筛选)
  • md2docx:构建后手动调用 remove_extra_spaces + unify_text_color

测试与验证

  • 新增 tests/test_modifier_cleanup.py 8 用例(颜色统一×4 + 空格去除×4)
  • 全量回归 98/98 通过(90 + 8 新增)

v1.12.49

Choose a tag to compare

@linhut linhut released this 04 Aug 00:29

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

Choose a tag to compare

@linhut linhut released this 03 Aug 19:44

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_table 156/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-C047050/FIX-C047050
  • 页码格式 - {PAGE} -(半角短横线)
  • 罗马数字/英文序号识别与转换(I.→一、A.→(一))
  • 空行插入 _insert_blank_lines + blank_line_rules 配置

其他

  • SKILL.md 移除版本历史区(减小 Agent 上下文占用)
  • 隐去真实姓名(覃万成/赖泳源 → XXX)

验证

  • pytest 90/90 通过(70 旧 + 20 新增)
  • 座签独立/合并模式 CLI 端到端通过(字号/空格/分页符落地校验)

v1.12.47

Choose a tag to compare

@linhut linhut released this 03 Aug 01:31

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

Choose a tag to compare

@linhut linhut released this 02 Aug 23:31

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)