diff --git a/landing/app/mira/feed/page.tsx b/landing/app/mira/feed/page.tsx index 0028dfe..9e0a7b2 100644 --- a/landing/app/mira/feed/page.tsx +++ b/landing/app/mira/feed/page.tsx @@ -1139,6 +1139,18 @@ function DocCard({ · + {(() => { + const badge = ( + + ); + return !showMira && mainBlocksList[0] + ? (<>·{badge}) + : null; + })()} @@ -2046,6 +2058,81 @@ function SourceBadge({ source }: { source: string }) { ); } +// WikiStatusBadge:顯示這篇 raw 是否已合成 wiki +// - ✅ 已合成(tags 含 wiki-processed) +// - ⏳ 處理中(< 6 分鐘前貼,可能還沒被 cron 撈到 / wiki_synthesis 正在跑) +// - ○ 排隊中(> 6 分鐘但 < 30 分鐘,等下一個 cron tick) +// - ⚠️ 可能漏了(> 30 分鐘還沒處理) +// 對應 leo 2026-05-17 反饋:「沒有符號顯示是否已建立 wiki」 +function WikiStatusBadge({ + mainBlock, + createdAt, + showMira, +}: { + mainBlock: KBDBBlock | undefined; + createdAt: number | string; + showMira: boolean; +}) { + // Mira 自己貼的(type=wiki-page)就是 wiki,不需要狀態 + if (showMira) return null; + if (!mainBlock) return null; + + let processed = false; + try { + const tags = JSON.parse(mainBlock.tags_json || '[]') as string[]; + processed = Array.isArray(tags) && tags.includes('wiki-processed'); + } catch { + // ignore + } + + if (processed) { + return ( + + ✅ wiki + + ); + } + + const ageMs = Date.now() - toDate(createdAt).getTime(); + const minutes = ageMs / 60_000; + + if (minutes < 6) { + return ( + + ⏳ 處理中 + + ); + } + if (minutes < 30) { + return ( + + ○ 排隊 + + ); + } + return ( + + ⚠️ 漏了? + + ); +} + function RelTime({ when }: { when: number | string }) { const d = toDate(when); const now = Date.now();