feat: 完成 DOCX 通用结构映射与严格收口
This commit is contained in:
@@ -2,6 +2,10 @@
|
||||
|
||||
审计日期:2026-07-30
|
||||
|
||||
> 本文第 3~8 节记录阶段 10 的首轮审计基线。阶段 12C 已于
|
||||
> 2026-07-31 完成对应结构修复和自动化门禁,最新状态见第 9 节;真实
|
||||
> Word/WPS 视觉、编辑和互存结论仍需阶段 12D 复验。
|
||||
|
||||
## 1. 审计目标
|
||||
|
||||
本轮按 v0.6.0 已冻结的两条 DOCX 发布门禁检查全部内置主题:
|
||||
@@ -258,3 +262,86 @@ Word 实际导出的 PDF 中可见字体符合当前样式意图:
|
||||
|
||||
在完成 P0 项目前,不建议将阶段 10 标记为通过,也不建议创建 v0.6.0
|
||||
正式发布提交或版本标签。
|
||||
|
||||
## 9. 阶段 12C 自动修复复验
|
||||
|
||||
阶段 12C 保留 Pandoc 作为可编辑 OOXML 底座,并增加项目自有的通用转换
|
||||
层:统一语义文档模型生成结构计划,Lua Filter 注入可编辑段落与样式,
|
||||
最终 OOXML 收口层写入真实分节、页码重启、表格宽度和分页属性。映射只
|
||||
依赖语义角色与主题令牌,不包含主题 ID 分支,因此同一机制也可服务未来
|
||||
外部主题。
|
||||
|
||||
2026-07-31 使用 Playwright Chromium 151 重新采集 14 套主题各 56 个
|
||||
计算样式槽位,并由 Pandoc 3.9.0.2 重新生成全部 DOCX,自动结构结果如下:
|
||||
|
||||
| 检查项 | 阶段 12C 结果 | 结论 |
|
||||
| --- | ---: | --- |
|
||||
| 主题使用本轮真实 Chromium 令牌 | 14/14 | 通过 |
|
||||
| 结构化主题字段完整映射 | 8/8 | 通过 |
|
||||
| 项目报告与标书独立封面真实分节 | 4/4 | 通过 |
|
||||
| 封面隐藏页眉页脚、正文页码从 1 重启 | 4/4 | 通过 |
|
||||
| 封面文档使用 `SECTIONPAGES` | 4/4 | 通过 |
|
||||
| 含表格主题的表格铺满内容区 | 11/11 | 通过 |
|
||||
| YAML 标题与正文首个 H1 去重 | 14/14 | 通过 |
|
||||
| 内部结构标记清理 | 14/14 | 通过 |
|
||||
| 禁止 `altChunk`、保留原生可编辑结构 | 14/14 | 通过 |
|
||||
|
||||
统一复现命令仍为:
|
||||
|
||||
```powershell
|
||||
npm run verify:docx-themes
|
||||
```
|
||||
|
||||
该命令不会回退到合成令牌或陈旧快照。它先生成本轮 Chromium 令牌,再
|
||||
执行 14 主题 Pandoc 矩阵和硬断言。阶段 10 的 P0/P1 结构阻塞因此已由
|
||||
自动门禁关闭;“完整主题样式映射”的最终判定仍保留到阶段 12D,必须在
|
||||
Microsoft Word 与 WPS 中完成视觉检查、编辑、保存、重开和双向互存后
|
||||
才能通过。
|
||||
|
||||
## 10. 阶段 12C-R1 OOXML 严格性复验
|
||||
|
||||
2026-07-31 对阶段 12C 生成的 14 份 DOCX 做 Microsoft Word 原生打开
|
||||
时,最初仅 7 份可直接打开,另外 7 份触发“发现无法读取的内容”且无法
|
||||
恢复。WPS 可以容错打开,但会报告缺失字体,因此不能据此判定 OOXML
|
||||
合格。
|
||||
|
||||
深度审计确认根因集中在生成样式与 OOXML 模式约束:
|
||||
|
||||
- Pandoc 消费 `custom-style` 后会追加同名降级样式,造成重复
|
||||
`w:styleId`;
|
||||
- CSS `text-align: justify` 被直接写成非法的 `w:jc="justify"`,正确
|
||||
WordprocessingML 枚举应为 `both`;
|
||||
- 表格条件样式中的 `w:rPr` 与 `w:tcPr` 顺序不符合模式;
|
||||
- `w:tblW` 被写入表格样式层,和正文表格的直接宽度属性混在一起;
|
||||
- 多类段落、文本、表格、单元格和分节属性缺少统一的有序写入门禁。
|
||||
|
||||
通用引擎已经增加有序插入、序列化规范化和严格校验,并在最终 DOCX
|
||||
收口层保留前置主题样式、移除 Pandoc 同名降级样式。修复不按主题 ID
|
||||
分支,也不改变正文表格的内容区全宽属性。
|
||||
|
||||
复验结果:
|
||||
|
||||
| 检查项 | 结果 | 结论 |
|
||||
| --- | ---: | --- |
|
||||
| 14 主题结构矩阵 | 14/14 | 通过 |
|
||||
| Microsoft Open XML SDK 非兼容性错误 | 0 | 通过 |
|
||||
| Microsoft Word 禁止修复打开 | 14/14 | 通过 |
|
||||
| WPS 原生只读打开 | 14/14 | 通过 |
|
||||
| Word 原生 PDF 导出 | 14/14,共 31 页 | 通过 |
|
||||
| 31 页逐页结构检查 | 31/31 | 通过 |
|
||||
|
||||
Open XML SDK 2.20 仍会按 Office 2007 模式报告 Pandoc 表格上的 Office
|
||||
2010 `tblLook` 六个兼容属性;这些属性在本轮 Word/WPS 实测中正常,不计
|
||||
为生成错误。
|
||||
|
||||
逐页检查没有发现内容丢失、裁切、重叠或空白正文,但保留以下阶段 12D
|
||||
视觉问题:
|
||||
|
||||
- 深色表头文字对比度不足;
|
||||
- 部分短文档尾页留白过大;
|
||||
- `gov-red-standard` 在 Word 与 WPS 中分别为 2 页和 3 页,说明字体与
|
||||
客户端排版差异尚未收口;
|
||||
- 当前主题矩阵的 Mermaid 仍使用黑色占位 PNG,不代表真实媒体效果。
|
||||
|
||||
因此 R1 只关闭 OOXML 合法性和 Word/WPS 无修复打开门禁。字体可移植性、
|
||||
PDF 与 DOCX 自动视觉差异、真实媒体和双向编辑互存继续由 R2~R4 验收。
|
||||
|
||||
Reference in New Issue
Block a user