流程文档与格式流水线

SKILL效率

原名 process-doc-pipeline

效率 未标注权限 许可证不明确
安装这个技能

解析 EPROS 流程图并按其结构套用企业模板生成流程发布文档,也可将流程图高保真还原为图片,或对现有 Office 文档做纯格式对齐而保持文字内容完全不变。

一句话选型结论

按资料字段整理

流程文档与格式流水线是效率类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类效率 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_e98d10ee/process-doc-pipeline
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

效率
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_e98d10ee仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验2026-11-06上游最后核验时间 · 数据更新 2026-11-06
正文体量146.2 KBSKILL.md 原文大小,越大说明说明书写得越细

能做什么

0 项能力
上游给出的能力概览与适用场景
按模板生成流程文档流程图重建为图片Office 文档格式对齐

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
整理待办与日程

把零散任务收进清单,排出优先级。

批量处理重复任务

把固定动作做成模板,重复执行。

把流程写成清单

把口头流程整理成可复用的步骤。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在效率场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
流程文档与格式流水线当前 未标注权限 未标注 未标注 未标注 有
Nano PDF 文档 联网访问 ClawHub 市场 424.9 万 OpenClaw 有
自动更新程序 浏览器控制 ClawHub 市场 296.4 万 OpenClaw 有
Gemini 助手 联网访问 ClawHub 市场 254.7 万 OpenClaw 有
word DOCX 文档 联网访问 ClawHub 市场 239.6 万 OpenClaw 有
Excel XLSX 前端 联网访问 ClawHub 市场 227.0 万 OpenClaw 有

SKILL.md 全文

146.2 KB
模型实际读到的说明书原文,来自技能仓库

流程文档流水线(process-doc-pipeline)

一条流水线覆盖流程文档的两类生产任务:从 .epros 流程图生成《流程发布文档》,或把既有文档按规范/模板对齐格式。两者共用同一套 DLP 通道层、备份快照、终验与留痕机制。

0. 先分诊:走哪条链

用户意图 走哪条链 判据
给定 .epros,要输出/重写《流程发布文档》 生成链 paths.epros_files 非空
给定既有文档 + 规范/模板,要统一版式 对齐链 paths.target_files 非空、无 .epros
给定 .epros(+ 配套文档),要查连线逻辑/规范并整改 复核链(§10D,23 条判据) 用户语含「复核/检查/排查/问题清单/整改」,且要求判缺陷而非生成
先按流程图生成、再对生成稿做一次版式终检 both 两者皆非空
仅诊断不改动 任一条链的只读阶段 scope 全关 + 不进入执行步
需要改写/润色/增删文字 ❌ 不适用 走文档创作类技能
从零新建(无 .epros、无模板) ❌ 不适用 走文档生成类技能
仅 docx↔pdf 格式转换 ❌ 不适用 走转换类技能

模式由 task.mode 控制:auto | generate | align | review | both。auto 时按 paths 与意图判定。
复核链与另两条共用同一底座(备份快照 / 终验 / 交付留痕),区别是:产物不是新文档,而是「改回 .epros + 出问题清单」,且必须先出清单、再执行整改(先诊断后动手,§10D D3)。

1. 架构:两条链 + 共享底座

                    ┌──────────────── 共享底座 ────────────────┐
                    │ DLP 通道层(dlp_channel) │ 备份+MDS 快照   │
                    │ 参数配置块(唯一覆写入口) │ 终验 + 交付留痕 │
                    └──────────────────────────────────────────┘
                                     │
        ┌────────────────────────────┴────────────────────────────┐
        │                                                          │
   【生成链 generate】                                      【对齐链 align】
   Phase A  解析 .epros(探针 + 泳道 + 连线)                Phase B  基准萃取(规范 + 模板实测)
   Phase C-G 按模板生成 docx                                Phase C-A 逐维度对齐格式
        │                                                          │
        └──────────────────────► Phase D 统一终验 ◄────────────────┘
                                       │
                              Phase E 交付与留痕

核心区别:

维度 生成链 对齐链
输入 .epros XML 既有 Office 文档
文字 新建(来自流程图节点) 零改动(硬约束)
基准 模板 preset / template_file spec_file + template_file
主产出 《流程发布文档》docx 版式对齐后的同一批文档
专属校验 G 系列(节点守恒) V 系列(文字 diff/格式抽验)

2. 参数配置块(唯一覆写入口)

所有具体值集中在 config.template.yaml,正文只引用变量名,禁止散落硬编码。

cp config.template.yaml config.yaml     # 复制后填写
python scripts/check_config.py config.yaml --strict

关键键组:

键组 作用
task.mode 分诊结果(auto/generate/align/both)
paths.* epros 源、规范、模板、目标文档、输出/备份/快照目录
channel.* 通道模式、解释器、COM ProgID、保存策略
scope.* 对齐维度开关(仅 align/both 生效)
generate.* 模板 preset、章节骨架、内容口径、编号规则
epros.values Phase A 实测回填(画布/泳道/节点数/期望行数/根元数据)
spec_values Phase B 实测回填(字体/页边距/边框/加粗/颜色等生效值)
approved_changes 仅此处列出的结构变更才允许执行
validation.* 终验判据 + 生成链专属校验开关

回填纪律:epros.values 与 spec_values 必须由实测回填,禁止推导或凭记忆填写;未回填即中止。

2A. 能力矩阵(索引 · 2026-11-05)

> 权威表见 references/capability-matrix.md(5 域 27 项,含定义 / 覆盖范围 / 对应流程环节 / 填写规范 / 开源对照)。本节只放索引,避免双事实源。

域 能力项 对应工件 对应流程环节
A 流程图 A1 结构解析 · A2 规格驱动生成 · A3 高保真重建 · A4 语义级差异比对 · A5 元素类型裁决 · A6 连线逻辑复核(23 条) · A7 文本级手术 · A8 网关必要性审核 · A9 多角色副本与协作框 · A10 几何与连通性校验 .epros + PNG 第 7 章
B 流程文件 B1 12 章骨架生成 · B2 版式对齐(V1.2) · B3 表格与题注 · B4 目录与分页 · B5 图文一致性 · B6 明文审计通道 12 章 .docx/.md 第 1–12 章
C 流程附表 C1 目录与编号 · C2 骨架与分区 · C3 网格纪律 · C4 字段与正文对应 配套表单 .xlsx 第 11 章的实物化
D 跨工件 D1 编号三处对齐 · D2 支持文件↔附表 · D3 三级差异分类 一致性报告 / 作业单 第 7/8/11 章交叉
E 底座 E1 DLP 通道 · E2 备份回滚 · E3 终验留痕 · E4 四条红线 通道 / 快照 / 校验单 全流程

一句话口径:A 域管"图像不像、通不通",B 域管"版式正不正、章齐不齐",C 域管"表填不填得下",D 域管"三件对不对得上",E 域管"改得安不安全"。

开源对照采纳纪律(详见 capability-matrix §八):bpmnlint(规则可插拔+严重级)、bpmn-moddle(未知属性透传→不重序列化)、bpmn-auto-layout(缺 DI 自动补布局)为机制借鉴;pm4py(AGPL-3.0)、drawio(GPL-3.0)一票否决不集成,只读方法。

待补 3 项(capability-matrix §九):判据「严重级 + 阻断开关」未成列;折线重算未独立成 CLI 子命令;三方对齐表(图/文/表同轴)无固定模板。

3. 执行流程

> 每步格式:输入 → 操作 → 输出 → 门禁。任一步门禁不通过则中止并回报,不得跳步。

Phase 0 · 环境与通道预检(两链共用)

项 内容
输入 paths 下全部参与文件
操作 ① 校验路径存在且扩展名受支持;② 探测 DLP 加密态(读文件头 1KB);③ 加密 → 切白名单通道,并选择唯一通道(禁止同步骤双通道操作同一文件);④ 探测白名单应用可用性
命令 python scripts/dlp_channel.py <files...> [--mode auto]
输出 通道选择结论 + 理由 + 环境探测日志
门禁 存在不以只读方式打开的写操作 → 中止;双通道并行 → 中止

文件头判据见 references/docx-com-recipes.md §1.1。


生成链

Phase A · 解析 .epros

项 内容
输入 paths.epros_files
操作 ① 解析根元素 workflowInfo 及其业务属性;② 提取图形/连线;③ 泳道带推导;④ DottedRect 双分支判定;⑤ 统计分支点/汇合点/悬空边/自环/无文本节点
命令 python scripts/epros_probe.py <file.epros> --json probe.json
输出 节点清单 / 连线清单 / 泳道表 / expected_rows / 待人工确认清单
门禁 expected_rows 未算出 → 中止;出现悬空边或自环 → 列入待确认但可继续

解析约定(FigureType 分布、泳道空带陷阱、DottedRect 双重语义)见 references/epros-format.md。

EPROS 客户端打开兼容性(2026-10-13 实测排障,「打开异常」根因库)——生成/改写 .epros 后客户端报「打开异常」时逐项排查:

根因 症状/堆栈 修法
整数属性写成小数(最高频) NumberFormatException: For input string: "130.0" @ gainFiguresDate(Integer.parseInt) Width/Height/FontSize/OrderIndex/LineSize/BodyLine/... 一律整数字符串;仅 PoLongx/PoLongy 与 lineSegments 坐标可小数
ActivityId 为空/重复 活动表按 ActivityId 建索引,空值重复即抛 每个活动 RoundRectWithLine/Rhombus 填非空唯一 ActivityId(原生件如 jzdsfx-1)
<figures> 子元素后置 洞察:客户端按文档顺序解析,figures 在 ParallelLines/VerticalLines/manhattanLines 之后即异常 全部 <figures> 前置于连线元素
FigureType 值错误 VerticalLines 应为单数 VerticalLine 竖线 FigureType 用 VerticalLine
OrderIndex 重复 全文件 figures OrderIndex 重复为 "1" 全局唯一(客户端保存时会自动重编,勿依赖其值做标识)
DottedRect 样式缺省 BodyLine="2"(虚线型)、ShadowColor="187,187,187" 按原生件补值

排障方法:读 D:\EPROS-M\epros_log\epros_log.txt 取真实堆栈(比试错快);用最小探针二分定位(标题+泳道+1角色+1活动+1连线 能开 → 逐项加特征)。

序号呈现规范(2026-10-14 实测,用户定稿)——EPROS 客户端活动框为双层结构:顶栏渲染 ActivityId、正文渲染 FigureText。流程序号(010/020/…,源文档活动表编号)必须放在顶栏:

字段 取值 客户端呈现
ActivityId 流程序号(三位,如 010) 顶栏显示序号
FigureText 纯活动名称(无序号前缀) 正文干净
  • 勿把序号写进 FigureText 前缀(如 "010 调研任务接收…")——会与顶栏并存形成双序号冲突;序号只进 ActivityId。
  • 协作框双副本顶栏同号(如两个 050):主责/参与副本共用同一逻辑序号。
  • 序号取源:源文档(V1.1 活动表「编号」列)为准,间隔 10(010/020/…);先核对源文档编号再改,不得自造编号体系。
  • 渲染器同步:PNG 渲染顶栏序号读 ActivityId(而非 FigureText 前缀),正文读 FigureText。

Phase C-G · 按模板生成 docx

项 内容
输入 Phase A 结构数据 + template_profile + 可选 template_file
操作 ① 分节建立版式(纵向→横向→纵向);② 按模板基准 §模板基准(9.25)逐章写入;③ 插入重建流程图;④ 域刷新
输出 《流程发布文档》docx + 生成日志
门禁 活动行数 ≠ expected_rows → 停止并复核;章节骨架/表格列头与基准不一致 → 停止并复核

版面与字体规范、四个 COM 必踩坑、保存策略见 references/docx-com-recipes.md。

模板基准(V1.1 现行 / 9.25 历史,2026-10-16 更新)

> 现行基准(2026-10-16 用户改指定,取代 9.25):产品市场信息调研分析流程-V1.1.docx + 竞争对手产品分析流程-V1.1.docx(两份实测格式 100% 同构)。
> 历史基准:流程打样/9.25/2.1.1…docx + 2.1.2…docx(仅版本溯源用,版式口径已作废)。
> 编制要求(《恒泰-EPROS操作标准化-V1.0》「基本属性设计」15 字段)按映射归入下表章节,不另起结构。
> ⚠️ 本节是「生成链」的骨架与版式基准;「对齐链」的参考基准由当批用户指定,两者不是同一套、不得互相覆盖(2026-10-19 对齐批用 2.1.1…9.17日-2 / 2.1.2…9.17-1,数值与本节不同)。对照表见 §10C C8 基准登记。

章节骨架(12 章 + 2 子节,序号+顿号编号):

1、流程档案  2、定义  3、目的  4、适用范围  5、术语和定义  6、角色与职责
7、流程图    8、流程说明  9、裁剪指南  10、流程绩效指标  11、支持文件
12、文控信息 → 1. 文件拟制/修订记录  2. 附则

表格口径(10 表,列头逐字锁定):

# 位置 列头(逐字) 行数口径
表1 章 1 前 审批栏 \| 姓名 \| 签名 \| 日期 3 行×4 列
表2 章 1 流程名称 \| 值 \| 版本/版次 \| 值(含 L1~L4 流程架构、流程编码、负责人/PC 等 10 行档案项) 10 行×4 列
表3 章 5 名称 \| 定义 按术语数
表4 章 6 角色名称 \| 职责 \| 对应职位/岗位 按角色数
表5 章 8 活动编号 \| 活动名称 \| 活动内容 \| 角色 \| 输入 \| 输出 \| 相关文件 \| 相关规则/标准 \| 相关IT系统 9 列,行数=活动数
表6~8 章 10 【指标名称】 \| 指标值描述(每个指标独立一表,10 行×2 列) ≥2 个指标
表9 章 11 序号 \| 文件名称 \| 文件编码 \| 管理者 按文件数
表10 章 12 版本 \| 拟制/修订责任人 \| 拟制/修订日期 \| 修订内容及理由 \| 批准人 \| 归档时间 \| 保存期限 4 行×7 列

编制要求(PPT 15 字段)→ 章节映射:概述→章1档案「流程概述」行|目的→章3|适用范围→章4|术语定义→章5|流程驱动规则→章1档案「流程驱动规则」行|输入/输出→章1档案 + 表5 列|角色/职责→章6|流程图→章7|活动说明→表5(含 KCP/风险控制措施写入「活动内容」列)|相关制度/相关标准→表5「相关规则/标准」列 + 章11|支持文件→章11|相关风险→表5「活动内容」列注 + 章3/10|绩效指标→章10。

连接关系表定位:「流程节点连接关系表」(编号|节点名称|节点类型|所在泳道|前置节点|后置节点)模板中无此独立表。当客户要求交付「图+节点表」时按表 3 位次插入第 7 章(2026-10-16 实例:2.2.2/2.2.5 均已随图交付),否则仅作内部图文对照用。

V1.1 版式口径(实测锁定,逐项可脚本校验)
要素 口径
节结构 4 节 — 节1 封面+目录|节2 1-6 章(纵向)|节3 7-8 章(横向)|节4 9-12 章(纵向)。⚠️ 第 8 章含 9 列活动表,纵向页放不下(742.5pt > 471.3pt),必须与第 7 章同入横向节(用户 2026-10-16 指令)
页边距 节1 56.70/56.70/62.35/62.35+页脚距 48.20;节2/4 62/62/60/62+49.60;节3(横)62/62/60/62+页眉距 28.35+49.60;页面 595.30×841.90。⚠️ 切横向后须重设一次边距(Word 会重排)
章标题 文本「N、+Tab+章名」;15 磅加粗、两端对齐、li=21 / fi=−21、单倍 18 磅、段前 15.6/段后 7.8(末章「支持文件」为 7.8/3.1)
子节标题 文本「N.+Tab+名称」;14 磅加粗、li=47.95 / fi=−21、段前 7.8/段后 3.1
表题注 文本「表 N+Tab+名称」(表序自动递增);12 磅居中、li=21 / fi=−21、多倍 16 磅
正文段 14 磅、左对齐、li=21 / fi=0、单倍 18 磅、段前后 0
空段 10.5 磅、两端对齐、单倍 18 磅、段前后 0
分节符段 10.5 磅、居中、固定 12 磅行距、宋体
目录条目 TOC1:左制表位 31.5+右 481.4 点线、li=0;TOC2:左 42.0+右 481.4、li=21;均 15 磅、两端对齐、单倍 18 磅。⚠️ 设 LeftIndent 前须先 CharacterUnitLeftIndent = 0
封面 标题【…】16 磅加粗居中+段前 31.2/段后 46.8;信息行「编制部门:/流程文件编号:(裸编号)/文件版号:」16 磅+li=104.85 / fi=7.05;无独立「审批栏」标题段(表格直接承接)
表格 边框外内统一 0.5 磅(sz=4,含审批栏);单元格 12 磅+固定 16 磅行距;行高 表头 22 磅、数据行 ≥20 磅;对齐=术语/角色「表头居中+数据两端」·活动「全两端」·档案/指标/支持/文控「居中」·审批栏「左」
表格列宽铁律(2026-10-16 三轮实测,最易踩坑)
  1. 先按「所在节可用页宽」定上限:节1 封面 9638|节2/4 纵向 9426|节3 横向 14358(twips)。不可直接照搬基准 gridCol 值 — 基准表无 tblW 靠 AutoFit 自动压缩,其值本身常超页宽(活动表 14850 vs 纵向 9426),一旦 AllowAutoFit=False 固定列宽即溢出。
  2. 再按内容适配(而非等比缩放):逐列测算最长内容所需宽度,重点保证标签列(如档案表 C1 需容纳「流程负责人(岗位)Process Owner」→ ≥2300 twips)与长值列;短值列(L1/L2/L3/L4 → 1200 twips)可压窄。
  3. 档案表参考分配(9426):[2300, 1200, 2360, 1900, 1666] = 主标签 115pt / 层级 60pt / 主值 118pt / 次标签 95pt / 次值 83pt(R7-R10 合并值区 356pt)。
  4. 生成后必验:脚本逐表核对 Σ列宽 ≤ 节可用宽 + 表格数量/行数(_verify_layout.py)。

连接关系表定位补充:交付含节点表时,第 7 章结构为「业务流程图(图题 14 磅居中 li=36/fi=17.85)」→ 图片 → 「表 N 流程节点连接关系表」→ 表 → 注释段。

生成链内容纪律

  1. 每个 figures 中有文字的节点(排除 MapNameText/RoleFigure/空文本 DottedRect)必须在「活动说明表」(表5,9 列)占一行,编号取 ActivityId(流程序号 010/020/…)。
  2. 因 DottedRect 协同而合并的重复节点:文档行数 = 节点数 − 合并数,并在「活动内容」列写明协同关系(双责任活动合并为一行,角色列写「主责;参与」)。
  3. 「流程节点连接关系表」仅内部图文对照用,不入正式文档正文(模板无此表);留存放「附则」附件或交付留痕。
  4. 流程绩效指标(章10,每个指标独立一表)与流程档案字段(L1/L2/L3/L4、输入/输出、流程驱动规则、负责人/PC)优先引用企业架构卡/源文档;确无来源的字段填「待补充」等占位并明确标注。
  5. 不臆造数据;缺口写「待补充」并注来源时效。KCP/风险控制措施写入表5「活动内容」列(PPT「活动说明」第 3 条)。

Word COM 生成 · 运行时陷阱与收口(2026-10-16 实测,逐条踩过再修好)

> 本节是「按模板生成 docx」的必备避坑集。全部坑均在真机上复现过,修法已验证;新增生成逻辑时逐条对照,勿凭直觉回退。

A. 结构性七坑(会导致内容丢失/错位)

# 陷阱 现象 修法
1 Range.InsertXML 在本机完全不可用(5 种定位方式均报「不能在指定的位置插入 XML 标记」) 无法用 OOXML 直插表格/段落 全面改走 COM 对象模型(Tables.Add / Content.InsertAfter / Range.FormattedText);不要再尝试 InsertXML
2 Paragraphs.Add(rng) 在文末或表格后会用新文本覆盖同一段落而不新建 段数不增、章节标题整段丢失(曾丢「7、流程图」标题) 改用 doc.Content.InsertAfter("\r" + text) 追加段落,再取 Paragraphs(Count)
3 中途插分节符(InsertBreak(2))后,分节符段成为文档末段会破坏后续落点 后续段落全部互相覆盖 内容全部写完后,按章标题用 doc.Sections.Add(mp.Range, 2) 分节(InsertBreak 的 2=分节符、7=分页符,勿混)
4 InsertAfter 段落继承前一段样式 紧跟标题的正文变成「标题 1」并混入目录(目录曾多 25 条) 无 style 参数时显式回落 doc.Styles("正文");换 Style 会重置直接格式 → 先设样式、再设字体/段格式
5 Tables.Add 后单元格段落继承前一位置的「标题 1」 表格内容进目录、表头加粗误判 逐格先 cr.Paragraphs(1).Style = Styles("表格内容") 再设字体
6 分节符段/空段残留「标题 1」样式 章节骨架计数多 1、混入目录 保存前兜底回落:所有「空段+标题样式」一律 Styles("正文")(失败退 -1),并补齐字体与段格式
7 占位标记用 __X__ 双下划线会被 Word 自动套用格式吞掉(转粗体);早期 Paragraph 对象 Range 会随内容增长漂移 占位符找不到;图片被后插入的目录域替换吞掉(保存前 InlineShapes 1→0) 占位标记改无下划线(如 FIGPLACEHOLDERTAG);图片/目录当场按文本查找定位(配样式过滤,避免命中目录条目),禁止复用早期 Paragraph 对象

B. 运行时格式五陷阱(会导致「逐章不一致」的观感问题,最易被漏检)

# 陷阱 表现 修法
8 正文区空段继承文档默认样式 行距多倍 13.9、段后 8 磅 → 章间空行忽大忽小 blank() 一律套用统一空段口径(10.5/两端/单倍18/段前后0)
9 Tables.Add 后 Word 自动补的段落继承表题注格式(li=21/fi=−21/多倍16) 每张表后多出一段"高行距空行" 建表后立即把该自动段格式化为标准空段
10 TablesOfContents.Range 的范围会延伸到紧随其后的段落 目录后的分节符段被当目录条目改(15磅/两端) TOC 格式化循环加 if not sty.startswith("TOC"): continue;并在 TOC 生成后再跑一次分节符段复检
11 分节符段字体未显式指定 → 显示为「+中文正文」 字体不符(应为宋体) 统一设 NameFarEast/Name = 宋体
12 TOC2 条目左缩进被样式的字符单位缩进覆盖(设 21 仍显示 22) 与基准差 1pt 先 ParagraphFormat.CharacterUnitLeftIndent = 0 再设 LeftIndent

C. 三道收口(缺一不可,按序执行)

内容构建 → ① 按章标题 Sections.Add 分节
         → ② 分节符段格式化(判据:紧随「标题 1」的空段,或前后节号有差异)
         → ③ 表格/图片/目录域插入
         → ④ 分节符段「复检」(防被 TOC 域范围波及)
         → ⑤ 兜底回落:空段+标题样式 → 正文(并补字体/段格式)
         → ⑥ 保存:SaveAs2(同目录单扩展名临时名, 16) → Close(False) → os.replace 重试

> ⚠️ 判据踩坑记录:勿用 p.Range.End >= Sections(sec).Range.End - 2 收紧「真分节符段」判据 —— 实测会漏处理 1 个分节符段并导致章节骨架校验失败。用「紧随标题1」+「兜底回落」组合最稳。

D. 校验闭环(生成后必跑,全部只读)

脚本 作用 通过条件
_verify_layout.py 章节→节归属、每表宽度 vs 节可用宽、行高、图片宽度 全部不溢出、章节归属与节规划一致
_audit_full_layout.py 按 16 类别逐项比对字体/字号/行距/段距/缩进/对齐/页面/页边距/表格 全部类别 PASS、0 FAIL
_verify_flow_doc.py(G 系列 13 项) 章节骨架(标题1=12/标题2=2)、活动行数守恒、表头加粗逐表、页脚域、图片、占位符残留 FAIL=0
_verify_fmt_align.py 与基准文档逐类别格式指纹比对 无 DIFF(或差异已声明)

E. 保存与落盘(DLP 环境)

  • SaveAs2(临时名, 16) → Close(False) → os.replace 重试;临时名必须单扩展名(*.docx.tmp.docx 会致 SaveAs2 无限挂起)。
  • 落盘后验证文件头 00 00 5b 00(亿赛通加密态)。

多角色活动 · 协作框规范(亦称「协助框」;2026-10-13 立,2026-10-16 补强)

  • 判据:活动标注多责任人(分号分隔,如「营销部长;产品经理」)时,不再以「单框落于单一泳道」近似,改用协作框:每个责任角色的泳道各放一个同文本活动副本,副本外裹橙色虚线协作框(DottedRect,空文本,BodyColor 橙 235,97,27)。
  • 组内关系:副本相互并行且同进同出——共享同一上游活动与同一下游活动;协作框须在连线/节点之前绘制。
  • 连线接法:协同分主次(标注首位=主责)时,进出连线只接主责副本,次责副本不接线;不分主次时,连线接协作框边缘(箭头落在框边)。
  • 双通道判据(2026-10-16 用户拍板 · 强制规范):同一项活动涉及多个人员时,必须择一表达——① 添加协作框(首选;橙色虚线外裹副本组);② 依据逻辑关系添加连线(副本与上下游逻辑相连、同进同出)。二者并存更佳;禁止多人员副本既无框、又无线、孤立悬挂于泳道。
  • 生成器默认行为(2026-10-16 实测沉淀):跨泳道副本组自动外裹协作框——左右各余 17px、上下各余 23px、橙色 235,97,27、先于节点与连线绘制(OrderIndex 靠前);实测 2.2.7「140 签字确认」4 副本 → 协作框 134×706,校验无新增告警。连线仍接主责副本(表序首位泳道),次责副本由协作框表达组关系。
  • 布线纪律(重排/协作框改造类任务):
    1. 左进右出,复杂场景可左、上进(同《恒泰-EPROS操作标准化-V1.0》活动连接规范);
    2. 同排相邻节点直连,不为对称而强加拐弯;
    3. 改前逐项断言原坐标/原折线,改后拓扑守恒(起讫节点三元组 + 判据标签不变);
    4. 干线走廊预留:拐头竖线、协作框边、既有折线相互保持 ≥10 坐标单位间距;
    5. 绕行分层:需跨越带状障碍(并行框/节点列)时优先走带外走廊(空泳道带如「客户」带、画布底部空带),其次同带内插空,禁止横穿协作框内部;
    6. 目标:不同连线横向交叉数 = 0(不同边线段严格内点相交计 1 次,共线共享干道/端点汇入不计);源图固有交叉如实留痕,重排机会成熟时一并消除。
    7. 竖向分叉点对齐(2026-10-16 用户拍板 · 强制规范):横向存在多条连线时,各条连线的竖向分叉点必须对齐在同一位置。含义与实现:
    • 同源出线:同一节点出发的多条分支,其竖向转折杆共用同一 x(分叉点对齐);
    • 同目标入线:汇入同一节点的多条分支,其竖向汇合杆共用同一 x(汇合点对齐);
    • 禁止:各分支各自选位、形成高低参差的分叉/汇合位置(视觉上"三岔口"不齐);
    • 实现:① 按「源节点 或 目标节点 + 方向」对连线分组;② 组内取统一横向槽位(节点级共享槽位,生成器默认行为);③ 库内优先用「同源侧/同目标侧共享竖杆 + 3 段 Z 形」而非多条独立折线;
    • 校验:抽取各连线转折点坐标,按组断言 x(纵向分支)或 y(横向分支)取值唯一;不唯一即判不通过;
    • 实证(2026-10-16):2.2.7 合同签订流程全图 8 组共杆全部达标——审核双出 x=1072、评审汇入 x=1312×4、四级评定双出 1642/1832/2022/2212、起草汇入 x=2848×3、审批双出 x=3162;单线组零冗余偏移(坐标分组统计脚本一键复核)。

元素定义与职责(2026-11-02 用户裁决 · 菱形与 XOR 严格分家)

> 完整版:<工作区>/_out10/EPROS元素定义与职责说明-V1.0.md(53 份样本 / 1629 图元实测)。

两条分界(最易混淆处,务必先立住):

  1. 菱形 Rhombus = 判断框,只表达条件分支(这件事做不做 / 过不过),它不是网关,不承担并行、汇合、分流的路由职责。
  2. XORFigure / ORFigure / AndFigure 是三个独立的圆形网关元素,表达"多路如何路由"。二者是并列关系,不是包含关系,不得合并描述、不得互相映射。
元素 职责 入活动表 命名规则
RoundRectWithLine 活动 单一角色完成的一项作业 是(一行一活动) 动词开头、≤12 字、无编号前缀
Rhombus 判断框 条件分支判定(是/否、通过/不通过) 否 纯判定语;禁带 XOR/OR/AND 前缀,禁带「网关」后缀
XORFigure XOR 网关 互斥择一:多出口只能走一条 否 必须带 XOR 前缀
ORFigure OR 网关 择多:满足一条或多条即继续 否 必须带 OR 前缀
AndFigure AND 网关 并行必经:全部走完才继续 否 必须带 AND 前缀;分流与合流成对
ImplFigure 子流程 / FileImage 文档 / EventFigure 触发 / FlowFigureStart·Stop 起止 跨流程引用 / 交付物 / 外部触发 / 流程边界 否 名称即业务对象名
DottedRect 协作框·分组框 / RoleFigure 泳道 / MapNameText 图名 / FreeText 注释 / Right·ReverseArrowhead 责任标记 装饰(不参与连通性) 否 —

五维区分(判断"该用哪个"):

维度 菱形判断框 XOR 网关
形状 菱形 圆形
语义对象 业务判定(做不做 / 过不过) 路径路由(走哪一条)
出边关系 判定结果分支 严格互斥择一
连接点 四个顶点 圆周四向中点
命名 纯判定语(专题评审 / 规划审批) 必须带 XOR 前缀(XOR 成果分流网关)

一句话:要"判"用菱形,要"分"用网关——判定产生结论,网关消费结论。判据已由上游活动产出、此处只需按结果选路 → XOR;需要在本节点当场作出决定 → 菱形。

映射铁律(生成器 map_node_type,2026-11-02 起取代 2026-09-24「决策关键词优先」旧规):名称带 XOR / AND / OR 前缀 一律映射为对应圆形网关,不得因名称含「评审/审批」而改画菱形(旧规正是这样把 XOR 语义吞进菱形);无类型前缀、且为判定语(审核/评审/审批/判定/是否通过…)才映射为菱形。判不准 → 留空报「请裁决」,不猜。

连接点(锚点)规范(2026-10-14,实测驱动)

EPROS 元素边框上的固定吸附位置称「连接点」,连线端点必须精确落在其上(差几单位即红 ✕ 报「未连接到连接点」)。

  • 连接点位置:
  • 矩形活动框(RoundRectWithLine):四边中点各 1 个(共 4);
  • 菱形判断框(Rhombus):四个顶点各 1 个(共 4)——落斜边(哪怕居中)即红 ✕,必须落角尖。
  • 同方向单锚点:每个元素每个方向(上/下/左/右)只有 1 个连接点;多条线汇入同一方向时共用同一锚点(如 120 左缘的 e208+e217 共用一点),不得同方向挂 2~3 个不同点。
  • 菱形出边顶点分工(硬规则;2026-10-14 立,2026-10-17 用户重申并落地生成器):审核通过 → 右侧顶点;不通过(退回)→ 底部顶点;两者不得共用同一顶点。⚠️ 按元素定义(2026-11-02):菱形是判断框,出度以 2 为常态(是/否)、最多 3(如"通过/有条件通过/不通过");若出现 ≥3 条并行向前分支,说明此处是并行路由而非判定,应改用 AND/OR 网关,不得用菱形承载并行语义。同一审批框扇出的多条通过类分支全部从右侧顶点引出后分叉(属同锚点多边,仅限 ≤3 且互斥)。入边仍恒走左侧顶点(左进右出总纲不变)。
  • 生成器默认行为(2026-10-17 实测沉淀):菱形双分支由生成器自动分工——正向(通过)边走右侧顶点;回边(退回)自底部顶点直下图底回流区(→ 回流区横线按目标节点分层,多条回边互不交叉 → 目标列隔离带竖线上行 → 目标左缘;4 段折线);底部直通路径有障碍(同列下方存在节点盒)时,短降 18px 横移至源侧隔离带再下行,不压节点盒。分支标签贴连线起点旁(首段为长段时不再取中点,避免标签漂离源节点)。实证 2.1.3:040 审核退回自底部顶点 (1010,315) 直下至回流层 y=990、050 审批退回自 (1200,615) 直下至 y=1006,两线共用目标侧竖杆 x=568 汇入 020,横向交叉 0;verify_epros --pair FAIL=0。
  • 精确吸附:端点坐标 = 连接点坐标(偏差须 <0.01);EPROS 客户端拖动节点会自动吸附,但新增/手改连线后必须复核落点(审计脚本:逐边逐端点算到最近连接点距离)。

EPROS 客户端行为特性(避坑)

特性 表现 应对
保存时 OrderIndex 自动重编号 18 条边可全部从 200~217 重编为 38~55 勿把 OrderIndex 当稳定标识;追踪连线用 StartFigure→EndFigure 三元组
画布声明不自动扩展 内容需 2552×800 但声明仍 1969×671 → 越界 大幅移动节点后手动核 WorkflowWidth/Height ≥ 内容范围;或客户端拖画布边缘扩展
拖动时端点自动吸附 拖节点线跟随吸附到连接点 拖动后仍复核锚点;手改 XML 端点易脱节

连线修改经验(平移/退回/拐点)

  1. 节点平移 → 连线折点同步平移 Δ:起讫点、中间拐点全部跟随;漏调拐点会导致折线斜穿或绕远。
  2. 退回线贴紧:退回线水平段 y 只需避开沿途节点(间距 30~50 即可),不留过大下方空白走廊;回路越紧图面越干净。
  3. 拐头竖线按走廊重算:拐头位置取决于左右两侧元素间距(≥10),不是简单跟随节点平移;节点移动后逐条复检拐头与相邻元素/连线间距。
  4. 大幅重排后必查画布:WorkflowWidth/Height ≥ 最右/最下元素坐标;最后一条泳道分隔线 y < 画布高度(否则泳道带高度为负)。

修改后自检清单(6 步,逐次过)

  1. 锚点吸附:所有连线端点精确落在连接点(矩形=边中点、菱形=顶点);
  2. 同方向单锚点:每元素每方向 1 个连接点(多边可共用);
  3. 顶点分工:菱形通过=右侧顶点、不通过=底部顶点、不共用;
  4. 方向合规:出=右侧/底部、入=左侧/上部;
  5. 交叉=0 / 穿体=0;
  6. 画布覆盖:WorkflowWidth/Height ≥ 内容范围,泳道带高度全为正。

手工修改比对与版本快照(2026-10-15 实测,三轮手工改版驱动)

用户在 EPROS 客户端手工改图是常态(对齐分支、加分组框、改挂载副本)。每一轮改版都要能回答「改了什么」,否则图文对照失据。

① 先留快照,再谈比对(最高频疏漏)

陷阱 后果 正确做法
用户在 EPROS 里保存 → 上一版被原地覆盖 无基线,只能靠「生成器重建 + 上轮记录」反推,结论带推定成分 每轮比对先 cp:&lt;流程&gt;_用户版N_&lt;时间戳&gt;.epros 存入 _user_snapshots/;比对与报告都引用快照路径
拿我方生成版当基线 生成版早已被覆盖,且客户端已改过 UUID 基线=生成器内存重建(build_flow + serialize,不落盘)或上一版快照

② 语义比对,禁止文本 diff

EPROS 保存会重写 UUID 与属性顺序,逐字节 diff 全是噪声。按下列键匹配后逐项比几何:

对象 匹配键 比对内容
图元 (FigureType, FigureText, roleName) PoLongx/PoLongy/Width/Height + ActivityId
连线 (StartFigure→EndFigure 文本三元组, LineText) 段数 + 逐段 (StartPtX/Y → EndPtX/Y)
结构 泳道列表 / ParallelLines 分界 y / VerticalLines x / WorkflowWidth·Height / 根元数据 数量与取值

③ 双副本挂载副本轮换 ≠ 缺陷

跨泳道同名副本(同 ActivityId)只有一份接连线,另一份孤立。用户可能把挂载从主责副本切到审批/后置方泳道副本(实测 2.2.5「销售价格确定与审批」由营销部长泳道切到事业部经理泳道,四条线随之重走,孤立副本同步轮换)。

  • 判据:节点集合、类型、文本、泳道、分支标签、连线总数不变 → 属画法选择,不判缺陷;
  • 与「多角色活动·协作框规范」(只接主责副本)冲突时,回报客户确认主责口径(同步 ch7 泳道列与角色职责表),勿自行改回。

④ 分组框(DottedRect)避让与穿越豁免

情形 处置
新增分组框后相邻出线竖段压框边 竖段移到框缘之外(实测框右缘 1455 → 竖段 1468→1507)
进出框内节点的短段必然穿越框边 穿越检查须豁免「端点图元被该框包含」的段,否则全为假告警
入线绕行段数过多(5 段 Z 形) 优先改走共用竖干线汇合(两条入线同 x 上下汇入,3 段),既短且避开框体

⑤ 批次固有告警判读(不拦交付)

跨泳道双副本必然触发三类告警,只核数量与标签,不看编号:孤立业务节点 / ActivityId 重复 / 节点表行数 vs 产物节点数差 1(差=副本数)。出现 FAIL 才拦;这三类维持 WARN 即可交付,并在报告中注明成因。

⑥ 类型词与校验器词汇同步

规格侧新增节点类型词(如「起始」「结束」)时,同步补校验器的类型词映射表,否则生成侧接受、校验侧报假 WARN(曾误报 C6)。

⑦ 编号口径先核对再动手

同名 .epros 可能同号不同名(如 2.2.4报价流程 与 2.2.4关键角色攻关流程)。取号一律以架构卡/流程清单为准,并核对目标目录下既有文件是否已占用该编号;改号时同步生成器缩写映射表(ABBR),勿只改文件名。

比对后自检(4 项)

  1. 快照已存:本轮与上一轮 .epros 均有独立副本,未原地覆盖;
  2. 语义零漂移:节点集/连线集/标签/根元数据与规格 md 的节点连接关系表逐行对应;
  3. 几何无新伤:走线穿越检查 0 处(分组框必需穿越已豁免)、画布仍覆盖内容;
  4. 告警未升级:WARN 项数量与成因同上一轮,无新增 FAIL。

流程图高保真重建(EPROS XML → PNG,生成链可选步)

python scripts/gen_flowchart.py -i &quot;流程图目录&quot; -o &quot;流程发布文档&quot; --dpi 150
python scripts/verify_flowchart.py &quot;流程.epros&quot; --png out/flow_x.png --strict

保真原则(核心,勿改)

EPROS 源文件已给出权威布局,渲染器绝不重新排版:

维度 取值来源 实测保证
节点位置/尺寸 figures 的 PoLongx/PoLongy/Width/Height 逐坐标照搬,不做任何变换
连线走线 manhattanLines/lineSegments 正交折线 773/773 条边带精确几何,100% 正交,逐段照搬
箭头朝向 末段方向,画在末段终点 773/773 方向一致(起点贴 StartFigure、终点贴 EndFigure)
配色 figures 的 BGColor(渐变取中点)/BodyColor 源文件自带,不再自造
判据标签 manhattanLines/@LineText 167 条,置于路径弧长中点
字号 由「1 点 = 多少坐标单位」换算后精确约束 保证不溢出盒子

> ⚠️ 不引入 Graphviz / ELK / dagre / pyorthogonalrouting 等布局布线库:
> 它们会重新计算布局,反而破坏与原图的一致性 —— 与「提升准确性」背道而驰。
> 仅当某条边缺 lineSegments 时用内置 L 形正交兜底(实测语料 0 例)。

已修复的两个保真缺陷(勿回退)

缺陷 症状 修法
标签字段读错 manhattanLines 上没有 FigureText,标签在 LineText → 全语料 167 条判据标签被静默丢弃 改读 LineText
非业务图元被当装饰丢弃 VirtualRoleFigure/RightArrowhead/ReverseArrowhead/FreeText 均带文本,且 RightArrowhead 被 2 条边引用 → 漏画 9 个图元 + 丢 2 条带标签的边 「非业务节点」≠「不绘制」,分开建模;边不按端点类型过滤

渲染细节

  • 角色列:VerticalLines.PoLongx(恒 160)画竖分隔线;RoleFigure 按其原始坐标画淡黄圆角框(x≈23~32, w=100, h=60),不要用「贴左浮动文字」近似。
  • 图名:MapNameText 居中作标题;责任标记 Right/ReverseArrowhead 画三角 + 文本(R1/R2)。
  • 分组盒 / 协作框:空文本 DottedRect 画虚线框,须在连线/节点之前绘制;多角色协作框按《恒泰-EPROS操作标准化-V1.0》用橙色虚线(BodyColor 橙 235,97,27),源文件自带红色的普通分组盒照源色。
  • CJK 字体:按 simhei.ttf → msyh.ttc → simsun.ttc 探测并 fontManager.addfont。
  • 输出映射:不用 bbox_inches=&#x27;tight&#x27;(会让数据→像素映射不可算);改用轴铺满整图 + 显式 xlim/ylim,同时写出 flow_&lt;key&gt;.meta.json 侧车供像素校验。

重建结果的验证(14 项)

系列 校验内容
P 位置 坐标直取源、不越界、不重叠、泳道归属、带文本图元全部纳入绘制
E 连线 几何覆盖 100%、逐点零偏差、全正交、端点落位、箭头朝向、标签无丢失、穿体率
R 产物 节点填充色像素采样命中(形状感知:菱形沿轴线采样)、尺寸合理

> 实测 30 份语料 0 FAIL、穿体率 0%。
> P-3 若报重叠,多为源文件自身的布局问题(实测 1.2.2 有 2 对节点重叠),
> 属如实转述而非渲染缺陷 —— 应回报原作者修正。


对齐链

Phase B · 基准萃取

项 内容
输入 spec_file、template_file、可选 batch_ref_file
操作 ① 全文读取规范,抽取「字号/行距/编号/页眉页脚/表格」类条款;② 逐参数实测模板(段落 font/size/alignment/indent/行距/段前段后、页边距、页脚距离、表格字号与边框磅值、样式表清单、封面逐段参数);③ 冲突项登记;④ 回填 spec_values;⑤ 多文档批次先出画像再分族(见 §10C C1);⑥ 按「文本角色」归集段落而非按样式名(见 §10C C2)
输出 spec_values 实填表 + 冲突与裁决记录(模板优先)
门禁 spec_values 存在未回填占位符 → 中止(禁止用默认值猜)

四个关键(详见 references/alignment-rules.md §4.2):

  • 必须区分「样式定义值」与「实际生效值」 —— 探针应读 Paragraph.Range.Font 而非 Styles(nm).Font。
  • 页边距按节分组实测 —— 封面节/正文节/横向节常为三组不同值,不得只取节 1。
  • 加粗口径按表实测 —— 逐表登记到 bold_policy_per_table。
  • 样式名不可作为分类依据 —— 实测同一批文档里,有的全篇只有一个「正文」样式(无标题样式、无目录域、章标题靠 15 磅加粗+文本判定),有的用自造样式名(表格内容/段/table++)。基准画像与套用规则一律按文本角色归集,样式名只作辅助线索。

Phase C-A · 对齐执行

项 内容
输入 待改项清单(仅格式类)+ spec_values
操作 分维度分批执行,每批 ≤10 项、批后即时校验:<br>① 样式层 ② 表格层 ③ 字段层 ④ 结构层(仅 approved_changes)⑤ 封面层 ⑥ 页眉页脚层 ⑦ 颜色层 ⑧ 域刷新 ⑨ 段距/行距层(须先清「行」单位,见 §10C C3) ⑩ 表格排版层(字号分档/边框/单元格行距,不动列宽) ⑪ 目录域重算与差异归因(见 §10C C5)
输出 修改后文档 + 逐批执行日志
门禁 任一批失败 → 立即停止并从上批快照回滚,不继续

执行前必须先完成备份 + 基线快照(含 MD5 清单与全文文本 dump),否则不得进入本阶段。

批量批次(≥3 份文档)的三条附加纪律(详见 §10C):

  1. 写后必「全量复审」:套用脚本自带的自检不算数,必须用独立只读审计逐条复核(同一进程内的回读会掩盖未生效的赋值,实测 4/10 份标题段距「设了但没落地」只有在独立复审时才暴露);
  2. 定点修复后必须再全量复审一次:定点脚本只碰目标属性,易与其他层相互覆盖;
  3. 每份文件的 before/after 画像必须落盘(_profile 输出 JSON),交付报告的证据从这里生成,不得事后手工回忆填写。

Phase D · 统一终验(两链共用)

项 内容
输入 备份基线 + 最终文件(+ 生成链的 probe.json)
操作 生成链查 G 系列,对齐链查 V 系列,通用项查占位符残留
命令 python scripts/verify_docx.py &lt;docx&gt; --chain generate --probe-json probe.json<br>python scripts/verify_docx.py &lt;docx&gt; --chain align --backup &lt;原稿&gt; --spec-json spec.json
输出 校验报告(含 diff 明细、抽验表、异常项)
门禁 ① 出现任何未批准的文本差异 → 恢复备份重做;② 抽验有偏差 → 补正后重验

G 系列(生成链):G-01 活动行数守恒 / G-02 泳道名一致 / G-04 无文本节点已声明 / G-05 悬空边已提示 / G-06 横向节生效 / G-07 表头灰底加粗 / G-08 中文字体 / G-09 章节骨架=模板基准(12 章+2 子节,序号+顿号) / G-10 表格列头=模板基准(10 表逐字,表5=9 列)。

V 系列(对齐链):V-01 文字零改动 / V-02 字体字号 / V-03 行距 / V-04 边框加粗 / V-05 页边距按节 / V-06 字段命名顺序 / V-07 页眉页脚 / V-08 颜色 / V-09 结构完整性 / V-10 编码态 / V-11 段距单位与取值(行单位已清零、回读磅值=目标值) / V-12 表格字号分档(按表型:审批栏/活动说明表/普通表)。判据详见 references/alignment-rules.md §3。

V-01 的判据修正(2026-10-19 批量实测):Word 自动目录域在版式重排后页码必然变化,这不属于正文改动。判据须做差异归因:

差异行形态 归因 处置
全部匹配 ^\s*\d{1,2}\s*[、..].*\t\d{1,3}\s*$(章节名+制表位+页码) 目录域页码重算 判「正文零改动」,在报告中单列「N 行目录页码重算」
目录条目整行消失 原条目指向的章节在正文中不存在(失效条目),域重算时被清除 先回备份核实「该章节标题是否真的不存在」;确认后判为修正既有缺陷并显式披露,不得静默
其他任何行 正文被改 恢复备份重做

逐字符校验刚性要求:
- 表头加粗必须 sum(1 for ch in cell.Range.Characters if ch.Font.Bold) &gt; 0,只读 Range.Font.Bold 查不出丢失;
- 有纵向合并的表必须遍历 Range.Cells,for row in tb.Rows 会抛异常;
- 颜色判据取 OOXML styles.xml/document.xml,不取 COM。

三项易误判的判据(已按实测校正):

判据 正确做法 若做错的后果
G-01 活动行数 用「表头关键字(活动编号/活动名称)+ 其后编号列形态」精确定位活动说明表;该表常带合并标题行,直接 rows-1 会错一行 误选封面审批栏/术语表,报出假差异
G-01 差异定性 不一致时按节点类型归组输出(子流程/网关/活动) 无法判断「只列活动不列子流程」这类约定差异还是真缺陷
G-07 / V-04 加粗 加粗逐表口径不同——实测「流程档案表/绩效指标表」为灰底但不加粗,属既定约定。故:登记了 bold_policy_per_table 则强判,未登记则降为信息项并列出未加粗表 一律断言「灰底必加粗」→ 把合规文档误报为缺陷
表头不可读 表头因合并单元格读不出时记「无法判定」,不报 FAIL 误报为「未加粗」
G-08 字体 未给 spec_values 基准时只报实测字体分布 文档合法使用多字体会被误判为异常

Phase E · 交付与留痕

项 内容
输入 终稿 + 校验报告 + 各阶段日志
操作 ① 按 references/delivery-note-template.md 模板写交付说明 md(≤5 节;含依据版本号、变更表「对象/原/改/依据」、校验结果、待人工确认项);② 存结构指纹 fingerprint.json 并与上一轮 --fp-compare 确认结构未漂移;③ 回写项目记忆;④ 呈现文件
输出 交付说明 md + 终稿 + 备份路径 + fingerprint.json
门禁 说明缺「依据版本号」或缺「待确认项」或缺 fingerprint.json 留痕 → 不交付

4. 硬约束

约束 适用链 说明
文字零改动 对齐链 含措辞、术语、标点、语序、段数;不改标题措辞;不重排章节顺序。除 approved_changes 显式批准外一律保留
节点守恒 生成链 有文本节点数 = 活动表行数 + 协同合并数
零硬编码 两链 所有具体值走参数配置块;正文只出现变量名
单一通道 两链 同一步骤禁止两条通道操作同一文件
读操作只读 两链 COM 读一律 ReadOnly=True,关闭时 SaveChanges=False
写后必验 两链 读文件头 + 回读关键内容 + 核对原文件 size/mtime
破坏性操作先备份 两链 备份含 MD5 清单,且不得覆盖同名既有目录
★ 结构不变量守卫 两链 任何编辑必须包在 docx_guard.Guard 里:节数 / 表数 / 每表行列数 / 每节页面设置在编辑前后必须不变;违规即抛异常,禁止保存
★ 删段落必排分节符 两链 删除段落一律走 docx_guard.safe_delete_paragraphs(内置分节符保护)。分节符藏在段落标记里,误删会合并节(横向节丢失)
★ 人工改版先留快照 生成链 用户交回手工改过的 .epros 时先 cp 快照再分析——客户端保存会原地覆盖上一版,无快照就只能反推基线
★ 附章节不进骨架 两链 md 文末「## 附:…」编制说明章的小节(### 一、…)渲染时不得套「标题 2」样式(改普通加粗段)——否则混入骨架计数(G-09 标题2=8 误报)且污染目录;正式交付按模板收敛时应整体删除附章节
★ COM 生成前清 WINWORD 残留 两链 生成/校验脚本重跑前必先 Get-Process WINWORD 清理无窗口残留——残留实例会令新 COM 会话早期挂起,被外层 SIGTERM 杀死且无任何输出
★ 段距按磅值落地须先清「行」单位 两链 中文版 Word 的段前/段后可能以行存储(LineUnitBefore/After≠0)。此时只设 SpaceBefore/SpaceAfter 会被行高换算覆盖(实测 8 磅 → 回读 19.05 磅、2 磅 → 9.5 磅)。必须 LineUnitBefore=LineUnitAfter=0 并把 SpaceBeforeAuto/SpaceAfterAuto=False,再设磅值;样式定义与每个段落都要清(见 §10C C3)
★ 批量统一不动列宽 对齐链 统一格式时只改框线/字号/行距/对齐,不重新分配列宽——列宽决定单元格换行位置,一改就是布局重排,会连带改变「文字零改动」的观感与分页。基线自身存在的宽表溢出(实测 4 族中 3 族有 742>718pt)如实登记、不修,除非用户明确要求重排
★ .epros 只做文本级手术,绝不重序列化 复核链 用 ElementTree 整体读写会重排属性、丢格式、改变声明引号,客户端可能拒绝加载。改 .epros 一律正则文本手术:按 FigureImageId 删 &lt;figures/&gt;、按 OrderIndex 定位后只改开标签内的 StartFigure/EndFigure、整块替换 &lt;lineSegments/&gt;;每次落盘前 ET.fromstring 校验
★ 连线只改端点不够,必须同步重算折线 复核链 只改 EndFigure 不改坐标 → 线头停在旧位置,视觉上仍断,且自家 C-17/C-18 立刻报错。改端点后按「左→右 / 右→左 / 同列」三走向重建正交折线(§10D D5)
★ 不做语义推测式整改 复核链 分支条件、合流语义(AND/XOR)、活动命名、缺口的上下游归属,一律不改、只出作业单。能自动改的只有「几何与引用关系确定」的项:残留副本删除、吸附协作框的连线重接、折线重算、画布尺寸(§10D D4 四级判据,命中不了就不动)

4.1 执行时守卫(把事故变成断言)

> 动机(2026-10-12):一日内发生两起事故(分节符误删致节数 4→3、COM 哨兵误判边框致 181 格单元格边框被抹),
> 都在复验阶段才被发现。结论:缺的不是「教训」,而是执行时就跑得起来的断言。

from verify_common import bootstrap; bootstrap(__file__)
from docx_guard import Guard, safe_delete_paragraphs, refresh_toc_then_restore, save_dlp
from docx_probe import structure_fingerprint, find_blank_runs

before = structure_fingerprint(doc)          # ① 先取指纹

with Guard(doc, &quot;删空行&quot;):                   # ② 编辑包在守卫里
    safe_delete_paragraphs(doc, [167, 168])  #    内置分节符保护 + 从后往前删

refresh_toc_then_restore(doc)                # ③ 先刷域 → 再重建制表位(顺序固定)
save_dlp(doc, path)                          # ④ SaveAs2 + 重试 + 落盘

四道闸门:

闸门 拦截什么 对应事故
Guard 节数/表数/表形状/页面设置被改动 分节符误删(节 4→3)
safe_delete_paragraphs 承载分节符的段落被删 同上
docx_probe.table_borders 用 COM 哨兵误判边框 边框误改(181 格受损)
refresh_toc_then_restore 刷新域后制表位未重建 目录子条目撑散换行

第五类断言(2026-10-19 增)· 段距写入后回读校验 —— 上述四门管「结构不变量」,不管「格式是否真的落地」。
批量套用时务必加这一条(纯 COM,无模块依赖):

def assert_space(p, before, after, tol=0.1):
    pf = p.Format
    for got, exp, unit in ((pf.SpaceBefore, before, pf.LineUnitBefore),
                           (pf.SpaceAfter,  after,  pf.LineUnitAfter)):
        unit = unit or 0.0                      # COM 可能返回 None
        if abs(got - exp) &gt; tol or unit &gt; 0.01:
            raise AssertionError(&quot;段距未落地: got=%.2f exp=%.2f lineUnit=%.2f&quot;
                                 % (got, exp, unit))
  • 必须在另起的只读进程里回读(同一会话回读到的是刚设的值,恒过);
  • 逐段跑成本可接受(500 段 × 2 属性 ≈ 1~2s),但批量时改为「抽样 + 全量签名比对」:抽样校验取值,全量校验角色分布。

5. 冲突裁决

冲突 裁决
规范 vs 模板 模板优先,记入交付说明;已知例外见 references/alignment-rules.md §5
格式修正必须动文字 不动,列为待人工确认
both 模式下两条链约束打架 生成链先产出新稿;对齐链的「文字零改动」以生成稿为基线(即对齐阶段不再改生成结果)
preset 与 template_file 打架 template_file 优先(preset 仅作无模板时的兜底骨架)

6. 输出规格

产出 命名
生成稿 &lt;流程号&gt;_&lt;流程名&gt;.docx
对齐说明 格式对齐说明_&lt;对象&gt;_&lt;YYYYMMDD&gt;.md
格式变更报告(批量) 格式统一变更报告_&lt;批次&gt;_&lt;YYYYMMDD&gt;.docx(含基准规范表 / 文件清单 / 逐份 before→after / 校验结论 / 说明事项,见 §10C C6)
复核报告 流程图与流程文件复核报告_&lt;YYYYMMDD&gt;.docx(范围方法 / 结论 / 分文件统计 / 问题分类 / 逐份清单 / 整改建议 / 局限,见 §10D D8)
问题清单(双表) 流程复核问题清单_&lt;YYYYMMDD&gt;.xlsx(工作表 待整改 / 已整改,12 列含状态)
整改执行记录 流程图整改执行记录_&lt;YYYYMMDD&gt;.docx(已完成项+判定依据 / 前后对比 / 未改原因 / 作业单 / 回退)
生成报告 流程发布文档报告_&lt;流程号&gt;_&lt;YYYYMMDD&gt;.md
重建流程图 flow_&lt;key&gt;.png
备份 &lt;BACKUP_DIR&gt;/&lt;阶段名&gt;_前/(内含 MD5 清单)
快照 &lt;DUMP_DIR&gt;/&lt;对象&gt;_&lt;阶段&gt;.txt / .xml
结构指纹留痕 fingerprint.json(docx_probe.py --fingerprint;跨轮 --fp-compare 比对)
校验报告 --json(机器可读)/ --html(自包含单文件、零依赖,留痕查阅用)

6.1 交付门(2026-11-05 起 · 与 §10D D1 的等级列联动)

门 判据 不通过的处理
G-0 阻断清零 本次范围内 P0 判据项 = 0(C-01 吸附框 / C-04·05 起止 / C-06·07·08 断链 / C-11·12·13 判断分支 / C-14 隐式汇合 / C-17·18·19 几何 / D-01 章节缺项 / D-03 图文不一致) 拒绝交付,只能出「问题清单 + 整改方案」
G-1 告警登记 P1 项(C-15 回退环 / C-20 残留副本 / C-22 菱形网关混用 / D-02 编号跳号)逐条进报告「已知问题」段,含处置意见(改 / 不改 / 待裁定) 未登记即视为漏检,退回重出
G-2 提示归并 P2 项(C-21 逆向无标注 / F-03 命名)可批量归并说明 不阻断
G-3 三件对齐 图 / 文 / 附表按 references/three-way-alignment-template.md 填完,差异项均已定性 未填 = 未完成交付

一句话:P0 不清零不出门,P1 不登记算漏检,P2 可归并,三件不对齐不算完。

7. 依赖与版本约束

> 唯一事实源:pyproject.toml 的 [project.dependencies](本表须与之同步)。
> 装了但用不到的可选件一律优雅降级,不阻断主流程。
> extras 三档(选型报告 P0,对标 docling 分层):minimal 仅解析校验(无需 Windows/COM)|
> office 完整作业运行时(COM 通道 + 重建 + 配置 + 明文 xlsx)|test 全量回归。

依赖 版本约束 用途 分层 缺失后果
pywin32 &gt;=306,&lt;313 Word/Excel/PPT COM、DLP 白名单通道 主依赖(office/test) COM 通道不可用
comtypes &gt;=1.4,&lt;2 备用 COM 通道(pywin32 失败时自动降级) office/test 降级链少一档(pywin32 正常时无感)
Python 标准库 xml.etree — .epros 解析 内置 —
defusedxml ==0.7.1(锁定) XML 解析加固(XXE/实体展开) 主依赖(minimal/test) 降级标准库,无实体防护
lxml &gt;=6,&lt;7 WordOpenXML 结构化解析(首选引擎,缺失降级正则) office/test 降级正则引擎(行为等价)
matplotlib &gt;=3.8,&lt;4 流程图高保真重建 office/test 重建步骤 SKIP
pyyaml &gt;=6.0 配置校验(严格解析) office/test 降级正则校验
Pillow &gt;=10 重建产物像素抽检(R 系列) office/test R 系列 SKIP
openpyxl ==3.1.5(锁定) 仅明文 xlsx 场景(DLP 加密件读不了) office/test xlsx 明文直读不可用
pytest &gt;=7.4 单元测试 test 测试段 SKIP

锁定理由(选型报告 P0):defusedxml==0.7.1 —— API 已冻结、XXE 加固不可替代,仅作加固层不承载业务逻辑;
openpyxl==3.1.5 —— 官方仓库在 Heptapod(非 GitHub)、发布节奏慢,锁版本防 API 漂移外溢。
python-docx 不入运行时依赖:维护模式(近 6 月默认分支 0 提交),仅作 OOXML 对象模型命名语义的参考实现;DLP 加密下读不了,走 COM。

# 完整作业运行时(office 档)
pip install &quot;pywin32&gt;=306,&lt;313&quot; &quot;defusedxml==0.7.1&quot; &quot;lxml&gt;=6,&lt;7&quot; &quot;comtypes&gt;=1.4,&lt;2&quot; &quot;matplotlib&gt;=3.8,&lt;4&quot; &quot;pillow&gt;=10&quot; &quot;pyyaml&gt;=6.0&quot; &quot;openpyxl==3.1.5&quot;
pip install pytest          # 仅开发/回归需要(test 档)

7.1 评估依据(周下载量 / 生产案例 / 维护活跃度,数据实测于 2026-10-12~13)

采用

方案 PyPI 周下载 GitHub ★ 最近提交 许可 判定理由
matplotlib 39,567,399 23,353 2026-10-11 PSF 系 绘图事实标准,持久活跃
pywin32 3,530,298 5,621 2026-10-07 PSF Windows COM 唯一成熟方案
comtypes 430,195 — 2026-09-21 MIT P2 新引入:纯 Python 备用 COM 通道(Enthought 商业维护,近 12 月 4 版),pywin32 故障时降级链自动切换
defusedxml 52,873,433 555 2024-09-03 PSF API 已冻结、极稳定,无维护风险
lxml 90,987,136 3,065 2026-10-11 BSD-3 P1 新引入:WordOpenXML 结构化解析(recover 容错片段 + 不展开实体),双引擎等价实测通过
Pillow 147,721,937 13,890 2026-10-12 MIT 系 像素抽检
pytest 201,344,430 14,587 2026-10-11 MIT 测试事实标准
pyyaml 242,292,730 — — MIT YAML 解析事实标准

剔除(附理由)

方案 PyPI 周下载 GitHub ★ 最近提交 许可 剔除理由
graphviz 8,208,891 1,814 2026-07-11 MIT 需系统二进制;且会重新布局,破坏源图保真
pygraphviz 130,717 848 2026-10-08 BSD-3 同上 + 需编译 + 下载量低
pyorthogonalrouting 54 0 2026-10-04 AGPL-3.0 事实上无人使用 + 传染性许可
pm4py 37,770 1,053 2026-10-09 AGPL-3.0 面向标准 BPMN,EPROS 非标;AGPL
pybpmn-parser 29 — — BSD-3 采用度近零
SpiffWorkflow 11,718 1,925 2026-10-09 LGPL-3.0 面向标准 BPMN 2.0,无非标适配价值
python-docx 25,644,534 5,741 2026-08-01 MIT DLP 加密下读不了;本流水线走 COM,依赖为零
docxtpl 922,687 2,721 2026-07-07 LGPL-2.1 价值在 {{变量}} 填充;需逐节点动态建表且模板不可读
shapely 15,814,745 4,524 2026-10-09 BSD-3 源已给几何,无需裁剪/求交
networkx 49,922,043 17,319 2026-10-06 BSD-3 只需出入度统计,标准库足够
loguru / structlog 16,437,904 / 24,509,184 24,139 / 4,971 2026-10-11 / 10-05 MIT / — 面向长驻服务;本包是「跑完即退」批处理,引入只增负担(详见工程约定 §六)

核心取舍结论(两条):

  1. 不引入任何布局/布线库——EPROS 已提供 100% 精确且正交的连线几何,
    重算布局会降低而非提升与原图的一致性。最准确的重建方式就是照搬源几何。
  2. 不引入结构化日志库——批处理脚本用轻量 info()/warn() 已足;
    若将来接入 CI 日志采集再评估。

8. 脚本清单

脚本 作用
scripts/verify_common.py 共享底座:统一结果模型 / 退出码 / stdout-stderr 分离 / 脚本引导 / 多形态报告(--json 机器可读、--html 自包含零依赖)
scripts/dlp_channel.py 共享底座:DLP 探测 + 通道选择 + 四级降级链(mcp → com/pywin32 → comtypes → plain,后端切换事件留痕 COM_SWITCH_LOG) + Word COM 安全封装(路径坑/Cells 坑)+ 写后回验
scripts/docx_probe.py 共享底座 · 只读探测原语 + CLI:段落三分类 / 空行连续段 / 分节符载体判定 / 边框权威读取(OOXML,lxml 首选 + 正则降级双引擎,等价实测) / 单元格有效值 / TOC 条目与制表位 / 结构指纹(含 fingerprint.json 留痕与跨轮比对)/ 表格角色判定。命令行一图流:python scripts/docx_probe.py &lt;file.docx&gt; [--json out.json] [--fingerprint fp.json];不开 Word 跨轮比对:--fp-compare 上一轮.json 本轮.json(漂移退出码 1)
scripts/docx_guard.py 共享底座 · 守卫与安全编辑:Guard 结构不变量上下文管理器 / safe_delete_paragraphs(分节符保护)/ refresh_toc_then_restore / set_toc_entry_tabs / save_dlp(SaveAs2+重试)/ cleanup_orphan_word / remove_lock_files
scripts/epros_probe.py 生成链:.epros 结构化普查、泳道归属、连线守恒、精确几何解析、诊断清单、JSON 报告
scripts/gen_flowchart.py 生成链:高保真流程图重建 PNG(源坐标 + 源折线 + 源配色;复用 probe 解析保证图/表口径一致)
scripts/verify_flowchart.py 生成链:几何保真度校验(P 位置 / E 连线 / R 产物像素,共 14 项)
scripts/verify_docx.py 两链共用:统一终验(G 系列 + V 系列 + C 通用项),强制只读
scripts/check_config.py 配置校验:YAML 语法 + 必需键 + 未回填占位符
scripts/selfcheck.py 一键自检:依赖 → 配置 → 解析 → 渲染 → 单元测试 → 文档门槛(17 项)
benchmark/run_bench.py 基准跑批(P3):解析耗时 / 边框双引擎耗时+等价断言 / 渲染耗时+几何保真;--save 存基线、--json 对比(>3× 判漂移),全部合成样本不依赖 COM

分层口径:docx_probe 只读、docx_guard 只写、verify_* 只验 —— 三者不交叉。
一次性诊断脚本不再落盘,改用 docx_probe.py CLI;确需临时脚本时,先确认原语模块是否已覆盖。

工程约定(改脚本前必读)见 references/engineering-conventions.md。
事故档案与症状→处置对照见 references/docx-com-recipes.md §九。
交付说明统一模板见 references/delivery-note-template.md(Phase E 依据,≤5 节)。

9. 自检命令

# ★ 改动后先跑这个:全链路自检(含 pytest 全量)
python scripts/selfcheck.py
python scripts/selfcheck.py --epros &quot;路径/流程.epros&quot;    # 追加真实语料回归

# 0) 配置校验
python scripts/check_config.py config.yaml --strict

# 1) 通道预检(DLP / COM 可用性)
python scripts/dlp_channel.py &lt;参与文件...&gt;

# 2) 生成链:解析 .epros
python scripts/epros_probe.py &quot;路径/流程.epros&quot; --json probe.json

# 3) 生成链:高保真重建流程图 + 几何保真度校验
python scripts/gen_flowchart.py -i &quot;流程图目录&quot; -o &quot;输出目录&quot; --dpi 150 --strict
python scripts/verify_flowchart.py &quot;路径/流程.epros&quot; --png out/flow_x.png --strict

# 4) 终验
python scripts/verify_docx.py &#x27;D:\path\输出.docx&#x27; --chain generate --probe-json probe.json
python scripts/verify_docx.py &#x27;D:\path\输出.docx&#x27; --chain align --backup &#x27;D:\bak\原稿.docx&#x27;

# 4b) 结构指纹留痕与跨轮比对(N-04:每轮作业存一份,漂移退出码 1)
python scripts/docx_probe.py &#x27;D:\path\文档.docx&#x27; --fingerprint fp_本轮.json
python scripts/docx_probe.py --fp-compare fp_上一轮.json fp_本轮.json

# 5) 单元测试
python -m pytest tests/ -q

# 6) 基准跑批(可选;改动后与基线比对,&gt;3× 判漂移)
python benchmark/run_bench.py --json benchmark/baseline_20261013.json

退出码约定

码 含义
0 全部通过
1 有校验项 FAIL
2 用法/入参错误(文件不存在等)
3 运行环境缺失(依赖未装、COM 不可用)
4 内部异常

所有脚本统一遵守;--strict 会把 WARN 也升格为失败。
结果走 stdout,诊断走 stderr —— prog &gt; report.txt 只拿结果。

10. 最小执行清单

生成链
- [ ] Phase 0 路径校验 + DLP 探测 + 单通道确定
- [ ] Phase A 解析 .epros → expected_rows 与待确认清单
- [ ] Phase C-G 按模板生成(分节版式 → 逐章写入 → 插图 → 域刷新)
- [ ] Phase D G 系列终验(节点守恒/泳道一致/字体/横向节)
- [ ] Phase E 交付说明 + 待确认项 + 呈现文件

对齐链
- [ ] Phase 0 路径校验 + DLP 探测 + 单通道确定
- [ ] Phase B 规范条款抽取 + 模板参数实测回填
- [ ] 备份(含 MD5)+ 文本基线 dump
- [ ] 待改项清单(格式类 / 内容类分离)
- [ ] Phase C-A 分维度小事务执行(每批 ≤10、批后即验)
- [ ] Phase D V 系列终验(文字 diff / 格式抽验 / 结构 + 编码态)
- [ ] Phase E 交付说明 + 待确认项 + 呈现文件

10A. 流程梳理全案经验 · 应包含的要点 / 覆盖范围 / 预期效果(2026-10-16 系统归纳)

> 本节为单日五轮迭代(业务流程图梳理 → 流程文件编制 → 多源标准融合 → 走线规范 → 协作框标注)的系统归纳:
> 把当日发现的问题与难点提炼为可复用经验要点,明确本技能「应包含的要点 / 覆盖范围 / 预期效果」,供后续同类任务直接对照执行。

10A.1 应包含的要点(11 条 · 逐条可执行)

# 要点 关键动作 / 判据 落位章节
1 参考标准获取与解析 DLP 加密 xlsx 走白名单通道只读提取;sheet 内嵌流程图用 Excel COM CopyPicture(xlScreen,xlBitmap)+剪贴板导出 PNG(xlsx 内 1×1「流程图」sheet 即为嵌入图片);解析后先建「节点→标准照表」再设计 参见 transparent-encrypt-file-mcp 技能
2 编号口径先行核对 多版本编号体系(流程清单 / 架构卡 / 融合版)先核准唯一基准;同号不同名禁止混用;改号须全链同步(文件名 / ABBR / 表单编码 / 正文引用 / 修订记录) §3 Phase A · v1.3.7⑥
3 多源标准融合与对齐声明 以基准标准为锚(如 RBXS-14 合同管理);节点划分 / 名称 / 顺序 / 衔接口径逐项映射;输出《节点对应关系表》+《差异说明》(几处、为何、待裁定项) 本节 · §6
4 流程顺序与逻辑重梳 关键结构判据:评审前置于起草(按基准标准);常规 / 特殊分流前设审核把关节点;逐级评定串行链+统一回退落点;条件性节点(纠纷 / 修改终止)线性化+触发条件写明 本节
5 角色映射与更名 跨公司 / 板块角色先出《映射对照表》并标〔待确认〕;用户拍板后全量替换(泳道 / 角色表 / 活动表 / 对照表 / 注文)+残留检查(仅保留「原 XX 更名」追溯表述) 本节
6 竖向分叉点对齐(绘图规范 A) 横向多条连线时:同源出线共源侧竖杆、同目标入线共目标侧竖杆,分叉 / 汇合点对齐同一位置;节点级共享槽位+3 段 Z 形 prefer_gx2(均为生成器默认);坐标分组断言校验 §3 布线纪律⑦
7 多人员活动标注(绘图规范 B) 同一活动涉及多人员:添加协作框(橙色虚线 DottedRect 外裹副本组,亦称协助框)或依据逻辑关系添加连线(副本同进同出);二者择一必选、禁止孤立悬挂;生成器默认自动加框 §3 协作框规范
8 生成 → 校验 → 渲染 → 目检闭环 epros 生成后四件套:verify_epros --pair 交叉校验 → 穿越检查(0 hits)→ 走线对齐分组断言 → 预览 PNG 目检;副本类 WARN(孤立副本 / ActivityId 重复 / 行数差 +副本数)为批次固有,记录不拦交付 §3 · §9
9 版本与快照纪律 每轮改版先备份:新版以新文件名产出、旧版入 _backup_.../;用户手工版 epros 禁重生成(会覆盖手工走线);生成器行为升级后如需回溯旧图,先 cp 快照再处理 §4 硬约束 · v1.3.7①
10 双版本输出 交付形态按需并行:绒布体例《流程标准》(节点编号|名称|工作标准|责任岗位|单位用时|频率|附件|参考编号)+ 12 章《流程图交付文件》;两版节点 / 编号 / 角色互相一致(改动同步双改) §6 输出规格
11 菱形审批顶点分工(绘图规范 C) 菱形判断框双分支:通过(含并行通过)→ 右侧顶点、不通过(退回)→ 底部顶点,不得共用同一顶点;入边恒走左侧顶点;生成器默认分工(回边自底部顶点直下图底回流区、按目标分层、有障碍短降横移);标签贴连线起点旁 §3 连接点规范

10A.2 覆盖范围

  • 输入侧:DLP 透明加密环境下的参考标准(xlsx / docx / pptx,含 sheet 内嵌流程图)、存量流程文件(.epros / md / docx)、用户口述绘图规范;
  • 处理侧:.epros 生成 / 校验 / 渲染 / 目检全链;多源标准融合与对齐声明;节点—顺序—逻辑—角色—编号全链梳理;走线规范(竖向分叉点对齐、菱形顶点分工、协作框 / 连线标注、回退线走图底回流区);流程文件 12 章编制、版式对齐与 Word 发布文档生成;
  • 输出侧:.epros 工程文件 + 高保真预览 PNG +《流程图交付文件》(12 章)+《流程标准》(绒布体例)+ 交付说明与留痕(版本备份 / 校验报告)。

10A.3 预期效果

  1. 不重复踩坑:编号错乱、顺序错位、角色映射不一致、走线歪斜、多人员副本孤立悬挂、菱形双分支共挤同一顶点、版本覆盖丢改动——七类已知问题均已有前置判据与校验断言(要点 2/4/5/6/7/9/11);
  2. 一次做对:三条绘图规范与协作框均已沉淀为生成器默认行为,正常生成即符合规范,无需事后手工修补;
  3. 全链可核对:节点对应关系表 + 差异说明 + 走线坐标断言 + 交叉校验报告 + 版本快照,每个结论可溯源、可复核。

10B. 2.2.7 十轮迭代工程经验 · 布线判据链 / 双源校验 / 手动版比对 / 10 列升级 / 模板收敛(2026-10-16 深夜~10-17 系统归纳)

> 承接 §10A(单日五轮),本节归纳 2.2.7 合同签订流程 V6.0→V10.0 十轮迭代(含手动调图比对、授权额度分级审批、
> 双分段图、闭环补全+全面泛化、第 8 章 10 列升级、按模板形态收敛)中新增且可复用的判据与 SOP。
> 项目脚本锚点:&lt;工作区&gt;/_out10/_scripts/(_audit_227_v7.py 参数化版 / _audit_cross_AB.py / _cmp_227_user_0813.py /
> _gen_split227*.py / _generalize_227.py / _upgrade_227_v10.py / _tplclean_227_v10.py / _dump_template_struct.py)。

B1 布线对齐判据链(补全 §10A 要点 6)

判据 条件 走法 事故形态
直达 / Z 形 常规 1 段 → 3 段 Z 形 —
prefer_gx2 源出度<2 且目标入度≥2 竖杆落目标侧(同目标共杆) 同目标入线折点参差
both_multi(新增) 源出度≥2 且 目标入度≥2 禁用 3 段 Z 形(只有一根竖杆,两侧无法同时共杆)→ 改 5 段:源侧 gx1+目标侧 gx2+中间水平干线 两条分级审批线汇入同一节点时折点 3542/3732 参差;修复后统一 3798

B2 md 解析三坑(解析器加固)

# 坑 判据 / 修复
1 第 8 章 9 列活动表混入第 7 章解析(.+? 可吞 \|,列数不能作区分依据),曾致 46 项误报 FAIL 第 7 章表行过滤必须加「列3∈类型词集(活动/判断/网关/起始/结束/触发事件/子流程调用/文件)」
2 节点名含全角括号(如「合同审批(≤30 万元)」)被 ^(.+?)[((](.+?)[))]$ 误判为「名称+分支条件」 节点名档位用间隔号「·」分隔(合同审批·授权额度内),禁用全角括号
3 表格行按 startswith(&quot;\| 0&quot;) 过滤编号行只匹配 010~090,漏 100~210 按首列编号判定(split 后 cells[0]∈编号集),勿用行首前缀

B3 校验链四件套与豁免规则(补全 §10A 要点 8)

件 脚本锚点 覆盖
综合校验(双源) _audit_227_v7.py &lt;md&gt; &lt;out.txt&gt; &lt;epros&gt; 7 项:入/出度、引用指向、重复冗余、判断分支互斥/标签/闭合、协作框几何包覆、折点锚点唯一性、端点解析率;md 第 7 章为权威逻辑、epros 为实现体
跨图一致性 _audit_cross_AB.py 分段图A/B:节点并集=总图业务节点、跨图入口/出口一一闭合、协同节点不丢、分支互斥;同名不同类型=跨图引用而非重复(图A 活动实体 / 图B 子流程调用)
几何核查 _geo_v8.py 泳道归属(RoleFigure 中心最近匹配)+节点盒重叠(排除同名副本);⚠️ 坐标属性是 PoLongx/PoLongy(用 X/Y 全为 0,曾产生 465 假重叠)
配对校验 verify_epros.py &lt;epros&gt; --pair &quot;&lt;epros&gt;::&lt;md&gt;&quot; 图/规格配对;孤立副本 / ActivityId 重复 / 行数差=批次固有 WARN

豁免规则:用户手动布局下(EPROS 打开保存过),规则 1 折点对齐 FAIL 属预期豁免——以手动版为准,如实披露 FAIL 项数与原因,不得回改用户图。

B4 手动版比对 SOP(补全 §10A 要点 9 / v1.3.7①)

  1. 先快照:cp 到 _user_snapshots/&lt;名&gt;_用户手动版_&lt;日期&gt;_&lt;时分&gt;.epros;
  2. 内存重建基线:G.build_flow(md, no, name) + G.serialize(不落盘),parse 后与用户版做语义 diff 五级:节点(键 FigureType+FigureText+roleName)/ 连线(键 src+tgt+label)/ 协作框(按中心点包覆集合)/ 泳道 / 画布;坐标差 ≤8 视为容差;
  3. 判读口径:节点/连线 0 增删+标签不变+协作框不变 ⇒ 逻辑零变更、纯布局优化——文件层只需改图占位说明,不改逻辑内容;布局变化按梯队归纳(如「评审区右移~85 / 审批区右移~180」);段数变化(5→4 段等)=EPROS 重排走线,拓扑不变,如实记录;
  4. 报告落盘 _cmp_*_报告.md(五级变更表+影响说明)。

B5 分段双图管线(总图 → 图A/图B)

  • 链路:_gen_split227.py(抽总图第 1/2/3/4/6 章骨架+硬编码替换第 7 章表 → _split227/ 子目录,避开 all_flows 顶层扫描防同编号覆盖总图)→ _gen_split227_epros.py(注入 G.ABBR[&quot;2.2.7-A&quot;]=&quot;HTPS&quot; 等后调 build_flow+serialize);
  • 编号沿用总图体系不按段重编(分段图跳号属正常形态);跨图衔接用「子流程调用」节点(ImplFigure),EPROS 单文件内无法跨图连线;
  • ⚠️ SRC 与第 7 章表硬编码——总图升版后须同步,否则重跑分段图会回退到旧逻辑。

B6 第 8 章 10 列升级与 Word 适配

  • 列结构:9 列→10 列:在「输出」后新增「异常处理」列,「角色」更名「责任人」;
  • 列宽:COLW[&quot;activity10&quot;] = [700,1200,4900,1200,1100,1000,1500,860,700,740](合计 14200 ≤ 横向节 14358 twips),按首表行列数==10 动态切换;
  • 附章节解析:## 附:… 作为独立章解析(no="附N");--- 水平线跳过、&gt; 引言转 note;附章节表格动态等分列宽(首列 500,纵向节 9426);附章节小节不套「标题 2」(见 §4 硬约束);
  • 校验器适配:TBL_HEADERS_10(10 列基准头)+G-09 骨架允许「附:」章(标题1≥12 且第 13+ 个以「附:」开头)+jobs 按实际行数登记;
  • 收敛(正式交付):按模板形态删除附章节后,_gen_flow_doc.py 的附章节解析仍保留(审阅稿形态仍可用)。

B7 模板形态收敛 SOP(「参照模板删除多余的内容」)

  1. 定标尺(dump 实物,勿凭记忆):_dump_template_struct.py 只读 dump 基准 docx——章节骨架 / 注文数 / 各表行列与表头 / 修订记录行数;再用已验收先例(如同批另一份已对齐 PASS 的成品)校准出「模板形态 ± 先例容差」(如基准注文 0 条,先例 6 条=同型注文可保留);
  2. 出删除清单(三类):①模板无的整章(附章节);②过程性注文(编制沿革、参考标准声明、列级口径说明——信息须有正文/其他注承接后才能删);③修订表历史行(收敛为「V1.0 新建+当前版全量摘要」);
  3. 待确认项转移:删除项中的〔待客户确认:…〕汇总到当前版修订行或相关正文,一个都不丢;
  4. 保留项白名单:正文/术语中的待确认标记、业务口径注(如五大类指标定义)、先例同型注文;
  5. 备份 → 收敛 → 重生成 → 终验(骨架计数回到基准形态)→ 交付说明列删除清单与回退路径。

B8 泛化口径与残留扫描(长期口径,见 §10A 与项目 MEMORY)

  • 泛化词典脚本(保护 | Vx.x | 修订行)跑完后,必须再做数值型残留专项扫描:\d+ 分钟、\d+ 万元、\d+ 元、\d+ 日前 等——多轮泛化后仍有漏网(实测 150 行「60/240 分钟」残留至 V10.0 才清出);
  • 审批分级按「授权额度内/超授权额度」命名,阈值一律指向公司《合同审批授权表》;
  • md「字符数」≠「字节数」(UTF-8 中文 3 字节),脚本自检打印与 ls 差 ~2.5 倍属正常。

10C. 批次格式统一工程经验 · 基线分族 / 角色法分类 / 段距行单位 / 明文审计通道(2026-10-19,10 份流程文档实测)

> 承接 §10A(单流程梳理)与 §10B(单文档十轮迭代),本节归纳一次批量统一 10 份流程文档(Letter→A4、三种基线族、
> 约 4750 段落 / 94 表格、文字零改动硬约束)的全链经验。项目锚点:&lt;工作区&gt;/流程10.18/_tools/
> (_apply_fmt.py 套用 / _audit.py 只读审计 / _text_diff.py 差异归因 / _profile.py 前后画像 / _report_html.py + _html2docx.py 出报告)。
> 实测结论:10 份 0 格式不符合项;正文与表格文字逐段一致;耗时 套用 6~7 min + 审计 4~5 min(两轮)。

C1 基线先分族,规则再落地

同一批文档常来自不同模板代际,逐份定制既慢又不可复现。先按「页型 + 节数 + 样式体系 + 表格样式」四维聚类,
同族共用一套规则;族间差异只落在「是否需补样式/是否需改页型」这一层。

族型(本批实测) 特征 需额外做的结构动作
A 单节 Letter 型 612×792pt、1 节、全篇仅「正文」样式、目录为手工条目列表(无页码)、无目录域 改页型与边距;按文本判定后补「标题1/标题2」样式;目录只排版本(不转自动域,否则会新增页码文字,违反零改动)
B 四节 A4 自定义样式型 4 节已正确、样式名自造(表格内容/段/table++)、标题纯黑 只改字符与段落格式、表格边框与字号
C 四节 A4 网格型 4 节、表格样式「网格型」、边框 0.75~1.5 磅混用 统一边框 0.5 磅;标题/正文/表格字号重设

做法:先用 _profile.py 出四行画像(页型/节数/样式 Top5/表格边框与字号分布)再分组,不要打开文档逐份目测。

C2 角色法分类(样式名不可靠)

把每个非表格段落归入下列角色,规则按优先级自上而下命中即停。归一化:去 \r \x07 \x0c \t、去前导 N、/N.,并加「短文本」约束(章名 ≤14 字、节名 ≤22 字)防正文句子误命中。

角色 判据 本批目标格式
表格内段落 Range.Information(12) 为真 交表格层处理,段落层直接跳过
目录条目 样式名以 TOC 开头;或(区间法,见下)区间内且文本=章名/节名 15 磅、段后 8、一级缩进 0/二级 22
章标题 样式=标题 1;或归一化文本 ∈ 12 章名集 15 磅粗 #0F4761、两端、段前 8/段后 2(「流程说明」24/4)、多倍 13.9、与下段同页
节标题 样式=标题 2;或 ∈ {文件拟制/修订记录, 附则} 15 磅粗 #0F4761、段前 6/段后 2
目录标题 文本 ∈ {目录, 目 录, 目 录} 15 磅粗、居中、段后 6
表题注 文本 ∈ {术语表, 角色职责匹配表, 业务流程图, 流程活动说明表, 流程指标定义表, 相关文件清单, 文件编制控制表} 15 磅常规(去粗)、居中、段后 2
封面 索引 < 目录标题索引 标题 16 磅粗居中段后 10;信息行 16 磅左对齐段后 2
正文 其余 14 磅、两端、多倍 13.9、段前后 0、首行缩进 0

目录区间定位(必须做,否则 12 个章标题会被误判成目录条目):

  1. 目录标题索引 = 首个「文本 ∈ 目录集」的非表格段;
  2. 目录终点 = 该段之后首个含 \x0c(分页/分节符)的段落;找不到则退化为「目录标题 +18 段」;
  3. 只有 目录标题索引 &lt; i &lt; 目录终点 的短文本才按章名/节名归入 TOC1/TOC2。

> 实测首轮未设边界时 h1 计数 24(12 真章标题 + 12 目录条目),设边界后回到 12。

C3 段距「行」单位坑(本批最高频,4/10 份中招)

项 内容
症状 设 SpaceBefore=8 / SpaceAfter=2,保存后回读 19.05 / 9.5;比值 2.381 / 4.75 = 行高 38.1pt 的 0.5 / 0.25 行
根因 段落存的是 w:beforeLines=&quot;50&quot; w:afterLines=&quot;25&quot;,SpaceBefore 只是换算视图;中文版 Word 优先按行
修法 LineUnitBefore=0 → LineUnitAfter=0 → SpaceBeforeAuto=False → SpaceAfterAuto=False → SpaceBefore=磅值 → SpaceAfter=磅值(样式定义同样要清,否则继承段落照样漂)
验证 必须另起进程只读回读,容差 ≤0.1pt。同一会话内回读读到的是「刚设的值」,测不出这个坑(首轮 4 份"设了但没落地"正是这样漏过的)
判读 回读值 ≠ 目标值时,先怀疑行单位、再怀疑赋值失败;LineUnitBefore 读回 0 也不能证明 XML 里没有 beforeLines

C4 表格排版分档(一表一判,勿全表同参)

表型 判据 字号 行距 边框
审批栏 首格含「审批栏」 16 磅 多倍 13.9 0.5 磅
活动说明表 列数 ≥9(先判列数再判关键字) 12 磅 固定 13 磅 0.5 磅
普通表(档案/术语/角色/指标/支持/文控) 其余 14 磅 多倍 13.9 0.5 磅
  • 边框六向全设:1 / -1 / -2 / -3 / -4 / -5,LineStyle=1、LineWidth=4(wdLineWidth 枚举 4=0.5 磅);单元格级 -5/-6 不支持,勿在 cell 上设内线。
  • 加粗一律不动:表头与指标卡标签的加粗是语义层次,统一去粗会削弱可读性。
  • 单元格段前后 0、首行/左右缩进 0、顶端对齐;表格整体左对齐;列宽不重分配(见 §4 硬约束)。
  • 复核口径:COM 读回 1/4 即正确;Word 导出的 HTML 显示 1.0pt 属导出上取整,与基线表现一致就是正常,勿按 HTML 判缺陷。

C5 目录域重算的差异归因

见 Phase D 的「V-01 判据修正」表。要点:页码变化不算正文改动,整行消失必须回备份核实后显式披露。本批 8 份含目录域(7~14 行页码重算),其中 2 份各有 1 条指向「9、裁剪指南」的失效条目(该章在正文中不存在)随重算消失,正文段数变化 556→555,已在报告中单列说明。

C6 DLP 下的明文审计通道(本批关键突破)

通道 结果 用法
Word → PDF(ExportAsFixedFormat(...,17)) 落盘仍 00 00 5b 00,pypdfium2 报 PdfiumError: Data format error ❌ 不能用于版面核对
Word → 筛选 HTML(SaveAs2(out.html, 10)) 文件头 &lt;html&gt;,明文可解析 ✅ 核对 @page{size;margin}、h1{color:#0F4761}、td{border:solid windowtext .5pt}、font-size
COM 只读属性 可信,但主题色返回 0xD4xxxxxx 编码 与 HTML 交叉确认

主题色处理:Font.Color 为 0xD400BFFF 这类值(TextColor.ObjectThemeColor ≠ 0)时,不要把这个长整型照抄到目标文档——目标主题不同即变色。用 HTML 解析出真实 RGB(本例 #0F4761),按 R + G&lt;&lt;8 + B&lt;&lt;16 设为直接色最稳。

批量变更报告结构(5 段,本批成品可直接复用):

  1. 任务概述表(基准/对象/方式/校验/备份位置);2. 参考规范表(逐项实测值,注明「非目测」);
  2. 文件清单(序号/文件名/所在文件夹/段落数/表格数/文字校验/审计结论);
  3. 逐份 before→after 表(只列发生变化项,未变化标「(未变更)」)+ 主要变更项一行;
  4. 校验结论 + 说明事项(编号属文字未改、目录页码重算、列宽未动、加粗保留)。

生成方式走 HTML → docx(SaveAs2(...,16)),比 COM 逐段建表稳(天然避开本文「Word COM 生成 · 结构性七坑」)。

C7 批量执行节奏与留痕

环节 纪律
备份 shutil.copy2 字节复制加密件;MD5 与原件一致即证明副本有效(DLP 只加密写入方,字节复制保真);落盘后读文件头仍为 00005b00
进程 串行单进程:每份 30~60s,10 份约 6~7 min,必须后台跑(默认 120s 超时会被杀并留下 WINWORD 残留)
残留 每轮开跑前清无窗口 WINWORD(MainWindowTitle -eq &#x27;&#x27;)并清 HKCU:\Software\Microsoft\Office\16.0\Word\Resiliency
角色分离 套用(写)串行;审计(只读)与画像(只读)可并发,但审计必须在套用全部结束后另起进程
收尾 逐份核对:文件头 00005b00、大小合理、参考基准文件 mtime 未变(防止把基准也改了)

C8 基准登记(防止「基准串台」)

同一项目内并存多套基准,且「生成链基准」与「对齐链基准」是两个独立口径,不得互相覆盖:

口径 基准 关键差异
生成链(§模板基准 V1.1) 产品市场信息调研分析流程-V1.1.docx / 竞争对手产品分析流程-V1.1.docx 章标题段前 15.6/段后 7.8;表题注 12 磅带「表 N」前缀;表格 12 磅
对齐链(本批 2026-10-19) 2.1.1…9.17日-2.docx / 2.1.2…9.17-1.docx(用户当批指定) 章标题段前 8/段后 2;表题注 15 磅无前缀;表格 14/12/16 磅;封面节边距 57
历史(仅溯源) 流程打样/9.25/2.1.1… / 2.1.2… 版式口径已作废

执行铁律:基准以当批用户指定为准,并在交付说明写明「依据版本号」;发现两套基准数值冲突时回报确认,不得自行择优。

10D. 流程图复核与整改工程经验 · 23 条判据 / 文本级手术 / 重接四级规则 / 跨工件一致性(2026-10-19,12 份 .epros 实测)

> 本节对应复核链:对既有 .epros 做逻辑与规范复核,并把「可机械判定」的缺陷直接改回文件。
> 实测规模:12 份 / 319 图元 / 224 流程节点 / 194 条连线;初检 194 条问题;完成第一优先整改后 175 → 136 条(高 98 → 63)。
> 工程锚点:&lt;工作区&gt;/流程10.18/_review/(epros_model.py 解析 → _review_epros.py 22 条机检 → _fix_epros.py 整改 → _fix_geometry.py 折线修补 → _compare.py 图文比对 → _report_html.py / _build_xlsx2.py 出交付)。

D1 复核判据表(23 条 = 连线逻辑 15 + 走向与结构 5 + 命名 2 + 元素语义 1,逐条可机检)

> 等级口径(2026-11-05 起):P0 = 交付阻断,不修完不得出交付物;P1 = 告警,须在报告中列明并给出处置意见;P2 = 提示,可留待人工润色。「阻断」列直接对应 §6 的交付门:P0 项 > 0 → 拒绝交付。

规则 等级 阻断 判据 典型成因 修正动作
C-01 连线未吸附活动 P0 阻断 连线端点所在图元 FigureType == DottedRect 画线时点到虚线协作框 重接到框内目标活动(四级判据见 D4)
C-20 同名残留副本 P1 告警 同名图元中 degree == 0 者 改版拖拽复制后未删旧框 删除无连线副本;两端都连线的只提示「多实例待确认」
C-06/07/08 未连线 / 无入边 / 无出边 P0 阻断 内部度数 = 0 / 入 0 出>0 / 出 0 入>0(排除起止、ImplFigure 移交) 上面两类问题的下游表现 需业务定上下游 → 只出清单
C-04/05 起点 / 终点缺失 P0 阻断 无 FlowFigureStart、且无入度 0 的 EventFigure/CustomFigure;无 FlowFigureStop 且无移交型终点 客户惯用触发事件当入口 见 D6「起止图元不要自动加」
C-11/12/13 判断无分支 / 分支过多 / 缺条件 P0 阻断 Rhombus 出度 <2 / >3 / 出边 LineText 为空 画了菱形但只连一条线;条件写在文档里 补条件标注(业务措辞,不代写)
C-14 隐式汇合 P0 阻断 普通活动入度 ≥2 且无网关 全批仅 3 个网关图元 定 AND / XOR 后再加网关
C-22 菱形与网关混用(2026-11-02 增) P1 告警 Rhombus 的 FigureText 含 XOR/OR/AND 前缀或「网关」后缀;或 XORFigure 名称含审批/审核/评审字样 生成侧旧规则「决策关键词优先于前缀」把 XOR 网关画成菱形(实测 14 例:2.2.5 ×1 / 2.2.6 ×3 / 2.4.1 ×2 / 2.4.2 ×3 / 2.4.7 ×3 / 2.6.2 ×2) 二选一:语义是判定 → 保留菱形、改纯判定语;语义是分流 → 改 XORFigure 并保留前缀。只出清单,不代改语义
C-15 回退环路 P1 告警 DFS 检出回边 审批退回、返工 标条件即可;环上无正向出口才是死循环
C-17/18/19 端点未吸附 / 连线穿越节点 P0 阻断 端点与目标边框距离 >6px;线段穿入非端点图元内部 手工拖拽后未吸附 重算折线(D5)
C-21 逆向连线未标条件 P2 提示 目标 x 显著小于源 x 且 LineText 为空 回退或布局错位 确认语义后补标注
F-03 命名不规范 P2 提示 活动 >20 字 / 带句末标点 / 判断非「是否…」式 / 判断框带「网关」后缀 — 人工润色
D-01/02/03 章节缺项 / 编号跳号 / 图文不一致 P0 阻断(D-02 为告警) 12 章白名单;首号 010 且步进 10;活动名集合比对 见 D7 文档侧修正

判定口径两条铁律:① RoleFigure / MapNameText / DottedRect / FreeText 是装饰图元,不参与连通性;② 吸附到协作框的线要计入源/目标的视觉度数,否则会与「死路径」重复计数。

D2 三个判据陷阱(都踩过,务必先看)

  1. 「分支条件普遍缺失」是错的判断。初判 13 处无条件,实测 20 个判断节点里 18 个已标注,只有 2 个节点、4 条出线缺失。先统计再下结论;本批真正的缺口在汇合侧(16 处多入边无网关),不在分支侧。
  2. 「同名图元」必须分两类:degree=0 的才是改版残留(删);两端都连线的可能是真多实例(如「战略规划流程」在同一张图出现两次),只提示、不动。
  3. 入口不能只看 FlowFigureStart:多数文件用 EventFigure 触发事件当入口。两者都无时才用「入度 0 且出度>0 的最左活动」推定,并必须标注为推定——否则可达度恒为 0,一片误报。

D3 整改手术规范(不重序列化)

操作 做法
删图元 正则匹配 &lt;figures\b[^&gt;]*FigureImageId=&quot;X&quot;[^&gt;]*/&gt; 整块删除
改端点 按 OrderIndex 定位目标 &lt;manhattanLines ...&gt;,只在该开标签内替换 StartFigure / EndFigure
换折线 按 OrderIndex 定位整个 &lt;manhattanLines&gt;…&lt;/manhattanLines&gt;,整段替换内部 &lt;lineSegments/&gt; 序列
落盘前 ET.fromstring(new.encode(&quot;utf-8&quot;)) 校验,再 open(..., &quot;w&quot;, encoding=&quot;utf-8&quot;, newline=&quot;&quot;)
顺序号 OrderIndex 无需连续(实测原件本身就有 0,1,8,9… 的空洞),删除后不必重排

D4 重接四级判据(纯几何就近会判错)

按序命中即停,每条都记录判定理由;四级都不满足 → 不改,列入「待人工确认」:

级 判据 说明
0 候选名包含保留端名称(「参与客户分级评定」⊃「客户分级评定」) 语义最强
1 端点已落在某候选图元内部(距离 ≤1px) 确定性最高,原线其实已画到节点上
2 候选中恰有一个非「参与/协助」主体活动 破解「参与者框比主活动更近」的陷阱
3 几何距离显著占优:d0 ≤ 40 且 d1 ≥ 2×d0 或 d1 − d0 ≥ 60 兜底

> 反例:2.4.1 若纯按距离,会把「参与客户信息深度调研」(近 2px)当成主活动;规则 2 纠正为「客户信息深度调研」。实测 20 条中 15 条可判、1 条判「两端都是协作框→删除」、4 条留给人工(客户满意度 3 + 商务谈判 1)。

D5 重接后必须重算折线

只改 EndFigure 不改坐标 → 线头停在旧协作框边缘,视觉上仍是断的,且 C-17/C-18 立刻报错。按三走向重建 3 段正交线:

走向 折线
左 → 右 源右边缘 → 中间竖杆 x → 目标左边缘,竖杆 x 优先沿用原折点
右 → 左(回退) 下沉 max(两端底边)+24 绕行,避免穿过中间图元
同列上下 源底/顶边 → 中点 y → 目标顶/底边

D6 副作用、验收与「不要自动做」的项

  • 重接会暴露被掩盖的缺陷:某菱形的第 2 条出边原本连在协作框上,不计入内部出度,故「判断无分支」从未报出;重接后 C-11 才出现。这类必须在报告里标「新暴露的既有缺陷」,不能算整改回归。
  • 画布必须复核:WorkflowWidth/Height 可能小于内容 extent(实测 2/12:画布 1464×644 装 2728×910 的内容,右侧 1/3 图元在画布外)。改为 extent + 60。
  • 整改后必须另起进程全量复审,并做前后逐文件对比(本次逐条留痕 fix_plan.json);同一进程内自检会漏掉未生效项。
  • 起止图元不要自动加:图元自 x≈180 起排、紧贴泳道名列,补「流程开始」需把整图右移约 160px,属版面重构;自动平移会破坏客户版面。→ 出作业单(每份:加什么、建议坐标、连到哪个活动),由人在 EPROS 内 2 分钟完成。

D7 文档侧取证要点(三条都会造成误判)

项 坑 对策
活动表提取 合并单元格会让 Cell(r,c) 抛异常,逐格「键→右邻值」配对会把「流程责任人」等字段判成空(初版 10/12 误报) 按行扁平化收集全部单元格文本,再用「键后第一个非空值」配对
编号判据 只比「是否 010 起、步进 10」不够 逐对比较 cur − prev == 10,报出具体跳号位置(实测抓出 150→170、005 起编)
名称比对 直接字符串相等会把「市场/区域分析 vs 市场区域分析」判成缺项 归一化(去空白、编号前缀、括号内容、/·、 等标点)→ 再分「硬缺失」与「近似(表述不一致)」两级

D8 交付形态(四件套)

  1. 复核报告 docx:范围与方法 → 总体结论 → 分文件统计 → 问题分类与标准修正动作 → 逐份问题清单(位置/描述/建议)→ 整改优先级 → 说明与局限。
  2. 问题清单 xlsx:双表「待整改 / 已整改」,含状态列;整改后重出,已整改项进第二表而不是消失。
  3. 整改执行记录 docx:执行概述 → 已完成(含逐条改动与判定依据)→ 前后对比 → 未自动整改项及原因 → 起止图元作业单 → 回退与复验。
  4. 备份目录:.epros 原件快照,报告写明回退方法。

> xlsx 多表:Worksheets.Add() 之后必须 ws.Move(wb.Worksheets(n)) 排序——Add(After=...) 关键字在 pywin32 下不生效,新表会插到最前(与 §10C C7 同一结论)。

D9 跨工件一致性:三级分类与「不得自动改」的红线

复核「图 ↔ 文档」是否一致时,先限定比对对象,否则假阳性会淹没真问题:

比对范围 纳入 排除(重要)
图侧节点 RoundRectWithLine(活动)、Rhombus(判断) ImplFigure(子流程引用)、FileImage(文档)、EventFigure(触发事件)不参与比对——子流程是跨流程引用,本就不该在活动表里占行;实测 12 份里约六成「图中有、文档无」来自把它们当活动

差异按三级分类,处置门槛逐级升高:

级别 判据 可自动处理? 处置
标点级 归一化后完全相等(差异仅在 /、·、括号、空格、标点) ✅ 可 统一为无斜杠的干净写法,改任一侧皆可
措辞级 归一化后互含但不相等(如「客户市场产品收集」⊂「客户市场产品信息收集」) ❌ 不可 需先定权威侧;语义可能不同(「组织执行改善措施」≠「执行改善措施」)
实质级 无包含关系(文档有图中无 / 图中有文档无) ❌ 不可 出作业单,由业务确认补画或补登

红线:不得自行决定「以图为准」还是「以文档为准」。判权威侧的依据是信息完备度——活动表带编号/角色/输入/输出/测量点(可执行),图只有名称与连线;但先看数量(见 D10),数量不等时改哪边都是错的。

D10 编号一致性:三处必须同时对齐

活动编号同时存在于三个地方,只改一处就会断链:

  1. 文档第 8 章活动说明表的「活动编号」列;
  2. 文档正文与 KPI 表中的引用,形如「活动总结与效果评估(110)」——这类括号引用极易漏;
  3. .epros 图元的 ActivityId 属性(可能带前缀,如 HTQD-010、SCHDCH-020)。
步骤 做法 判据
① 先数数量 文档行数 vs 图中活动节点数 数量不等 → 不是「跳号」而是「漏行/漏节点」,此时禁止重排
② 再对编号 去掉 ActivityId 前缀后与文档编号做集合比对 缺哪个号 = 缺哪一行,位置可精确定位
③ 只在三者数量一致时重排 重排后同步括号引用 引用必须用「占位符两段式」替换防级联

> 实测反例(务必记住):2.2.7 文档编号 010–150、170–210(缺 160)被初判为「跳号」,按 010–200 重排后,反而与图中 HTQD-010~210(21 个连续节点)整体错位 5 个号。真相是文档漏了 160「合同审批授权判定」那一行——正确动作是补行,不是重排。发现后已回退编号、恢复原状并改判为「文档漏登」。

D11 规范与基准冲突时,先裁定再动手

基线文件本身可能不合规。实测:作为格式基准的 2.1.1/2.1.2,表格为「审批栏 16 / 普通表 14 / 行距 13.9」,而编制规范写的是「所有表格内容=小四 12 磅、行间距 16 磅」,无任何表型例外。

处置顺序 动作
1 逐项比对「规范条款」与「基准实测值」,先出冲突清单,不要按基准直接铺开
2 冲突项回报用户裁定,不得自行择一;按基准统一会把偏差复制到全批
3 裁定后重跑一遍:基准文件也纳入整改范围(基准不再是表格参数的基准)
4 在交付报告里显式声明「哪份报告的口径已被本轮覆盖」,避免新旧结论并存

D12 Word/COM 批量整改的三个坑

坑 表现 解法
Find.Execute(Replace=1) 只换首处 同一编号在文中出现多次,只改了第一个 批量替换一律 Replace=2(wdReplaceAll)
Find 在加密 docx 上「返回 True 但不生效」 即使用 Replace=2,返回成功而文本未变,且不留痕迹 改用绝对字符偏移替换:doc.Range(p.Range.Start + m.start(), …+len).Text = 新值(等长替换,格式不丢)
级联替换错位 190→180、200→190 顺序执行会连环串号 两段式:先把旧值全换成唯一占位符(如 ⟦0⟧),再把占位符换成新值
逐单元格扫描拖死 Word 30 行×8 列×10 表≈2400 次 t.Cell(r,c),实测致 COM 挂起、Save() 报「远程过程调用失败」 先用 t.Range.Text 判断该表是否含目标词,只扫前 3 行前 6 列;5 份文档由 5 分钟降到 30 秒

> 另注:批量处理 10 份以上时每份独立 DispatchEx + Quit(),并在批间清理无窗口 WINWORD(MainWindowTitle -eq &#x27;&#x27;);有窗口的实例可能是用户正在编辑的文档,不得强杀。

11. 变更记录

版本 变更
v1.7.4 三项待补落地轮(2026-11-05,承 v1.7.3 登记的待补项,全部已实测)。① 待补 1 · 判据等级化:§10D D1 的 23 条判据表由 4 列扩为 6 列(+等级 +阻断),并立等级口径——P0 阻断(C-01 吸附框 / C-04·05 起止 / C-06·07·08 断链 / C-11·12·13 判断分支 / C-14 隐式汇合 / C-17·18·19 几何 / D-01·D-03)、P1 告警(C-15 回退环 / C-20 残留副本 / C-22 菱形网关混用 / D-02 编号跳号)、P2 提示(C-21 逆向无标注 / F-03 命名)。② 新增 §6.1 交付门(四门):G-0 P0 清零(不清零拒绝交付,只能出问题清单+整改方案)/G-1 P1 登记(未登记即视为漏检)/G-2 P2 归并/G-3 三件对齐(未填不算交付)。③ 待补 2 · 折线重算独立成 CLI:新增 scripts/recalc_lines.py(--dry/--fix/--tol/--gutter)——按端点是否落在图元四边 ±tol 判悬空(对应判据 C-17),悬空且源在目标左侧时重算为 1 段(同行)或 3 段(右·竖·右);扰动实测通过:2.2.5 人为打偏 60px → --dry 检出 1 条 → --fix 写回 → 复检 0 悬空,figures 33 / lines 20 结构守恒;2.2.5 与 2.6.2 真实文件全量复检 0 悬空(20 条 / 36 条)。④ 待补 3 · 三方对齐表模板:新增 references/three-way-alignment-template.md——以活动编号为轴,8 列(编号/名称/图/文/表/差异类型/处置/备注),给出 8 种状态组合的语义与处置(含 图—/文✓=图漏节点、图✓/文—=文档漏行、表缺=附表漏表单三条 P0),并明确红线「不得自行判定以图为准还是以文档为准」;附 2.6.2 三行实例与 D-01/02/03、C-06/07/08 的衔接说明。⑤ references/capability-matrix.md §九待补清单同步为已落地。
v1.7.3 能力矩阵入包轮(2026-11-05,2.6.2 / 2.2.5 等 12 套流程实操驱动)。① 新增 references/capability-matrix.md(能力权威表,约 200 行):按 5 域 27 项组织——A 流程图(A1 结构解析 / A2 规格驱动生成 / A3 高保真重建 / A4 语义级差异比对 / A5 元素类型裁决 / A6 连线复核 23 条 / A7 文本级手术 / A8 网关必要性审核 / A9 多角色副本与协作框 / A10 几何连通性)、B 流程文件(B1 12 章骨架 / B2 版式对齐 V1.2 / B3 表格题注 / B4 目录分页 / B5 图文一致 / B6 明文审计)、C 流程附表(C1 目录编号 / C2 骨架分区 / C3 网格纪律 / C4 字段对应)、D 跨工件(D1 编号三处对齐 / D2 支持文件↔附表 / D3 三级差异)、E 底座(E1 DLP 通道 / E2 备份回滚 / E3 终验留痕 / E4 四条红线);每项给「定义 / 覆盖范围 / 输入→输出 / 成熟度」,并配 12 章对应矩阵与三类工件填写规范(图表/文档/附表的字段与命名硬性规则)。② SKILL.md 新增 §2A 能力矩阵索引(5 域一览 + 一句话口径 + 开源采纳纪律 + 待补 3 项),指向 references 单一事实源。③ 开源对照 11 项(2026-11-05 GitHub API 实测):bpmn-js 9,720★(模型与渲染分离→A3 坐标/折线独立存储)、bpmnlint 173★ MIT(规则可插拔+严重级→A6 判据组织)、bpmn-moddle 515★ MIT(未知属性透传→A7 不重序列化)、bpmn-auto-layout 102★ MIT(缺 DI 自动布局→A7 折线重算)、dmn-js 369★(决策与路由分离→A5)、python-docx 5,757★ MIT、docx-templates 1,098★ MIT(模板/数据分离→B1)、excelize 21,064★ BSD-3、pyexcel 1,295★ BSD-3;pm4py 1,073★ AGPL-3.0 与 drawio 63,817★ GPL-3.0 一票否决不集成(只读方法论),沿用「许可证硬门槛 + 只借鉴机制不搬代码 + 借鉴必须落成判据」三条纪律。④ 待补 3 项登记:判据「严重级+阻断开关」未成列 / 折线重算未独立成 CLI 子命令 / 三方对齐表(图·文·表同轴)无固定模板。
v1.7.2 EPROS 元素定义澄清 · 菱形判断框与 XOR 网关严格分家(2026-11-02,用户裁决驱动)。① 新增「元素定义与职责」节(置于「连接点(锚点)规范」前):立两条分界——菱形 Rhombus = 判断框,只表达条件分支(做不做/过不过),不是网关;XORFigure/ORFigure/AndFigure 是三个独立的圆形网关元素,表达多路如何路由;二者并列、不得合并描述或互相映射。附元素总览表(15 类:活动/判断/XOR·OR·AND 网关/子流程/文档/触发/起止/协作框/分组框/泳道/虚拟角色/图名/注释/责任标记,标注是否入活动表、是否参与连通性、命名规则)+五维区分表(形状·语义对象·出边关系·连接点·命名)+一句话判据「要『判』用菱形,要『分』用网关——判定产生结论,网关消费结论」。② 生成器规则反转(map_node_type,项目脚本):旧规「决策关键词优先于前缀」→ 新规「类型前缀优先」——名称带 XOR/AND/OR 一律映射为对应圆形网关,不得因含「评审/审批」而改画菱形;无前缀的判定语才是菱形;判断框名含「网关」时返回命名告警。实测用例:XOR 专题评审网关→XORFigure(旧规为 Rhombus)、报告审核→Rhombus。③ 判据 +1 条(22→23):新增 C-22 菱形与网关混用(Rhombus 名含 XOR/OR/AND 前缀或「网关」后缀;或 XORFigure 名含审批字样)——实测 14 例(2.2.5×1 / 2.2.6×3 / 2.4.1×2 / 2.4.2×3 / 2.4.7×3 / 2.6.2×2),处置为只出清单不代改语义(判定语义→改纯判定语;分流语义→改 XORFigure);F-03 命名不规范补「判断框带网关后缀」。④ 依据:本工作区 53 份 .epros、1629 图元实测——菱形名称 TOP 全为判定语(审批 7/销售价格确定与审批 5/合同审批·授权额度内 5/报告审核 4…),而 0 个 XOR 圆形网关带审批/审核/评审字样,佐证「客户原生口径本就分离,混用系生成侧规则引入」。完整说明见 &lt;工作区&gt;/_out10/EPROS元素定义与职责说明-V1.0.md。
v1.7.1 跨工件一致性与规范合规经验(2026-10-19 深夜,12 份图+12 份文档全量复核驱动)。新增 §10D 四组:D9 三级分类(标点级可自动统一 / 措辞级需定权威侧 / 实质级出作业单;比对必须排除 ImplFigure、FileImage、EventFigure——实测六成假阳性源于把子流程引用当活动;红线:不得自行决定「以图为准」还是「以文档为准」);D10 编号三处对齐(活动表编号 + 正文/KPI 的「(编号)」引用 + .epros 的 ActivityId;先比数量再比编号——数量不等即「漏行/漏节点」而非「跳号」,此时重排会把原本对齐的序号整体错位,实测 2.2.7 图 21 节点/文档 20 行,按 010–200 重排后与 HTQD-010~210 错开 5 个号,已回退);D11 规范 vs 基准冲突裁定(基准自身不合规时先出冲突清单再回报,不得按基准铺开;裁定后基准也纳入整改并在报告里声明口径覆盖);D12 Word/COM 批量整改四坑(Replace=1 只换首处须用 Replace=2;Find 在加密 docx 上返回 True 却不生效 → 改绝对偏移 Range(start,end).Text;级联替换须占位符两段式;逐单元格扫描 2400 次致 COM 挂起 → 先 t.Range.Text 判存在、只扫前 3 行 6 列,5 份由 5 分钟降到 30 秒;批间只清无窗口 WINWORD)。同轮反例记实:C-20「残留副本」规则原写「删除 degree=0 的同名图元」,遇「全部副本都 degree=0」时会连同真实活动一起删——2.1.1「一手信息收集」即如此被误删,已恢复节点;规则修正为「全为 0 时保留一个,仅删多余者」。
v1.7.0 复核链入包 + 22 条判据 + 整改手术规范(2026-10-19,12 份 .epros 实测驱动)。① 新增第三条链「复核链」:§0 分诊表加行(触发词「复核/检查/排查/问题清单/整改」,判据是「要判缺陷而非生成」),task.mode 增 review;与另两链共用底座,区别是产物为「改回 .epros + 出问题清单」,且先出清单再整改。② 新增 §10D(8 组):D1 判定表 22 条(C-01 吸附协作框 / C-20 残留副本 / C-06-08 断链 / C-04-05 起止 / C-11-13 分支 / C-14 隐式汇合 / C-15 回退环 / C-17-19 几何 / C-21 逆向 / F-03 命名 / D-01-03 文档侧),附两条铁律(装饰图元不参与连通性;吸附框的线要计入视觉度数防重复计数);D2 三个陷阱(「分支条件普遍缺失」是错的——20 个判断节点 18 个已标注,真缺口在汇合侧 16 处;同名图元要分「残留」与「真多实例」;入口不能只看 FlowFigureStart,推定入口须标注否则可达度恒 0);D3 文本级手术(绝不 ET.write 重序列化;按 FigureImageId 删 figures、按 OrderIndex 只改开标签内 StartFigure/EndFigure、整块换 lineSegments;OrderIndex 无需连续);D4 重接四级判据(名称包含 → 端点在图元内 → 非「参与/协助」主体 → 距离 2 倍占优;反例:2.4.1 纯按距离会把「参与客户信息深度调研」当主活动);D5 折线重建三走向;D6 副作用与「不要自动做」(重接会暴露被掩盖的 C-11,须标「新暴露的既有缺陷」;画布须 ≥ extent+60,实测 2/12 溢出;起止图元因需整图右移 160px 只出作业单);D7 文档侧三条取证坑(合并单元格致逐格配对丢字段 → 扁平化取值;编号逐对判步进;名称归一化后再分「硬缺失/近似」);D8 四件套交付(复核报告 / 双表清单 / 整改记录 / 备份)+ Worksheets.Add 后必须 Move 排序。③ §4 硬约束 +3 条:「.epros 只做文本级手术绝不重序列化」「连线只改端点不够,必须同步重算折线」「不做语义推测式整改」。④ §6 输出规格 +3 项(复核报告 / 问题清单双表 / 整改执行记录)。⑤ frontmatter 版本 v1.6.0→v1.7.0,description 补「复核流程图」「检查连线逻辑」「问题清单」「整改」触发词与复核链定位。实测结论:初检 194 条,整改后 175→136(−22%)、高 98→63(−36%),12 份 XML 全部合法。
--- ---
v1.6.0 批次格式统一工程经验 + 段距「行」单位治本 + DLP 明文审计通道(2026-10-19,10 份流程文档批量实测驱动)。① 新增「§10C」经验节(8 组):C1 基线分族(单节 Letter 型/四节 A4 自定义样式型/四节 A4 网格型,同族共用规则,族间差异只落在「是否补样式/是否改页型」);C2 角色法分类(8 类角色判据表 + 目录区间定位算法〔目录终点=其后首个含 \x0c 的段落〕——不设边界时 12 个章标题会被误判为目录条目,实测 h1 计数 24→12);C3 段距「行」单位坑(beforeLines/afterLines 优先于磅值:设 8/2 回读 19.05/9.5;须按 LineUnitBefore=0→LineUnitAfter=0→SpaceBeforeAuto=False→SpaceBefore=磅值 顺序,且样式定义同样要清;必须另起进程回读,同会话回读测不出——首轮 4/10 份「设了没落地」即由此漏过);C4 表格排版分档(审批栏 16/活动说明表 ≥9 列 12+固定 13 磅/普通表 14;六向边框 1/4;加粗与列宽不动;HTML 显示 1.0pt 属导出上取整非缺陷);C5 目录域差异归因;C6 DLP 明文审计通道(PDF 仍加密不可读,SaveAs2(*.html, 10) 为明文,可解析 @page/h1{color}/td{border}/font-size;主题色 0xD4xxxxxx 须换真 RGB R+G&lt;&lt;8+B&lt;&lt;16,勿照抄长整型)+ 批量变更报告 5 段结构;C7 批量节奏(字节复制备份 MD5 验真、串行后台跑、清 WINWORD 残留与 Resiliency、基准 mtime 复核);C8 基准登记(生成链 V1.1 基准 vs 对齐链当批基准 不是同一套〔段前 15.6/7.8 vs 8/2、表题注 12 带「表 N」vs 15 无前缀〕,冲突须回报不得自行择优)。② Phase B「三个关键」→四个关键(新增「样式名不可作分类依据」:同批存在全篇仅「正文」样式、无标题样式、无目录域的文档);操作项补 ⑤ 分族/⑥ 角色归集。③ Phase C-A 维度 ①-⑧ → ①-⑪(新增 ⑨ 段距行距层、⑩ 表格排版层、⑪ 目录域重算与归因)+批量三纪律(独立复审、定点修复后再全量复审、before/after 画像落盘)。④ Phase D V 系列 +V-11 段距单位与取值 / +V-12 表格字号分档,并新增「V-01 判据修正」差异归因表(页码重算≠正文改动;整行消失须回备份核实后披露)。⑤ §4 硬约束新增两条:「★ 段距按磅值落地须先清「行」单位」「★ 批量统一不动列宽(列宽决定换行位置,改动即布局重排;基线既有宽表溢出〔742>718pt〕如实登记不修)」;§4.1 新增「第五类断言 · 段距写入后回读校验」(assert_space:SpaceBefore/SpaceAfter 与 LineUnitBefore/After 双判,另起只读进程回读;批量时改为「抽样取值 + 全量角色分布签名」)。⑥ §6 输出规格新增「格式变更报告(批量)」命名。⑦ frontmatter 版本 v1.5.1→v1.6.0,description 补触发词「批量统一多份文档版式」「出一份格式变更报告」与明文审计旁路。实测结论:10 份 0 不符合项、正文逐段一致(差异仅目录页码 7~14 行 + 2 条失效条目)、耗时 套用 6~7 min + 审计 4~5 min。
v1.5.1 菱形审批顶点分工规则完善+生成器落地(2026-10-17,用户重申驱动)。① 「连接点(锚点)规范」的菱形出边顶点分工硬规则补日期戳(2026-10-14 立,2026-10-17 用户重申)并明确入边恒走左侧顶点;新增「生成器默认行为」条:菱形双分支自动分工——正向(通过)走右侧顶点,回边(退回)自底部顶点直下图底回流区(4 段折线;按目标节点分层互不交叉;共用目标侧竖杆汇入;底部直通有障碍时短降 18px 横移源侧隔离带,不压节点盒);分支标签贴连线起点旁(首段长段不再取中点)。实证 2.1.3:040 审核退回 (1010,315)→y=990、050 审批退回 (1200,615)→y=1006,共杆 x=568 汇入 020,横向交叉 0,verify_epros --pair FAIL=0。② §10A.1 要点表新增第 11 条「菱形审批顶点分工(绘图规范 C)」(10 条→11 条);§10A.2 覆盖范围走线规范补「菱形顶点分工」;§10A.3「两条绘图规范」→「三条」、「六类已知问题」→「七类」(要点 11 入断言清单)。③ 版本号 v1.5.0→v1.5.1。
v1.5.0 2.2.7 十轮迭代工程经验沉淀(2026-10-16 深夜~10-17,V6.0→V10.0 实测驱动)。① 新增「§10B」经验节(8 组):B1 布线对齐判据链(新增 both_multi 判据:源出度≥2 且目标入度≥2 时禁 3 段 Z 形改 5 段——两侧折点同时共杆,分级审批线汇入参差 3542/3732→统一 3798);B2 md 解析三坑(第 7 章表行须加「列3∈类型词集」过滤防第 8 章 9 列混入 46 误报;节点名档位用「·」禁全角括号;编号行过滤按首列编号判定勿用行首前缀);B3 校验链四件套(audit 7 项双源 / cross_AB 跨图一致性「同名不同类型=跨图引用」/ geo 几何 PoLongx-PoLongy / verify 配对;用户手动布局下折点对齐 FAIL 属预期豁免);B4 手动版比对 SOP(快照→内存重建基线→语义 diff 五级→「逻辑零变更纯布局」判读口径);B5 分段双图管线(split 抽骨架+ABBR 注入+子目录避 all_flows;编号沿用总图;SRC 硬编码升版须同步);B6 第 8 章 10 列升级(异常处理列、角色→责任人、activity10 列宽、附章节解析与三坑、TBL_HEADERS_10);B7 模板形态收敛 SOP(dump 实物定标尺+先例校准→三类删除清单→待确认项转移→保留白名单→终验回基准骨架);B8 泛化残留扫描(数值型专项 grep:多轮泛化后 60/240 分钟仍漏网至 V10.0)。② §4 硬约束新增两条:「★ 附章节不进骨架」(附章节小节不得套标题 2,防 G-09 骨架污染与目录膨胀)、「★ COM 生成前清 WINWORD 残留」(残留实例致新 COM 会话早期挂起被 SIGTERM 且无输出)。③ 版本号 v1.4.1→v1.5.0。

| v1.4.1 | 流程梳理全案经验归纳 + 协作框双通道判据 + 生成器自动协作框(2026-10-16 深夜,单日五轮迭代收口)。① 新增「§10A 流程梳理全案经验 · 应包含的要点 / 覆盖范围 / 预期效果」总纲章节:10 条要点对照表(参考标准解析 / 编号口径 / 多源融合 / 顺序重梳 / 角色映射 / 竖向分叉点对齐 / 多人员活动标注 / 校验闭环 / 版本快照 / 双版本输出)+覆盖范围三段(输入侧 / 处理侧 / 输出侧)+预期效果三款(六类不踩坑 / 一次做对 / 全链可核对)。②「多角色活动 · 协作框规范」补强:标题加「亦称协助框」;新增「双通道判据」(多人员活动必须择一表达——协作框优先 / 依据逻辑关系添加连线;禁止孤立悬挂)与「生成器默认行为」(跨泳道副本组自动外裹协作框:左右余 17px、上下余 23px、橙 235,97,27、先于节点与连线绘制;实测 2.2.7「签字确认」4 副本 → 134×706)。③ 布线纪律第 7 条(竖向分叉点对齐)补实证数据(2.2.7 全图 8 组共杆:1072 / 1312×4 / 1642 / 1832 / 2022 / 2212 / 2848×3 / 3162)。④ 版本号 v1.4.0→v1.4.1。 |
| v1.4.0 | 模板基准换版 V1.1 + Word COM 运行时陷阱集 + 列宽铁律 + 竖向分叉点对齐规范(2026-10-16,单日四轮实测驱动)。① 模板基准由 9.25 换为 产品市场信息调研分析流程-V1.1.docx / 竞争对手产品分析流程-V1.1.docx(两份实测格式 100% 同构)——新增「V1.1 版式口径」12 项速查表:章标题「N、+Tab+章名」15 磅加粗悬挂缩进 li=21/fi=−21/单倍18/段前15.6段后7.8(末章「支持文件」7.8/3.1);子节「N.+Tab+名」14 磅/li=47.95;表题注「表 N+Tab+名」12 磅居中;目录双制表位(TOC1 左31.5/TOC2 左42.0+右481.4点线);全部表格边框外内统一 0.5 磅(含审批栏)、审批栏单元格 12 磅;封面信息行 li=104.85/fi=7.05、无独立「审批栏」标题段;节3=7-8 章横向(第8章9列表放不下)、节3 页眉距 28.35。② 新增「Word COM 生成 · 运行时陷阱与收口」大节:结构性七坑(InsertXML 本机不可用/Paragraphs.Add 覆盖同段/分节符位置/InsertAfter 样式继承/单元格继承「标题1」/空标题段/占位符双下划线+对象 Range 漂移)+运行时格式五陷阱(空段行距/表后自动段继承表题注/TOC 域范围延伸波及后续段/分节符段字体/TOC2 字符单位缩进)+三道收口(分节→格式化→TOC后复检→兜底回落)+四脚本校验闭环。③ 新增「表格列宽铁律」:先按所在节可用页宽定上限(9638/9426/14358 twips)再按内容适配(勿照搬基准 gridCol——基准无 tblW 靠 AutoFit 隐式压缩,值本身常超页宽);档案表参考分配 [2300,1200,2360,1900,1666]。④ 布线纪律新增第 7 条「竖向分叉点对齐」(2026-10-16 用户拍板 · 强制规范):横向多条连线时,同源出线的多条分支共用同一竖杆 x、同目标入线的多条分支共用同一竖杆 x,各分叉/汇合点必须对齐同一位置,禁止参差;附分组实现法与坐标断言校验。⑤ 第 7 章交付形态更新:客户要求「图+节点表」时按表 3 位次插入「流程节点连接关系表」(图题 14 磅居中 li=36/fi=17.85 → 图片 → 表题注 → 节点表 → 注释段)。⑥ 版本号 v1.3.7→v1.4.0。 |
| v1.3.7 | 手工修改比对与版本快照(2026-10-15,同一图三轮手工改版实测驱动)。① 生成链新增「手工修改比对与版本快照」小节(7 条):先 cp 快照再比对(客户端保存原地覆盖上一版,无快照只能反推基线);禁止文本 diff(保存重写 UUID/属性序),改按 (FigureType,FigureText,roleName) 匹配图元、(StartFigure→EndFigure, LineText) 三元组匹配连线做语义 diff,基线取生成器内存重建(不落盘)。② 双副本挂载副本轮换 ≠ 缺陷:用户可把连线由主责副本切到审批/后置方泳道副本(实测 2.2.5 的 060 由营销部长→事业部经理,四条线重走、孤立副本同步轮换),判据为节点集/连线集/标签不变;与协作框「只接主责副本」冲突时回报确认主责口径,勿自行改回。③ 分组框避让与穿越豁免:出线竖段须移出框缘(1455→1507),进出框内节点的必需穿越段应豁免,入线优先共用竖干线汇合(3 段优于 5 段 Z 形)。④ 批次固有告警判读:孤立副本 / ActivityId 重复 / 节点表行数差 1 三类只核数量与标签、不拦交付,有 FAIL 才拦。⑤ 类型词同步:规格新增类型词(起始/结束)须同步补校验器词汇表,否则生成侧接受、校验侧报假 WARN。⑥ 编号口径先核对:同名 .epros 可能同号不同名(2.2.4 报价流程 vs 2.2.4 关键角色攻关流程),取号以架构卡为准并同步生成器 ABBR 映射。⑦ 新增「比对后自检 4 项」;§4 硬约束新增「★ 人工改版先留快照」。⑧ 同步 frontmatter version 至 1.3.7(原 1.3.2 与 §11 漂移)。 |
| v1.3.6 | 模板基准严格对齐(2026-10-14 用户指定 9.25 目录为唯一基准)。① 新增「模板基准(9.25)」小节:实测锁定 docx 实例 + HT-MK xlsx 模板的章节骨架(12 章+2 子节,序号+顿号编号)与表格口径(10 表列头逐字,表5 活动说明=9 列 活动编号\|活动名称\|活动内容\|角色\|输入\|输出\|相关文件\|相关规则/标准\|相关IT系统,表6~8 每指标独立一表);编制要求(PPT 15 字段)映射入章节不另起结构。② 连接关系表定位修正:模板无此独立表 → 仅内部图文对照/校验用,不入正式文档正文(留存放「附则」附件/交付留痕)。③ 生成链内容纪律更新:活动编号取 ActivityId、双责任活动合并行(角色列「主责;参与」)、KCP/风险控制措施写入「活动内容」列。④ G 系列新增 G-09 章节骨架一致 / G-10 表格列头一致;Phase C-G 门禁加「章节骨架/表格列头与基准不一致→停止并复核」。⑤ 修复审计缺口:原缺 7 章节(定义/目的/适用范围/裁剪指南/支持文件/拟制修订记录/附则)、活动表列头未固化、5 编制字段未覆盖——现全部纳入基准映射。 |
| v1.3.5 | 序号呈现规范(2026-10-14 用户定稿)。① Phase A 新增「序号呈现规范」小节:EPROS 客户端活动框双层结构(顶栏渲染 ActivityId、正文渲染 FigureText),流程序号(源文档活动表三位编号 010/020/…)必须放顶栏(ActivityId:=序号、FigureText:=纯名称);勿把序号写进 FigureText 前缀(避免双序号冲突);协作框双副本顶栏同号;序号取源 V1.1 活动表「编号」列,先核对再改,不得自造编号体系;渲染器顶栏读 ActivityId。② 实战回归:两图 35 个活动框序号由 FigureText 前缀迁入 ActivityId 顶栏,坐标/连线零漂移。 |
| v1.3.4 | 连接点规范 + EPROS 打开兼容性根因库 + 连线修改经验(2026-10-13~14 实测排障与手动修改比对驱动)。① Phase A 新增「EPROS 客户端打开兼容性」根因表(6 项:整数属性小数化 NumberFormatException @ Integer.parseInt / ActivityId 空重复 / &lt;figures&gt; 后置 / FigureType=VerticalLines 误值 / OrderIndex 重复 / DottedRect 样式缺省)+ 排障方法(读 epros_log.txt 堆栈 + 最小探针二分)。② 布线纪律后新增「连接点(锚点)规范」:矩形=四边中点、菱形=四顶点(落斜边即红 ✕)、同方向单锚点(多边共用)、菱形出边顶点分工硬规则(通过=右顶点/不通过=底顶点/不得共用)、精确吸附偏差 <0.01。③ 新增「EPROS 客户端行为特性」(OrderIndex 保存自动重编号→用三元组追踪 / 画布声明不自动扩展→手动核宽高 / 拖动自动吸附)。④ 新增「连线修改经验」(节点平移折点同步 Δ / 退回线贴紧 30~50 间距 / 拐头按走廊重算非平移 / 大幅重排必查画布与泳道带高度为正)与「修改后自检清单 6 步」。⑤ 实战回归:B 图画布声明 1969×671→2552×800 修复 7 处越界 + 底部泳道带 -89 负高度;4 个菱形顶点分工核查全合规。 |
| v1.3.3 | 多角色活动协作框规范 + 布线纪律(2026-10-13,依据《恒泰-EPROS操作标准化-V1.0》协作框页实测)。① 生成链内容纪律新增「多角色活动 · 协作框规范」小节:活动标注多责任人(分号分隔)时不再单框单泳道近似,改为每责任角色泳道各一个同文本副本 + 橙色虚线 DottedRect 协作框(BodyColor 橙 235,97,27)外裹;副本并行、同进同出;分主次(首位=主责)连线只接主责副本,不分主次接框边。② 新增布线纪律六条(重排/改造类任务):左进右出(复杂可左、上进)、同排直连、改前断言原值+改后拓扑守恒、干线走廊 ≥10 单位、绕行走带外走廊禁穿框内、横向交叉数=0 目标(严格内点相交计 1,共线共享干道/端点汇入不计;源图固有交叉留痕,重排时一并消除)。③ 渲染细节「分组盒」条目升级为「分组盒 / 协作框」:协作框橙色虚线,普通红色分组盒照源色。④ 实战回归:两份流程图(A 14 活动/B 15 活动)按规范改造——A 增 1 组协作框(130 营销部长+产品经理)、B 增 4 组(030/070/110/140),连线重排后两图横向交叉均归零(含消除源图既有 1 处 e35×e47 交叉:120→110 退回边改走「客户」空带顶部走廊),11 项几何校验全 PASS。 |
| v1.3.2 | P3 工程化(选型报告阶段路径收尾)。① 新增 benchmark/run_bench.py + 基线 benchmark/baseline_20261013.json:三类基线(B-1 epros 解析耗时 / B-2 边框解析双引擎耗时+等价断言 / B-3 渲染耗时+几何保真),全部合成样本不依赖 COM;实测发现大样本下 regex 比 lxml 快约 40× 且结果等价——默认仍取 lxml 的结构稳健性,性能差异留档基线;--json 可与基线比对(>3× 判漂移)。② references/engineering-conventions.md 新增 §十一 发布流程约定:一处编写三处派生(SKILL.md §11 ↔ pyproject version ↔ 交付说明)、版本号语义、发布前四道门槛(pytest/selfcheck/bench 基线/依赖三维评估)、基线更新是显式动作、观察名单季度复查。③ selfcheck.py 新增第 6 段「文档门槛」(D-Doc):10 个核心脚本模块 docstring 自含性 AST 检查(16→17 项)。④ CI 化结论:selfcheck 退出码分层 + stdout/stderr 分离,可直接被计划任务/CI 消费(每日 --json 跑批+告警),约定落 §十一。 |
| v1.3.1 | P2 通道冗余。① dlp_channel.py COM 级扩展为双后端降级链:pywin32 首选 → comtypes(纯 Python,Enthought 维护)备用,open_word_doc(backend=&quot;auto&quot;) 逐后端尝试,失败/切换事件写入模块级 COM_SWITCH_LOG + stderr(供执行审计);com_available 同步按后端链探测并注明可用后端名。整体通道链现为 mcp → com(pywin32 → comtypes) → python_structured → plain。② 新增 4 个桩测试(auto 首选/降级留痕/双失败抛最后错/显式后端不降级),不触碰真实 COM。③ comtypes 真实 COM 冒烟 PASS:显式 comtypes 后端建档(17.7KB)→ 只读回开 → 内容/表格读取全通;auto 链正确首选 pywin32。④ 依赖登记:comtypes&gt;=1.4,&lt;2 入 office/test 档(评分 7.75:周下载 430,195 / Enthought 商业维护近 12 月 4 版 / pywinauto 生态引用)。⑤ 观察名单(季度复查,下次 2026-12-13):python-redlines、pywinauto、Docxodus。 |
| v1.3.0 | P1 解析升级。① docx_probe.parse_borders_xml 升级为双引擎:lxml 首选(recover=True 容错片段级 XML + resolve_entities=False XXE 加固 + local-name 匹配命名空间无关),正则降级(auto 异常回落 / 可显式 engine=&quot;regex&quot; 对照);属性次序错配类缺陷从结构上免疫。② 等价性实测:5 组合成样本(含事故形态「sz 写在 val 前」)双引擎全等 + 真实 Word XML A/B 冒烟 PASS(COM 现场建档含表级+单元格级覆写,tblBorders/tcBorders/72KB 全文档三组全等)。③ probe 画像 JSON 契约版本化:schema: 2 + parse_engine 字段。④ 新增 8 个回归测试(等价 5 例 + auto 回落 + recover 容错契约 + schema 断言),全量 120 用例 0 失败。⑤ 依赖登记:lxml&gt;=6,&lt;7 入 office/test 档(评分 9.7,BSD-3,周下载 9,100 万)。⑥ Phase E 门禁强化:交付说明缺 fingerprint.json 留痕 → 不交付。 |
| v1.2.6 | P0 护栏与分层(零新依赖)。① pyproject.toml extras 重构为三档:minimal(仅解析校验,无需 Windows/COM)/ office(完整作业运行时)/ test(全量回归),主依赖收敛为 pywin32 + defusedxml——安装面最小化(对标 docling 分层)。② 维护模式依赖加护栏:defusedxml==0.7.1、openpyxl==3.1.5 锁定并注明理由(API 冻结不可替代 / 仓库在 Heptapod 发布慢);matplotlib/pyyaml/pillow 从主依赖移入 office/test 档(缺失时优雅降级语义不变)。③ python-docx 正式定位为参考实现(不入运行时依赖;若未来引入须 &gt;=1.2,&lt;2 上限锁定 + 薄适配层)。④ SKILL.md §7 依赖表按分层重构 + 锁定理由入表。 |
| v1.2.5 | 遗留项落地(N-01~N-05,2026-10-13,承接 v1.2.4 优化方案 §七)。① N-01 verify_docx.py 复用 docx_probe.classify_table_role 统一表格角色口径:collect() 逐表记 role,活动表定位改走 activity_candidates()(先角色(列数)后关键字),消除与 docx_probe 的双份口径、封堵 P18 复发面。② N-02 selfcheck.py 依赖前置断言升级:pytest/matplotlib 缺失时除报告 D-X 外,退出码升为 3(EXIT_ENV_MISSING),不再静默成功(--skip-tests 显式豁免)。③ N-03 新增 references/delivery-note-template.md(交付说明≤5 节模板:概要/变更表/校验结果/待确认项/留痕路径,「依据版本号」「待确认项」为门禁字段,解 P24 膨胀)。④ N-04 结构指纹进入交付留痕:docx_probe 新增 write_fingerprint / load_fingerprint / compare_fingerprint_files 与 CLI --fingerprint OUT、--fp-compare A B(不开 Word 跨轮比对,结构漂移退出码 1;段落数漂移属合法,节数/表数/表形状/页面设置漂移必拦)。⑤ N-05 多形态报告评估落地:verify_common.Report.write_html() + 各校验器统一 --html 参数(自包含单文件、零第三方依赖、无脚本、detail 已转义);评估结论——写侧为 Python 直写(与 --json 同通道,已验证可行),「打开」侧依赖浏览器在 DLP 白名单内,未实测前 HTML 定位为留痕/拷贝查阅;DOCX 形态不采用(需 Word 写通道,DLP 成本高收益低)。⑥ 回归测试 +11 例(活动表统一口径 4、指纹留痕 4、HTML 报告 3)。 |
| v1.2.4 | 原语化重构 + 执行时守卫(2026-10-12 单日实测驱动,当日两起事故的工程化收敛)。① 新增 scripts/docx_probe.py(只读探测原语 + CLI):段落三分类 / 空行连续段 / 分节符载体判定 / 边框 OOXML 权威读取 / 单元格有效值 / TOC 条目与制表位 / 结构指纹 / 表格角色判定。一条命令 python scripts/docx_probe.py &lt;file.docx&gt; [--json out.json] 产出一图流结构画像,取代当日 12 个一次性探测脚本。② 新增 scripts/docx_guard.py(写侧守卫):Guard 结构不变量上下文管理器(节数/表数/表形状/页面设置在编辑前后必须不变,违规抛异常禁止保存)、safe_delete_paragraphs(内置分节符保护)、allowed_blank_plan(按「空行段+其后接标题」的允许保留数出方案)、refresh_toc_then_restore(先刷域→再重建制表位,顺序固定)、set_toc_entry_tabs(按层级取值)、save_dlp(SaveAs2+重试)、cleanup_orphan_word / remove_lock_files。③ 新增 23 个单元测试(tests/test_docx_probe_guard.py),含三起事故的回归用例:分节符载体判定、边框属性次序不得错配、宽表不得被关键字误判。④ 依赖落地:本机所有 Python 环境原先既无 pytest 也无 matplotlib(致 101 用例长期不可验证)→ 已装齐并实测 101 用例 0 失败;pyproject.toml 补 test extra 与实测安装命令。⑤ SKILL.md §4 新增「结构不变量守卫」「删段落必排分节符」两条硬约束与「§4.1 执行时守卫」(四道闸门表)。⑥ references/docx-com-recipes.md 新增 §九 事故档案(症状→根因→处置→守卫,共 21 条,含 A 级事故 3 条 / B 级障碍 9 条 / C 级静默判定 5 条 / D 级返工 3 条)与五条铁律。 |
| v1.2.3 | 分节符保护 + 目录层级制表位 + 目录独占一页(2026-10-12 傍晚,用户反馈「目录需要单独一页/每个小节内部的空行需要删除」驱动)。① ⚠️⚠️ 分节符藏在段落标记里,批量删段落前必须排除——空段落可能承载分节符(纵向→横向 分界),删除后节数减少、横向节被合并(本次真实事故:节数 4→3 已回退重做)。判据:p(i).Range.Information(2) != p(i+1).Range.Information(2) ⟺ p(i) 承载分节符;⚠️ 反例:Range.WordOpenXML 检索 &lt;w:sectPr 无区分度(实测 369/379 段全命中)。加固:删除后断言 Sections.Count 不变,异常则中止不保存。② TOC 条目左制表位随层级不同:TOC 1 = 31.50、TOC 2 = 42.00、TOC 3 = 63.00(右侧统一 481.40 right/dots)——统一设同一值会导致带缩进的层级文字被跨过 → 跳右制表位 → 换行 + 两端对齐撑散(本次用户可见缺陷)。③ 目录独占一页=给「目录」标题加段落级 PageBreakBefore(勿插入分页符段落)。④ 删段落流程的通用加固:先按「空行连续段 + 其后接标题」设定允许保留数 → 排除分节符载体 → 从后往前删 → Sections.Count 守卫 → 刷新域 → 重建制表位。 |
| v1.2.2 | 表格边框与目录制表位的复查修复(2026-10-12 下午,用户反馈「目录页和表格边框存在问题」驱动)。① 边框判定必须用 WordOpenXML,禁用 COM Borders 哨兵——单元格级 tcBorders 覆盖表级时 COM tb.Borders 可能返回 9999999(未定义哨兵),据此判形会误得「无内线」,v1.2.1 前的对齐即因此把 T#04/T#08/T#09 改错并抹掉全部单元格级 tcBorders。② 单元格级 Borders 只支持四边(-1..-4),-5/-6 抛「集合所要求的成员不存在」。③ 共享竖线取有效值:cell(i,j).right 与 cell(i,j+1).left 是同一条物理线,Word 只留一个有效值;复刻应以 COM 有效值为目标而非原始 XML。④ TablesOfContents.Update() 会重生成条目制表位(按样式缩进漂移)→ 应在 Update() 之后重建条目制表位为模板口径(pos=31.50 left/none + pos=481.40 right/dots)。⑤ 复刻目标首选「同批备份原件」而非模板:模板行列数与批内文档常不同,用备份可保证逐格等价;功能等价性以逐表逐格 COM 有效边框比对为准。 |
| v1.2.1 | DLP 保存策略修正(2026-10-12 实测推翻旧结论)。① SaveCopyAs 在本机 DLP 环境全局失效(写目标目录/兄弟路径/%TEMP% 一律报 OLE 0x800a1704)→ 保存策略改为 SaveAs2 临时名 → Close → os.replace 原子换名(落盘仍为加密态 00005b00…)。② Table.Borders 必须用整数索引 (-1..-6),链式 b.Top.LineStyle 抛 AttributeError。③ Border.LineWidth 取 wdLineWidth 枚举(2/4/6/8/12 = 0.25/0.5/0.75/1.0/1.5 磅),非磅值。④ 表格语义角色判定须先判列数(≥8→活动说明表)再判关键字,否则表头含「角色/职责」的宽表会被误判。均已在 references/docx-com-recipes.md §三/§五 落文。 |
| v1.2.0 | 技能体系工程化(对照官方 Skill 规范 + GitHub 热门工程实践)。① 新增 verify_common.py 统一校验框架——消除两套互不兼容的结果 schema({item,ok} vs {item,status})与重复的 _chk;引入稳定校验编号、退出码分层(0/1/2/3/4)、stdout-stderr 分离(结果走 stdout、诊断走 stderr)。② 新增 tests/ 78 个 pytest 用例(合成夹具、不依赖用户数据),覆盖解析不变量、几何工具、结果模型、CLI 契约、DLP 探测、渲染闭环。③ 新增 pyproject.toml 作为依赖唯一事实源 + pytest/ruff/coverage 配置。④ 新增 scripts/selfcheck.py 一键自检(依赖→配置→解析→渲染→测试,16 项),落实官方强调的「跑校验器→修复→重复」环。⑤ frontmatter 补 dependencies/version/license。⑥ 新增 references/engineering-conventions.md(改脚本前必读)。⑦ 细节修复:bootstrap() 取代散落的 sys.path.insert;JSON 基准缺失时给出可操作提示而非堆栈;无 ParallelLines 时显式声明「泳道未正式划分」。 |
| v1.1 | 流程图画图能力增强(重点:连线走线与位置排布准确性)。① 改用 manhattanLines/lineSegments 的源正交折线逐段照搬(此前用直线近似);② 修复 LineText 字段读错导致 167 条判据标签静默丢弃;③ 修复非业务图元被当装饰丢弃(漏画 9 个图元 + 丢 2 条带标签的边),改为「非业务节点≠不绘制」且边不按端点类型过滤;④ 采用源文件自带配色(BGColor 渐变/BodyColor);⑤ 补齐角色标签列、图名标题、责任标记、自由注释;⑥ 字号改为按真实坐标缩放精确约束,消除文字溢出;⑦ 输出改用可解析映射(弃 bbox_inches=&#x27;tight&#x27;)并写 meta.json 侧车;⑧ 新增 verify_flowchart.py 几何保真度校验(14 项)。<br>依赖取舍:明确不引入任何布局/布线库(Graphviz/ELK/pyorthogonalrouting 等)——源已给精确几何,重排反而降精度;完整评估表见 §7.1 |
| v1.0 | 由 epros-flowchart-to-docx + doc-format-align 合并而成。统一为「两条链 + 共享底座」架构;新增 dlp_channel.py 通道层(含误判修复与写后回验闭环)、check_config.py(修正原脚本硬编码路径);verify_docx.py 统一 G/V 双系列;详细知识下沉至 references/ 三份文档 |

常见问题

5 问
答案由本站依据条目字段整理
流程文档与格式流水线怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_e98d10ee/process-doc-pipeline。安装方式为未标注。装完刷新技能列表或重开客户端。

流程文档与格式流水线支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

流程文档与格式流水线权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

流程文档与格式流水线收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

流程文档与格式流水线用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 2026-11-06。