refactor: 导图生成仅使用学习报告

This commit is contained in:
2026-08-03 23:08:40 +08:00
parent 3f504976ea
commit 435beaffbb
4 changed files with 5 additions and 12 deletions
+1 -1
View File
@@ -85,7 +85,7 @@ curl http://localhost:5199/ai/tasks/550e8400-e29b-41d4-a716-446655440000
| type | 说明 | params 字段 |
|------|------|------------|
| `aggregate-report` | 聚合学习残片为报告 | `taskName`, `expectation`, `fragments[]` |
| `generate-mind-map` | 生成思维导图大纲 | `taskName`, `reports[]`, `fragments[]`, `applications[]` |
| `generate-mind-map` | 生成思维导图大纲 | `taskName`, `reports[]`, `applications[]` |
| `compare-recall` | 对比用户回忆与标准导图 | `taskName`, `standardOutline`, `recallOutline` |
## 架构位置
+2 -3
View File
@@ -32,15 +32,14 @@ describe("aggregateReportPrompt", () => {
});
describe("generateMindMapPrompt", () => {
it("要求输出缩进大纲且包含全部输入", () => {
it("要求输出缩进大纲且包含学习报告", () => {
const messages = generateMindMapPrompt(
"Java 并发",
"并发编程学习",
["报告一"],
["残片一", "残片二"],
);
expect(messages[0].content).toContain("缩进");
expect(messages[1].content).toContain("报告一");
expect(messages[1].content).toContain("残片");
expect(messages[1].content).not.toContain("学习残片");
});
});
+2 -6
View File
@@ -50,20 +50,19 @@ export function aggregateReportPrompt(
}
/**
* 从学习报告和残片生成标准思维导图(预留,用于替代 Java 端 BuiltinMindMapGenerator)。
* 从学习报告生成标准思维导图(预留,用于替代 Java 端 BuiltinMindMapGenerator)。
* 输出为缩进大纲文本,与后端 MindMapTreeTool.parseOutline 格式一致。
*/
export function generateMindMapPrompt(
taskName: string,
taskDescription: string,
reports: string[],
fragments: string[],
): ChatMessage[] {
return [
{
role: "system",
content: [
"你是一名知识结构整理助手。请阅读某个学习任务的全部学习报告和残片",
"你是一名知识结构整理助手。请阅读某个学习任务的全部学习报告,",
"将其中的知识点整理成一份思维导图大纲。要求:",
"1. 第一行是导图根标题(任务主题);",
"2. 之后每行一个节点,用两个空格的缩进表示层级;",
@@ -81,9 +80,6 @@ export function generateMindMapPrompt(
"",
"学习报告:",
...reports.map((r, i) => `${i + 1}. ${r}`),
"",
"学习残片:",
...fragments.map((f, i) => `${i + 1}. ${f}`),
]
.filter(Boolean)
.join("\n"),
-2
View File
@@ -160,12 +160,10 @@ function buildMessages(task: TaskRecord) {
}
case "generate-mind-map": {
const reports = p.reports as string[] | undefined;
const fragments = p.fragments as string[] | undefined;
return generateMindMapPrompt(
p.taskName as string,
(p.taskDescription as string) ?? "",
reports ?? [],
fragments ?? [],
);
}
case "compare-recall": {