fix: dedupe task timeline milestones
This commit is contained in:
@ -221,4 +221,52 @@ describe('buildTaskTimelineCards', () => {
|
||||
|
||||
expect(cards.map((card) => card.id)).toEqual(['task-1:created', 'evt-invalid-date']);
|
||||
});
|
||||
|
||||
it('dedupes synthetic result and acceptance milestones when lifecycle events exist', () => {
|
||||
const task = makeTask({
|
||||
is_open: false,
|
||||
status: 'closed',
|
||||
updated_at: '2026-05-26T10:04:00.000Z',
|
||||
closed_at: '2026-05-26T10:04:00.000Z',
|
||||
feedback: [
|
||||
{
|
||||
acceptance_type: 'accept',
|
||||
comment: '可以',
|
||||
created_at: '2026-05-26T10:05:00.000Z',
|
||||
run_id: 'run-main',
|
||||
},
|
||||
],
|
||||
});
|
||||
const processEvents: ProcessEvent[] = [
|
||||
{
|
||||
event_id: 'evt-result-ready',
|
||||
run_id: 'run-main',
|
||||
parent_run_id: null,
|
||||
kind: 'task_result_ready',
|
||||
actor_type: 'agent',
|
||||
actor_id: 'main-agent',
|
||||
actor_name: 'Main Agent',
|
||||
text: 'Result is ready.',
|
||||
created_at: '2026-05-26T10:04:00.000Z',
|
||||
},
|
||||
{
|
||||
event_id: 'evt-acceptance-recorded',
|
||||
run_id: 'run-main',
|
||||
parent_run_id: null,
|
||||
kind: 'task_acceptance_recorded',
|
||||
actor_type: 'system',
|
||||
actor_id: 'task-system',
|
||||
actor_name: 'Task System',
|
||||
text: '可以',
|
||||
created_at: '2026-05-26T10:05:00.000Z',
|
||||
},
|
||||
];
|
||||
|
||||
const cards = buildTaskTimelineCards({ task, processEvents });
|
||||
|
||||
expect(cards.filter((card) => card.type === 'result')).toHaveLength(1);
|
||||
expect(cards.filter((card) => card.type === 'acceptance')).toHaveLength(1);
|
||||
expect(cards.map((card) => card.id)).toContain('evt-result-ready');
|
||||
expect(cards.map((card) => card.id)).toContain('evt-acceptance-recorded');
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user