feat(awooop): show source ref gap recency
All checks were successful
CD Pipeline / tests (push) Successful in 1m32s
Code Review / ai-code-review (push) Successful in 12s
CD Pipeline / build-and-deploy (push) Successful in 3m41s
CD Pipeline / post-deploy-checks (push) Successful in 2m13s

This commit is contained in:
Your Name
2026-05-25 20:12:19 +08:00
parent f30405997d
commit a8b7299d1c
7 changed files with 151 additions and 9 deletions

View File

@@ -150,6 +150,9 @@ interface CallbackReplyAuditSummary {
outbound_reply_markup_missing_incident_ref_top_prefixes?: Array<{
prefix?: string | null;
total?: number | null;
recent_24h_total?: number | null;
first_sent_at?: string | null;
last_sent_at?: string | null;
}>;
outbound_failed_total?: number;
callback_total?: number;
@@ -1984,7 +1987,22 @@ function CallbackReplyAuditSummaryPanel({
summary.outbound_reply_markup_missing_incident_ref_top_prefixes ?? []
)
.slice(0, 3)
.map((item) => `${item.prefix || "--"} ${item.total ?? 0}`)
.map((item) => {
const lastSeen = item.last_sent_at
? new Date(item.last_sent_at).toLocaleString("zh-TW", {
month: "2-digit",
day: "2-digit",
hour: "2-digit",
minute: "2-digit",
})
: "--";
return t("outboundReplyMarkupTopPrefixItem", {
prefix: item.prefix || "--",
total: item.total ?? 0,
recent: item.recent_24h_total ?? 0,
last: lastSeen,
});
})
.join(" / ") || "--";
const snapshotCoverage = formatCoveragePercent(
summary.callback_snapshot_captured_total ?? 0,