新增业务外部接口日志管理

This commit is contained in:
wkc
2026-07-20 15:35:54 +08:00
parent 0a0313af7c
commit 2d9828ea5f
39 changed files with 1603 additions and 497 deletions

View File

@@ -0,0 +1,26 @@
# 业务外部接口日志后端实施计划
## 目标
在不改变业务外部接口调用结果的前提下统一记录流水分析与征信解析请求的发起用户、完整请求、原始响应、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反序列化丢失。
- 异步任务在线程安全上下文清理后仍保存最初发起用户,不同用户连续任务不串号。
- 未授权用户不能访问接口日志列表和详情。
- 日志入库失败不影响外部接口返回或原始业务异常。

View File

@@ -0,0 +1,23 @@
# 业务外部接口日志前端实施计划
## 目标
在“系统管理 > 日志管理”下新增“接口日志”页面,以紧凑列表和独立详情展示业务外部接口调用情况及完整请求响应。
## 实施内容
1. 新增`src/api/monitor/apilog.js`,封装分页列表和详情接口。
2. 新增`src/views/monitor/apilog/index.vue`支持接口地址、HTTP方法、HTTP调用状态和调用时间筛选。
3. 列表展示日志编号、调用账号、接口地址、HTTP方法、HTTP状态、HTTP调用状态、耗时和调用时间。
4. 详情按需二次加载展示调用账号和用户ID、URL、Content-Type、请求头、请求参数、响应头、原始返回正文和异常。
5. 请求响应长文本使用等宽字体和固定最大高度可解析的JSON基于原始字符串进行无损结构美化并按2空格缩进展示不将数值反序列化后再输出普通文本保留原始换行长字段按容器自动折行使用文本插值禁止`v-html`
6. 页面只提供查询和详情,不增加删除、清空或导出操作。
7. 详情弹窗使用响应式宽度和桌面最大宽度长URL和长文本不得撑破页面。
## 验证标准
- 使用项目`.nvmrc`切换Node版本后生产构建通过。
- 管理员可从真实系统菜单进入接口日志页,列表、筛选、分页和详情正常。
- 成功、失败、空响应和超长响应均能稳定展示JSON缩进、超大整数原值、中文、原始换行和长字段自动折行正确。
- 外部响应中的HTML只作为文本显示不产生脚本或页面节点。
- 未授权用户看不到详情入口且直接请求详情接口被拒绝。