feat: 巡检增强 / 拓扑大屏 / 远程 HTTP / portable 绿色打包
Some checks failed
AI automation / Route event (push) Has been cancelled
AI automation / Hand reopened issue to maintainers (push) Has been cancelled
AI automation / Clean source issue state (push) Has been cancelled
AI automation / Reconcile handoffs (push) Has been cancelled
AI automation / Classify issue (push) Has been cancelled
AI automation / Claude Code smoke (push) Has been cancelled
AI automation / Review issue follow-up (push) Has been cancelled
AI automation / Publish issue follow-up (push) Has been cancelled
AI automation / Implement with Claude Code (push) Has been cancelled
AI automation / Publish implement PR (push) Has been cancelled
AI automation / Continue queued issue comments (push) Has been cancelled
AI automation / Codex review loop (push) Has been cancelled
AI automation / Publish Codex fix (push) Has been cancelled
AI automation / Clear Codex dispatch marker (push) Has been cancelled
AI automation / Own PR re-request Codex (push) Has been cancelled
AI automation / External PR re-request Codex (push) Has been cancelled
AI automation / Poll Codex reaction / retry (push) Has been cancelled
Some checks failed
AI automation / Route event (push) Has been cancelled
AI automation / Hand reopened issue to maintainers (push) Has been cancelled
AI automation / Clean source issue state (push) Has been cancelled
AI automation / Reconcile handoffs (push) Has been cancelled
AI automation / Classify issue (push) Has been cancelled
AI automation / Claude Code smoke (push) Has been cancelled
AI automation / Review issue follow-up (push) Has been cancelled
AI automation / Publish issue follow-up (push) Has been cancelled
AI automation / Implement with Claude Code (push) Has been cancelled
AI automation / Publish implement PR (push) Has been cancelled
AI automation / Continue queued issue comments (push) Has been cancelled
AI automation / Codex review loop (push) Has been cancelled
AI automation / Publish Codex fix (push) Has been cancelled
AI automation / Clear Codex dispatch marker (push) Has been cancelled
AI automation / Own PR re-request Codex (push) Has been cancelled
AI automation / External PR re-request Codex (push) Has been cancelled
AI automation / Poll Codex reaction / retry (push) Has been cancelled
巡检模块:巡检调度器改为轮询驱动,新增每日报告存储、告警规则独立 Store、设备 Store 解耦,_executeSnapshot 补齐 DEBUG 声明,巡检中心 与告警中心页增强。 拓扑大屏:MonitoringTopologyView 扩展分组/布局控制, useMonitoringData 重构数据流。 远程 HTTP:新增 electron/remoteHttpServer.cjs,preload/api.cjs 暴露 IPC,registerBridges 注册 netcatty:http:open 桥。 portable 绿色打包: - electron-builder.config.cjs 恢复原始白名单(61MB app.asar), 收集器自动追踪运行时依赖; - portableData.cjs 重写为 .portable 标记检测; - scripts/migratePortableLocalStorage.cjs 离线脚本把 Local Storage 的 http://localhost:5173 origin 批量迁移为 app://netcatty; - scripts/scanWorkspaceDeps.cjs 扫描 workspace 运行时依赖。
This commit is contained in:
@@ -410,12 +410,17 @@ export function ReportPage() {
|
||||
catch { toast.error("清空失败"); }
|
||||
}, [loadSnapshots]);
|
||||
|
||||
const IS_REMOTE = typeof window !== "undefined" && !!(window as any).__REMOTE_TOKEN__;
|
||||
|
||||
const handlePreviewSnapshotPdf = useCallback(async (snapshotId: string) => {
|
||||
if (IS_REMOTE) {
|
||||
const token = (window as any).__REMOTE_TOKEN__ || "";
|
||||
window.open(`/api/report-preview?mode=snapshot&id=${encodeURIComponent(snapshotId)}&token=${encodeURIComponent(token)}`, "_blank");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
// 内嵌预览(BrowserWindow + Electron PDF viewer),不存到 reports 目录
|
||||
const result = await inspectionReportApi.previewSnapshotPdf(snapshotId);
|
||||
if (!result.ok) toast.error("预览失败:" + (result.error || "未知错误"));
|
||||
// 成功的话主进程已经弹出 BrowserWindow,不用再处理
|
||||
} catch (e: any) {
|
||||
toast.error("预览失败:" + (e?.message || String(e)));
|
||||
}
|
||||
@@ -452,8 +457,12 @@ export function ReportPage() {
|
||||
}, [snapshots]);
|
||||
|
||||
const handlePreviewDailyPdf = useCallback(async (reportId: string) => {
|
||||
if (IS_REMOTE) {
|
||||
const token = (window as any).__REMOTE_TOKEN__ || "";
|
||||
window.open(`/api/report-preview?mode=daily&id=${encodeURIComponent(reportId)}&token=${encodeURIComponent(token)}`, "_blank");
|
||||
return;
|
||||
}
|
||||
try {
|
||||
// 内嵌预览(BrowserWindow + Electron PDF viewer),不存盘到 reports 目录
|
||||
const result = await inspectionDailyReportApi.previewPdf(reportId);
|
||||
if (!result.ok) toast.error("预览失败:" + (result.error || "未知错误"));
|
||||
} catch (e: any) {
|
||||
|
||||
Reference in New Issue
Block a user