状态灯修复: waiting_relogin/qr_expired新增强制'等待扫码'黄灯(优先于进程判定,runner等扫码时进程活着但非运行); 未知状态如实显示不再误标已收工
This commit is contained in:
@@ -339,13 +339,21 @@ app.get('/api/task-status', requireAuth, async (req, res) => {
|
||||
let s = null;
|
||||
try { s = JSON.parse(fs.readFileSync(path.join(stateDir, `state-${acct}.json`), 'utf8')); } catch (_) {}
|
||||
const isAlive = alive(acct);
|
||||
// 等待扫码优先于"进程活着=运行中": 登录过期时runner进程活着但只是在等扫码
|
||||
if (s && s.date === bjToday && (s.status === 'waiting_relogin' || s.status === 'qr_expired')) {
|
||||
out[acct] = {
|
||||
state: 'waiting', text: '等待扫码',
|
||||
detail: s.status === 'qr_expired' ? '二维码已过期,需重启任务' : (isAlive ? '登录过期,群里扫码后自动复工' : '扫码监听进程已退出,需人工处理'),
|
||||
};
|
||||
continue;
|
||||
}
|
||||
if (isAlive) { out[acct] = { state: 'running', text: '运行中', chatLeft: s && s.chatLeft }; continue; }
|
||||
if (!s || s.date !== bjToday) { out[acct] = { state: 'idle', text: '今日未运行' }; continue; }
|
||||
if (s.status === 'running') out[acct] = { state: 'stopped', text: '已停止', detail: '状态未更新(进程已退出)' };
|
||||
else if (s.status === 'stopped_by_user') out[acct] = { state: 'stopped', text: '手动停止' };
|
||||
else if (doneSet.has(s.status)) out[acct] = { state: 'done', text: '已收工', chatLeft: s.chatLeft };
|
||||
else if (errSet.has(s.status)) out[acct] = { state: 'error', text: '异常停止', detail: s.status };
|
||||
else out[acct] = { state: 'done', text: '已收工', chatLeft: s.chatLeft };
|
||||
else out[acct] = { state: 'stopped', text: `已停止(${s.status})` }; // 未知状态如实显示,不再误标"已收工"
|
||||
}
|
||||
res.json(out);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user