# 系统助手

## 1. 功能概述

系统助手模块提供系统操作日志和接口日志的查询功能，帮助管理员追踪系统操作记录和设备对接流程的交互日志。

**核心功能：**

- 操作日志查询：记录用户的系统操作行为，支持按用户、IP、时间等条件查询
- 接口日志查询：记录与设备对接的接口交互日志，支持按IP、接口名称等条件查询

## 2. 术语说明

#### 2.1.1 日志相关术语

| 术语 | 定义 | 说明 |
|------|------|------|
| 操作日志 | 用户在系统中的操作记录 | 包括登录、增删改查等操作 |
| 接口日志 | 系统与外部设备/系统的交互记录 | 包括设备对接、数据传输等 |
| 托盘号(tray) | 设备托盘的唯一标识 | 用于设备对接追踪 |
| 批次号(batch) | 生产批次的唯一标识 | 用于生产流程追踪 |
| 接口状态码 | 接口调用的返回状态 | 0表示成功，4001/4002表示失败 |

## 3. 操作日志

### 3.1 操作日志查询

**查询条件：**

| 查询条件 | 说明 |
|---------|------|
| 用户 | 按用户ID筛选操作记录 |
| IP地址 | 按操作IP地址筛选 |
| 路由名称 | 按访问的路由名称筛选 |
| 托盘号 | 按托盘号筛选相关操作 |
| 批次号 | 按批次号筛选相关操作 |
| 时间范围 | 按操作时间范围筛选，默认最近一周 |

**操作步骤：**

1. 进入【系统设置】→【系统助手】→【操作日志】
2. 在顶部查询区域设置查询条件
3. 点击【查询】按钮获取操作日志列表

### 3.2 操作日志字段说明

| 字段 | 说明 |
|------|------|
| ID | 日志唯一标识 |
| 用户名 | 执行操作的用户 |
| 请求路径 | 访问的URL路径 |
| 控制器方法 | 执行的控制器和方法 |
| IP地址 | 操作来源IP |
| 状态 | 操作状态 |
| 请求参数 | 传入的参数 |
| 执行结果 | 返回的结果 |
| 操作类型 | 操作的类型 |
| 操作名称 | 操作的中文名称 |
| 托盘号 | 关联的托盘号 |
| 批次号 | 关联的批次号 |
| 操作时间 | 操作发生时间 |

### 3.3 日志记录内容

系统会自动记录以下类型的操作：

- 用户登录/登出
- 数据新增、编辑、删除
- 状态变更
- 权限配置
- 系统设置修改

## 4. 接口日志

### 4.1 接口日志查询

**查询条件：**

| 查询条件 | 说明 |
|---------|------|
| 设备单元 | 按设备单元名称筛选 |
| IP地址 | 按客户端IP地址筛选 |
| 工序代码 | 按工序代码筛选 |
| 托盘号 | 按托盘号筛选 |
| 电池ID | 按电池ID筛选 |
| 时间范围 | 按交互时间范围筛选，默认最近一周 |
| 状态 | 筛选成功或失败的接口调用 |
| 来源类别 | 筛选ERP/SPC来源的接口 |

**操作步骤：**

1. 进入【系统设置】→【系统助手】→【接口日志】
2. 在顶部查询区域设置查询条件
3. 点击【查询】按钮获取接口日志列表

### 4.2 接口日志字段说明

| 字段 | 说明 |
|------|------|
| ID | 日志唯一标识 |
| 设备单元 | 设备单元名称 |
| 客户端IP | 调用接口的设备IP |
| 数据1 | 通常存储工序代码 |
| 数据2 | 通常存储托盘号 |
| 数据3 | 通常存储电池ID |
| 创建时间 | 日志记录时间 |
| 接口时间 | 接口调用时间 |
| 状态 | 接口调用状态(0成功，4001/4002失败) |
| 类别 | 接口类别(erp/spc等) |
| 类型 | 接口类型 |
| 请求参数 | 接口传入参数 |
| 返回结果 | 接口返回结果 |
| 数据4 | 扩展字段1 |
| 数据5 | 扩展字段2 |

### 4.3 接口状态码说明

| 状态码 | 说明 |
|--------|------|
| 0 | 接口调用成功 |
| 4001 | 接口调用失败 |
| 4002 | 接口超时 |

## 5. 后台API接口

### 5.1 操作日志接口

| API路径 | 方法 | 功能描述 | 所属文件 |
|---------|------|---------|---------|
| `/api/background/v1/system_settings/system_assistant/operate_log/list` | GET | 获取操作日志列表 | OperateLogService.php:31 |

### 5.2 接口日志接口

| API路径 | 方法 | 功能描述 | 所属文件 |
|---------|------|---------|---------|
| `/api/background/v1/system_settings/system_assistant/interface_log/list` | GET | 获取接口日志列表 | InterfaceLogService.php:31 |

## 6. 数据模型

### 6.1 操作日志表

| 字段名 | 类型 | 说明 |
|--------|------|------|
| id | int | 日志唯一标识 |
| user_id | int | 用户ID |
| username | varchar | 用户名 |
| path | varchar | 请求路径 |
| controller_action | varchar | 控制器和方法 |
| ip | varchar | 操作IP |
| status | tinyint | 操作状态 |
| params | text | 请求参数(JSON) |
| result | text | 返回结果(JSON) |
| action | varchar | 操作类型 |
| action_name | varchar | 操作名称 |
| tray | varchar | 托盘号 |
| batch | varchar | 批次号 |
| create_time | datetime | 创建时间 |

### 6.2 接口日志表

| 字段名 | 类型 | 说明 |
|--------|------|------|
| id | int | 日志唯一标识 |
| unit | varchar | 设备单元 |
| client_ip | varchar | 客户端IP |
| data1 | varchar | 数据字段1(工序代码) |
| data2 | varchar | 数据字段2(托盘号) |
| data3 | varchar | 数据字段3(电池ID) |
| data4 | varchar | 数据字段4 |
| data5 | varchar | 数据字段5 |
| create_time | datetime | 创建时间 |
| insterface_time | datetime | 接口调用时间 |
| status | int | 接口状态码 |
| class | varchar | 接口类别 |
| type | varchar | 接口类型 |
| params | text | 请求参数(JSON) |
| result | text | 返回结果(JSON) |

## 7. 注意事项

**【提示】** 操作日志和接口日志默认只保留最近一周的数据，如需查看更早的数据，请调整时间范围。

**【注意】** 接口日志中的数据字段(data1-data5)用途根据接口类型不同而有所差异，具体含义需要结合业务场景理解。