'use client'; import { useEffect, useMemo } from 'react'; import { formatDateTime } from '@/lib/format'; import type { WorkActivitySourceType } from '@/lib/work-activity'; import { getEntityActivityLogEntries, type EntityActivityLogEntry } from '@/lib/entity-activity-log'; import { useWorkActivityStore } from '@/stores/useWorkActivityStore'; interface Props { sourceType: WorkActivitySourceType; sourceId: string; legacyEntries?: EntityActivityLogEntry[]; title?: string; } export function ActivityLogPanel({ sourceType, sourceId, legacyEntries = [], title = '操作日志' }: Props) { const { activities, fetchActivities } = useWorkActivityStore(); useEffect(() => { fetchActivities(); }, [fetchActivities]); const entries = useMemo( () => getEntityActivityLogEntries(activities, sourceType, sourceId, legacyEntries), [activities, sourceType, sourceId, legacyEntries], ); return (
{title}
{entries.length === 0 ? (

暂无操作日志

) : (
{entries.map((entry) => (
{formatDateTime(entry.occurredAt)}
{entry.actorId || '系统'} {entry.label}
{entry.summary}
))}
)}
); }