refactor: 导图生成仅使用学习报告
This commit is contained in:
@@ -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` |
|
||||
|
||||
## 架构位置
|
||||
|
||||
@@ -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
@@ -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"),
|
||||
|
||||
@@ -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": {
|
||||
|
||||
Reference in New Issue
Block a user