import TimeRangePicker from '@/components/originui/time-range-picker'; import { PageHeader } from '@/components/page-header'; import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, } from '@/components/ui/breadcrumb'; import { SearchInput } from '@/components/ui/input'; import { RAGFlowPagination } from '@/components/ui/ragflow-pagination'; import { Spin } from '@/components/ui/spin'; import { useNavigatePage } from '@/hooks/logic-hooks/navigate-hooks'; import { useFetchAgentLog } from '@/hooks/use-agent-request'; import { IAgentLogMessage, IAgentLogResponse, } from '@/interfaces/database/agent'; import { IReferenceObject } from '@/interfaces/database/chat'; import { useQueryClient } from '@tanstack/react-query'; import React, { useEffect, useState } from 'react'; import { useParams } from 'umi'; import { DateRange } from '../../components/originui/calendar/index'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from '../../components/ui/table'; import { useFetchDataOnMount } from '../agent/hooks/use-fetch-data'; import { AgentLogDetailModal } from './agent-log-detail-modal'; const getStartOfToday = (): Date => { const today = new Date(); today.setHours(0, 0, 0, 0); return today; }; const getEndOfToday = (): Date => { const today = new Date(); today.setHours(23, 59, 59, 999); return today; }; const AgentLogPage: React.FC = () => { const { navigateToAgentList, navigateToAgent } = useNavigatePage(); const { flowDetail: agentDetail } = useFetchDataOnMount(); const { id: canvasId } = useParams(); const queryClient = useQueryClient(); const init = { keywords: '', from_date: getStartOfToday(), to_date: getEndOfToday(), orderby: 'create_time', desc: false, page: 1, page_size: 10, }; const [searchParams, setSearchParams] = useState(init); const columns = [ { title: 'ID', dataIndex: 'id', key: 'id', }, { title: 'Title', dataIndex: 'title', key: 'title', render: (text, record: IAgentLogResponse) => ( {record?.message?.length ? record?.message[0]?.content : ''} ), }, { title: 'State', dataIndex: 'state', key: 'state', render: (text, record: IAgentLogResponse) => (
), }, { title: 'Number', dataIndex: 'round', key: 'round', }, { title: 'Latest Date', dataIndex: 'update_date', key: 'update_date', sortable: true, }, { title: 'Create Date', dataIndex: 'create_date', key: 'create_date', sortable: true, }, ]; const { data: logData, loading } = useFetchAgentLog(searchParams); const { sessions: data, total } = logData || {}; const [currentDate, setCurrentDate] = useState({ from: searchParams.from_date, to: searchParams.to_date, }); const [keywords, setKeywords] = useState(searchParams.keywords); const handleDateRangeChange = ({ from: startDate, to: endDate, }: DateRange) => { setCurrentDate({ from: startDate, to: endDate }); }; const [pagination, setPagination] = useState<{ current: number; pageSize: number; total: number; }>({ current: 1, pageSize: 10, total: total, }); useEffect(() => { setPagination((pre) => { return { ...pre, total: total, }; }); }, [total]); const [sortConfig, setSortConfig] = useState<{ orderby: string; desc: boolean; } | null>({ orderby: init.orderby, desc: init.desc ? true : false }); const handlePageChange = (current?: number, pageSize?: number) => { console.log('current', current, 'pageSize', pageSize); setPagination((pre) => { return { ...pre, current: current ?? pre.current, pageSize: pageSize ?? pre.pageSize, }; }); }; const handleSearch = () => { setSearchParams((pre) => { return { ...pre, from_date: currentDate.from as Date, to_date: currentDate.to as Date, page: pagination.current, page_size: pagination.pageSize, orderby: sortConfig?.orderby || '', desc: sortConfig?.desc as boolean, keywords: keywords, }; }); }; const handleClickSearch = () => { setPagination({ ...pagination, current: 1 }); handleSearch(); queryClient.invalidateQueries({ queryKey: ['fetchAgentLog'], }); }; useEffect(() => { handleSearch(); }, [pagination.current, pagination.pageSize, sortConfig]); // handle sort const handleSort = (key: string) => { let desc = false; if (sortConfig && sortConfig.orderby === key) { desc = !sortConfig.desc; } setSortConfig({ orderby: key, desc }); }; const handleReset = () => { setSearchParams(init); setKeywords(init.keywords); setCurrentDate({ from: init.from_date, to: init.to_date }); }; const [openModal, setOpenModal] = useState(false); const [modalData, setModalData] = useState(); const showLogDetail = (item: IAgentLogResponse) => { setModalData(item); setOpenModal(true); }; return (
Agent {agentDetail.title} Log

Log

ID/Title { setKeywords(e.target.value); }} className="w-32" >
Latest Date
{/*
*/} {columns.map((column) => ( handleSort(column.dataIndex) : undefined } className={ column.sortable ? 'cursor-pointer hover:bg-muted/50' : '' } >
{column.title} {column.sortable && sortConfig?.orderby === column.dataIndex && ( {sortConfig.desc ? '↓' : '↑'} )}
))}
{loading && ( Loading... )} {!loading && data?.map((item) => ( { showLogDetail(item); }} > {columns.map((column) => ( {column.render ? column.render(item[column.dataIndex], item) : item[column.dataIndex]} ))} ))} {!loading && (!data || data.length === 0) && ( No data )}
{/*
*/}
{ handlePageChange(page, pageSize); }} >
setOpenModal(false)} />
); }; export default AgentLogPage;