Files
aue/文件管理接口文档.md
2026-06-03 13:16:30 +08:00

9.2 KiB
Raw Blame History

文件管理接口文档

1. 接口概述

本文档描述文件管理模块的后端接口,用于前端展示和管理数据库中的文件信息。

基础路径

/api/file

认证方式

所有接口需要在请求头中携带 Authorization 令牌:

Authorization: Bearer <token>

2. 接口列表

2.1 分页查询文件列表

接口地址GET /api/file/page

功能描述:根据条件分页查询文件列表,支持文件名搜索

请求参数

参数名 类型 必填 默认值 说明
pageNum Integer 1 页码
pageSize Integer 10 每页大小
fileName String - 文件名(模糊搜索)

请求示例

GET /api/file/page?pageNum=1&pageSize=10&fileName=文档

成功响应HTTP 200

{
  "code": 200,
  "message": "success",
  "data": {
    "total": 44,
    "list": [
      {
        "id": 21,
        "fileName": "1.docx",
        "filePath": "resources/rule/总公司/南京分公司/公共部门/1/v1/1.docx",
        "fileSize": 483352,
        "fileType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
        "extension": ".docx",
        "uploadUserId": 1,
        "uploadUserName": "admin",
        "deptId": 7,
        "deptName": "公共部门",
        "isPublic": 1,
        "fileCategory": "rule",
        "status": 1,
        "auditStatus": 1,
        "processStatus": "INDEXED",
        "examStatus": "GENERATED",
        "processStepStatus": "COMPLETED",
        "processStepMessage": "全部流程完成",
        "processMessage": "生成成功共10道题",
        "createTime": "2026-05-07 11:00:23",
        "updateTime": "2026-05-28 17:07:53"
      }
    ],
    "pageNum": 1,
    "pageSize": 10
  }
}

2.2 查询单个文件详情

接口地址GET /api/file/{id}

功能描述根据文件ID查询文件详细信息

路径参数

参数名 类型 必填 说明
id Long 文件ID

请求示例

GET /api/file/21

成功响应HTTP 200

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 21,
    "fileName": "1.docx",
    "filePath": "resources/rule/总公司/南京分公司/公共部门/1/v1/1.docx",
    "fileSize": 483352,
    "fileType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
    "extension": ".docx",
    "uploadUserId": 1,
    "uploadUserName": "admin",
    "deptId": 7,
    "deptName": "公共部门",
    "isPublic": 1,
    "fileCategory": "rule",
    "status": 1,
    "auditStatus": 1,
    "processStatus": "INDEXED",
    "examStatus": "GENERATED",
    "processStepStatus": "COMPLETED",
    "processStepMessage": "全部流程完成",
    "processMessage": "生成成功共10道题",
    "createTime": "2026-05-07 11:00:23",
    "updateTime": "2026-05-28 17:07:53"
  }
}

失败响应HTTP 404

{
  "code": 404,
  "message": "文件不存在",
  "data": null
}

2.3 上传文件

接口地址POST /api/file/upload

功能描述:上传文件到服务器,支持个人文件和部门制度文件

Content-Typemultipart/form-data

请求参数

参数名 类型 必填 说明
file MultipartFile 文件对象
targetDeptId Long 目标部门ID上传到指定部门
isPublic Boolean 是否公开默认true

请求示例

POST /api/file/upload
Content-Type: multipart/form-data

file: <文件二进制数据>
targetDeptId: 7
isPublic: true

成功响应HTTP 200

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 45,
    "fileName": "新建文档.docx",
    "filePath": "resources/personal/user1/新建文档/v1/新建文档.docx",
    "fileSize": 12288,
    "extension": ".docx",
    "uploadUserId": 1,
    "uploadUserName": "admin",
    "deptId": 1,
    "deptName": "技术部",
    "isPublic": 1,
    "fileCategory": "personal",
    "status": 1,
    "auditStatus": 1,
    "processStatus": "PENDING",
    "examStatus": "UNGENERATED",
    "processStepStatus": "UPLOADED",
    "processStepMessage": "文件已上传",
    "createTime": "2026-05-29 10:30:00",
    "updateTime": "2026-05-29 10:30:00"
  }
}

2.4 删除文件

接口地址DELETE /api/file/{id}

功能描述根据文件ID删除文件

路径参数

参数名 类型 必填 说明
id Long 文件ID

请求示例

DELETE /api/file/45

成功响应HTTP 200

{
  "code": 200,
  "message": "删除成功",
  "data": null
}

3. 响应字段说明

3.1 FileVO 字段详情

字段名 类型 说明
id Long 文件唯一标识
fileName String 文件名
filePath String 文件存储路径
fileSize Long 文件大小(字节)
fileType String MIME类型
extension String 文件扩展名
uploadUserId Long 上传用户ID
uploadUserName String 上传用户名
deptId Long 所属部门ID
deptName String 所属部门名称
isPublic Integer 是否公开0-私有1-公开)
fileCategory String 文件分类personal-个人rule-制度)
status Integer 文件状态0-禁用1-启用)
auditStatus Integer 审核状态0-待审核1-已通过)
processStatus String 向量化状态
examStatus String 题目生成状态
processStepStatus String 流程状态(新增)
processStepMessage String 流程状态描述(新增)
processMessage String 处理信息/错误消息
createTime String 创建时间
updateTime String 更新时间

4. 状态字段说明

4.1 processStepStatus流程状态 - 新增)

说明
UPLOADED 文件已上传
VECTORIZING 正在向量化
VECTORIZED 向量化完成
VECTORIZE_FAILED 向量化失败
EXAM_GENERATING 正在生成题目
EXAM_GENERATED 题目生成完成
EXAM_GENERATE_FAILED 题目生成失败
COMPLETED 全部流程完成

4.2 processStatus向量化状态

说明
PENDING 未入库
INDEXED 已入库
VECTORIZING 正在向量化
FAILED 失败

4.3 examStatus题目生成状态

说明
UNGENERATED 未出题
GENERATING 出题中
GENERATED 已有题目
FAILED 出题失败

5. 状态流转图

文件上传
    ↓
UPLOADED (文件已上传)
    ↓
VECTORIZING (正在向量化)
    ↓
VECTORIZED (向量化完成)
    ↓
EXAM_GENERATING (正在生成题目)
    ↓
EXAM_GENERATED (题目生成完成)
    ↓
COMPLETED (全部流程完成) ✓

失败路径:
VECTORIZING → VECTORIZE_FAILED (向量化失败)
EXAM_GENERATING → EXAM_GENERATE_FAILED (题目生成失败)

6. 前端展示建议

6.1 状态映射函数

// 根据流程状态显示对应文案
function getStatusText(status) {
  const statusMap = {
    'UPLOADED': '文件已上传',
    'VECTORIZING': '正在向量化...',
    'VECTORIZED': '向量化完成',
    'VECTORIZE_FAILED': '向量化失败',
    'EXAM_GENERATING': '正在生成题目...',
    'EXAM_GENERATED': '题目生成完成',
    'EXAM_GENERATE_FAILED': '题目生成失败',
    'COMPLETED': '已完成'
  };
  return statusMap[status] || '未知状态';
}

// 获取状态对应的颜色
function getStatusColor(status) {
  const colorMap = {
    'UPLOADED': '#6B7280',
    'VECTORIZING': '#3B82F6',
    'VECTORIZED': '#8B5CF6',
    'VECTORIZE_FAILED': '#EF4444',
    'EXAM_GENERATING': '#F59E0B',
    'EXAM_GENERATED': '#10B981',
    'EXAM_GENERATE_FAILED': '#EF4444',
    'COMPLETED': '#10B981'
  };
  return colorMap[status] || '#6B7280';
}

6.2 展示示例

<!-- 文件状态标签 -->
<span 
  class="status-tag" 
  :style="{ backgroundColor: getStatusColor(file.processStepStatus) }"
>
  {{ getStatusText(file.processStepStatus) }}
</span>

<!-- 状态详情 -->
<div v-if="file.processStepMessage">
  {{ file.processStepMessage }}
</div>

7. 错误码说明

错误码 说明
401 用户未登录或Token无效
403 无权限访问该文件
404 文件不存在
500 服务器内部错误

8. 接口实现位置


版本V2.12.0
生成时间2026-05-29