Files
ccdi/docs/plans/backend/2026-07-20-external-api-log-backend-implementation.md

27 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 业务外部接口日志后端实施计划
## 目标
在不改变业务外部接口调用结果的前提下统一记录流水分析与征信解析请求的发起用户、完整请求、原始响应、HTTP状态、耗时和异常并提供接口日志分页查询与详情接口。
## 实施内容
1. 新建`sys_api_log`,请求头、请求参数、响应头、响应正文和异常使用`LONGTEXT`,表和字符字段统一使用`utf8mb4_general_ci`
2.`ruoyi-system`新增独立Entity、查询DTO、列表VO、详情VO、Mapper和事务Service列表SQL不读取大字段详情按日志ID读取完整内容。
3.`ruoyi-admin`新增`/monitor/apilog/list``/monitor/apilog/{logId}`,分别校验`monitor:apilog:list``monitor:apilog:query`权限。
4.`ccdi-lsfx`新增不可变`CallerContext`,替换流水分析、征信解析和`HttpUtil`原有调用签名,所有调用方必须显式传入发起人。
5. 批量上传与拉取本行信息在提交异步任务前生成调用用户快照,并贯穿上传、拉取、轮询、状态查询和流水分页查询全链路。
6. `HttpUtil`统一获取原始响应文本后再反序列化非2xx保存状态、响应头和错误正文网络异常和解析异常同样保存失败日志。
7. 认证字段按原文保存multipart文件仅保存文件名、大小和媒体类型不读取或保存文件内容。
8. 日志写入使用`REQUIRES_NEW`事务;日志序列化或入库失败只记录应用错误,不覆盖原业务结果。
9. 通过增量SQL幂等创建表、接口日志菜单和查询权限按钮不自动写入`sys_role_menu`
10. 流水分析和征信解析测试控制器取消匿名访问,统一校验`ccdi:project:edit`,人工测试调用按当前登录用户记录,不再记为`system`
## 验证标准
- JDK 21下后端主工程编译通过。
- 全部`HttpUtil`调用类型均能保存成功或失败日志原始响应字段不因DTO反序列化丢失。
- 异步任务在线程安全上下文清理后仍保存最初发起用户,不同用户连续任务不串号。
- 未授权用户不能访问接口日志列表和详情。
- 日志入库失败不影响外部接口返回或原始业务异常。