+ {/* Headline metric: merge → JPYC arrival */}
+ {latency !== undefined && (
+
+
PR マージ → JPYC 着金
+
+ {latency.toFixed(1)}
+ 秒
+
+
+ 銀行振込の「翌月末 + 3〜5日」を、約 {latency.toFixed(1)} 秒に。
+
+
+ )}
+
+ {/* Lifecycle timeline */}
+
+
+ ライフサイクル
+
+
+ {steps.map((s) => (
+ -
+
+
+
+ {s.label}
+
+ {s.at && (
+
+ {fmt(s.at)}
+
+ )}
+
+
+ ))}
+
+
+
+ {/* AI review evidence (criteria × met × cited evidence) */}
+ {review && (
+
+
+
+ AI 検収結果
+
+
+ {review.verdict === 'approve' ? '合格' : '差し戻し'}
+ {review.qualityScore !== undefined && ` ・ ${review.qualityScore}/100`}
+
+
+
+
+ 各基準の合否を diff から根拠引用つきで判定(Foundry gpt-5.1)。
+
+
+ )}
+
+ );
+}
diff --git a/packages/dashboard/lib/api.ts b/packages/dashboard/lib/api.ts
index ca5f4e8..eee59f8 100644
--- a/packages/dashboard/lib/api.ts
+++ b/packages/dashboard/lib/api.ts
@@ -88,6 +88,26 @@ export async function createOrder(body: {
return res.json();
}
+export type OrderEvent = {
+ id: string;
+ orderId: string;
+ agent?: string;
+ type: string;
+ payload?: Record