import { type FC, useEffect, useState } from 'react' import clsx from 'clsx' import { useTranslation } from 'react-i18next' import { useParams, useNavigate } from 'react-router-dom' import { Skeleton } from 'antd'; import RbCard from '@/components/RbCard/Card' import Empty from '@/components/Empty'; import { getNodeStatistics, } from '@/api/memory' import type { NodeStatisticsItem } from '../types' const BG_LIST = [ 'rb:bg-[linear-gradient(316deg,rgba(21,94,239,0.06)_0%,rgba(251,253,255,0)_100%)]', 'rb:bg-[linear-gradient(316deg,rgba(54,159,33,0.06)_0%,rgba(251,253,255,0)_100%)]', 'rb:bg-[linear-gradient(314deg,rgba(156,111,255,0.06)_0%,rgba(251,253,255,0)_100%)]', 'rb:bg-[linear-gradient(314deg,rgba(255,93,52,0.06)_0%,rgba(251,253,255,0)_100%)]', 'rb:bg-[linear-gradient(180deg,rgba(156,111,255,0.06)_0%,rgba(251,253,255,0)_100%)]', 'rb:bg-[linear-gradient(180deg,rgba(21,94,239,0.06)_0%,rgba(251,253,255,0)_100%)]', 'rb:bg-[linear-gradient(180deg,rgba(54,159,33,0.06)_0%,rgba(251,253,255,0)_100%)]', 'rb:bg-[]', ] const NodeStatistics: FC = () => { const navigate = useNavigate(); const { t } = useTranslation() const { id } = useParams() const [loading, setLoading] = useState(false) const [total, setTotal] = useState(0) const [data, setData] = useState([]) useEffect(() => { if (!id) return getData() }, [id]) // 记忆洞察 const getData = () => { if (!id) return setLoading(true) getNodeStatistics(id).then((res) => { const response = res as NodeStatisticsItem[] setData(response) // 计算count总计 const totalCount = response.reduce((sum, item) => sum + (item.count || 0), 0) setTotal(totalCount) setLoading(false) }) .finally(() => { setLoading(false) }) } const handleViewDetail = (type: string) => { switch (type) { case 'EMOTIONAL_MEMORY': navigate(`/statement/${id}`) break } } return ( {t('userMemory.nodeStatistics')} ({t('userMemory.total')}: {total})} headerType="borderless" > {loading ? : data && data.length > 0 ?
{data.map((vo, index) => (
handleViewDetail(vo.type)} >
{t(`userMemory.${vo.type}`)}
{vo.type === 'EMOTIONAL_MEMORY' &&
}
{vo.count ?? 0}
))}
: }
) } export default NodeStatistics