import * as React from 'react' import { Plus, Search } from 'lucide-react' import { AppDataTable, type AppDataTableColumn } from '@/components/app/AppDataTable' import { AppEmptyState } from '@/components/app/AppEmptyState' import { AppField } from '@/components/app/AppField' import { AppPage } from '@/components/app/AppPage' import { AppPageHeader } from '@/components/app/AppPageHeader' import { AppSection } from '@/components/app/AppSection' import { Badge } from '@/components/ui/badge' import { Button } from '@/components/ui/button' import { Input } from '@/components/ui/input' import { formatDateTime } from '@/lib/format' import { createKnowledgeBase, listKnowledgeBases } from './api' import type { KnowledgeBase } from './types' type KnowledgeBaseForm = { name: string description: string scope: string } const emptyForm: KnowledgeBaseForm = { name: '', description: '', scope: '' } const columns: AppDataTableColumn[] = [ { key: 'name', header: '名称', cell: (base) => (

{base.name}

{base.description || '暂无描述'}

) }, { key: 'scope', header: '范围', cell: (base) => {base.scope || '-'} }, { key: 'enabled', header: '启用状态', cell: (base) => ( {base.enabled ? '已启用' : '已停用'} ) }, { key: 'updated_at', header: '更新时间', cell: (base) => {formatDateTime(base.updated_at)} } ] export function KnowledgeBaseListPage() { const [bases, setBases] = React.useState([]) const [form, setForm] = React.useState(emptyForm) const [error, setError] = React.useState('') async function load() { try { setBases(await listKnowledgeBases()) setError('') } catch (reason) { setError(reason instanceof Error ? reason.message : '加载知识库失败') } } React.useEffect(() => { void load() }, []) async function handleCreate(event: React.FormEvent) { event.preventDefault() await createKnowledgeBase(form) setForm(emptyForm) await load() } return ( } />
setForm((current) => ({ ...current, name: event.target.value }))} placeholder="例如:税务采集知识库" /> setForm((current) => ({ ...current, scope: event.target.value }))} placeholder="例如:数据采集" /> setForm((current) => ({ ...current, description: event.target.value }))} placeholder="知识库用途说明" />
{error ? : null} {!error ? ( base.id} emptyTitle="暂无知识库" emptyDescription="创建知识库后,可继续维护文档、知识条目和检索内容。" footer={

共 {bases.length} 个知识库

} /> ) : null}
) }