> ## 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.

# 审计日志

> 记录公司内谁创建、更改或删除了关键业务记录，按单条记录或全公司范围查看历史，并下载超过 30 天的归档。

审计日志是按公司保存的历史记录，记载 Alforse 主要业务记录的创建、更新和删除，以及每次更改的操作人和涉及的字段。管理员开启后，任何有权查看设置的人都可以直接回答“这是谁、什么时候改的？”，无需到处询问。

## 审计日志的工作原理

日志记录**默认关闭**，并按公司分别保存。开启后，Alforse 会记录之后对受审计实体的每次更改。开启之前或关闭期间所做的更改不会被记录。

条目按人们操作的业务实体分组，而不是按发生变化的数据库行。例如，编辑物料的成本会产生一条**物料**条目，而不是底层 `itemCost` 行的条目。

### 条目包含的内容

| 部分 | 内容 |
| - | - |
| 操作 | `INSERT`、`UPDATE` 或 `DELETE`，在应用中显示为已创建、已更新或已删除 |
| 操作人 | 做出更改的用户；由系统或服务角色做出的更改显示为 *System* |
| 更改 | 逐字段的新旧值差异 |
| 元数据 | 请求的 IP 地址、用户代理和来源 |
| 时间戳 | 更改发生的时间 |

差异中不包含 `updatedAt`、`updatedBy` 和内部嵌入向量等维护性字段，因此条目只显示人们关心的更改。

## 受审计的实体

只有下表中的实体会被审计。无论日志是否开启，对其他对象的更改都不会被记录。

| 销售与客户 | 采购与供应商 | 生产与库存 | 财务与管理 |
| - | - | - | - |
| 客户 | 供应商 | 物料 | 会计期间 |
| 报价 | 供应商报价 | 物料保质期 | 日记账分录 |
| 销售订单 | 采购订单 | 工单 | 付款 |
| 销售发票 | 采购发票 | 工作中心 | 备忘 |
| 发运单 | 收货单 | 库存盘点 | 报销 |
| 定价规则 | | 拣货单 | 固定资产 |
| 价格覆盖 | | 仓库调拨 | 折旧运行 |
| 价格覆盖区间 | | 库存调拨 | 收入确认运行 |
| 租赁协议 | | 维护计划 | 员工 |
| | | 维护派工 | 邀请 |
| | | 不合格品 | ITAR 认证 |
| | | 变更通知 | |
| | | 量具 | |

## 开启和关闭日志记录

**设置 → 审计日志**下的**审计日志**卡片只有一个开关。

### 打开设置页面

前往**设置 → 审计日志**。

### 打开开关

在**审计日志**卡片上打开开关。Alforse 会创建公司的日志存储，设置 `auditLogEnabled`，并让受审计的表订阅其变更管道。

### 确认状态

卡片显示 *"Audit logging is enabled — All changes to auditable entities are being recorded."*（审计日志已启用：正在记录对可审计实体的所有更改。）关闭时显示 *"Audit logging is disabled — Enable to start tracking changes to your data."*（审计日志已禁用：启用后开始跟踪数据更改。）

关闭开关会停止产生新条目，但保留现有历史。重新开启后从那一刻起继续记录；关闭期间的空档保持为空。

## 查看更改

同一份数据可在两个范围内查看。

### 单条记录的历史

在大多数详情页（如客户、销售订单、工单或发运单）上，**历史记录**操作会打开一个抽屉，显示该记录的时间线。每次更改显示操作、操作人、时间，以及可展开的已更改字段列表。

如果日志记录已关闭，抽屉会显示 *"Audit logging is not enabled"*（未启用审计日志）。能够更新设置的用户可使用快捷方式启用；其他人会被告知联系管理员。

### 全公司日志

在**设置 → 审计日志**中，选择**查看全部**可打开全屏的**所有审计日志**表格。它支持搜索和分页，列为**实体**、**操作**、**更改者**、**更改**和**何时**。

| 筛选器 | 将表格缩小到 |
| - | - |
| **实体** | 一种实体类型，如销售订单或物料 |
| **操作** | 已创建、已更新或已删除 |
| **更改者** | 一位用户（操作人） |

操作以彩色徽章显示：已创建为绿色，已更新为蓝色，已删除为红色。展开一行可查看其字段级差异，选择**实体**值可打开它所指向的记录。

## 保留期与归档

实时日志保留 **30 天**的条目。每晚有一个任务会把更早的条目移入压缩归档，记录归档的日期范围、行数和大小，并从实时表中删除这些条目。

归档列在设置页面的**已归档日志**下。**下载**会为压缩导出文件创建一个短期有效的签名链接，因此每次都请重新获取链接，不要保存旧链接。在第一个归档生成之前，该卡片会说明超过 30 天的日志将归档到此处。

## 权限与套餐

| 操作 | 要求 |
| - | - |
| 开启或关闭日志记录 | **更新设置**权限 |
| 查看日志和记录历史 | **查看设置**权限 |
| 使用该功能 | Business 套餐 |

关于设置模块如何对应员工类型，参见[权限与访问](https://docs.alforse.com/zh/docs/reference/permissions.md)。

## 故障排除

### "Upgrade to Business to enable audit logging"（升级到 Business 以启用审计日志）

**原因：** 公司未使用 Business 套餐，因此**设置 → 审计日志**中的开关被锁定。
**处理：** 升级套餐，然后开启日志记录。

### "Upgrade to unlock audit history"（升级以解锁审计历史）

**原因：** 同样的套餐限制，显示在记录的**历史记录**抽屉中。
**处理：** 升级到 Business 套餐；该限制同时涵盖设置开关和抽屉。

### "Audit logging is not enabled"（未启用审计日志）

**原因：** 已打开**历史记录**抽屉，但公司关闭了日志记录。
**处理：** 拥有更新设置权限的用户在**设置 → 审计日志**中将其开启。如果你没有该权限，请联系管理员。

### "Failed to enable audit logging" 或 "Failed to disable audit logging"（启用或禁用审计日志失败）

**原因：** 创建或移除公司日志存储及变更订阅时发生服务器错误。
**处理：** 重试。如果持续失败，可能是日志表或其订阅状态不一致；再切换一次开关即可重新同步。

### "Failed to generate download URL"（生成下载链接失败）

**原因：** Alforse 无法创建签名链接，可能是归档的已存储文件缺失，或签名请求失败。
**处理：** 重试。链接很快失效，旧链接将无法使用。

### 某条记录没有历史

请检查三点。更改发生时日志记录必须已开启，因为 Alforse 不会回填。该记录的实体必须出现在[受审计的实体](#audited-entities)中。只涉及维护性字段（`updatedAt`、`updatedBy`、嵌入向量）的更改不会显示字段级差异。

### 表格中缺少较早的更改

实时日志只保留最近 30 天。较早的更改请到**已归档日志**下可下载的导出文件中查找。

## 相关内容

**公司设置**

公司记录及其功能开关，包括审计日志。

[Open](https://docs.alforse.com/zh/docs/reference/company-settings.md)

**权限与访问**

设置权限如何决定谁可以查看和管理日志。

[Open](https://docs.alforse.com/zh/docs/reference/permissions.md)


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