import { qs, escapeHtml, formatDate } from "../modules/dom.js"; export function robotCardTemplate(robot) { const id = escapeHtml(robot.id); const platformClass = robot.id === "wechat" ? "wechat" : "feishu"; const platformMark = robot.id === "wechat" ? "微" : "飞"; const statusLabel = robot.configured ? "已配置" : "未配置"; const lastActivity = robot.last_test_at || robot.last_delivery_at; const activityText = lastActivity ? formatDate(lastActivity) : "尚无发送记录"; const statusText = robot.last_status === "success" ? "最近发送成功" : robot.last_status === "failed" ? "最近发送失败" : "等待首次发送"; const credential = robot.id === "wechat" ? "WECHAT_WEBHOOK_URL" : "FEISHU_WEBHOOK_URL"; const capabilities = (robot.capabilities || []) .map((capability) => `${escapeHtml(capability)}`) .join(""); return `
${escapeHtml(robot.id.toUpperCase())} ROBOT

${escapeHtml(robot.name)}群机器人

${robot.id === "wechat" ? "群聊 Markdown 与告警截图" : "群聊交互卡片与签名校验"}

${statusLabel}
${capabilities}
成功投递${robot.delivered}
失败${robot.failed}
连接测试${robot.tests}
${statusText}${activityText}
服务端配置${credential}${robot.id === "feishu" ? " / FEISHU_SECRET" : ""}
${robot.last_error ? `

${escapeHtml(robot.last_error)}

` : ""}
`; } export function renderRobots(payload = { robots: [], summary: {} }, policy = {}) { const robots = payload.robots || []; const summary = payload.summary || {}; qs("#robotTotalCount").textContent = String(summary.total || robots.length); qs("#robotConfiguredCount").textContent = String(summary.configured || 0); qs("#robotDeliveredCount").textContent = String(summary.delivered || 0); qs("#robotFailedCount").textContent = String(summary.failed || 0); qs("#robotNavCount").textContent = String(summary.configured || 0); qs("#robotPolicyConfirm").textContent = `${policy.confirm_frames || 3} 帧连续命中后发送`; qs("#robotPolicyCooldown").textContent = `${policy.cooldown_seconds || 60} 秒内同类不重复发送`; qs("#robotCardGrid").innerHTML = robots.length ? robots.map(robotCardTemplate).join("") : '
暂无机器人通道数据
'; }