# 表面采样

> 表面涂抹采样：测的是什么、是否通过，以及不通过时的那份行动计划。

Source: https://developers.backresto.com/zh/docs/surface-analyses

一次表面分析就是一次涂抹采样。有人在一个工作面上做一次检测（一块切菜板、一台
切片机、冷库里的一层货架），然后把返回的结果记下来。每次采样一条记录：测的是什么、
是否令人满意，以及不满意时决定了什么。

| 集合 | 权限范围 | 一条记录是什么 |
| --- | --- | --- |
| `surface-analyses` | `surface-analyses:read` | 一次采样、它的判定，以及它背后的那份行动计划。 |

它共用那个[快照信封](https://developers.backresto.com/zh/docs/collections)：`id`、`deleted`、`capturedAt`、
`receivedAt`、`sequence` 以及其余字段，都围在下面的 `data` 周围。

## `surface-analyses`

| 字段 | 类型 | 含义 |
| --- | --- | --- |
| `timestamp` | string, **必填** | 这次采样是什么时候取的，以字符串表示的 Unix 毫秒时间戳。 |
| `name` | string, **必填** | 测的是什么。自由文本，由那个人自己打进去。 |
| `isSatisfactory` | boolean, **必填** | 当时记下的那个判定。 |
| `actionPlan` | string \| null | 为此决定了什么。自由文本。 |
| `userId` | string \| null | 记录它的那名[员工](https://developers.backresto.com/zh/docs/facilities)，在应用留下了一个的时候。 |

```json
{
  "id": "6f1d92c4-0b7a-4d31-9f18-3a6c2e5b7d40",
  "collection": "surface-analyses",
  "deleted": false,
  "capturedAt": "1789815240512",
  "receivedAt": "1789815312004",
  "sequence": "412",
  "data": {
    "timestamp": "1789812000000",
    "name": "Planche de découpe viande",
    "isSatisfactory": false,
    "actionPlan": "Désinfection renforcée, nouveau prélèvement lundi",
    "userId": "b3f7c1a0-5d42-4e88-9a16-7c0e2d4b9f31"
  }
}
```

## 怎么读它们

**`isSatisfactory` 是一个已经做出的判定，不是一个由你算出来的判定。** 它是实验室
报回来的东西，或者是操作者当场得出的结论，照原样记下。记录里没有阈值、没有计数、
也没有单位可以让你把它重算一遍，而你也不该去找一个：请把它呈现为他们的判定、用
他们的说法，并且让分歧留给他们自己去解决。

**`name` 是文本，不是引用。** 它不指向任何[区域或设备](https://developers.backresto.com/zh/docs/facilities)。这里没
有可供连接的 id。相隔一个月、在同一个表面上取的两次采样，可能被写成两种不同的写
法，所以只有在你愿意做归一化的时候才拿它分组，并且绝不要把一个归一化之后的名字，
呈现成当时记下的那个。

**`actionPlan` 是自由文本，而且与那个判定彼此独立。** 什么都没打进去时它是 null，
而这和什么都没做不是一回事；在一次不满意的采样上，它也可能是缺席的。不要拿其中一
个字段去推断另一个，也不要拿一个人们会在里面写整句话的字段建枚举。

而那条适用于每一个集合的提醒，在这里同样适用：你拿到的是这个 API 收到的东西，不是
这家餐厅完整的历史。在你去数采样次数之前，先看[信封那一页](https://developers.backresto.com/zh/docs/collections)；在
你把这个计数报给任何人之前，先看[关于完整性的说明](https://developers.backresto.com/zh/docs/support)。
