import { useConfigStore } from './store'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Button } from '@/components/ui/button'; import { Checkbox } from '@/components/ui/checkbox'; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'; import { Info } from 'lucide-react'; import { configSchema } from './store/schema'; import { toast } from 'sonner'; import { useLayoutStore } from '../auth/store'; import { useShallow } from 'zustand/shallow'; import { queryLogin } from '@/modules/query'; export const ConfigPage = () => { const { config, setConfig, resetConfig } = useConfigStore(); const layoutStore = useLayoutStore(useShallow(state => ({ me: state.me }))) const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); const result = configSchema.safeParse(config); if (result.success) { toast.success('配置已保存') setTimeout(() => { location.reload() }, 400) } else { console.error('验证错误:', result.error.format()); } }; const handleChange = (field: keyof typeof config, value: string | boolean) => { setConfig({ [field]: value }); }; const saveToRemote = async () => { const _config = config; const res = await queryLogin.post({ path: 'config', key: 'update', data: { key: 'cnb_center_config.json', data: _config, } }); if (res.code === 200) { toast.success('保存到远端成功') } else { toast.error('保存到远端失败') } } const loadFromRemote = async () => { const res = await queryLogin.post({ path: 'config', key: 'get', data: { key: 'cnb_center_config.json', } }) if (res.code === 404) { toast.error('远端配置不存在') return; } if (res.code === 200) { const config = res.data?.data as typeof config; setConfig(config); toast.success('获取远端配置成功') } } return (
CNB 配置 配置您的 CNB API 设置。这些设置会保存在浏览器的本地存储中。

用于访问 CNB API 的密钥。 点击获取

handleChange('CNB_API_KEY', e.target.value)} placeholder="请输入您的 CNB API 密钥" />

用于身份验证的 Cookie 信息。 前往获取

handleChange('CNB_COOKIE', e.target.value)} placeholder="请输入您的 CNB Cookie" />
handleChange('CNB_CORS_URL', e.target.value)} placeholder="https://cors.example.com" />
handleChange('ENABLE_CORS', checked === true)} />
handleChange('AI_BASE_URL', e.target.value)} placeholder="请输入 AI 基础地址" />
handleChange('AI_MODEL', e.target.value)} placeholder="请输入 AI 模型名称" />

如果使用 CNB 的 AI,密钥和 API 密钥一样即可

handleChange('AI_API_KEY', e.target.value)} placeholder="请输入您的 AI API 密钥" />
{layoutStore.me && <> }
); }; export default ConfigPage;