"use client" import { useState, useEffect } from "react" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { ScrollArea } from "@/components/ui/scroll-area" import { Badge } from "@/components/ui/badge" import { History, Trash2, RefreshCw, User, FileText, Image, Settings } from "lucide-react" import { getActivityLogs, cleanOldLogs, getActivityStats } from "@/lib/activity-logger" import type { ActivityLog } from "@/lib/db" import { format } from "date-fns" const actionLabels = { create: "创建", update: "更新", delete: "删除", import: "导入", export: "导出", } const actionColors = { create: "bg-green-500", update: "bg-blue-500", delete: "bg-red-500", import: "bg-purple-500", export: "bg-orange-500", } const entityTypeLabels = { member: "成员", photo: "照片", story: "故事", settings: "设置", } const entityTypeIcons = { member: User, photo: Image, story: FileText, settings: Settings, } export function ActivityLogViewer() { const [logs, setLogs] = useState([]) const [stats, setStats] = useState(null) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) const loadLogs = async () => { setLoading(true) setError(null) try { const [activityLogs, activityStats] = await Promise.all([ getActivityLogs(100), getActivityStats() ]) setLogs(activityLogs) setStats(activityStats) } catch (err) { console.error("加载日志失败:", err) setError(err instanceof Error ? err.message : "加载失败") } finally { setLoading(false) } } useEffect(() => { loadLogs() }, []) const handleCleanOldLogs = async () => { if (confirm("确定要清除90天前的日志吗?")) { const count = await cleanOldLogs(90) alert(`已清除 ${count} 条旧日志`) loadLogs() } } return (
操作日志 查看所有修谱操作记录 {stats && (

总记录数

{stats.total}

24小时内

{stats.recentCount}

创建操作

{stats.byAction.create || 0}

更新操作

{stats.byAction.update || 0}

)}
{error ? (
加载失败: {error}
) : loading ? (
加载中...
) : logs.length === 0 ? (
暂无操作记录
) : (
{logs.map((log) => { const EntityIcon = entityTypeIcons[log.entityType] return (
{actionLabels[log.action]} {entityTypeLabels[log.entityType]} {log.entityName && ( {log.entityName} )}

{log.userName || "系统"}

{format(new Date(log.timestamp), "yyyy-MM-dd HH:mm:ss")}

{log.changes && Object.keys(log.changes).length > 0 && (
查看变更详情
                              {JSON.stringify(log.changes, null, 2)}
                            
)}
) })}
)}
) }