Files
Agent-System-Documents/docs/records/2026-10-15-unified-document-renderer/03-render-profile-spec.md
T

4.1 KiB
Raw Blame History

03 RenderProfile 渲染规则规范

1. 安全模型

RenderProfile 是声明式数据,不是程序。禁止:

  • Shell、Python、JavaScript、VBA 或宏。
  • 任意 OOXML、HTML 或 XML 注入。
  • 外部 URL 下载及运行时网络请求。
  • 绝对路径、父目录跳转和未登记资产。
  • 动态反射、表达式求值和任意函数调用。

复杂能力必须先作为渲染器中经过测试的安全原语发布,规则只能按名称引用。

2. 顶层结构

schemaVersion: render-profile/v1
profileId: company.dhf.project-proposal
version: 1.0.0
format: docx
state: published
appliesTo:
  documentTypes: [rd_proposal]
  stages: [RD]
baseTemplate:
  assetId: dhf.2750fbaf1f67d10c
  assetVersion: 1.0.0
  sha256: <64-hex>
assets:
  logo: company.logo.primary@1
selection:
  controlled: true
  allowDefaultFallback: false
page: {}
styles: {}
numbering: {}
headers: []
footers: []
mappings: []
review: {}
validation: {}

实际发布对象必须存规范化 JSON 和 SHA256;YAML 仅作为人工编辑输入。

3. 规则选择

每个文档实例保存:

{
  "profileId": "company.dhf.project-proposal",
  "profileVersion": "1.0.0",
  "selectionSource": "document-explicit",
  "snapshotHash": "..."
}

优先级:document-explicit > document-type > project-default > organization-default。controlled=true 时 allowDefaultFallback 必须为 false。

4. 页面与样式

page 支持固定安全字段:纸张、方向、页边距、装订线、分节、首页不同、奇偶页不同。

styles 以语义样式为键:

  • documentTitle
  • heading1 至 heading6
  • body
  • caption
  • quote
  • warning
  • tableHeader
  • tableBody
  • signature

每个样式只允许字体族、字号、粗斜体、颜色令牌、对齐、缩进、行距、段间距、分页约束及 Word style name。

5. 映射规则

mappings:
  - selector:
      nodeKind: section
      semantic: purpose
    target:
      kind: content-control
      part: word/document.xml
      anchor: purpose
    render:
      primitive: paragraphs
      empty: block

选择器只能基于规范字段:节点 ID、节点类型、语义、标签、文档路径。目标只能引用已在模板包清单登记的书签、内容控件、表格行、页眉页脚字段或图片槽位。

6. 表格与重复块

表格原语支持:列宽、表头重复、对齐、边框、底色、单元格跨度、行禁止跨页、重复行模板及空值策略。合并单元格由规则明确声明,不从 Markdown 空单元格猜测。

render:
  primitive: repeat-table-row
  rowAnchor: risk-row
  columns:
    risk: risk.statement
    cause: risk.cause
    control: risk.control

7. 页眉页脚和公司资产

页眉页脚规则区分:

  • fixed:机密声明、公司名称、静态标签。
  • field:PAGE、NUMPAGES、日期等 Word 字段。
  • slot:文件号、版本、项目名称等实例数据。
  • asset:Logo、认证标志和受控图片。

Logo 必须引用资产注册表中的版本化对象,不允许规则携带 data URL 或任意文件。

8. 审阅配置

review:
  trackChanges: supported
  comments: supported
  commentReplies: supported
  approvedOutput: accept-all
  reviewOutput: preserve
  signatureBindings:
    author: document.author
    reviewer: submission.reviewers
    approver: submission.approver
    decidedAt: submission.decidedAt

真实身份字段来自 ReviewSnapshot。规则只能决定显示位置和格式,不能提供值。

9. 校验规则

发布前校验:schema、能力、资产哈希、模板锚点唯一性、样式引用、循环上限、映射覆盖和安全字段。

生成前校验:文档类型、必填元数据、节点映射、审签状态和可见范围。

生成后校验:ZIP/OPC、XML、安全对象、样式、页眉页脚、书签、批注关系、修订关系、字段、回读结构和输出哈希。

10. 生命周期

draft → validated → published → retired。只有系统管理员可发布公司规则;项目创建者可选择已发布规则或管理项目默认绑定。发布对象不可修改,退役不删除旧资产和旧交付物。