- CompareResult.java:新增 evaluation 字段(AI 对比时写入评价文本) - AiServiceClient.java:新增 compareRecall(),调用 lpt-ai /ai/compare-recall - StandardMindMapServiceImpl.java:recallCompare() 中注入 AiServiceClient, 优先 try AI 语义对比,含层级上下文和同义表达识别; AI 不可用或失败时自动 fallback 到内置标题匹配算法 - StandardMindMapServiceImplTest.java:适配新增的 AiServiceClient 依赖
48 lines
1.2 KiB
Java
48 lines
1.2 KiB
Java
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;
|
|
|
|
/** AI 评价文本(仅 AI 对比时有值,内置对比为 null) */
|
|
private String evaluation;
|
|
|
|
@Data
|
|
@NoArgsConstructor
|
|
@AllArgsConstructor
|
|
public static class FlatNode {
|
|
private String title;
|
|
private String path; // 以 / 分隔的路径
|
|
private String sourceType;
|
|
private Integer sourceId;
|
|
}
|
|
}
|