feat(复习):标准思维导图生成与回忆对比
- 新增 review_standard_mind_maps / review_recall_records 数据表 - BuiltinMindMapGenerator:从报告/残片/应用场景规则生成标准导图 - MindMapAiClient 接口 + RemoteAiMindMapClient 预留 - StandardMindMapService:生成/编辑/重新生成/回忆对比 - 对比算法:标题归一化 + Bigram Jaccard 模糊匹配 - ReviewController 新增 6 个端点 - MindMapTreeTool / MindMapNode / CompareResult 工具类 - 完整单元测试(10 个,全部通过) - 更新 docs/review-module-design.md
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
package com.guo.learningprogresstracker.utils;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 思维导图结构对比结果。
|
||||
* 每个 {@link NodeDiff} 对应标准导图中的一个节点,标注其匹配状态及用户在回忆中撰写的标题。
|
||||
*/
|
||||
@Data
|
||||
public class CompareResult {
|
||||
|
||||
/** 对比后的完整树(带 MATCHED/MISSED 标注) */
|
||||
private MindMapNode matchedTree;
|
||||
|
||||
/** 用户追加但标准导图中不存在的节点 */
|
||||
private List<FlatNode> extraNodes = new ArrayList<>();
|
||||
|
||||
/** 回忆覆盖率 0-1 */
|
||||
private double recallRatio;
|
||||
|
||||
/** 命中节点数 */
|
||||
private int matchedCount;
|
||||
|
||||
/** 遗漏节点数 */
|
||||
private int missedCount;
|
||||
|
||||
/** 额外节点数 */
|
||||
private int extraCount;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public static class FlatNode {
|
||||
private String title;
|
||||
private String path; // 以 / 分隔的路径
|
||||
private String sourceType;
|
||||
private Integer sourceId;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user