fix(chat): recover active requests and preserve finish order
This commit is contained in:
@@ -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'],
|
||||
);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user