feat(复习): 节点选择交互 + 移除 session 维度

- MindMapViewer 新增 selectable 模式,点击节点 emit node-select 事件
- ReviewRecall.vue 移除会话选择器,改为节点选择交互
- 支持 URL ?focusPath= 参数自动预设复习起点
- 节点选择弹窗确认后回忆导图根节点=选中节点标题
- ReviewDetail 和 Welcome 中调用 findNode API 匹配节点后跳转
- API: recallCompare 使用 focusPath 替代 sessionNum
- API: 新增 findNode 端点
This commit is contained in:
2026-07-05 18:10:42 +08:00
parent 5a5a294f06
commit 84fe452e80
6 changed files with 150 additions and 54 deletions
+15 -4
View File
@@ -23,7 +23,7 @@ export interface RecallRecord {
id: number;
taskNum: string;
standardMapId: number;
sessionNum?: string;
focusPath?: string;
recallContent: string;
compareResult: string;
recallRatio: number;
@@ -33,6 +33,12 @@ export interface RecallRecord {
createdTime: string;
}
export interface FindNodeResult {
path: string;
nodeTitle: string;
score: number;
}
/** 获取/自动生成标准思维导图 */
export const getStandardMindMap = (taskNum: string) => {
return request.get(`/review/standard-mind-map/${taskNum}`);
@@ -48,13 +54,18 @@ export const updateStandardMindMap = (taskNum: string, outline: string) => {
return request.put(`/review/standard-mind-map/${taskNum}`, { outline });
};
/** 用户提交回忆大纲,与标准导图对比(可选指定会话维度 */
export const recallCompare = (taskNum: string, recallOutline: string, sessionNum?: string) => {
/** 用户提交回忆大纲,与标准导图对比(可选指定起始节点路径 */
export const recallCompare = (taskNum: string, recallOutline: string, focusPath?: string) => {
const body: Record<string, any> = { recallOutline };
if (sessionNum) body.sessionNum = sessionNum;
if (focusPath) body.focusPath = focusPath;
return request.post(`/review/standard-mind-map/${taskNum}/recall`, body);
};
/** 在标准导图中查找与内容最匹配的节点 */
export const findNode = (taskNum: string, content: string) => {
return request.post(`/review/standard-mind-map/${taskNum}/find-node`, { content });
};
/** 获取该任务的所有回忆对比记录 */
export const listRecallRecords = (taskNum: string) => {
return request.get(`/review/standard-mind-map/${taskNum}/recall-records`);