> ## Documentation Index
> Fetch the complete documentation index at: https://docs.alforse.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 风险登记册

> 针对物料、客户、供应商、工单、报价行和工作中心记录风险与机会，按严重度和可能性评级，并跟踪至关闭或接受。

风险登记册用于在问题发生之前，记录*可能*出错的事情，或值得把握的机会。公司里任何人都可以提出条目；质量人员负责评估、评级，并推动其得到解决。

## 概述

条目通常挂在 Alforse 的另一条记录之下，也可以作为一般风险独立存在。除**类型**外，它还包含**严重度**和**可能性**（各自以 1–5 评级）、负责人，以及最终停在 `"Closed"` 或 `"Accepted"` 的状态。

您可以在两个地方查看条目：

* **质量 → 风险**显示全公司的风险登记册。
* 物料、客户、供应商、工单、报价行和维护工单的页面各自显示一张风险卡片，列出该记录自己的条目，并可添加新条目。

## 提出风险

1. 打开**质量 → 风险**并添加条目，或打开风险所涉记录上的风险卡片。
2. 输入**标题**，选择**类型**，并对**严重度**和**可能性**评级。
3. 可选：指派负责人、添加一行说明并撰写备注。
4. 保存。

从某条记录的页面添加时，条目会自动获得该记录的**来源**。从**质量 → 风险**添加且不关联记录时，来源为 `General`。

## 字段

每个条目是一条 `riskRegister` 记录，由 `apps/erp/app/modules/quality/quality.models.ts` 中的 `riskRegisterValidator` 验证。

FieldType

<details>
  <summary>**title**required</summary>

  风险的简短名称。这是唯一始终必填的文本字段。
</details>

<details>
  <summary>**type**required</summary>

  `Risk`（不利因素）或 `Opportunity`（有利因素）。默认为 `Risk`。
</details>

<details>
  <summary>**severity**required`1–5`</summary>

  影响的严重程度。
</details>

<details>
  <summary>**likelihood**required`1–5`</summary>

  发生的可能性，采用相同的量表但单独评级。
</details>

<details>
  <summary>**status**required</summary>

  条目在生命周期中所处的位置。默认为 `"Open"`。
</details>

<details>
  <summary>**source**required</summary>

  风险所属记录的种类：`Customer`、`General`、`Item`、`Job`、`Quote Line`、`Supplier` 或 `Work Center`。根据您添加时所在的页面自动填写。
</details>

<details>
  <summary>**assignee**</summary>

  负责人。若留空，默认为创建该条目的人。更改负责人会发送通知。
</details>

<details>
  <summary>**description**</summary>

  一行摘要，显示在列表和记录的卡片上。
</details>

<details>
  <summary>**notes**</summary>

  富文本详细内容，以 JSON 存储。
</details>

## 严重度和可能性

两项评级都采用 1–5 的量表，由 `RiskRating.tsx` 绘制为一排彩色条，每个分值一格：

| 评级 | 条的颜色 |
| - | - |
| 1–2 | 翠绿色 |
| 3 | 黄色 |
| 4 | 橙色 |
| 5 | 红色 |

在记录的卡片上，严重度条位于警告图标之后，可能性条位于骰子图标之后，因此两者一目了然。

NOTE

**不存在综合风险评分。**

严重度和可能性是两个独立的整数，各自限制在 1 到 5。Alforse 从不将它们相乘得出单一分数，也不会把它们放进风险矩阵的某个单元格；界面特意将两者并排显示。不要期望登记册替您计算优先级。

为什么要把它们分开？一个几乎不会发生但后果灾难性的失效，与一个每周发生但代价很小的烦扰，相乘后会得到同样居中的数字。分开显示时，各自保有其真实的形态，权衡则交由您来判断。

## 状态

状态来自 `quality.models.ts` 中的 `riskStatus` 枚举。它们可以自由设置：Alforse 不强制任何顺序，任何状态都可以变为任何其他状态。

<details>
  <summary>**Open**</summary>

  已提出但尚未查看。新条目的默认状态。
</details>

<details>
  <summary>**In Review**</summary>

  评估中：有人正在决定是否以及如何应对。
</details>

<details>
  <summary>**Mitigating**</summary>

  正在采取处理措施，以降低严重度或可能性。
</details>

<details open>
  <summary>**Closed**</summary>

  已解决。风险已被缓解或不再适用。
</details>

<details>
  <summary>**Accepted**</summary>

  有意识地决定承受该风险而不去处理。这是与 `"Closed"` 不同的结果。
</details>

### 跟踪处理

没有单独的缓解措施记录。请让条目依次经过 `"In Review"` 和 `"Mitigating"` 来跟踪处理，将详细内容写在**备注**中，处理了则以 `"Closed"` 结束，选择容忍则以 `"Accepted"` 结束。

## 风险卡片出现在何处

所有这些页面都复用同一张共享卡片，向其传入固定的 `source` 以及记录的 ID。因此每张卡片只显示其自己记录的条目，在那里添加的任何内容也都归入正确的来源。

| 记录 | 组件 | 来源 |
| - | - | - |
| 物料：零件、原材料、工具、耗材、服务 | `ItemRiskRegister.tsx` | `Item`；同时填写 `itemId` 外键 |
| 客户（风险标签页） | `CustomerRiskRegister.tsx` | `Customer` |
| 供应商（风险标签页） | `SupplierRiskRegister.tsx` | `Supplier` |
| 工单 | `JobRiskRegister.tsx` | `Job`；同时填写物料 |
| 报价行 | `QuoteLineRiskRegister.tsx` | `Quote Line` |
| 维护工单 | 维护工单页面上的共享卡片 | `Work Center`，以维护工单的工作中心为键 |

工作中心是例外：它们自己的页面没有卡片。来源为 `Work Center` 的条目显示在维护工单和全公司列表中，其中 `riskRegisters` 视图提供工作中心的名称。

TIP

**列表视图与实体卡片读取不同的来源。**

全公司列表（`getRisks`）读取 `riskRegisters` 视图，该视图会为每一行添加工作中心名称。记录卡片和单条目编辑页面读取基础的 `riskRegister` 表，并按 `source` 和记录 ID 过滤。数据相同；只是读取路径不同。

## 权限与通知

| 操作 | 要求 |
| - | - |
| 创建风险 | 是公司的**员工**。新建风险的路由检查的是 `role: "employee"`，而不是 `quality` 创建权限，因此车间里的任何人都可以提出风险。 |
| 编辑风险 | `quality` **update** |
| 删除风险 | `quality` **delete** |

数据库强制执行同样的划分。

成为负责人的人会收到 `RiskAssignment` 通知，由后台 `notify` 任务发送。只有当负责人与之前不同时，编辑才会触发它，因此再次保存条目不会打扰当前的负责人。

## 风险与问题和 CAPA

风险登记册是单独的表，在代码中与不合格品或其纠正和预防措施**没有**关联。提出风险不会创建问题，关闭问题也不会影响任何风险。

| | 风险登记册 | [问题](https://docs.alforse.com/zh/docs/reference/quality.md) |
| - | - | - |
| 着眼点 | 向前看：可能发生的事情，或一个机会 | 向后看：已经发生的缺陷 |
| 目的 | 事先权衡并处理 | 遏制它，并通过工作流任务推动其关闭 |

请将登记册用于主动评估，将问题用于被动遏制。

## 故障排除

| 消息或现象 | 原因 | 解决办法 |
| - | - | - |
| "Title is required"、"Severity is required" 或 "Likelihood is required"（标题、严重度或可能性为必填） | 表单缺少必填值。 | 输入标题、严重度和可能性。 |
| 严重度或可能性被拒绝 | 该值不是 1 到 5 的整数；数据库强制执行该范围。 | 选择 1 到 5 之间的值。 |
| "Failed to create risk"、"Failed to update risk" 或 "Failed to delete risk"（创建、更新或删除风险失败） | 写入失败，通常是由于权限。 | 检查上面的权限表。 |
| 状态更改未生效 | 状态没有工作流规则，因此原因是保存失败或缺少权限。 | 检查您是否具有 `quality` 更新权限。 |
| 您可以创建风险，但不能编辑或删除 | 您拥有员工访问权限，但没有 `quality` 更新或删除权限。 | 向管理员申请这些权限。 |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.