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
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、公网接口或依赖变化;未暂存、未提交、未推送。