# 字段类型与关系符矩阵

## 编码通表

以下编码来自本次 `getRuleDesignCondition` 真实响应。执行时仍应以当次响应为准。

| 编码 | 通用语义 | 适用说明 |
|---:|---|---|
| `"1"` | 大于 | 数值、金额、日期及时间类左/右比较 |
| `"2"` | 大于等于 | 数值、金额、日期及时间类左/右比较 |
| `"3"` | 小于 | 数值、金额、日期及时间类左/右比较 |
| `"4"` | 小于等于 | 数值、金额、日期及时间类左/右比较 |
| `"5"` | 等于 | 文本、数值、日期、浏览字段 |
| `"6"` | 不等于 | 文本、数值、日期、浏览字段 |
| `"7"` | 属于 | 每周日期模式 |
| `"8"` | 不属于 | 每周日期模式 |
| `"9"` | 包含或属于 | 由字段类型决定显示文案；文本/人员/部门显示“包含”，发起人/下拉显示“属于” |
| `"10"` | 不包含或不属于 | 由字段类型决定显示文案 |
| `"13"` | 为空 | 只允许左关系符 |
| `"14"` | 不为空 | 只允许左关系符 |
| `"15"` | 包含（子部门） | 部门字段 |
| `"16"` | 不包含（子部门） | 部门字段 |
| `"23"` | 是 | 布尔字段 |
| `"24"` | 否 | 布尔字段 |

> **本域没有「前缀匹配」编码**：不存在"以…开头 / 开头包含 / 结尾包含"，文本比较里 `"9"`（包含）是**全串包含**，不限定位置。别把台账**搜索条件**那套接口的 `startWith`/`endWith` 套到出口条件上。需要前缀语义时的替代做法见 `workflow/guide-workflow-condition.md`「平台边界：不支持前缀匹配」。可用关系符以 `getRuleDesignCondition` 当次响应为准。

## 字段类型矩阵

| 字段来源/类型 | 参数族 | 支持的左关系符 | 支持的右关系符 | 值与附加参数 |
|---|---|---|---|---|
| 系统：流程标题 | `String*` | 等于、不等于、包含、不包含、为空、不为空 | 不适用 | `selectType="3"`、`systemVariable="-1"` |
| 系统：发起人 | `Browser*` | 属于、不属于、为空、不为空、等于、不等于 | 不适用 | `systemVariable="-2"`；先选人员维度 `typeHrm` |
| 系统：发起时间 | `Date*` | 大于、大于等于、小于、小于等于、等于、不等于、为空、不为空 | 大于、大于等于、小于、小于等于、等于、不等于 | `systemVariable="-3"` |
| 系统：发起人分部/部门/岗位/职级 | `Browser*` | 按具体浏览字段返回的包含、属于、等于和空值集合 | 不适用 | 系统字段 ID 分别由动态响应取得 |
| 系统：当前操作人及直接上级 | `Browser*` | 属于、不属于、为空、不为空、等于、不等于 | 不适用 | 先选择人员维度 |
| 系统：节点通过时间、流程超时 | `Number*` | 数值八种左关系符 | 数值六种右关系符 | 小时数 |
| 系统：密级、紧急程度 | `Browser*` | 包含、不包含、为空、不为空、等于、不等于 | 不适用 | 选项来自浏览接口 |
| 主表/明细文本 | `String*` | 等于、不等于、包含、不包含、为空、不为空 | 不适用 | 输入文本；明细另传 `detailOption` |
| 整数、浮点、金额 | `Number*` | 大于、大于等于、小于、小于等于、等于、不等于、为空、不为空 | 大于、大于等于、小于、小于等于、等于、不等于 | 可以组成左右边界 |
| 下拉框 | `Browser*` | 属于、不属于、为空、不为空、等于、不等于 | 不适用 | `containType="1"` 任一值，`"2"` 所有值；值对象为选项 ID 和文案 |
| 人员浏览 | `Browser*` | 包含、不包含、为空、不为空、等于、不等于 | 不适用 | 可先选择具体人员、人员数量、直接上级、所有上级、分部、部门、角色、岗位、职级、群组等维度 |
| 部门浏览 | `Browser*` | 包含、不包含、包含（子部门）、不包含（子部门）、为空、不为空、等于、不等于 | 不适用 | 值必须来自部门浏览接口 |
| 日期 | `Date*` | 大于、大于等于、小于、小于等于、等于、不等于、为空、不为空 | 大于、大于等于、小于、小于等于、等于、不等于 | 日期模式支持日期、每周、每月、每年；普通日期为 `typeHrm="16"` |
| 布尔 | `Bool*` | 是、否 | 不适用 | 不再输入比较值 |
| 明细任一行 | 取决于字段类型 | 与对应字段类型相同 | 与对应字段类型相同 | `detailOption="1"` |
| 明细所有行 | 取决于字段类型 | 与对应字段类型相同 | 与对应字段类型相同 | `detailOption="2"` |
| 明细合计 | `Number*` | 数值八种左关系符 | 数值六种右关系符 | 使用字段浏览响应中 `total=true` 的对象，不传 `detailOption` |

## 系统字段清单

| systemVariable | 字段 | 类型 |
|---:|---|---|
| `"-1"` | 流程标题 | String |
| `"-2"` | 发起人 | Browser |
| `"-3"` | 发起时间 | Date |
| `"-5"` | 发起人分部 | Browser |
| `"-4"` | 发起人部门 | Browser |
| `"-6"` | 发起人岗位 | Browser |
| `"-7"` | 发起人职级 | Browser |
| `"-8"` | 当前操作人 | Browser |
| `"-13"` | 发起人直接上级 | Browser |
| `"-14"` | 当前操作人直接上级 | Browser |
| `"-10"` | 节点通过时间（时） | Number |
| `"-9"` | 流程超时（时） | Number |
| `"-30"` | 密级 | SysBrowser |
| `"-12"` | 紧急程度 | SysBrowser |

## 值来源与空值

- 文本值：`StringValueOptionLeft="1"`，值放 `StringTextValueLeft1`。
- 数值值：`NumberValueOptionLeft/Right="1"`，值放对应 `NumberTextValue*`。
- 日期值：`DateValueOptionLeft/Right="1"`，值放对应 `DateTextValue*`。
- 浏览值：`BrowserValueOptionLeft="1"`，值放 `BrowserTextValueLeft1` 数组。
- 为空和不为空不应再传业务值。
- 关系符 `"9"` 和 `"10"` 的中文语义依赖字段类型；必须先根据当前字段读取专用 `browserCompareOptions`。
