轻松聘AI开发
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

1.7 KiB

R01-D2 个人数据导出查询收束报告

状态:R01-D2 已完成批量查询整改、自动化验证与干净构建,待独立复验。

原问题

PersonalDataCollector 在遍历父记录时逐条查询子记录:投递状态历史、反馈、面试历史、Offer 历史、会话、消息和评分申诉历史均形成 N+1;投递列表还被重复查询两次。

整改

  • 每类父记录先收集 ID,再用 Repository IN 查询一次性读取子记录;
  • 在内存中按父 ID 分组,并继续按原父记录顺序组装,保留时间线内部升序、消息内部降序和每会话最多 10000 条的既有语义;
  • 投递列表只读取一次,同时供投递、时间线和反馈三个 section 使用;
  • 会话实体改用 findAllById,消息按全部 conversationId 一次批量读取;
  • 未改变导出 section 名称、字段、脱敏、简历文件读取或 ZIP 构建语义。

测试证据

  • PersonalDataCollectorQueryBudgetTest:3 条;
  • 投递规模 1 与 50 时,投递主查询、状态历史查询、反馈查询均固定各 1 次;
  • 面试历史、Offer 历史、会话实体、消息、申诉历史均固定为每类 1 次批量查询;旧逐条 Repository 方法明确断言为 0 次;
  • 父记录顺序与每个父记录下的时间线顺序有独立断言;
  • 定向及数据导出关联回归:19/19,Failures=0、Errors=0、Skipped=0;
  • mvn clean verify:2102/2102,Failures=0、Errors=0、Skipped=20,BUILD SUCCESS;20 项为既有环境条件跳过项,R01-D2 定向与关联测试 Skipped=0;
  • OpenAPI:176 paths / 214 operations,All checks passed。

边界

无 Flyway、表、索引、ErrorCode、公网接口或依赖变化;未暂存、未提交、未推送。