4.1 KiB
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 以语义样式为键:
documentTitleheading1至heading6bodycaptionquotewarningtableHeadertableBodysignature
每个样式只允许字体族、字号、粗斜体、颜色令牌、对齐、缩进、行距、段间距、分页约束及 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。只有系统管理员可发布公司规则;项目创建者可选择已发布规则或管理项目默认绑定。发布对象不可修改,退役不删除旧资产和旧交付物。