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