Files
leaudit-platform-frontend/auth_doc/交叉评查接口对接状态报告.md
LiangShiyong d8bba607fc fix: 1. 重新对齐交叉评查的接口。
2. 确认评查结果的接口对接。 3. 新增评查点适配省级创建的响应数据和其他用户创建的单条响应数据。  4. 文档列表的文档类型通过通用的查询接口查询文档类型。优化加载状态的时机。
2025-12-11 11:16:50 +08:00

12 KiB
Raw Permalink Blame History

交叉评查接口对接状态报告

本文档对比 auth_doc/交叉评查接口文档(1).md 中定义的10个接口与前端代码实际调用的接口情况。

生成时间:2025-12-11


一、接口总览对比

文档定义的10个接口

序号 方法 文档路径 接口名称
1 POST /api/v2/cross_review/proposals 发起评分提案
2 POST /api/v2/cross_review/proposals/{proposal_id}/votes 对提案投票
3 DELETE /api/v2/cross_review/proposals/{proposal_id} 撤销评分提案
4 POST /api/v2/cross_review/proposals/details 获取提案列表及详情
5 POST /api/v2/cross_review/proposals/document 获取指定文档的提案列表
6 POST /api/v2/cross_review/proposals/document/check_pending_votes 检查未投票用户
7 POST /api/v2/cross_review/tasks/user_tasks 获取用户参与的任务列表
8 GET /api/v2/cross_review/tasks/{task_id}/progress 获取评查任务进度
9 POST /api/v2/cross_review/tasks/{task_id}/documents 获取任务下文档列表
10 POST /api/v2/cross_review/tasks/{task_id}/documents/{document_id}/complete 确认完成文档评查

二、前端代码调用的接口清单

涉及文件

  1. app/api/cross-checking/cross-file-result.ts - 提案/意见相关操作
  2. app/api/cross-checking/cross-files.ts - 任务列表相关操作
  3. app/api/cross-checking/cross-files-upload.ts - 文件上传相关操作

三、逐一对比分析

接口 1:发起评分提案

项目 文档定义 前端实现 状态
方法 POST POST 一致
路径 /api/v2/cross_review/proposals /admin/cross_review/proposals ⚠️ 差异
文件 - cross-file-result.ts:139 -
函数 - submitCrossCheckingOpinion() -

差异说明

  • 前端使用 /admin/cross_review/proposals,缺少 /v2 版本号
  • 文档推荐使用 /api/v2/cross_review/proposals

请求参数对比

参数 文档要求 前端发送 状态
document_id int, 必填 发送
evaluation_point_id int, 必填 发送
proposed_score float, 必填 发送
reason string, 必填 发送
proposer_id int, 必填 发送
evaluation_result_id int, 必填 发送

接口 2:对提案投票

项目 文档定义 前端实现 状态
方法 POST POST 一致
路径 /api/v2/cross_review/proposals/{proposal_id}/votes /admin/cross_review/proposals/{opinionId}/votes ⚠️ 差异
文件 - cross-file-result.ts:321-333 -
函数 - performOpinionAction() (agree/disagree/withdraw_vote) -

差异说明

  • 前端使用 /admin/cross_review/proposals/{id}/votes,缺少 /v2 版本号

请求参数对比

参数 文档要求 前端发送 状态
vote_type string (agree/disagree/cancel), 必填 发送
voter_id int, 必填 发送

接口 3:撤销评分提案

项目 文档定义 前端实现 状态
方法 DELETE DELETE 一致
路径 /api/v2/cross_review/proposals/{proposal_id} /admin/cross_review/proposals/{opinionId} ⚠️ 差异
文件 - cross-file-result.ts:338 -
函数 - performOpinionAction() (withdraw_opinion) -

差异说明

  • 前端使用 /admin/cross_review/proposals/{id},缺少 /v2 版本号

接口 4:获取提案列表及详情

项目 文档定义 前端实现 状态
方法 POST - 未实现
路径 /api/v2/cross_review/proposals/details - -
说明 获取当前用户需要处理的所有待投票提案列表 - -

备注:此接口用于获取用户需要投票的待处理提案,前端目前未调用此接口。


接口 5:获取指定文档的提案列表

项目 文档定义 前端实现 状态
方法 POST POST 一致
路径 /api/v2/cross_review/proposals/document /admin/cross_review/proposals/document ⚠️ 差异
文件 - cross-file-result.ts:199 -
函数 - getCrossCheckingOpinions() -

差异说明

  • 前端使用 /admin/cross_review/proposals/document,缺少 /v2 版本号

请求参数对比

参数 文档要求 前端发送 状态
document_id int, 必填 发送
page int, 选填, 默认1 发送
page_size int, 选填, 默认10 发送
user_id - (文档未要求) ⚠️ 发送 ⚠️ 多余参数

接口 6:检查未投票用户

项目 文档定义 前端实现 状态
方法 POST POST 一致
路径 /api/v2/cross_review/proposals/document/check_pending_votes /admin/cross_review/proposals/document/check_pending_votes ⚠️ 差异
文件 - cross-file-result.ts:474 -
函数 - checkProposalVotes() -

差异说明

  • 前端使用 /admin/cross_review/proposals/document/check_pending_votes,缺少 /v2 版本号

请求参数对比

参数 文档要求 前端发送 状态
document_id int, 必填 发送

接口 7:获取用户参与的任务列表

项目 文档定义 前端实现 状态
方法 POST POST 一致
路径 /api/v2/cross_review/tasks/user_tasks /admin/v2/cross_review/tasks/user_tasks 正确
文件 - cross-files.ts:406 -
函数 - getUserTaskDocuments() -

说明:此接口已正确使用 /v2 版本号路径。

请求参数对比

参数 文档要求 前端发送 状态
page int, 选填, 默认1 发送
page_size int, 选填, 默认10 发送

接口 8:获取评查任务进度

项目 文档定义 前端实现 状态
方法 GET - 未实现
路径 /api/v2/cross_review/tasks/{task_id}/progress - -
说明 根据任务ID获取评查进度详情 - -

备注:前端目前通过 getUserTaskDocuments 接口返回的 progress 字段获取进度,未单独调用此接口。


接口 9:获取任务下文档列表

项目 文档定义 前端实现 状态
方法 POST POST 一致
路径 /api/v2/cross_review/tasks/{task_id}/documents /admin/v2/cross_review/tasks/{taskId}/documents 正确
文件 - cross-files.ts:448 -
函数 - getTaskDocuments() -

说明:此接口已正确使用 /v2 版本号路径。

请求参数对比

参数 文档要求 前端发送 状态
page int, 选填, 默认1 发送
page_size int, 选填, 默认10 发送
file_type_ids array[int], 选填 未发送 ⚠️ 未使用
date_from string, 选填 未发送 ⚠️ 未使用
date_to string, 选填 未发送 ⚠️ 未使用
keyword string, 选填 未发送 ⚠️ 未使用
order string, 选填 未发送 ⚠️ 未使用

接口 10:确认完成文档评查

项目 文档定义 前端实现 状态
方法 POST POST 一致
路径 /api/v2/cross_review/tasks/{task_id}/documents/{document_id}/complete /admin/v2/cross_review/tasks/{task_id}/documents/{document_id}/complete 正确
文件 - cross-file-result.ts:417 -
函数 - confirmReviewResults(taskId, documentId, jwtToken) -

说明:此接口已正确使用 /v2 版本号路径,并包含 task_iddocument_id 参数。

已于 2025-12-11 修复完成。


四、其他前端调用但文档未定义的接口

1. 创建交叉评查任务 (upload相关)

项目 前端实现
方法 POST
路径 /admin/cross_review/tasks/assign
文件 cross-files-upload.ts:316
函数 createCrossReviewTask()

说明:此接口用于创建交叉评查任务并分配用户,在本文档10个接口中未定义。

2. 上传并分配文件

项目 前端实现
方法 POST
路径 ${UPLOAD_URL}/cross_review/documents/upload_and_assign
文件 cross-files-upload.ts:233
函数 batchUploadAndAssignCrossCheckingFiles()

说明:此接口用于批量上传文件并分配交叉评查任务,在本文档10个接口中未定义。

3. PostgREST 直接查询

项目 前端实现
路径 /api/postgrest/proxy/cross_examination_tasks
文件 cross-file-result.ts:93
函数 findIsProposer()

说明:直接通过 PostgREST 查询数据库表,未走统一的 API 接口。

4. PostgREST 直接查询文档类型

项目 前端实现
路径 /api/postgrest/proxy/document_types
文件 cross-files.ts:529
函数 getCrossCheckingDocumentTypes()

说明:直接通过 PostgREST 查询数据库表获取文档类型。


五、总结

对接状态统计

状态 数量 百分比
已正确对接 3 30%
⚠️ 路径差异(缺少v2 5 50%
未实现 2 20%

需要修复的问题

🟡 中优先级(建议修复)

  1. 统一使用 /api/v2/admin/v2 前缀
    • 接口 1、2、3、5、6 使用了旧路径 /admin/cross_review/...
    • 建议统一改为 /admin/v2/cross_review/.../api/v2/cross_review/...

🟢 低优先级(可选实现)

  1. 接口4:获取提案列表及详情

    • 当前未实现,如需要在其他页面展示待投票提案列表可实现
  2. 接口8:获取评查任务进度

    • 当前通过任务列表接口获取进度,如需单独获取可实现
  3. 接口9:增加筛选参数支持

    • getTaskDocuments() 未支持 file_type_idsdate_fromdate_tokeywordorder 等筛选参数

六、修复建议代码示例

统一路径前缀

建议在 api-config.ts 中定义:

// api-config.ts
export const CROSS_REVIEW_API_PREFIX = '/admin/v2/cross_review';

然后在各接口中使用:

// cross-file-result.ts
import { API_BASE_URL, CROSS_REVIEW_API_PREFIX } from '../../config/api-config';

// 使用示例
const response = await axios.post(
  `${API_BASE_URL}${CROSS_REVIEW_API_PREFIX}/proposals`,
  requestData,
  { headers: { ... } }
);

报告生成完毕