fix(mira/feed): soften wiki status badge — 30min 不算漏了

leo 反饋:『現在出現大量的漏了,是不是出錯?』
調查:watcher 一直在跑,但 cron 5min 一輪 × 一輪最多 20 raws,
21 個剛清的假處理 + 14 個歷史舊 raw 排隊處理需要多輪 cron。

舊邏輯 30 min 就標 ⚠️ 漏了 太兇,給用戶『系統壞了』錯覺。
新邏輯:
  - < 6 min:  處理中
  - 6 min ~ 6h: ○ 等待(含 ↻ 立即優先)   ← 新增
  - > 6h: ⚠️ 漏了 ↻ (跟 wiki_giveup_scanner 6h 閾值對齊)
  - wiki-give-up tag: 🚫 放棄 ↻

對齊 scanner 邏輯:6h 前 watcher 仍會自動重試,這時間內顯示等待。
過 6h 才算真卡。
This commit is contained in:
2026-05-17 19:22:21 +08:00
parent c950778fdf
commit 3de4cff014
+23 -4
View File
@@ -2168,18 +2168,37 @@ function WikiStatusBadge({
</span>
);
}
if (minutes < 30) {
// 6min ~ 6hwatcher 仍會持續重試(一輪 20 個,多 raws 時要排幾輪)
// 顯示 ○ 等待 + 可選 ↻ 強制立即重試(不等下個 cron tick)
if (minutes < 360) {
const ageText = minutes < 60
? `${Math.floor(minutes)} 分鐘`
: `${Math.floor(minutes / 60)} 小時`;
return (
<span title="排隊中等下一個 cron tick (5 分鐘一次)" style={{ color: '#aaa', fontSize: '0.85em' }}>
<span
title={`已等 ${ageText} — watcher cron 5min 一輪,多筆排隊時要多輪。點 ↻ 立即優先處理`}
style={{ color: '#aaa', fontSize: '0.85em', display: 'inline-flex', gap: 4, alignItems: 'center' }}
>
<button
onClick={handleRetry}
disabled={retrying}
style={{
background: 'transparent', border: 'none', color: '#888',
fontSize: '0.85em', padding: 0, cursor: 'pointer',
}}
>
{retrying ? '…' : '↻'}
</button>
</span>
);
}
// > 6hscanner 即將(或已)標 wiki-give-up,可確認真卡了
return (
<button
onClick={handleRetry}
disabled={retrying}
title={`${Math.floor(minutes)} 分鐘未處理 — cron 應該已試多次。點擊強制重試一次`}
title={`${Math.floor(minutes / 60)} 小時未處理 — cron 試過很多次都失敗。點擊強制重試`}
style={{
background: 'transparent', border: '1px solid #c66', color: '#c66',
fontSize: '0.85em', padding: '0 6px', borderRadius: 4, cursor: 'pointer',