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