"use client"; import { useEffect, useState } from "react"; import { Save, RefreshCw } from "lucide-react"; import { api } from "@/lib/api"; import type { FeishuSetupGuide, FeishuStatus, SafeSettings } from "@/lib/types"; import StatusBadge from "@/components/StatusBadge"; export default function SettingsPage() { const [settings, setSettings] = useState(null); const [feishuStatus, setFeishuStatus] = useState(null); const [feishuGuide, setFeishuGuide] = useState(null); const [keyName, setKeyName] = useState(""); const [value, setValue] = useState(""); async function load() { const [settingsData, statusData, guideData] = await Promise.all([ api.get("/settings"), api.get("/feishu/status"), api.get("/feishu/setup-guide") ]); setSettings(settingsData); setFeishuStatus(statusData); setFeishuGuide(guideData); } async function saveSetting() { if (!keyName) return; await api.patch("/settings", { settings: { [keyName]: value } }); setKeyName(""); setValue(""); await load(); } useEffect(() => { load(); }, []); if (!settings || !feishuStatus || !feishuGuide) { return
加载中...
; } return (

系统设置

飞书配置
飞书 token

{feishuStatus.message}

{feishuStatus.app_token_configured ? "Bitable app_token 模式" : "Wiki 节点 token 模式"}

大模型配置
当前模型
{settings.model_name}
定时任务
{settings.schedule_cron}
{settings.schedule_timezone}
mock 模式
飞书字段模板
{feishuGuide.tables.map((table) => (
{table.table_name}
{table.env_name}
{table.required_fields.map((field) => ( {field} ))}
))}
{feishuGuide.notes.map((note) => (

{note}

))}
setKeyName(event.target.value)} placeholder="非敏感配置 key" className="h-10 rounded-md border border-line px-3 outline-none focus:border-jade" /> setValue(event.target.value)} placeholder="value" className="h-10 rounded-md border border-line px-3 outline-none focus:border-jade" />
{settings.system_settings.map((row) => ( ))}
key value 说明
{row.key} {row.value ?? "-"} {row.description ?? "-"}
); }