feat: 优化任务状态与图片 MCP 提示
This commit is contained in:
@@ -39,6 +39,7 @@ function createHarness() {
|
||||
['priority-c', sessionFixture('priority-c')],
|
||||
['lifecycle-d', sessionFixture('lifecycle-d')],
|
||||
['mcp-e', sessionFixture('mcp-e')],
|
||||
['classifier-h', sessionFixture('classifier-h')],
|
||||
]);
|
||||
let statusConfig = null;
|
||||
let clockTick = 0;
|
||||
@@ -243,6 +244,27 @@ async function main() {
|
||||
assert.deepStrictEqual(queriedCustomTasks.map((task) => task.sessionId), ['ordinary-a']);
|
||||
assert.strictEqual('progress' in queriedCustomTasks[0].taskTracking, false);
|
||||
|
||||
// 自动分类器是独立审计来源,仍由 expectedVersion 负责并发门禁。
|
||||
const classifierEnabled = service.setTracking('classifier-h', true, {
|
||||
source: 'user', expectedVersion: 0,
|
||||
});
|
||||
const classifierUserMove = service.updateStatus('classifier-h', {
|
||||
statusId: 'waiting_user', expectedVersion: classifierEnabled.taskTracking.version,
|
||||
}, { source: 'user', id: 'user-h' });
|
||||
const classifierMove = service.updateStatus('classifier-h', {
|
||||
statusId: 'waiting-release',
|
||||
reason: '用户已确认继续推进',
|
||||
summary: '等待发布前的最终处理',
|
||||
expectedVersion: classifierUserMove.taskTracking.version,
|
||||
}, { source: 'classifier', id: 'task-status-classifier' });
|
||||
assert.strictEqual(classifierMove.changed, true);
|
||||
assert.strictEqual(classifierMove.taskTracking.statusId, 'waiting-release');
|
||||
assert.strictEqual(classifierMove.taskTracking.source, 'classifier');
|
||||
assert.strictEqual(classifierMove.taskTracking.version, classifierUserMove.taskTracking.version + 1);
|
||||
expectTaskError(() => service.updateStatus('classifier-h', {
|
||||
statusId: 'completed', expectedVersion: classifierUserMove.taskTracking.version,
|
||||
}, { source: 'classifier' }), 'task_version_conflict');
|
||||
|
||||
// 停用跟踪仍保留状态;迁移会覆盖启用和停用会话中的引用。
|
||||
const enabledB = service.setTracking('migration-b', true, { source: 'user', expectedVersion: 0 });
|
||||
const customTaskB = service.updateStatus('migration-b', {
|
||||
@@ -267,7 +289,8 @@ async function main() {
|
||||
'waiting-release', 'waiting_user', { source: 'user', expectedVersion: 3 },
|
||||
);
|
||||
assert.strictEqual(migration.version, 4);
|
||||
assert.deepStrictEqual(migration.migratedSessionIds.sort(), ['migration-b', 'ordinary-a']);
|
||||
assert.deepStrictEqual(migration.migratedSessionIds.sort(), ['classifier-h', 'migration-b', 'ordinary-a']);
|
||||
assert.strictEqual(service.getTask('classifier-h').taskTracking.statusId, 'waiting_user');
|
||||
assert.strictEqual(service.getTask('ordinary-a').taskTracking.statusId, 'waiting_user');
|
||||
assert.strictEqual(service.getTask('migration-b').taskTracking.statusId, 'waiting_user');
|
||||
assert.strictEqual(service.getTask('migration-b').taskTracking.enabled, false);
|
||||
|
||||
Reference in New Issue
Block a user