EVA-Tea/doc/api.md

388 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 接口文档
## 基本格式
### 成功响应格式
```json
{
"success": true,
"data": {
"foo": "bar"
}
}
```
**NOTE:** 若无特殊说明,`POST`请求的响应`data`字段为空(`{}`),可以不用管。
### 失败响应格式
```json
{
"success": false,
"err": "some error"
}
```
### `GET`请求默认格式(若无特殊说明)
```json
{
"token": "token_test"
}
```
## 主页面
### 统计数据 `GET /stats`
data:
```json
{
"success": true,
"data": {
"todayPT": 114, // 今日预填写工单总数
"totalPT": 514, // 所有预填写工单
"oreo": 93, // 加入 Oreo 工单数
"report": 8, // 今日反馈数
"allSuccess": 1919, // 所有成功工单(包括 Oreo 内)
"all": 2024 // 所有工单(包括 Oreo 内)
}
}
```
## 主席团页面
### 值班信息管理
#### 当前值班信息 `GET /admin/duty/current`
##### 正常值班
data:
```json
{
"isNormalDuty": true, // 判断是否是正常值班时间
"currentDuty": "1", // 判断是否正在值班 / 值哪一班 "1" | "2" | "3" => 正在值班,"off" => 值班下班
"inDutyCnt": 3,
"otherDutyTime": [], // 正常值班时为空
"offDutyReason": "",
"place": "204",
"dutyRecoverTime": ""
}
```
##### 其他值班
data:
```json
{
"isNormalDuty": false, // 判断是否是正常值班时间
"currentDuty": "others", // 判断是否正在值班 / 值哪一班 "others" => 正在值班,"off" => 值班下班
"inDutyCnt": 3,
"otherDutyTime": [
{
"name": "第一班",
"range": ["2024-03-07T19:52:48.523303", "2024-03-07T19:52:48.523303"]
},
{
"name": "第二班",
"range": ["2024-03-07T19:52:48.523303", "2024-03-07T19:52:48.523303"]
},
...
],
"offDutyReason": "",
"place": "204",
"dutyRecoverTime": ""
}
```
#### 更新当前值班情况 `POST /admin/duty/update`
无关项返回空字符串,后端手动校验
request:
```json
{
"isNormalDuty": true,
"currentDuty": "2",
"inDutyCnt": 3,
"otherDutyTime": [],
"offDutyReason": "",
"place": "204",
"dutyRecoverTime": "",
},
```
### 值班表管理
#### 更新值班表 `POST /admin/sheet/create`
request:
```json
{
"name": "2024 春学期值班表",
"sheet": [
{
"weekday": 1,
"shift": 1,
"workers": ["马嘉祺", "丁程鑫", "宋亚轩"],
"leader": "蔡徐坤"
},
{
"weekday": 1,
"shift": 2,
"workers": ["王俊凯", "易烊千玺", "王源"],
"leader": "丁真珍珠"
}
// ...
]
}
```
#### 更新值班表 `POST /admin/sheet/update`
request:
```json
{
"id": 114514,
"name": "2024 春学期值班表",
"sheet": [
{
"weekday": 1,
"shift": 1,
"workers": ["马嘉祺", "丁程鑫", "宋亚轩"],
"leader": "蔡徐坤"
},
{
"weekday": 1,
"shift": 2,
"workers": ["王俊凯", "易烊千玺", "王源"],
"leader": "丁真珍珠"
}
// ...
]
}
```
#### 获取当前值班表 `GET /admin/sheet/current`
data:
```json
{
"name": "2024 春学期值班表",
"id": 114514,
"createdTime": "2024-03-07T19:52:48.523303",
"sheet": [
{
"weekday": 1,
"shift": 1,
"workers": ["马嘉祺", "丁程鑫", "宋亚轩"],
"leader": "蔡徐坤"
},
{
"weekday": 1,
"shift": 2,
"workers": ["王俊凯", "易烊千玺", "王源"],
"leader": "丁真珍珠"
}
// ...
]
}
```
#### 获取所有值班表 `GET /admin/sheet/list`
data:
```json
{
"current": 114514,
"list": [
{
"name": "2024 春学期值班表",
"id": 114514,
"createdTime": "2024-03-07T19:52:48.523303",
"sheet": [
{
"weekday": 1,
"shift": 1,
"workers": ["马嘉祺", "丁程鑫", "宋亚轩"],
"leader": "蔡徐坤"
},
{
"weekday": 1,
"shift": 2,
"workers": ["王俊凯", "易烊千玺", "王源"],
"leader": "丁真珍珠"
}
// ...
]
}
// ...
]
}
```
### 反馈管理
#### 获取反馈列表 `GET /admin/reportlist`
request:
```json
{
"current": 1,
"pageSize": 10,
"name?": "西西弗", // 如果不筛选则不出现在 request-body 内
"phone?": "18888888888" // 如果不筛选则不出现在 request-body 内
}
```
data:
```json
{
"page": 1,
"total": 24,
"success": true,
"data": [
{
"name": "晓洋",
"phone": "13333333333",
"time": "2024-03-07T17:52:48.523303",
"text": "你们为什么修不好天选3的PD充电"
}
// ...
]
}
```
### 日志页面
#### 获取日志列表 `GET /admin/loglist`
request:
```json
{
"current": 1,
"pageSize": 10,
"op?": "晓洋", // 如果不筛选则不出现在 request-body 内
"operation": "all" | "add" | "delete" | "change", // all 之外的选项用于筛选
"target": "all" | "dutyTable" | "dutyInfo" | "conclusion" // all 之外的选项用于筛选
}
```
data:
```json
{
"page": 1,
"total": 24,
"success": true,
"data": [
{
"op": "宇航员",
"avatar": "https://...",
"time": "2024-03-07T19:52:48.523303",
"operation": 2,
"target": 1,
"prev": {
"id": 114,
"info": "马嘉祺"
},
"curr": {
"id": 514,
"info": "何君琳"
}
}
// ...
]
}
```
前端显示的信息:"{op} 于 {time} {operation} 了 {target}{prev.info} -> {curr.info}"
### 值班总结管理页面
#### 获取值班总结列表 `GET /admin/conclusionlist`
request:
```json
{
"current": 1,
"pageSize": 10,
"op?": "晓洋", // 如果不筛选则不出现在 request-body 内
"week": "all" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat" | "sun", // all 之外的选项用于筛选
"shift": "all" | "first" | "second" | "third" // all 之外的选项用于筛选
}
```
data:
```json
{
"page": 1,
"total": 24,
"success": true,
"data": [
{
"op": "宇航员",
"avatar": "https://...",
"time": "2024-03-07T19:52:48.523303",
"week": "2",
"shift": "3",
"detail": "收到电脑 n 台,维修成功 m 台,已取回 x 台,有 y 台正在维修交接给下一班"
}
// ...
]
}
```
### 请假管理页面
#### 获取请假列表 `GET /leader/askleavelist`
request:
```json
{
"current": 1,
"pageSize": 10,
"member?": "晓洋", // 如果不筛选则不出现在 request-body 内
"week": "all" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat" | "sun", // all 之外的选项用于筛选
"shift": "all" | "first" | "second" | "third" // all 之外的选项用于筛选
}
```
data:
```json
{
"page": 1,
"total": 24,
"success": true,
"data": [
{
"member": "宇航员",
"avatar": "https://...",
"time": "2024-03-07T19:52:48.523303",
"week": "2",
"shift": "3",
"reason": "家庭原因",
"substitute": "晓洋" // 未找人代班则为空
}
// ...
]
}
```