文件
hl-api-changelog/changelogs-v2/2026-09/16_7801_6域审核记录独立查询接口-新增接口-管理后台.md
2026-09-17 10:02:58 +08:00

6.6 KiB

schema, ticket, title, consumer, author, change_type, backend_status, gateway_status, frontend_status, frontend_owner, frontend_ref, target_release, verified_at, status_note, updated_at, base
schema ticket title consumer author change_type backend_status gateway_status frontend_status frontend_owner frontend_ref target_release verified_at status_note updated_at base
hl-changelog/v2 finance-review-logs-6domains 6 域审核记录独立查询接口(详情弹窗「审核记录」独立 tab 数据源) admin yst(GIT) 新增接口 merged verified verified mmg a84f2ffe87612e158c9c9eaffe7aabb05dee69c4 2026-09-17 6 单据域(应付款/预付款/报账款/员工借款/费用报销/业务外收支)各新增 1 个审核流水独立查询接口 GET /admin/finance/<域>/{id}/review-logs,6 域共用 FinReviewLogRespVO 8 字段,按审核发生时间升序、无记录空数组。配套原型:单据详情弹窗拆「详情信息/审核记录」两 tab(payex-detail 通用框架),审核记录 tab 数据走本接口。报账详情旧内嵌 reviewLogs 字段标 @Deprecated(保留向后兼容不回删,新接入走 §报账独立接口)。已合并 dev-v3(PR #7814)+ 部署测试服行为级验证 PASS(Flyway 6 表建齐、6 接口 200、approve 落痕可回放)。 前端 hl-admin 2026-09-17 done:五域 api 封装+ReviewLogPane 共享面板(loader/statusLabel 注入、tab 懒加载、docId 变化重拉),报账/预付款/员工借款/费用报销/业务外收支五域详情弹窗两 tab 接线齐;应付款付款单域前端页面占位未交付,封装随页面建设时补。 2026-09-17 dev-v3

6 域审核记录独立查询接口

服务: hl-order-service-v3(hl-finance 模块) 类型: 🆕 新增接口(6 个只读端点;另:报账详情出参 reviewLogs 字段标 @Deprecated,向后兼容不回删) 日期: 2026-09-16 关联: Issue #7801(PR-2)/ PR #7814 · 原型 #7805 / #7808


🔴 一句话给前端

6 类单据(应付款/预付款/报账款/员工借款/费用报销/业务外收支)的审核记录,从「详情接口内嵌字段」抽成独立的审核流水接口。单据详情弹窗拆成「详情信息 / 审核记录」两个 tab:详情信息仍走原详情接口,审核记录 tab 调本新接口。

之前 现在
审核记录来源 仅报账款有(内嵌详情出参 reviewLogs),其余 5 域无 6 域统一独立接口 GET .../review-logs
详情弹窗 审核记录混在详情里 「详情信息 / 审核记录」两 tab 分离
报账 reviewLogs 详情出参内嵌数组 标 @Deprecated(仍返回、不回删),新接入走独立接口

接口清单(6 个,结构完全一致)

# 方法 路径 域 单据不存在错误码
1 GET /admin/finance/payments/{id}/review-logs 应付款付款单 598801
2 GET /admin/finance/prepays/{id}/review-logs 预付款申请单 599001
3 GET /admin/finance/reimburses/{id}/review-logs 报账执行单 599201
4 GET /admin/finance/staff-loans/{id}/review-logs 员工借款单 599101
5 GET /admin/finance/expenses/{id}/review-logs 费用报销单 598701
6 GET /admin/finance/nonbiz-flows/{id}/review-logs 业务外收支单 598504

统一规格:

  • 路径占位 {id} = 单据主键(Long,string 序列化)
  • 返回 Result<List<FinReviewLogRespVO>>,按审核发生时间 升序,无记录返回 空数组 [](非 null、非 404)
  • 单据不存在/已软删 → 抛各域既有 NOT_FOUND 错误码(见上表),零新增错误码

出参(FinReviewLogRespVO,6 域共用)

字段 类型 说明
logId String 流水 ID(Long,string 序列化防 JS 精度丢失)
action String 审核动作(词表按域,见下)
operatorId String 操作人 ID(Long string;无登录上下文时为 null)
operatorName String 操作人真名快照(AdminContextUtil 取当前登录管理员;可空)
opinion String 审核意见(可空)
fromStatus String 操作前单据状态
toStatus String 操作后单据状态
createTime String 审核发生时间 yyyy-MM-dd HH:mm:ss

action 词表(按域实证,前端按值渲染文案)

域 action 取值
应付款 / 预付款 / 员工借款 / 费用报销 APPROVE 批准 / REJECT 驳回
业务外收支 仅 APPROVE 批准(本域无驳回动作)
报账款 APPROVE 批准 / RETURN 退回 / UN_APPROVE 反审(反向操作也留痕)

前端展示「操作」列建议:APPROVE=批准 / REJECT=驳回 / RETURN=退回 / UN_APPROVE=反审。配合 fromStatus→toStatus 可渲染「从 X 改为 Y」。


示例

请求:GET /admin/finance/payments/1962xxxxxxxxxx/review-logs

典型(有记录):

{
  "code": 0,
  "data": [
    { "logId": "2101...", "action": "REJECT", "operatorId": "1962...", "operatorName": "王芳", "opinion": "金额与行程不符", "fromStatus": "SUBMITTED", "toStatus": "REJECTED", "createTime": "2026-09-15 10:20:00" },
    { "logId": "2101...", "action": "APPROVE", "operatorId": "1962...", "operatorName": "王芳", "opinion": "重新核对无误", "fromStatus": "SUBMITTED", "toStatus": "APPROVED", "createTime": "2026-09-16 09:05:00" }
  ],
  "message": "success"
}

边界(无记录):

{ "code": 0, "data": [], "message": "success" }

异常(单据不存在):

{ "code": 598801, "data": null, "message": "付款单不存在" }

注意事项

  1. 详情两 tab 的数据分工:详情信息 tab 仍调原详情接口;审核记录 tab 调本接口。两个接口独立,可并行/懒加载(切到审核记录 tab 再调)。
  2. 报账详情 reviewLogs 已 @Deprecated:字段仍返回(向后兼容不回删),但新接入请改走 GET /admin/finance/reimburses/{id}/review-logs。字段语义与本接口一致。
  3. 追加写只增不删:审核流水是完整历史轨迹(一张单反复审核/反审全程留痕),单据本体只留最终态。不要假设最多一条。
  4. 空态:无审核记录返回空数组,前端「审核记录」tab 显示「暂无审核记录」占位即可。
  5. 审核动作在翻转单据状态的同一事务内落痕,状态翻转与留痕同生共死,不会出现「态已翻、痕没落」。

关联