refactor: AlertCenter拆分(723→390行)+修复TopologyView类型错误

- AlertCenter.tsx: 723→390行,提取类型/helpers/渠道Tab到子组件
- alert-center-helpers.tsx: 新建(127行),共享Alert/AlertRule/NotificationChannel类型+mapAlert+badge helpers
- AlertChannelDialog.tsx: 新建(121行),通知渠道创建/编辑对话框(自包含useEffect同步)
- AlertChannelsTab.tsx: 新建(152行),通知渠道Tab自包含(状态+API+渲染+CRUD)
- AlertCenterDetail.tsx: 去重getSeverityBadge,统一从helpers导入
- TopologyView.tsx: 修复editForm.type类型推断(string→TopologyNode['type'])
This commit is contained in:
attacker committed 2026-06-15 13:07:01 +08:00
1 parent 805cb767a8
commit 76a41f5eeb
6 files changed
+458 -406

No files matched your search

+2 -2
View File
@@ -46,7 +46,7 @@ export function TopologyView() {
// 编辑节点 Dialog
const [editDialogOpen, setEditDialogOpen] = useState(false);
const [editingNode, setEditingNode] = useState<TopologyNode | null>(null);
const [editForm, setEditForm] = useState({ name: '', type: 'database', note: '' });
const [editForm, setEditForm] = useState<{ name: string; type: TopologyNode['type']; note: string }>({ name: '', type: 'database', note: '' });
const loadClusters = useCallback(async () => {
try {
@@ -552,7 +552,7 @@ export function TopologyView() {
</div>
<div className="space-y-2">
<Label className="text-slate-300">类型</Label>
<Select value={editForm.type} onValueChange={(v) => setEditForm({ ...editForm, type: v })}>
<Select value={editForm.type} onValueChange={(v) => setEditForm({ ...editForm, type: v as TopologyNode['type'] })}>
<SelectTrigger className="bg-slate-800/50 border-slate-700 text-slate-200"><SelectValue /></SelectTrigger>
<SelectContent className="bg-slate-800 border-slate-700">
{CUSTOM_NODE_TYPES.map((t) => <SelectItem key={t.value} value={t.value}>{t.label} — {t.desc}</SelectItem>)}