fix(chat): recover active requests and preserve finish order

This commit is contained in:
john
2026-07-16 21:04:32 +08:00
parent 933466c8ab
commit c1012da120
4 changed files with 65 additions and 3 deletions
+30
View File
@@ -80,3 +80,33 @@ test('mergeConversationSnapshot keeps local messages before the first and after
['u0', 'u1', 'a1', 'a2'],
);
});
test('mergeConversationSnapshot keeps local-only messages at their streamed position', () => {
const local = [
msg('u1', 'user', '生成页面'),
msg('a1', 'assistant', '开始分析'),
msg('a2', 'assistant', '调用工具'),
msg('a3', 'assistant', '页面完成'),
];
const server = [
msg('u1', 'user', '生成页面'),
msg('a3', 'assistant', '页面完成(服务端)'),
];
const merged = mergeConversationSnapshot(local, server);
assert.deepEqual(merged.map((message) => message.id), ['u1', 'a1', 'a2', 'a3']);
assert.equal(merged[3].content[0].text, '页面完成(服务端)');
});
test('mergeConversationSnapshot preserves multiple local messages before the next server anchor', () => {
const local = [
msg('u1', 'user', '任务'),
msg('a1', 'assistant', '步骤一'),
msg('a2', 'assistant', '步骤二'),
msg('a3', 'assistant', '完成'),
];
const server = [msg('u1', 'user', '任务'), msg('a3', 'assistant', '完成')];
assert.deepEqual(
mergeConversationSnapshot(local, server).map((message) => message.id),
['u1', 'a1', 'a2', 'a3'],
);
});