跳到正文

输出 ​

输出在 outputs.json 的 outputs 数组中声明。每项包含稳定 ID、类型和文件名规则。支持的类型为 docx、pdf_bundle、xlsx 和 attachment_zip。

Word 输出引用包内 DOCX 模板。材料 PDF 选择材料角色、页面顺序、编号和图片布局。Excel 输出声明列、顺序、标题、基础格式和合计。附件包配置材料角色、分组目录、文件命名及清单。

一个方案可声明多份 Word 文档。每份文档的 id、label、模板和文件名由作者定义,例如“采购申请”“费用结算”或“活动说明”。核心没有固定的两份 Word,也不要求使用 reimbursement 或 acceptance ID。“报账说明”和“验收单”是 BITFSAE 包的文档名称。

默认输出与本次选择 ​

print.default_outputs 按设置优先级合成:包的 fixed、本地覆盖或包的 default 可明确给出输出 ID 列表。没有这些设置值时,使用 scheme.default_outputs;该键也缺省时,采用输出项的 default_selected: true。任一层显式 [] 都表示全不选,不能按空值回退。注册表参考中的核心默认 [] 不取消这里的声明继承规则。

本次显式传入 output_ids: [] 表示本次不选输出;不传选择才采用上述默认。按本地方案及修订传入 output_ids_by_binding 时,每组仅使用自己的列表,空列表或缺少该组均不选。打印窗口按当前本地方案的默认值初始化勾选,并按条目的固定修订传入显式选择;临时勾选不覆盖已配置的默认值。当前默认中的输出若不属于条目的修订,就不出现在该组中。通用输出仍沿用上次选择。最终没有任何输出时,预检报告 NO_OUTPUT_SELECTED,不会自动补回 Word 或通用输出。

预检与交付 ​

输出文件名只接受注册的上下文变量。路径会限制在目标目录内。金额按发票或实付计算;缺失金额保留为缺失,并产生诊断。收款信息按一个完整对象选择,不会逐字段拼接来源。

核心四类输出的预检均使用唯一 context.schema.json 检查完整上下文。打印 IPC 在渲染前再次执行同一校验,新旧协议、源码和外部进程一致。错误只报告 JSON Pointer 和约束,不回显账号或备注。

预检按本地方案、修订、主体和输出需要的收款人或批次分组。输出有必需缺项时整体停止,用户取消有问题的输出后重新预览。所有文件写入独立暂存目录,成功后才发布;取消、超时或写出失败不会留下交付目录。

界面修改选择或关闭对话框时使旧预览失效。预检响应返回后先核对当前表单版本,过期结果被丢弃,其输出计划也会取消,不能用它启用生成按钮。

生成时按实际工作报告阶段:

阶段 ID工作
verifying_resources核对原始材料与模板摘要
rendering_core核心生成 Excel 和附件 ZIP
rendering_print打印组件生成 Word 和材料 PDF
verifying_outputs检查所有计划产物及摘要
publishing原子保存整套交付文件

get_export_progress(job_id) 只返回内存中的阶段、状态及完成数,不读取数据库;它与 cancel_export(plan_id) 都不等待长导出持有的 API 锁。前端每 400 ms 查询一次。资源、核心文件及产物检查阶段可提供计数,Word/PDF 生成和保存阶段不保证细分百分比。核心写出器完成当前有界步骤后响应取消,组件进程沿用超时与取消机制。

通用总览、附件包和材料 PDF 共用配置输出的写出器。保留输出 ID 分别为 generic_overview、generic_attachments 和 generic_materials。总览和附件包可以跨方案选择;通用材料 PDF 按真实抬头拆分,包含内置及自定义角色,不依赖来源团队模板。缺发票 PDF 或不可转换材料时先阻止相关输出。

历史重新生成使用当次快照及资源摘要,资源已删除或变化时阻止重新生成,保留原结果供查看。

初始记录文件保存失败时,任务返回 EXPORT_RECORD_FAILED 并标为 failed,清理半写记录文件,使原预览失效。数据库快照和原始材料保留,修复写入条件后可调用重新生成;这次失败不发布交付目录。

本次输出选择和字段值按本地方案及修订隔离。未进批次条目所需的批次字段可作为本次临时值填写,只进入任务快照,不写入永久批次。模板只获得当前组的字段及选项,不获得其他本地副本的映射。

批次投影只提供 ID、名称、文本备注和当前组字段。空备注转为空字符串,内部 output_settings、updated_at 不进入上下文;编排器先解析批次设置,再提供本次输出的有效选项。

文件名变量的权威目录为 context_fields.json 中的 filename_fields,由轻量 filename_field_catalog() 读取。可用变量包括方案名称、抬头、批次名称、导出日期/输出 ID,以及相应作用域内的条目 ID、票号、报账人和材料角色;模板完整字段目录不意味着这些字段都能用于文件名。旧 IPC 的固定字段映射仅供 v1 兼容。

render 根据 fixture 在临时数据库中创建条目,经同一预检生成真实文件。Excel 使用核心输出器;Word 和材料 PDF 使用打印组件。fixture 可声明相对附件路径,也可用 attachments[].generate 生成虚构材料。桌面端和 CLI 都核验附件、收款对象和方案修订。