From cf34b9a8edd5aca090f2fff8bd4220d74b99ec69 Mon Sep 17 00:00:00 2001 From: Harmon Date: Sat, 18 Apr 2026 20:22:58 +0800 Subject: [PATCH] refactor(frontend): simplify ops health result catalog section --- frontend/src/HealthCheckPanel.jsx | 62 ++++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 2 deletions(-) diff --git a/frontend/src/HealthCheckPanel.jsx b/frontend/src/HealthCheckPanel.jsx index 05a10f1..eb7277f 100644 --- a/frontend/src/HealthCheckPanel.jsx +++ b/frontend/src/HealthCheckPanel.jsx @@ -7,7 +7,6 @@ import { syncWaterScenesFromDisk } from './api/water'; import { listEngines, runWslCheck } from './api/dinsarProduction'; import { getOrbitStatus, syncOrbitPools } from './api/orbit'; import LogManagementPanel from './LogManagementPanel.clean'; -import DinsarCatalogPanel from './components/DinsarCatalogPanel'; const toNumber = (value) => { const parsed = Number(value); @@ -39,6 +38,29 @@ const formatIntegerText = (value) => { return Number.isFinite(parsed) ? parsed.toLocaleString() : '0'; }; +const isCatalogHealthy = (catalog) => { + if (!catalog || typeof catalog !== 'object') { + return false; + } + if (catalog.enabled === false) { + return true; + } + return Boolean(catalog.ok) && !catalog.needs_rebuild; +}; + +const formatCatalogStatusLabel = (catalog, en = false) => { + if (!catalog || typeof catalog !== 'object') { + return en ? 'Unknown' : '未知'; + } + if (catalog.enabled === false) { + return en ? 'Disabled' : '已禁用'; + } + if (catalog.needs_rebuild) { + return en ? 'Rebuild required' : '需要重建'; + } + return catalog.catalog_status || (en ? 'Unknown' : '未知'); +}; + const getOrbitSourcePath = (item) => item?.source || item?.source_path || ''; const hasOrbitCorruptionSignal = (item) => Boolean( @@ -312,6 +334,9 @@ const HealthCheckPanel = ({ language = 'zh', currentUser }) => { const formatPathText = (value) => value || (en ? 'Not configured' : '未配置'); const databaseStatus = status?.database || {}; const dinsarBridge = asObject(status?.dinsar_bridge); + const dinsarResultCatalog = asObject(status?.dinsar_result_catalog || status?.result_catalog); + const dinsarCatalogNeedsRebuild = + typeof dinsarResultCatalog.needs_rebuild === 'boolean' ? dinsarResultCatalog.needs_rebuild : null; const sourceRoots = asObject(status?.source_roots); const pairingSystem = asObject(status?.pairing_system); const sourceRootItems = asArray(sourceRoots.items); @@ -556,7 +581,40 @@ const HealthCheckPanel = ({ language = 'zh', currentUser }) => { )} - +
+
{en ? 'D-InSAR Result Catalog' : 'D-InSAR 结果目录'}
+
+ {en ? 'Catalog status' : '目录状态'} + {renderBadge( + isCatalogHealthy(dinsarResultCatalog), + formatCatalogStatusLabel(dinsarResultCatalog, en) + )} +
+
+ {en ? 'Needs rebuild' : '需要重建'} + {renderBadge( + dinsarCatalogNeedsRebuild === false, + dinsarCatalogNeedsRebuild === null + ? (en ? 'Unknown' : '未知') + : (dinsarCatalogNeedsRebuild ? (en ? 'Yes' : '是') : (en ? 'No' : '否')) + )} +
+
+ {en ? 'Manifest / DB' : 'Manifest / 数据库'} + + {toNumber(dinsarResultCatalog.manifest_count)} / {toNumber(dinsarResultCatalog.db_count)} + +
+
+ {en ? 'Issue count' : '问题数量'} + {toNumber(dinsarResultCatalog.issue_count)} +
+
+ {en + ? 'Full directory details and maintenance actions remain in the D-InSAR Products workspace.' + : '完整目录详情和维护操作已保留在 “D-InSAR 产物工作台”,不再在自检页展开。'} +
+
{en ? 'Pairing System' : '配对系统'}