"use client"; import { useEffect, useState } from "react"; import { Lightbulb } from "lucide-react"; import { listWeakSignals } from "@/lib/api-v2"; import { PageContainer, Badge, TableEmpty } from "@/components/shared/PageContainer"; import { LoadingSpinner } from "@/components/shared/LoadingSpinner"; import { EmptyState } from "@/components/shared/EmptyState"; const SIGNAL_TYPE_LABELS: Record = { technical: "技术", sentiment: "情绪", org: "组织", market: "市场", }; export default function WeakSignalsPage() { const [items, setItems] = useState[]>([]); const [isLoading, setIsLoading] = useState(true); useEffect(() => { listWeakSignals() .then((resp) => setItems((resp.data as Record[]) ?? [])) .catch(() => setItems([])) .finally(() => setIsLoading(false)); }, []); return ( {isLoading ? ( ) : items.length === 0 ? ( ) : (
{items.map((item, i) => ( ))}
类型 内容 置信度 风险概率 状态
{SIGNAL_TYPE_LABELS[item.signal_type as string] ?? item.signal_type} {item.content as string} {((item.confidence as number) * 100).toFixed(0)}% {item.risk_probability ? ( 0.6 ? "red" : (item.risk_probability as number) > 0.3 ? "amber" : "green"}> {((item.risk_probability as number) * 100).toFixed(0)}% ) : "-"} {item.status as string}
)}
); }