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();