PR REVIEW EVIDENCE

feat(api-log): 接口访问日志记录响应字节数

hemo-backend #1389

  1. PR 提交时间2026-10-10 21:49:36
  2. 审核结束时间2026-10-10 21:53:16
  3. 固定版本bbbd0c06f1d6
  4. 模型链gpt-5.6-terra
  5. 门禁blocked
  6. 结果success

难度分

36
  • code_volume24改动集中在一个过滤器、一个新增包装器、一次日志插入扩展和对应测试。
  • architecture_complexity36涉及 Servlet 响应输出、异步请求、Redis 缓冲和日志库批量写入的跨层衔接。
  • domain_knowledge34需要理解 Servlet 输出流、字符编码和访问日志字段的语义。
  • impact_scope50访问日志过滤器覆盖接口响应,变更会影响所有进入该过滤器的请求日志。
  • risk_level42主要风险在响应输出包装兼容性、计量准确性以及新增日志字段与数据库结构的一致性。

完成分

98
  • correctness95最终风险固定扣分:low 1×5;合计 -5
  • completeness100本次静态审核未发现该维度的确认问题;不代表绝对完善
  • code_quality100本次静态审核未发现该维度的确认问题;不代表绝对完善
  • security100本次静态审核未发现该维度的确认问题;不代表绝对完善
  • details100本次静态审核未发现该维度的确认问题;不代表绝对完善

固定范围

目标分支 SHA
910268048ae9cc79789cd652a40c4fc5f3117e5b
共同祖先 SHA
910268048ae9cc79789cd652a40c4fc5f3117e5b
PR head SHA
bbbd0c06f1d69934a6a9ee71a260db9113cc7ef7
轻量检查
passed · 轻量检查通过

风险与证据

low · 已确认 · 已计入完成分

分段字符写入会使响应字节数统计失真

使用字符输出响应的接口在特定字符集或跨写入片段的多字节字符场景下,流量统计可能高估或低估,导致按接口评估公网流量的结果不准确。

证据:src/main/java/com/data/hemodialysis/configer/filter/ByteCountingResponseWrapper.java:133 byteCount += new String(cbuf, off, len).getBytes(charset).length;

建议:在实际写入的字节层统计,或使用与响应 Writer 生命周期一致的 CharsetEncoder 处理跨写入状态和最终 flush,避免按单次字符片段独立编码计数。