# 预警规则需求卡

## 目录

- [REQ-WARN-001 菜单归属与模块入口](#req-warn-001-菜单归属与模块入口)
- [REQ-WARN-002 列表与分页](#req-warn-002-列表与分页)
- [REQ-WARN-003 条件查询与重置](#req-warn-003-条件查询与重置)
- [REQ-WARN-004 查看预警规则](#req-warn-004-查看预警规则)
- [REQ-WARN-005 编辑规则配置](#req-warn-005-编辑规则配置)
- [REQ-WARN-006 复制生成自定义规则](#req-warn-006-复制生成自定义规则)
- [REQ-WARN-007 启用预警规则](#req-warn-007-启用预警规则)
- [REQ-WARN-008 停用预警规则](#req-warn-008-停用预警规则)
- [REQ-WARN-009 删除自定义规则](#req-warn-009-删除自定义规则)
- [REQ-WARN-010 批量启用](#req-warn-010-批量启用)
- [REQ-WARN-011 批量禁用](#req-warn-011-批量禁用)
- [REQ-WARN-012 规则来源与状态控制](#req-warn-012-规则来源与状态控制)
- [REQ-WARN-013 系统预制规则清单](#req-warn-013-系统预制规则清单)
- [REQ-WARN-014 规则说明自动生成](#req-warn-014-规则说明自动生成)
- [REQ-WARN-015 规则扫描与预警触达](#req-warn-015-规则扫描与预警触达)
- [REQ-WARN-016 权限与日志](#req-warn-016-权限与日志)
- [通用规则](#通用规则)

---

### REQ-WARN-001 菜单归属与模块入口

- 功能点：
  - 预警规则模块放在基础数据菜单下，用于维护系统预制和用户自定义的业务风险预警规则。
  - 用户进入模块后默认展示预警规则列表，支持查看、编辑、复制、启用、停用、删除、批量启用、批量禁用和分页切换等操作。
  - 模块数据范围按组织权限控制，查询条件中的组织支持树形下拉选择。

- 异常与边界：
  - 用户无基础数据菜单访问权限时不展示预警规则入口。
  - 用户仅有查看权限时进入模块后只能查看列表和详情，不展示编辑、复制、启用、停用、删除等操作入口。
  - 组织权限为空或组织数据加载失败时，查询条件保留其他已选条件，并提示用户重新加载组织数据。

- 反例：
  - 不允许将预警规则模块放到非基础数据菜单。
  - 不允许无权限用户通过地址直接访问模块数据。
  - 不允许查询到用户组织权限范围外的预警规则。


---

### REQ-WARN-002 列表与分页

- 功能点：
  - 默认展示当前组织权限范围内的全部预警规则数据。
  - 列表展示字段与编辑表单字段保持一致，包含规则名称、规则类别、风险等级、规则编号、来源、修改参数、更新人、创建时间、更新时间、状态、操作等信息。
  - 状态列和操作列固定在列表右侧，不随横向滚动隐藏。
  - 操作列根据规则来源和当前状态展示查看、编辑、复制、启用、停用、删除等可执行操作。
  - 默认按创建时间降序展示。
  - 支持分页展示，默认10条/页，支持切换每页条数。
  - 支持勾选多行数据，用于批量启用和批量禁用。

- 异常与边界：
  - 查询无数据时展示空状态。
  - 当前页数据删除后为空时自动调整页码并刷新列表。
  - 列表加载失败时保留当前查询条件、分页条件和勾选状态，并提示用户重新查询。
  - 横向字段较多时，状态列和操作列必须仍固定在右侧并完整展示按钮。

- 反例：
  - 不允许默认按规则名称、风险等级或更新时间覆盖创建时间降序规则。
  - 不允许状态列或操作列随横向滚动被遮挡。
  - 不允许列表展示 createUser、updateUser 等用户ID字段。


---

### REQ-WARN-003 条件查询与重置

- 功能点：
  - 支持按规则名称、风险类型、风险等级、状态、组织进行条件查询。
  - 规则名称使用输入框，支持按名称关键字查询。
  - 风险类型、风险等级、状态使用下拉单选控件。
  - 组织使用树形下拉选择控件，按用户组织权限范围展示可选组织。
  - 点击查询按钮后按规则名称、风险类型、风险等级、状态、组织组合条件筛选列表。
  - 点击重置按钮清空所有查询条件，并恢复默认列表。

- 异常与边界：
  - 查询条件为空时点击查询，按默认规则展示全部数据。
  - 查询结果为空时展示空状态，不清空用户已输入或已选择的查询条件。
  - 重置后页码恢复到第一页，并按创建时间降序重新加载数据。
  - 组织节点取消选择后，应从查询条件中移除对应组织限制。

- 反例：
  - 不允许点击重置后仍保留隐藏组织、状态或风险类型条件。
  - 不允许只按单个条件查询而忽略其他已选择条件。
  - 不允许查询后改变列表字段、固定列或操作按钮范围。


---

### REQ-WARN-004 查看预警规则

- 功能点：
  - 支持通过行操作查看预警规则详情。
  - 查看字段包含规则名称、规则类别、风险等级、规则编号、来源、修改参数、规则说明、状态、更新人、创建时间、更新时间等信息。
  - 查看状态下字段全部只读，不允许保存修改。
  - 查看弹窗回显规则全部信息，并展示系统根据参数表达式和阈值生成的规则说明。

- 异常与边界：
  - 数据已被删除或不存在时提示数据不存在，并刷新列表。
  - 规则详情加载失败时提示失败原因，不改变列表数据。
  - 修改参数为空或无固定参数的规则，查看时应展示明确的无参数说明，避免误认为数据缺失。

- 反例：
  - 不允许在查看状态下编辑或保存规则。
  - 不允许将更新人展示为用户ID。
  - 不允许查看详情时自动切换为编辑状态。


---

### REQ-WARN-005 编辑规则配置

- 功能点：
  - 支持通过行操作打开规则配置弹窗编辑预警规则。
  - 编辑字段包含规则名称、规则类别、风险等级、修改参数等信息。
  - 规则名称最多30个汉字或字符，用户自定义规则必填且全局不可重复；系统预设规则名称不可编辑。
  - 规则类别为规则所属风险类型，只读展示，由规则模板固定，不可编辑。
  - 风险等级使用下拉单选控件，选项为低、中、高，必填。
  - 修改参数为规则触发阈值配置，参数表达式由规则模板固定，仅阈值数值允许修改；存在可调参数时必填，无固定参数时只读展示无参数说明。
  - 规则编号由系统自动生成，只读展示，格式为YS-类型-序号。
  - 来源由系统记录为系统预设或用户自定义，只读展示或用于控制编辑范围。
  - 弹窗底部操作按钮为关闭、保存、保存并启用。
  - 点击保存后保存规则配置并刷新列表；点击保存并启用时保存配置并将规则状态更新为启用。

- 异常与边界：
  - 用户自定义规则名称为空时阻止提交并提示“请输入规则名称”。
  - 用户自定义规则名称超过30个汉字或字符时阻止提交并提示。
  - 用户自定义规则名称与已有规则重复时阻止提交并提示“规则名称已存在”。
  - 风险等级为空时阻止提交并提示“请选择风险等级”。
  - 存在可调参数且修改参数为空或不是合法数值时阻止提交并提示“请输入正确的阈值”。
  - 阈值小于0或不符合对应表达式单位要求时阻止提交并提示。
  - 系统预设规则编辑时，仅允许调整风险等级和阈值数值。
  - 保存失败时保留用户已填写内容，方便修正后重新提交。

- 反例：
  - 不允许编辑系统预设规则的规则名称、规则类别、参数表达式或所需字段。
  - 不允许用户自定义规则保存为重复规则名称。
  - 不允许通过编辑操作手动修改规则编号、来源、创建时间或更新时间。


---

### REQ-WARN-006 复制生成自定义规则

- 功能点：
  - 支持通过行操作复制一条现有预警规则。
  - 复制时以当前规则为模板生成一条用户自定义规则。
  - 复制后的规则继承原规则的风险类型、风险等级、参数表达式、阈值和所需字段。
  - 复制后的规则状态默认为草稿。
  - 复制后的规则名称在原名称后增加“副本”后缀，用户可继续编辑规则名称、风险等级和阈值。
  - 复制成功后列表新增一条草稿记录，用户可编辑后启用。

- 异常与边界：
  - 原规则已不存在时提示数据不存在，并刷新列表。
  - 复制生成的规则名称与已有规则重复时，系统应追加序号或提示用户修改，确保全局唯一。
  - 复制失败时不新增草稿记录，并提示失败原因。
  - 复制后的草稿规则未确认启用前不参与预警扫描。

- 反例：
  - 不允许复制后直接生成启用状态规则。
  - 不允许复制后修改风险类型、参数表达式或所需字段。
  - 不允许复制失败时列表出现半成品数据。


---

### REQ-WARN-007 启用预警规则

- 功能点：
  - 支持对草稿或停用状态的预警规则执行启用操作。
  - 启用前校验规则名称、风险等级、阈值等必要配置完整。
  - 启用成功后规则状态更新为启用，并立即参与后续业务数据预警扫描。
  - 系统预设停用规则和用户自定义草稿、停用规则均可在满足条件后启用。

- 异常与边界：
  - 规则参数缺失、阈值非法或风险等级为空时阻止启用，并提示具体原因。
  - 规则已是启用状态时不重复启用，并提示当前状态无需操作。
  - 数据已不存在时提示数据不存在，并刷新列表。
  - 启用失败时规则保持原状态。

- 反例：
  - 不允许启用参数不完整的规则。
  - 不允许启用后仍显示为草稿或停用。
  - 不允许草稿规则未经保存确认就参与预警扫描。


---

### REQ-WARN-008 停用预警规则

- 功能点：
  - 支持对启用状态的预警规则执行停用操作。
  - 停用成功后规则状态更新为停用，不再产生新的预警。
  - 已产生的历史预警记录保留，不因规则停用而删除。
  - 系统预设启用规则和用户自定义启用规则均可停用。

- 异常与边界：
  - 规则已是停用状态时不重复停用，并提示当前状态无需操作。
  - 规则为草稿状态时不执行停用操作，应引导用户删除或继续编辑。
  - 数据已不存在时提示数据不存在，并刷新列表。
  - 停用失败时规则保持启用状态。

- 反例：
  - 不允许停用规则后继续产生新的预警。
  - 不允许停用操作删除历史预警记录。
  - 不允许将草稿状态错误展示为可停用。


---

### REQ-WARN-009 删除自定义规则

- 功能点：
  - 支持删除用户自定义且允许删除的预警规则。
  - 用户自定义草稿规则可删除。
  - 用户自定义停用规则未被引用时可删除。
  - 点击删除时弹出二次确认弹窗，确认后执行删除。
  - 删除成功后刷新列表，并提示“删除成功”。

- 异常与边界：
  - 系统预设规则不允许删除。
  - 用户自定义启用规则不允许删除，应先停用后再根据引用情况判断。
  - 用户自定义停用规则已被历史预警、通知配置或其他业务引用时不允许删除，并提示具体原因。
  - 数据已不存在时提示数据不存在，并刷新列表。
  - 用户取消二次确认时不执行删除。

- 反例：
  - 不允许删除系统预设规则。
  - 不允许删除启用中的用户自定义规则。
  - 不允许跳过二次确认直接删除规则。


---

### REQ-WARN-010 批量启用

- 功能点：
  - 支持勾选多行草稿或停用状态规则后批量启用。
  - 批量启用前逐条校验所选规则是否均为可启用状态，并校验规则参数完整性。
  - 校验通过的规则批量更新为启用状态。
  - 操作成功后刷新列表，失败项给出具体原因提示。

- 异常与边界：
  - 未勾选数据时点击批量启用，应提示先选择需要启用的数据。
  - 所选数据包含启用状态规则时，该记录不可重复启用，并提示当前状态不支持批量启用。
  - 所选数据存在参数缺失或阈值非法时，对应记录启用失败并提示具体原因。
  - 部分启用失败时应提示成功数量、失败数量和失败原因。

- 反例：
  - 不允许批量启用已启用规则。
  - 不允许因部分规则不可启用而阻止其他合法规则启用，除非系统采用全量事务并明确提示。
  - 不允许批量启用后不刷新列表状态。


---

### REQ-WARN-011 批量禁用

- 功能点：
  - 支持勾选多行启用状态规则后批量禁用。
  - 批量禁用前逐条校验所选规则是否均为可停用状态。
  - 校验通过的规则批量更新为停用状态。
  - 操作成功后刷新列表，失败项给出具体原因提示。

- 异常与边界：
  - 未勾选数据时点击批量禁用，应提示先选择需要禁用的数据。
  - 所选数据包含草稿或停用状态规则时，该记录不可禁用，并提示当前状态不支持批量禁用。
  - 部分禁用失败时应提示成功数量、失败数量和失败原因。
  - 禁用失败的规则保持原状态。

- 反例：
  - 不允许批量禁用草稿规则。
  - 不允许批量禁用已停用规则。
  - 不允许禁用后删除或清空历史预警记录。


---

### REQ-WARN-012 规则来源与状态控制

- 功能点：
  - 规则来源分为系统预设和用户自定义。
  - 系统预设启用状态允许编辑、复制、停用，不允许删除。
  - 系统预设停用状态允许编辑、复制、启用，不允许删除。
  - 用户自定义草稿状态允许编辑、复制、启用、删除。
  - 用户自定义启用状态允许编辑、复制、停用，已启用不可删除。
  - 用户自定义停用状态允许编辑、复制、启用，未引用时允许删除。
  - 系统根据规则来源和状态控制可编辑字段、可执行操作和删除限制。

- 异常与边界：
  - 状态与来源组合不符合规则时，应隐藏不可执行操作入口。
  - 后端校验发现状态已变更时，当前操作失败并提示用户刷新后重试。
  - 用户自定义停用规则删除前必须校验引用关系。
  - 系统预设规则无论启用或停用均不可删除。

- 反例：
  - 不允许系统预设规则出现删除按钮。
  - 不允许用户自定义启用规则直接删除。
  - 不允许前端只隐藏按钮而后端不做状态和来源校验。


---

### REQ-WARN-013 系统预制规则清单

- 功能点：
  - 系统预制规则作为规则模板初始化到预警规则模块。
  - 系统预制规则的名称、风险类型、参数表达式、所需字段均不可修改，仅允许调整风险等级和阈值数值。
  - 系统预制规则包含项目风险、合同风险、运输风险、结算风险、证件风险、车务风险等类型。
  - 项目风险预制“项目额度超限预警”，默认风险等级为高，触发逻辑为项目状态为进行中且已使用额度/项目总额度乘以100%大于等于N，参数为N%，默认90%，所需字段包含项目ID、项目名称、项目状态、项目总额度、已使用额度、剩余额度。
  - 合同风险预制“合同即将到期”，默认风险等级为高，触发逻辑为合同状态为生效中且合同结束日期减当前日期小于等于N，参数为N天，默认30天，所需字段包含合同ID、合同编号、合同名称、合同状态、合同结束日期、合同负责人。
  - 合同风险预制“合同已过期”，默认风险等级为高，触发逻辑为合同状态为生效中且合同结束日期小于当前日期，无固定参数，所需字段包含合同ID、合同编号、合同名称、合同状态、合同结束日期、合同负责人。
  - 运输风险预制“超时未接单”，默认风险等级为中，触发逻辑为运单状态为待接单且当前时间减派单时间大于等于N，参数为N分钟，默认30分钟，所需字段包含运单ID、运单编号、运单状态、派单时间、接单时间、承运商ID。
  - 运输风险预制“在途未打卡”，默认风险等级为中，触发逻辑为运单关联的过程配置中在途节点需要打卡，且运单在途打卡记录为空，且已发货未到货，无固定参数，所需字段包含运单ID、运单编号、过程配置ID、运单状态、发货时间、到货时间、在途打卡记录。
  - 运输风险预制“超时未到货”，默认风险等级为高，触发逻辑为已到货时实际到货时间大于预计到货时间，未到货时当前时间大于预计到货时间加N，参数为N小时，默认2小时，所需字段包含运单ID、运单编号、运单状态、预计到货时间、实际到货时间、到货节点状态。
  - 结算风险预制“应收超期未收款”，默认风险等级为高，触发逻辑为当前日期大于应收日期加N，且收款状态为未收款，参数为N天，默认7天，所需字段包含结算单ID、结算单号、客户ID、客户名称、应收金额、应收日期、收款状态。
  - 结算风险预制“应付超期未付款”，默认风险等级为高，触发逻辑为当前日期大于应付日期加N，且付款状态为未付款，参数为N天，默认7天，所需字段包含结算单ID、结算单号、供应商ID、供应商名称、应付金额、应付日期、付款状态。
  - 结算风险预制“票据即将到期”，默认风险等级为中，触发逻辑为票据状态不等于已承兑且票据到期日减当前日期小于等于N，参数为N天，默认30天，所需字段包含票据ID、票据编号、票据类型、票据金额、票据到期日、票据状态、出票人。
  - 证件风险预制“驾驶证到期提醒”，默认风险等级为中，触发逻辑为司机状态为在职且驾驶证到期日减当前日期小于等于N，参数为N天，默认30天，所需字段包含司机ID、司机名称、司机状态、驾驶证号、驾驶证到期日、联系电话。
  - 证件风险预制“道路运输证到期提醒”，默认风险等级为中，触发逻辑为车辆状态为可用或营运中，且道路运输证到期日减当前日期小于等于N，参数为N天，默认30天，所需字段包含车辆ID、车牌号、车辆状态、道路运输证编号、道路运输证到期日。
  - 证件风险预制“行驶证到期提醒”，默认风险等级为中，触发逻辑为车辆状态为可用或营运中，且行驶证到期日减当前日期小于等于N，参数为N天，默认30天，所需字段包含车辆ID、车牌号、车辆状态、行驶证编号、行驶证到期日。
  - 车务风险预制“保险到期提醒”，默认风险等级为中，触发逻辑为保险状态不等于已续保且保单失效日减当前日期小于等于N，参数为N天，默认30天，所需字段包含车辆ID、车牌号、保单编号、保险类型、保单失效日、保险状态。
  - 车务风险预制“年检到期提醒”，默认风险等级为中，触发逻辑为年检状态不等于已年检且年检到期日减当前日期小于等于N，参数为N天，默认30天，所需字段包含车辆ID、车牌号、年检到期日、年检状态。

- 异常与边界：
  - 系统初始化时预制规则缺失或重复时，应阻止发布或修正初始化数据。
  - 系统预制规则无固定参数时，配置弹窗不应强制填写阈值。
  - 系统预制规则的所需字段与触发逻辑不一致时，应以规则模板修正为准，不允许前端临时拼接错误展示。
  - 预制规则后续扩展时，新增规则也必须遵守名称、风险类型、参数表达式、所需字段不可修改的模板规则。

- 反例：
  - 不允许用户修改系统预制规则的触发逻辑。
  - 不允许删除任一系统预制规则。
  - 不允许预制规则的列表说明与实际参数表达式不一致。


---

### REQ-WARN-014 规则说明自动生成

- 功能点：
  - 规则说明由系统根据参数表达式和阈值自动生成。
  - 列表、查看弹窗和编辑弹窗展示的规则说明应与当前规则实际配置保持一致。
  - 修改阈值后，规则说明应同步更新，确保用户保存前即可理解当前触发条件。
  - 无固定参数的规则说明应直接基于固定触发逻辑生成，不展示可调阈值占位。

- 异常与边界：
  - 参数表达式解析失败时不允许启用规则，并提示规则配置异常。
  - 阈值为空或非法时，规则说明应提示参数待完善，不生成误导性说明。
  - 修改参数后保存失败时，列表规则说明保持原配置，不展示未保存内容。

- 反例：
  - 不允许用户手工编辑规则说明。
  - 不允许规则说明仍展示旧阈值。
  - 不允许无固定参数规则展示“N天”“N小时”等未替换占位内容。


---

### REQ-WARN-015 规则扫描与预警触达

- 功能点：
  - 规则启用后，系统按预警规则扫描对应业务数据。
  - 运输类规则产生运输风险记录，用于后续风险跟踪和处理。
  - 非运输类规则通过通知配置确定接收人，并推送至相关责任人。
  - 停用或草稿状态规则不参与新一轮预警扫描。

- 异常与边界：
  - 规则扫描时业务数据缺少所需字段，应记录扫描异常或跳过该条业务数据，并保留可追溯原因。
  - 通知配置缺失时，非运输类规则应产生配置异常提示，避免静默丢失预警。
  - 规则停用后仅停止新增预警，不影响已产生的风险记录和通知记录。
  - 启用规则后若当前业务数据已满足触发条件，应按系统扫描策略产生对应预警。

- 反例：
  - 不允许草稿规则产生预警。
  - 不允许非运输类规则未配置通知责任人时静默丢弃风险信息。
  - 不允许规则停用后删除历史风险记录。


---

### REQ-WARN-016 权限与日志

- 功能点：
  - 根据用户权限控制查看、编辑、复制、启用、停用、删除、批量启用、批量禁用等操作入口。
  - 记录编辑、复制、启用、停用、删除、批量启用、批量禁用等关键操作日志。
  - 更新人、创建时间、更新时间由系统自动记录。
  - 列表、详情等用户可见场景优先展示更新人姓名，不直接展示用户ID。

- 异常与边界：
  - 无权限访问或操作时提示权限不足。
  - 操作失败时不记录为成功日志。
  - 批量操作日志应记录成功数量、失败数量和失败原因。
  - 系统自动生成或初始化预制规则时，应能追溯来源和初始化时间。

- 反例：
  - 不允许无权限用户执行编辑、复制、启用、停用、删除或批量操作。
  - 不允许用户手动维护更新人、创建时间、更新时间。
  - 不允许删除或篡改操作日志。


---

## 通用规则

- 预警规则模块归属基础数据菜单。
- 规则来源分为系统预设和用户自定义；规则状态分为草稿、启用、停用。
- 系统预设规则为规则模板，名称、风险类型、参数表达式、所需字段均不可修改，仅允许调整风险等级和阈值数值。
- 用户自定义规则通过复制系统预设规则或复制现有规则生成，生成后默认处于草稿状态，可修改规则名称、风险等级、阈值，确认后启用。
- 规则名称最多30个汉字或字符；用户自定义规则名称必填且全局不可重复。
- 风险等级为固定枚举值低、中、高，新增草稿、编辑保存、启用和批量启用时均需校验必填。
- 修改参数仅允许维护阈值数值，不允许修改参数表达式、计算逻辑和所需字段；无固定参数规则不强制填写阈值。
- 规则编号由系统自动生成，格式为YS-类型-序号，任何用户操作均不得手动修改。
- 规则说明由系统根据参数表达式和阈值自动生成，列表展示内容必须与规则实际配置一致。
- 列表展示字段与编辑表单字段保持一致，并增加更新人、创建时间、更新时间；状态列和操作列固定右侧不可滑动。
- 列表默认按创建时间降序展示，分页默认10条/页。
- 查询条件包含规则名称、风险类型、风险等级、状态、组织；重置后清空全部条件并回到第一页。
- 系统预设规则无论启用或停用均不可删除。
- 用户自定义草稿规则可删除；用户自定义启用规则不可删除；用户自定义停用规则未引用时可删除。
- 启用规则必须先校验规则名称、风险等级、阈值等必要配置完整；草稿和停用规则启用后参与预警扫描。
- 停用规则不再产生新的预警，但已产生的历史预警、风险记录和通知记录必须保留。
- 运输类规则启用后产生运输风险记录；非运输类规则通过通知配置并推送至相关责任人。
- 新增、编辑、复制、启用、停用、删除、批量启用、批量禁用成功后均需刷新列表。
- 列表、详情等用户可见场景应展示用户姓名，避免直接展示用户ID。
