面试结束之后发生了什么:答题回放、报告和雷达图生成 最后一题结束报告就已经完整了吗题目 flow 到达COMPLETED只说明答题推进走到了末尾。报告还需要汇总题目、回答轮次、建议、分数、面试方向和神态评价等材料。读代码时我会把“结束答题”和“收口报告”当成两个步骤。finalize 如何把运行态变成记录InterviewRecordServiceImpl.saveInterviewRecordFromRedis先按 session 获取 finalize 锁再保存一次报告快照。如果会话尚未FINISHED它会更新会话结束状态和时间然后再次保存记录让最终报告包含结束后的状态。流程带有有限重试并在finally释放锁。分数不是只从 Redis 取一次实现按请求值、缓存、既有记录、答题轮次推导和兜底值的顺序回补避免缓存丢失时把历史分数直接覆盖成零。答题轮次会被整理成回放和报告反馈报告快照还保存会话、flow、轮次和雷达图等字段供后续展示。雷达图由策略计算。当前权重实现中专业技能维度由简历和面试分组合综合潜力分按简历 25%、面试 55%、神态 20% 加权并对缺失输入重新归一化权重。缺失分数显示轴可能为 0但不等于综合分把该项当作真实的 0 分。排查报告不一致时我会分别检查 session 状态、Redis 热态、已保存轮次、Mongo runtime snapshot 和 SQL 报告记录。它们不是同一个数据副本也不是同一时刻写入。报告接口可能从快照回补字段因此“页面数字不对”要先确定是运行态错误、收口时序还是展示读取路径。我的复盘重复保存看起来不够简洁却是在状态变更前后构造报告的做法。它意味着 finalize 要有锁、幂等性和失败重试策略。接下来最值得验证的是两次保存之间进程退出时下一次 finalize 是否能把记录补齐。源码入口admin/src/main/java/com/hewei/hzyjy/xunzhi/interview/flow/report/InterviewRecordServiceImpl.javaadmin/src/main/java/com/hewei/hzyjy/xunzhi/interview/service/impl/InterviewRadarServiceImpl.javaadmin/src/main/java/com/hewei/hzyjy/xunzhi/interview/application/strategy/WeightedRadarComputationStrategy.javaadmin/src/main/java/com/hewei/hzyjy/xunzhi/interview/application/runtime/InterviewSessionRuntimeSnapshotService.java