diff --git a/backend/api-server/routes/execution.js b/backend/api-server/routes/execution.js index 96e75b04..d560820d 100644 --- a/backend/api-server/routes/execution.js +++ b/backend/api-server/routes/execution.js @@ -64,7 +64,7 @@ router.post('/:executionId/cancel', function(_req, res) { error: true, code: 'CANCEL_FORBIDDEN', reply: '🔒 执行中的操作不可取消。\n\n' + - '系统已开始执行,90+ 个自动化流程正在联动。' + + '系统已开始执行,多个自动化流程正在联动。' + '中途中断会导致数据不一致和级联故障。\n\n' + '请等待执行完成。如果结果不理想,你可以说:\n' + '「前面的我没想好,我们重新来」\n' + diff --git a/backend/api-server/services/atomic-executor.js b/backend/api-server/services/atomic-executor.js index 2f3d4d42..72c8a33e 100644 --- a/backend/api-server/services/atomic-executor.js +++ b/backend/api-server/services/atomic-executor.js @@ -23,6 +23,9 @@ var executionLock = require('../middleware/execution-lock'); var checkpoint = require('./checkpoint'); var CheckpointManager = checkpoint.CheckpointManager; +// 锁释放延迟(给前端时间拉取最终状态) +var LOCK_RELEASE_DELAY_MS = 10000; + /** * 原子执行器 * @param {string} devId - 开发者编号 @@ -109,7 +112,7 @@ AtomicExecutor.prototype.execute = async function(operationName, fn) { lock.result = result; // 延迟释放锁(给前端时间拉取最终状态) - setTimeout(function() { executionLock.releaseLock(devId); }, 10000); + setTimeout(function() { executionLock.releaseLock(devId); }, LOCK_RELEASE_DELAY_MS); return { success: true, @@ -142,7 +145,7 @@ AtomicExecutor.prototype.execute = async function(operationName, fn) { lock.state = 'failed'; lock.error = { message: e.message }; - setTimeout(function() { executionLock.releaseLock(devId); }, 10000); + setTimeout(function() { executionLock.releaseLock(devId); }, LOCK_RELEASE_DELAY_MS); return { success: false, diff --git a/backend/api-server/services/checkpoint.js b/backend/api-server/services/checkpoint.js index da9046fd..e2bdcd23 100644 --- a/backend/api-server/services/checkpoint.js +++ b/backend/api-server/services/checkpoint.js @@ -158,7 +158,7 @@ CheckpointManager.prototype.escalateToAdmin = async function(checkpoint, error) rich_text: [{ text: { content: '检查点 ' + checkpoint.id + ' (' + checkpoint.label + - ') 回滚失败: ' + error.message + '。需要冰朔人工介入。' + ') 回滚失败: ' + error.message + '。需要系统管理员人工介入。' } }] } diff --git a/backend/api-server/services/execution-watchdog.js b/backend/api-server/services/execution-watchdog.js index 4327bc1e..6d987ed9 100644 --- a/backend/api-server/services/execution-watchdog.js +++ b/backend/api-server/services/execution-watchdog.js @@ -34,9 +34,7 @@ function startWatchdog() { var activeLocks = executionLock.getActiveLocks(); var now = Date.now(); - for (var entry of activeLocks) { - var devId = entry[0]; - var lock = entry[1]; + for (var [devId, lock] of activeLocks) { if (lock.state !== 'running') continue;