4. 数据模型设计:采购合同表单字段定义(金额、品类、部门等)
采购合同审批路由的灵活性,从根本上取决于表单数据模型的精细程度。如果表单字段只定义了“合同名称”和“金额”,那么审批分支只能基于金额做简单判断;而一旦引入品类、部门、采购类型、预算来源等维度,路由引擎就能组合出数十种动态条件分支。本章将定义一套标准化的采购合同表单字段模型,覆盖金额、品类、部门、合同类型、付款方式等核心维度,并给出字段类型、校验规则及数据来源说明。
4.1 字段总览与分类
采购合同表单字段按业务用途分为五类:基础信息、金额与预算、品类与部门、审批控制、附件与备注。下表列出每类核心字段及其数据类型:
| 分类 | 字段名称 | 数据类型 | 长度/精度 | 必填 | 说明 |
|---|---|---|---|---|---|
| 基础信息 | 合同编号 | 字符串 | 32 | 是 | 系统自动生成,格式:PO-YYYYMMDD-XXXX |
| 合同名称 | 字符串 | 200 | 是 | 简明描述采购事项 | |
| 供应商名称 | 字符串 | 100 | 是 | 从供应商库选择或手动录入 | |
| 金额与预算 | 合同总金额(含税) | 小数 | 18,2 | 是 | 单位:元,精确到分 |
| 预算科目编码 | 字符串 | 20 | 是 | 关联财务预算系统 | |
| 预算余额 | 小数 | 18,2 | 否 | 系统实时回显,仅用于参考 | |
| 品类与部门 | 采购品类 | 枚举 | — | 是 | IT设备/办公用品/生产原料/服务外包/基建工程 |
| 申请部门 | 字符串 | 50 | 是 | 从组织架构树选择 | |
| 成本中心 | 字符串 | 20 | 是 | 财务核算维度,与部门关联 | |
| 审批控制 | 加急标志 | 布尔 | — | 否 | 默认false,勾选后跳过部分常规审批节点 |
| 审批路由版本 | 整数 | — | 否 | 用于路由规则版本追溯,系统自动赋值 | |
| 附件与备注 | 合同附件 | 文件列表 | — | 是 | 支持PDF/Word/Excel,单文件≤20MB |
| 审批备注 | 文本 | 500 | 否 | 审批人填写意见 |
设计要点:“采购品类”和“申请部门”是动态条件分支中最常用的两个维度。建议将品类枚举值控制在5~8个,避免分支条件过多导致路由规则难以维护。部门字段应直接读取组织架构主数据,禁止手动输入,以保证数据一致性。
4.2 金额分段与审批层级映射
合同总金额是触发多级审批的核心条件。实际业务中,不同金额区间对应不同的审批链长度和审批人职级。下表定义标准金额分段及对应的审批层级:
| 金额区间(元) | 审批层级数 | 审批角色 | 典型场景 |
|---|---|---|---|
| 0 ~ 50,000 | 1 级 | 部门经理 | 日常低值易耗品采购 |
| 50,001 ~ 200,000 | 2 级 | 部门经理 → 分管总监 | IT设备、办公家具 |
| 200,001 ~ 1,000,000 | 3 级 | 部门经理 → 分管总监 → 财务总监 | 生产原料批量采购 |
| 1,000,001 以上 | 4 级 | 部门经理 → 分管总监 → 财务总监 → 总经理 | 基建工程、战略采购 |
边界值处理:金额分段通常采用“左闭右开”原则,例如50,000元归属第一区间,50,001元归属第二区间。在低代码平台中,条件表达式应写为
amount > 0 AND amount <= 50000,避免因浮点精度导致边界判断错误。
4.3 品类与部门组合条件分支设计
仅靠金额分段无法覆盖复杂业务场景。例如“IT设备”类采购,即使金额低于5万元,也可能需要IT总监会签;而“办公用品”类采购,金额超过20万元才需要财务总监审批。因此,路由规则必须支持品类 × 部门 × 金额的组合条件。
下面用一张SVG图展示品类与部门组合条件分支的逻辑结构:
组合条件表达式示例(低代码平台伪代码):
// 路由规则:品类 + 部门 + 金额组合
IF 采购品类 == "IT设备" AND 合同总金额 >= 10000 THEN
路由节点 = [部门经理, IT总监, 分管总监]
ELSE IF 采购品类 == "办公用品" AND 合同总金额 >= 50000 THEN
路由节点 = [部门经理, 行政总监, 分管总监]
ELSE IF 申请部门 == "财务部" THEN
路由节点 = [部门经理, 财务总监]
ELSE
路由节点 = 按金额分段标准路由
END IF
4.4 字段校验规则与数据来源
为确保路由引擎能正确解析条件,表单字段必须附带严格的校验规则。下表列出关键字段的校验逻辑及数据来源:
| 字段 | 校验规则 | 数据来源 | 错误提示示例 |
|---|---|---|---|
| 合同总金额 | 大于0,且不超过预算余额 | 用户输入 + 预算系统接口 | “合同金额超出预算余额,请调整或申请追加预算” |
| 采购品类 | 必须为枚举值列表中的一项 | 系统配置表 | “请选择有效的采购品类” |
| 申请部门 | 必须为组织架构中的末级部门 | HR组织架构主数据 | “所选部门非末级节点,请选择具体科室” |
| 预算科目编码 | 符合编码规则(字母+数字,共8位) | 财务科目表 | “预算科目编码格式错误,示例:BGT2024001” |
| 合同附件 | 至少上传1个文件,总大小≤100MB | 文件上传组件 | “请上传合同附件,支持PDF/Word/Excel格式” |
4.5 数据模型与路由引擎的关联设计
表单字段定义完成后,需要与低代码平台的路由引擎建立映射关系。下图展示数据模型如何驱动动态条件分支:
架构说明:表单字段值作为路由引擎的输入参数,引擎根据预置的条件规则(金额区间、品类枚举、部门匹配)计算出审批节点链。上例中,125,000元的IT设备采购由研发部发起,路由引擎匹配到“金额>10万 + 品类=IT设备 + 部门=研发部”的组合规则,最终输出4级审批链,其中IT总监作为技术会签节点插入。
4.6 字段扩展性设计
实际企业环境中,采购合同表单往往需要根据业务变化增加字段。建议在数据模型中预留扩展属性机制:
- 自定义字段表:设计一张
form_extension表,包含form_id、field_key、field_value三个字段,支持动态添加键值对。 - 路由规则引用扩展字段:在条件表达式中允许使用
extension.xxx语法引用自定义字段,例如extension.is_international == true触发涉外合同审批链。 - 字段版本管理:每次修改表单字段定义时,自动生成一个新的字段版本号,并与审批路由版本绑定,确保历史单据使用当时的字段规则进行审批。
避坑提示:不要将业务维度直接硬编码为表单字段的选项列表。例如“是否需要法务审核”不应作为布尔字段放在表单上,而应通过品类+金额组合条件自动推导。硬编码会导致每次业务规则调整都需要修改表单配置,违背低代码平台的“配置优先”原则。