规范:统一17个页面文件§9为新格式(接口引用表+数据结构),不重复URL,数据结构是唯一定义处

main
haoliang 1 week ago
parent 04f3a170c2
commit 81743f8bb9

@ -104,22 +104,43 @@
- 排行榜无数据:灰色文字"暂无数据"
- 状态网格无机床:灰色文字"暂无机床"
### 8. Mock数据
### 8. 接口引用与数据结构
**GET /api/screen/summary 统计摘要:**
> Mock/正式API的URL、HTTP方法均定义在 `03-API接口设计.md` §3.12 端点清单本节仅引用编号并定义返回数据结构。大屏API/api/screen/**)免认证,但仅限读取。
#### 接口引用
| 接口名称 | 端点编号 | 界面用途 |
|---------|---------|---------|
| 大屏汇总统计 | §3.12 #1 | 顶部统计卡片 |
| 采集服务状态 | §3.12 #2 | 采集服务状态卡片 |
| 各车间产量 | §3.12 #3 | 车间产量柱状图 |
| 产量趋势 | §3.12 #4 | 7天产量趋势折线图 |
| 机床产量排行 | §3.12 #5 | 机床排行TOP5 |
| 工人产量排行 | §3.12 #6 | 工人排行TOP5 |
| 机床状态总览 | §3.12 #7 | 机床状态网格 |
| 大屏筛选条件 | §3.12 #8 | 筛选下拉选项 |
| 刷新间隔配置 | §3.12 #9 | 自动刷新间隔 |
#### 数据结构
**大屏汇总统计§3.12 #1**
Response
```json
{ "code": 0, "data": { "onlineCount": 142, "totalMachines": 160, "todayProduction": 8520, "activeAlerts": 3, "avgQuantityPerMachine": 60 }}
```
**GET /api/screen/collector-status 采集服务状态:**
**采集服务状态§3.12 #2**
Response
```json
{ "code": 0, "data": { "status": "running", "uptime": "3天16小时", "successCount": 12800, "failCount": 5, "lastCollectTime": "2026-04-25T17:36:38" }}
```
**GET /api/screen/workshop-production 各车间产量:**
**各车间产量§3.12 #3**
Response
```json
{ "code": 0, "data": { "items": [
{ "name": "A栋", "quantity": 3200 },
@ -128,8 +149,9 @@
]}}
```
**GET /api/screen/production-trend 7天产量趋势:**
**产量趋势§3.12 #4**
Response
```json
{ "code": 0, "data": { "items": [
{ "date": "04-19", "quantity": 8200 }, { "date": "04-20", "quantity": 7600 },
@ -139,8 +161,9 @@
]}}
```
**GET /api/screen/machine-rank 机床产量排行:**
**机床产量排行§3.12 #5**
Response
```json
{ "code": 0, "data": { "items": [
{ "rank": 1, "machineName": "西-1.8", "quantity": 580 },
@ -151,8 +174,9 @@
]}}
```
**GET /api/screen/worker-rank 工人产量排行:**
**工人产量排行§3.12 #6**
Response
```json
{ "code": 0, "data": { "items": [
{ "rank": 1, "workerName": "张三", "quantity": 1240 },
@ -163,8 +187,9 @@
]}}
```
**GET /api/screen/machine-status 机床状态网格**
**机床状态总览§3.12 #7**
Response
```json
{ "code": 0, "data": { "items": [
{ "machineId": 1, "machineName": "西-1.8", "isOnline": 1 },
@ -175,8 +200,9 @@
]}}
```
**GET /api/screen/filters 筛选选项从cnc_screen_filter读取**
**大屏筛选条件§3.12 #8**
Response
```json
{ "code": 0, "data": { "items": [
{ "filterType": "workshop", "filterValue": "A栋", "isDefault": 1 },
@ -185,6 +211,13 @@
]}}
```
**刷新间隔配置§3.12 #9**
Response
```json
{ "code": 0, "data": { "interval": 10, "unit": "seconds" }}
```
### 9. 数据需求
> 以下为本页面需要的数据,数据库设计定稿时需覆盖。参考 `01-数据库设计.md` 草案。

@ -73,24 +73,41 @@
| Token生成与验证 | cnc_sys_config (api_token) | Token值存配置表但登录流程需后端生成JWT或类似Token |
| Token有效期 | cnc_sys_config | 记住我模式下延长有效期 |
### 8. Mock数据
### 8. 接口引用与数据结构
**POST /api/admin/login 成功:**
> Mock/正式API的URL、HTTP方法均定义在 `03-API接口设计.md` §3.1 端点清单,本节仅引用编号并定义返回数据结构。
#### 接口引用
| 接口名称 | 端点编号 | 界面用途 |
|---------|---------|---------|
| 管理员登录 | §3.1 #1 | 登录表单提交获取Token |
#### 数据结构
**管理员登录§3.1 #1**
Request body
```json
{ "username": "admin", "password": "admin123", "rememberMe": true }
```
成功 Response不记住我
```json
{ "code": 0, "message": "success", "data": { "token": "eyJhbGciOiJIUzI1NiJ9.admin.8h", "expiresIn": 28800 }}
```
**POST /api/admin/login 成功(记住我):**
成功 Response记住我
```json
{ "code": 0, "message": "success", "data": { "token": "eyJhbGciOiJIUzI1NiJ9.admin.7d", "expiresIn": 604800 }}
```
**POST /api/admin/login 失败:**
失败 Response用户名或密码错误
```json
{ "code": 40001, "message": "用户名或密码错误", "data": null }
```
**POST /api/admin/login 失败IP锁定**
失败 ResponseIP锁定
```json
{ "code": 40003, "message": "登录失败次数过多请15分钟后重试", "data": null }
```

@ -83,19 +83,45 @@
- 机床排行无数据el-empty 今日尚无产量数据
- 工人排行无数据el-empty 今日尚无工人产量数据
### 8. Mock数据
### 8. 接口引用与数据结构
**GET /api/admin/dashboard/summary 统计卡片:**
> Mock/正式API的URL、HTTP方法均定义在 `03-API接口设计.md` §3.2 端点清单,本节仅引用编号并定义返回数据结构。
#### 接口引用
| 接口名称 | 端点编号 | 界面用途 |
|---------|---------|---------|
| 统计卡片 | §3.2 #1 | 顶部4个统计卡片数据 |
| 采集服务状态 | §3.2 #2 | 采集服务状态栏 |
| 机床产量排行 | §3.2 #3 | 机床排行TOP10表格 |
| 工人产量排行 | §3.2 #4 | 工人排行TOP10表格 |
| 产量趋势 | §3.2 #5 | 产量趋势折线图 |
| 车间平均单机产量 | §3.2 #6 | 车间产量柱状图 |
| 机床状态分布 | §3.2 #7 | 机床状态饼图 |
| 最新告警 | §3.2 #8 | 最新5条告警列表 |
| 启动采集服务 | §3.2 #9 | 采集服务启动按钮 |
| 停止采集服务 | §3.2 #10 | 采集服务停止按钮 |
| 刷新采集配置 | §3.2 #11 | 采集服务刷新按钮 |
#### 数据结构
**统计卡片§3.2 #1**
Response
```json
{ "code": 0, "data": { "onlineCount": 142, "totalMachines": 160, "todayProduction": 2847, "activeAlerts": 3 }}
```
**GET /api/admin/collector/status 采集服务状态:**
**采集服务状态§3.2 #2**
Response
```json
{ "code": 0, "data": { "status": "running", "uptimeSeconds": 316800, "lastCollectTime": "2026-04-25T17:36:38", "successCount": 1280, "failCount": 5 }}
```
**GET /api/admin/dashboard/machine-rank 机床产量排行TOP10**
**机床产量排行§3.2 #3**
Response
```json
{ "code": 0, "data": { "items": [
{ "rank": 1, "machineId": 1, "machineName": "西-1.8", "program": "1566.NC", "quantity": 580, "status": 1 },
@ -111,7 +137,9 @@
]}}
```
**GET /api/admin/dashboard/worker-rank 工人产量排行TOP10**
**工人产量排行§3.2 #4**
Response
```json
{ "code": 0, "data": { "items": [
{ "rank": 1, "workerId": 1, "workerName": "张三", "machineCount": 3, "totalQuantity": 1240 },
@ -120,6 +148,14 @@
{ "rank": 4, "workerId": 4, "workerName": "赵六", "machineCount": 2, "totalQuantity": 650 },
{ "rank": 5, "workerId": 5, "workerName": "孙七", "machineCount": 3, "totalQuantity": 520 }
]}}
```
**启动/停止/刷新采集服务§3.2 #9/#10/#11**
Response
```json
{ "code": 0, "message": "success", "data": null }
```
### 8. 数据需求

@ -119,9 +119,29 @@
列表无数据el-empty 暂无机床数据,点击新增机床添加
### 10. Mock数据
### 10. 接口引用与数据结构
**GET /api/admin/machine 机床列表:**
> Mock/正式API的URL、HTTP方法均定义在 `03-API接口设计.md` §3.3 端点清单,本节仅引用编号并定义返回数据结构。
#### 接口引用
| 接口名称 | 端点编号 | 界面用途 |
|---------|---------|---------|
| 机床列表 | §3.3 #1 | 表格数据,分页渲染 |
| 新增机床 | §3.3 #3 | 新增弹窗保存 |
| 编辑机床 | §3.3 #4 | 编辑弹窗保存 |
| 删除机床 | §3.3 #5 | 删除操作 |
| 启停机床 | §3.3 #6 | 启停切换 |
| 车间下拉 | §3.13 #1 | 查询条件+表单下拉 |
| 品牌下拉 | §3.13 #2 | 查询条件+表单下拉 |
| 采集地址下拉 | §3.13 #5 | 表单下拉 |
| 工人下拉 | §3.13 #4 | 表单下拉 |
#### 数据结构
**机床列表§3.3 #1**
Response
```json
{ "code": 0, "data": { "items": [
{ "id": 1, "name": "西-1.8", "deviceCode": "fanake_1.8", "workshopName": "A栋", "brandName": "FANUC", "ipAddress": "10.1.1.8", "isOnline": 1, "workerName": "张三", "isEnabled": 1 },
@ -131,17 +151,23 @@
], "total": 160, "page": 1, "pageSize": 20 }}
```
**POST /api/admin/machine 新增机床成功:**
**新增机床§3.3 #3**
Request body
```json
{ "deviceCode": "fanake_1.8", "name": "西-1.8", "workshopId": 1, "collectAddressId": 1, "ipAddress": "10.1.1.8", "brandId": 1 }
```
Response
```json
{ "code": 0, "message": "success", "data": { "id": 161, "name": "新机床" }}
```
**GET /api/admin/machine/export 导出(返回文件流):**
二进制Excel文件Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
**编辑机床§3.3 #4/ 删除机床§3.3 #5/ 启停机床§3.3 #6**
**POST /api/admin/machine/import 导入结果:**
Response
```json
{ "code": 0, "data": { "successCount": 15, "failCount": 2, "failDetails": ["第3行device_code重复", "第8行车间不存在"] }}
{ "code": 0, "message": "success", "data": null }
```
### 10. 数据需求

@ -74,9 +74,25 @@
- 今日产量无数据el-empty 今日尚无产量数据
- 采集记录无数据el-empty 暂无采集记录
### 7. Mock数据
### 7. 接口引用与数据结构
**GET /api/admin/machine/1 机床详情:**
> Mock/正式API的URL、HTTP方法均定义在 `03-API接口设计.md` §3.3 端点清单,本节仅引用编号并定义返回数据结构。
#### 接口引用
| 接口名称 | 端点编号 | 界面用途 |
|---------|---------|---------|
| 机床详情 | §3.3 #2 | 基本信息卡片 |
| 实时采集状态 | §3.3 #7 | 实时状态卡片10秒刷新 |
| 今日产量明细 | §3.3 #8 | 今日产量表格 |
| 产量趋势 | §3.3 #9 | 7天产量趋势折线图 |
| 近期采集记录 | §3.3 #10 | 采集记录表格 |
#### 数据结构
**机床详情§3.3 #2**
Response
```json
{ "code": 0, "data": {
"id": 1, "name": "西-1.8", "deviceCode": "fanake_1.8", "workshopName": "A栋", "brandName": "FANUC",
@ -84,7 +100,9 @@
}}
```
**GET /api/admin/machine/1/status 实时状态:**
**实时采集状态§3.3 #7**
Response
```json
{ "code": 0, "data": {
"programName": "1566.NC", "partCount": 580, "runStatus": "运行中", "operateMode": "自动",
@ -93,7 +111,9 @@
}}
```
**GET /api/admin/machine/1/production/today 今日产量:**
**今日产量明细§3.3 #8**
Response
```json
{ "code": 0, "data": { "items": [
{ "programName": "1566.NC", "quantity": 580, "runTime": "4h20m", "cuttingTime": "3h50m" },
@ -101,7 +121,9 @@
]}}
```
**GET /api/admin/machine/1/production/trend 7天趋势**
**产量趋势§3.3 #9**
Response
```json
{ "code": 0, "data": { "items": [
{ "date": "2026-04-19", "quantity": 820 }, { "date": "2026-04-20", "quantity": 760 },
@ -111,13 +133,16 @@
]}}
```
**GET /api/admin/machine/1/collect-records 最近采集记录:**
**近期采集记录§3.3 #10**
Response
```json
{ "code": 0, "data": { "items": [
{ "collectTime": "2026-04-25T17:36:35", "programName": "1566.NC", "partCount": 580, "runStatus": "运行中" },
{ "collectTime": "2026-04-25T17:36:05", "programName": "1566.NC", "partCount": 579, "runStatus": "运行中" },
{ "collectTime": "2026-04-25T17:35:35", "programName": "1566.NC", "partCount": 578, "runStatus": "运行中" }
]}}
```
### 7. 数据需求

@ -72,15 +72,39 @@
列表无数据el-empty 暂无品牌数据,点击新增品牌添加
### 10. Mock数据
### 10. 接口引用与数据结构
**GET /api/admin/brand 品牌列表:**
> Mock/正式API的URL、HTTP方法均定义在 `03-API接口设计.md` §3.4 端点清单,本节仅引用编号并定义返回数据结构。
#### 接口引用
| 接口名称 | 端点编号 | 界面用途 |
|---------|---------|---------|
| 品牌列表 | §3.4 #1 | 品牌表格渲染 |
| 新增品牌 | §3.4 #3 | 新增弹窗保存 |
| 删除品牌 | §3.4 #5 | 删除操作 |
| 复制品牌 | §3.4 #6 | 复制操作 |
| 启停品牌 | §3.4 #7 | 启停切换 |
#### 数据结构
**品牌列表§3.4 #1**
Response
```json
{ "code": 0, "data": { "items": [
{ "id": 1, "brandName": "FANUC", "deviceField": "device", "tagsPath": "tags", "isEnabled": 1, "fieldCount": 16 },
{ "id": 2, "brandName": "SIEMENS", "deviceField": "device", "tagsPath": "tags", "isEnabled": 1, "fieldCount": 12 },
{ "id": 3, "brandName": "MITSUBISHI", "deviceField": "device", "tagsPath": "tags", "isEnabled": 0, "fieldCount": 8 }
]}}
```
**新增品牌§3.4 #3/ 删除品牌§3.4 #5/ 复制品牌§3.4 #6/ 启停品牌§3.4 #7**
Response
```json
{ "code": 0, "message": "success", "data": null }
```
### 10. 数据需求

@ -72,9 +72,23 @@
品牌名称/device字段/tags路径/映射列表任一变更则isDirty=true。
### 9. Mock数据
### 9. 接口引用与数据结构
**GET /api/admin/brand/1 品牌详情+映射列表:**
> Mock/正式API的URL、HTTP方法均定义在 `03-API接口设计.md` §3.4 端点清单,本节仅引用编号并定义返回数据结构。
#### 接口引用
| 接口名称 | 端点编号 | 界面用途 |
|---------|---------|---------|
| 品牌详情(含映射) | §3.4 #2 | 页面加载时获取品牌信息+字段映射列表 |
| 编辑品牌 | §3.4 #4 | 保存按钮提交 |
| 标准字段列表 | §3.4 #8 | 映射表格的标准字段下拉 |
#### 数据结构
**品牌详情§3.4 #2**
Response
```json
{ "code": 0, "data": {
"id": 1, "brandName": "FANUC", "deviceField": "device", "tagsPath": "tags",
@ -97,6 +111,14 @@
{ "id": 16, "standardField": "machining_status", "fieldName": "Tag21", "matchBy": "id", "dataType": "string", "isRequired": 0 }
]
}}
```
**编辑品牌§3.4 #4**
Response
```json
{ "code": 0, "message": "success", "data": null }
```
### 9. 数据需求

@ -89,10 +89,27 @@
列表无数据el-empty 暂无采集地址数据,点击新增地址添加
### 10. Mock数据
### 10. 接口引用与数据结构
**GET /api/admin/collect-address 采集地址列表:**
> Mock/正式API的URL、HTTP方法均定义在 `03-API接口设计.md` §3.5 端点清单,本节仅引用编号并定义返回数据结构。
#### 接口引用
| 接口名称 | 端点编号 | 界面用途 |
|---------|---------|---------|
| 地址列表 | §3.5 #1 | 表格数据渲染 |
| 新增地址 | §3.5 #3 | 新增弹窗保存 |
| 编辑地址 | §3.5 #4 | 编辑弹窗保存 |
| 删除地址 | §3.5 #5 | 删除操作 |
| 启停地址 | §3.5 #6 | 启停切换 |
| 地址下机床 | §3.5 #7 | 弹窗中机床列表 |
| 品牌下拉 | §3.13 #2 | 弹窗表单下拉 |
#### 数据结构
**地址列表§3.5 #1**
Response
```json
{ "code": 0, "data": { "items": [
{ "id": 1, "name": "FANUC-A栋", "url": "http://10.1.1.1/", "brandName": "FANUC", "collectInterval": 30, "isEnabled": 1, "lastCollectTime": "2026-04-25T17:36:38", "failCount": 0, "machineCount": 32 },
@ -100,19 +117,29 @@
]}}
```
**POST /api/admin/collect-address 新增采集地址成功**
**新增地址§3.5 #3**
Response
```json
{ "code": 0, "message": "success", "data": { "id": 3, "name": "SIEMENS-C栋" }}
```
**GET /api/admin/collect-address/1/machines 地址下可选机床(弹窗联动**
**地址下机床§3.5 #7**
Response
```json
{ "code": 0, "data": { "items": [
{ "id": 1, "deviceCode": "fanake_1.8", "name": "西-1.8", "workshopName": "A栋", "ipAddress": "10.1.1.8", "isAssigned": false },
{ "id": 2, "deviceCode": "fanake_1.10", "name": "西-1.10", "workshopName": "A栋", "ipAddress": "10.1.1.10", "isAssigned": true }
]}}
```
**编辑地址§3.5 #4/ 删除地址§3.5 #5/ 启停地址§3.5 #6**
Response
```json
{ "code": 0, "message": "success", "data": null }
```
### 10. 数据需求

@ -79,10 +79,24 @@
- 关联机床无数据el-empty 该地址暂无关联机床
- 采集记录无数据el-empty 暂无采集记录
### 8. Mock数据
### 8. 接口引用与数据结构
**GET /api/admin/collect-address/1 地址详情:**
> Mock/正式API的URL、HTTP方法均定义在 `03-API接口设计.md` §3.5 端点清单,本节仅引用编号并定义返回数据结构。
#### 接口引用
| 接口名称 | 端点编号 | 界面用途 |
|---------|---------|---------|
| 地址详情 | §3.5 #2 | 基本信息卡片 |
| 关联机床 | §3.5 #7 | 机床列表表格 |
| 近期采集记录 | §3.5 #8 | 采集记录表格 |
| 最新原始JSON | §3.5 #9 | 原始JSON弹窗 |
#### 数据结构
**地址详情§3.5 #2**
Response
```json
{ "code": 0, "data": {
"id": 1, "name": "FANUC-A栋", "url": "http://10.1.1.1/", "brandName": "FANUC",
@ -91,8 +105,9 @@
}}
```
**GET /api/admin/collect-address/1/machines 关联机床:**
**关联机床§3.5 #7**
Response
```json
{ "code": 0, "data": { "items": [
{ "machineId": 1, "machineName": "西-1.8", "deviceCode": "fanake_1.8", "workshopName": "A栋", "isOnline": 1, "programName": "1566.NC", "partCount": 580 },
@ -100,8 +115,9 @@
]}}
```
**GET /api/admin/collect-address/1/collect-records 最近采集记录(日志库**
**近期采集记录§3.5 #8**
Response
```json
{ "code": 0, "data": { "items": [
{ "requestTime": "2026-04-25T17:36:38", "duration": 1200, "isSuccess": 1, "machineCount": 32, "failMachineCount": 0 },
@ -111,10 +127,12 @@
]}}
```
**GET /api/admin/collect-address/1/raw-json/123 原始JSON弹窗**
**最新原始JSON§3.5 #9**
Response
```json
{ "code": 0, "data": { "rawJson": "[{\"device\":\"fanake_1.8\",\"desc\":\"西-1.8\",\"tags\":[{\"id\":\"_io_status\",\"desc\":\"设备状态\",\"value\":\"1.00000\"},{\"id\":\"Tag5\",\"desc\":\"执行的NC主程序名\",\"value\":\"1566.NC\"},{\"id\":\"Tag8\",\"desc\":\"当前加工零件数\",\"value\":\"580.00000\"}]}]" }}
```
### 8. 数据需求

@ -108,10 +108,26 @@
列表无数据el-empty 暂无工人数据,点击新增工人添加
### 10. Mock数据
### 10. 接口引用与数据结构
**GET /api/admin/worker 工人列表:**
> Mock/正式API的URL、HTTP方法均定义在 `03-API接口设计.md` §3.6 端点清单,本节仅引用编号并定义返回数据结构。
#### 接口引用
| 接口名称 | 端点编号 | 界面用途 |
|---------|---------|---------|
| 工人列表 | §3.6 #1 | 表格数据,分页渲染 |
| 新增工人 | §3.6 #3 | 新增弹窗保存 |
| 编辑工人 | §3.6 #4 | 编辑弹窗保存 |
| 删除工人 | §3.6 #5 | 删除操作 |
| 启停工人 | §3.6 #6 | 启停切换 |
| 可绑定机床 | §3.6 #10 | 弹窗中机床下拉 |
#### 数据结构
**工人列表§3.6 #1**
Response
```json
{ "code": 0, "data": { "items": [
{ "id": 1, "code": "W001", "name": "张三", "isEnabled": 1, "machineCount": 2, "machineNames": "西-1.8,西-2.0" },
@ -120,14 +136,16 @@
], "total": 50, "page": 1, "pageSize": 20 }}
```
**POST /api/admin/worker 新增工人成功**
**新增工人§3.6 #3**
Response
```json
{ "code": 0, "message": "success", "data": { "id": 4, "name": "赵六" }}
```
**GET /api/admin/worker/available-machines 可绑定机床下拉**
**可绑定机床§3.6 #10**
Response
```json
{ "code": 0, "data": { "items": [
{ "id": 5, "name": "东-2.5", "deviceCode": "siemens_2.5", "workshopName": "B栋" },
@ -135,6 +153,13 @@
]}}
```
**编辑工人§3.6 #4/ 删除工人§3.6 #5/ 启停工人§3.6 #6**
Response
```json
{ "code": 0, "message": "success", "data": null }
```
### 11. 数据需求
> 以下为本页面需要的数据,数据库设计定稿时需覆盖。参考 `01-数据库设计.md` 草案。

@ -65,16 +65,31 @@
- 绑定机床无数据el-empty 该工人暂无绑定机床
- 今日产量无数据el-empty 今日尚无产量数据
### 8. Mock数据
### 8. 接口引用与数据结构
**GET /api/admin/worker/1 工人详情:**
> Mock/正式API的URL、HTTP方法均定义在 `03-API接口设计.md` §3.6 端点清单,本节仅引用编号并定义返回数据结构。
#### 接口引用
| 接口名称 | 端点编号 | 界面用途 |
|---------|---------|---------|
| 工人详情 | §3.6 #2 | 基本信息卡片 |
| 绑定机床列表 | §3.6 #7 | 绑定机床表格 |
| 今日产量明细 | §3.6 #8 | 今日产量表格 |
| 产量趋势 | §3.6 #9 | 7天产量趋势折线图 |
#### 数据结构
**工人详情§3.6 #2**
Response
```json
{ "code": 0, "data": { "id": 1, "code": "W001", "name": "张三", "isEnabled": 1, "machineCount": 2 }}
```
**GET /api/admin/worker/1/machines 绑定机床:**
**绑定机床列表§3.6 #7**
Response
```json
{ "code": 0, "data": { "items": [
{ "machineId": 1, "machineName": "西-1.8", "deviceCode": "fanake_1.8", "workshopName": "A栋", "brandName": "FANUC", "isOnline": 1, "programName": "1566.NC" },
@ -82,8 +97,9 @@
]}}
```
**GET /api/admin/worker/1/production/today 今日产量:**
**今日产量明细§3.6 #8**
Response
```json
{ "code": 0, "data": { "items": [
{ "machineName": "西-1.8", "programName": "1566.NC", "quantity": 580, "runTime": "4h20m", "cuttingTime": "3h50m" },
@ -91,8 +107,9 @@
]}}
```
**GET /api/admin/worker/1/production/trend 7天趋势**
**产量趋势§3.6 #9**
Response
```json
{ "code": 0, "data": { "items": [
{ "date": "2026-04-19", "quantity": 980 }, { "date": "2026-04-20", "quantity": 920 },
@ -100,6 +117,7 @@
{ "date": "2026-04-23", "quantity": 990 }, { "date": "2026-04-24", "quantity": 1080 },
{ "date": "2026-04-25", "quantity": 580 }
]}}
```
### 7. 数据需求

@ -121,16 +121,35 @@
列表无数据el-empty 未找到匹配的产量数据,请调整查询条件
汇总统计:无数据时各卡片显示"-"
### 10. Mock数据
### 10. 接口引用与数据结构
**GET /api/admin/production/daily-summary 汇总统计:**
> Mock/正式API的URL、HTTP方法均定义在 `03-API接口设计.md` §3.7 端点清单,本节仅引用编号并定义返回数据结构。
#### 接口引用
| 接口名称 | 端点编号 | 界面用途 |
|---------|---------|---------|
| 日汇总统计 | §3.7 #1 | 顶部统计卡片 |
| 日产量列表 | §3.7 #2 | 表格数据,分页渲染 |
| 修正产量 | §3.7 #3 | 修正弹窗保存 |
| 修正历史 | §3.7 #4 | 修正历史弹窗 |
| 导出报表 | §3.7 #5 | 导出Excel按钮 |
| 车间下拉 | §3.13 #1 | 查询条件下拉 |
| 机床下拉 | §3.13 #3 | 查询条件下拉 |
| 工人下拉 | §3.13 #4 | 查询条件下拉 |
#### 数据结构
**日汇总统计§3.7 #1**
Response
```json
{ "code": 0, "data": { "totalQuantity": 8520, "activeMachineCount": 142, "totalCuttingTime": "580h", "avgQuantityPerMachine": 60 }}
```
**GET /api/admin/production/daily 产量列表:**
**日产量列表§3.7 #2**
Response
```json
{ "code": 0, "data": { "items": [
{ "id": 1, "date": "2026-04-25", "machineName": "西-1.8", "programName": "1566.NC", "quantity": 580, "runTime": "4h20m", "cuttingTime": "3h50m", "dataStatus": "normal", "isAdjusted": 0, "adjustedQuantity": null },
@ -139,21 +158,29 @@
], "total": 1200, "page": 1, "pageSize": 20 }}
```
**POST /api/admin/production/adjust 修正产量:**
**修正产量§3.7 #3**
Request body
```json
{ "targetTable": "daily_production", "targetId": 3, "fieldName": "total_quantity", "newValue": 320, "reason": "传感器计数偏差,手工校准" }
```
Response
```json
{ "code": 0, "message": "success", "data": null }
```
**GET /api/admin/production/adjustment-history?target_id=3 修正历史:**
**修正历史§3.7 #4**
Response
```json
{ "code": 0, "data": { "items": [
{ "createdAt": "2026-04-25 15:30:00", "oldValue": 310, "newValue": 320, "reason": "传感器计数偏差,手工校准" }
]}}
```
**GET /api/admin/production/export 导出(返回文件流):**
**导出报表§3.7 #5**
二进制Excel文件Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
### 11. 数据需求

@ -116,16 +116,32 @@
列表无数据el-empty 暂无告警数据
统计区各类型计数为0时显示0
### 10. Mock数据
### 10. 接口引用与数据结构
**GET /api/admin/alert/statistics 告警统计:**
> Mock/正式API的URL、HTTP方法均定义在 `03-API接口设计.md` §3.8 端点清单,本节仅引用编号并定义返回数据结构。
#### 接口引用
| 接口名称 | 端点编号 | 界面用途 |
|---------|---------|---------|
| 告警统计 | §3.8 #1 | 顶部按类型统计卡片 |
| 告警列表 | §3.8 #2 | 表格数据,分页渲染 |
| 处理单条告警 | §3.8 #3 | 行操作"处理"按钮 |
| 批量处理告警 | §3.8 #4 | 批量处理按钮 |
| 机床下拉 | §3.13 #3 | 查询条件下拉 |
#### 数据结构
**告警统计§3.8 #1**
Response
```json
{ "code": 0, "data": { "unresolved": 15, "collectFail": 5, "deviceOffline": 6, "productionAnomaly": 2, "unknownDevice": 2, "serviceError": 0 }}
```
**GET /api/admin/alert 告警列表:**
**告警列表§3.8 #2**
Response
```json
{ "code": 0, "data": { "items": [
{ "id": 1, "createdAt": "2026-04-25T17:30:00", "alertType": "collect_fail", "title": "采集请求失败", "machineName": "西-1.8", "detail": "HTTP超时(30s)连续失败3次", "isResolved": 0, "resolvedAt": null },
@ -135,8 +151,9 @@
], "total": 320, "page": 1, "pageSize": 20 }}
```
**POST /api/admin/alert/resolve 标记已处理**
**处理单条告警§3.8 #3/ 批量处理告警§3.8 #4**
Response
```json
{ "code": 0, "message": "success", "data": null }
```

@ -145,10 +145,23 @@
系统日志无数据el-empty 暂无系统日志
查询无结果el-empty 未找到匹配的日志,请调整查询条件
### 10. Mock数据
### 10. 接口引用与数据结构
**GET /api/admin/log/adjustment 产量修正日志:**
> Mock/正式API的URL、HTTP方法均定义在 `03-API接口设计.md` §3.10 端点清单,本节仅引用编号并定义返回数据结构。
#### 接口引用
| 接口名称 | 端点编号 | 界面用途 |
|---------|---------|---------|
| 产量修正日志 | §3.10 #1 | Tab1表格数据分页渲染 |
| 导出修正日志 | §3.10 #2 | Tab1导出Excel按钮 |
| 系统运行日志 | §3.10 #3 | Tab2表格数据分页渲染 |
#### 数据结构
**产量修正日志§3.10 #1**
Response
```json
{ "code": 0, "data": { "items": [
{ "id": 1, "createdAt": "2026-04-25T15:30:00", "targetTable": "daily_production", "targetId": 3, "oldValue": 310, "newValue": 320, "reason": "传感器计数偏差,手工校准", "operatorIp": "192.168.1.5" },
@ -156,8 +169,9 @@
], "total": 80, "page": 1, "pageSize": 20 }}
```
**GET /api/admin/log/system 系统运行日志:**
**系统运行日志§3.10 #3**
Response
```json
{ "code": 0, "data": { "items": [
{ "id": 1, "createdAt": "2026-04-25T17:36:38", "logLevel": "INFO", "source": "CncCollector", "message": "采集完成: 32台成功, 0台失败", "stackTrace": null, "extraData": null },
@ -167,7 +181,8 @@
], "total": 5600, "page": 1, "pageSize": 20 }}
```
**GET /api/admin/log/adjustment/export 导出修正日志(返回文件流):**
**导出修正日志§3.10 #2**
二进制Excel文件Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
### 11. 数据需求

@ -129,19 +129,29 @@
卡片列表无数据el-empty 暂无卡片配置,点击新增卡片添加
筛选列表无数据el-empty 暂无筛选配置
### 10. 数据需求
### 10. 接口引用与数据结构
> 以下为本页面需要的数据,数据库设计定稿时需覆盖。参考 `01-数据库设计.md` 草案
> Mock/正式API的URL、HTTP方法均定义在 `03-API接口设计.md` §3.11 端点清单,本节仅引用编号并定义返回数据结构
| 数据需求 | 草案对应 | 说明 |
|---------|---------|------|
| 卡片配置列表 | cnc_screen_config | 主表含card_key/card_type/title/metric/dimension/sort_order/is_enabled/chart_config |
| 筛选配置列表 | cnc_screen_filter | 主表含screen_key/filter_type/filter_value/is_default/sort_order |
#### 接口引用
### 11. Mock数据
| 接口名称 | 端点编号 | 界面用途 |
|---------|---------|---------|
| 卡片配置列表 | §3.11 #1 | Tab1卡片配置表格 |
| 新增卡片 | §3.11 #2 | Tab1新增弹窗保存 |
| 编辑卡片 | §3.11 #3 | Tab1编辑弹窗保存 |
| 删除卡片 | §3.11 #4 | Tab1删除操作 |
| 启停卡片 | §3.11 #5 | Tab1启停切换 |
| 筛选配置列表 | §3.11 #6 | Tab2筛选配置表格 |
| 新增筛选项 | §3.11 #7 | Tab2新增弹窗保存 |
| 编辑筛选项 | §3.11 #8 | Tab2编辑弹窗保存 |
| 删除筛选项 | §3.11 #9 | Tab2删除操作 |
**GET /api/admin/screen-config 卡片配置列表:**
#### 数据结构
**卡片配置列表§3.11 #1**
Response
```json
{ "code": 0, "data": { "items": [
{ "id": 1, "cardKey": "total_online", "cardType": "stat_number", "title": "在线机床数", "metric": "online_count", "dimension": null, "sortOrder": 1, "isEnabled": 1, "chartConfig": null },
@ -155,11 +165,27 @@
]}}
```
**GET /api/admin/screen-filter 筛选配置列表:**
**筛选配置列表§3.11 #6**
Response
```json
{ "code": 0, "data": { "items": [
{ "id": 1, "screenKey": "screen_main", "filterType": "workshop", "filterValue": "A栋", "isDefault": 1, "sortOrder": 1 },
{ "id": 2, "screenKey": "screen_main", "filterType": "workshop", "filterValue": "B栋", "isDefault": 0, "sortOrder": 2 },
{ "id": 3, "screenKey": "screen_main", "filterType": "brand", "filterValue": "FANUC", "isDefault": 0, "sortOrder": 3 }
]}}
```
**新增卡片§3.11 #2/ 编辑卡片§3.11 #3/ 删除卡片§3.11 #4/ 启停卡片§3.11 #5**
Response
```json
{ "code": 0, "message": "success", "data": null }
```
**新增筛选项§3.11 #7/ 编辑筛选项§3.11 #8/ 删除筛选项§3.11 #9**
Response
```json
{ "code": 0, "message": "success", "data": null }
```

Loading…
Cancel
Save