import { useState } from 'react'; import { Button, Descriptions, Drawer, Form, Input, Select, Space, Table, Tag, Typography } from 'antd'; import type { ColumnsType } from 'antd/es/table'; import { useAdminList } from '../lib/useAdminList'; import { request } from '../lib/api'; import { fmtTime } from '../lib/constants'; import type { WecomBotLogDto } from '@dukang/shared-types'; import { useAdminListColumns } from '../lib/useAdminListColumns'; import { AdminListHeader } from '../components/AdminListHeader'; import { AdminPrimaryLink } from '../components/AdminPrimaryLink'; export default function WecomBotLogsPage() { const [form] = Form.useForm(); const [filters, setFilters] = useState>({}); const [detail, setDetail] = useState(null); const { data, loading, page, pageSize, setPage, setPageSize } = useAdminList( '/admin/logs/wecom-bots', () => { const qs = new URLSearchParams(); if (filters.botId) qs.set('botId', filters.botId); if (filters.wecomUserId) qs.set('wecomUserId', filters.wecomUserId); if (filters.action) qs.set('action', filters.action); if (filters.success) qs.set('success', filters.success); return qs; }, [filters], ); const baseColumns: ColumnsType = [ { title: '时间', dataIndex: 'createdAt', width: 160, render: fmtTime }, { title: '机器人', dataIndex: 'botName', width: 120, render: (v, r) => ( setDetail(r)}>{v || r.botKey || ''} ), }, { title: '企微用户', dataIndex: 'wecomUserId', width: 120 }, { title: '动作', dataIndex: 'action', width: 160 }, { title: '权限', dataIndex: 'permission', width: 140, render: (v) => v || '—' }, { title: '结果', dataIndex: 'success', width: 80, render: (v: boolean) => {v ? '成功' : '失败'}, }, { title: '耗时(ms)', dataIndex: 'latencyMs', width: 90, render: (v) => v ?? '—' }, { title: '输入摘要', dataIndex: 'inputSummary' }, { title: '操作', width: 80, render: (_, row) => ( ), }, ]; const { columns, settingsButton, settingsModal } = useAdminListColumns('logs-wecom-bots', baseColumns, { page, pageSize }); return (
{settingsModal}
{ setFilters(v); setPage(1); }} >