"use client" import React, { useState } from "react" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Switch } from "@/components/ui/switch" import { Textarea } from "@/components/ui/textarea" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { Badge } from "@/components/ui/badge" import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs" import { Settings, Shield, Mail, Server, Users, Bell, Save, Eye, EyeOff, Lock, TestTube, CheckCircle, HardDrive, Clock, Database, RefreshCw, AlertCircle, CheckCircle2, XCircle, Globe, } from "lucide-react" export function SystemSettings() { const [settings, setSettings] = useState({ // 一般設定 siteName: "AI應用展示平台", siteDescription: "展示和分享AI應用的專業平台", timezone: "Asia/Taipei", language: "zh-TW", maintenanceMode: false, // 安全設定 twoFactorAuth: true, sessionTimeout: 30, maxLoginAttempts: 5, passwordMinLength: 8, // 郵件設定 smtpHost: "smtp.gmail.com", smtpPort: "587", smtpUser: "", smtpPassword: "", smtpEncryption: "tls", // 系統性能 cacheEnabled: true, cacheTimeout: 3600, maxFileSize: 10, maxUploadSize: 50, // 用戶管理 allowRegistration: true, emailVerification: true, defaultUserRole: "user", // 通知設定 systemNotifications: true, emailNotifications: true, slackWebhook: "", notificationFrequency: "immediate", }) const [activeTab, setActiveTab] = useState("general") const [saveStatus, setSaveStatus] = useState<"idle" | "saving" | "saved" | "error">("idle") const [showSmtpPassword, setShowSmtpPassword] = useState(false) // 資料庫狀態 const [databaseStatus, setDatabaseStatus] = useState(null) const [isLoadingStatus, setIsLoadingStatus] = useState(false) const [syncStatus, setSyncStatus] = useState(null) const [isLoadingSync, setIsLoadingSync] = useState(false) const handleSave = async () => { setSaveStatus("saving") // 模擬保存過程 setTimeout(() => { setSaveStatus("saved") setTimeout(() => setSaveStatus("idle"), 2000) }, 1000) } const handleTestEmail = () => { // 測試郵件功能 alert("測試郵件已發送!") } const updateSetting = (key: string, value: any) => { setSettings((prev) => ({ ...prev, [key]: value })) } // 獲取資料庫狀態 const fetchDatabaseStatus = async () => { setIsLoadingStatus(true) try { const response = await fetch('/api/admin/database-status') const data = await response.json() if (data.success) { setDatabaseStatus(data.data) } else { console.error('獲取資料庫狀態失敗:', data.error) } } catch (error) { console.error('獲取資料庫狀態失敗:', error) } finally { setIsLoadingStatus(false) } } // 切換資料庫 const switchDatabase = async (database: 'master' | 'slave') => { try { const response = await fetch('/api/admin/database-status', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ action: 'switch', database }), }) const data = await response.json() if (data.success) { // 重新獲取狀態 await fetchDatabaseStatus() alert(data.message) } else { alert(`切換失敗: ${data.message}`) } } catch (error) { console.error('切換資料庫失敗:', error) alert('切換資料庫失敗') } } // 獲取同步狀態 const fetchSyncStatus = async () => { setIsLoadingSync(true) try { const response = await fetch('/api/admin/database-sync') const data = await response.json() if (data.success) { setSyncStatus(data.data) } else { console.error('獲取同步狀態失敗:', data.error) } } catch (error) { console.error('獲取同步狀態失敗:', error) } finally { setIsLoadingSync(false) } } // 同步表資料 const syncTable = async (tableName: string) => { try { const response = await fetch('/api/admin/database-sync', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ action: 'sync_table', tableName: tableName }) }) const data = await response.json() if (data.success) { alert(`成功同步表 ${tableName} 到備機`) } else { alert(`同步表 ${tableName} 失敗: ${data.message}`) } } catch (error) { console.error('同步表失敗:', error) alert('同步表失敗') } } // 組件載入時獲取資料庫狀態 React.useEffect(() => { if (activeTab === 'performance') { fetchDatabaseStatus() fetchSyncStatus() } }, [activeTab]) return (

系統設定

管理平台的各項系統配置

一般設定 安全設定 郵件設定 系統性能 用戶管理 通知設定 {/* 一般設定 */} 網站基本資訊
updateSetting("siteName", e.target.value)} />