'use client'; import { useState, useEffect } from 'react'; import { PageLayout, DataTable, EmptyState } from '@/components/ui'; const ENTITY_TYPES = ['', 'aircraft', 'directive', 'bulletin', 'work_order', 'defect', 'component', 'specialist', 'maint_program', 'life_limit']; export default function AuditHistoryPage() { const [logs, setLogs] = useState([]); const [loading, setLoading] = useState(true); const [entityFilter, setEntityFilter] = useState(''); const [actionFilter, setActionFilter] = useState(''); useEffect(() => { setLoading(true); fetch('/api/v1/audit?limit=500').then(r => r.json()) .then(d => { setLogs(d.items || d || []); setLoading(false); }) .catch(() => setLoading(false)); }, []); const filtered = logs.filter(l => { if (entityFilter && l.entity_type !== entityFilter) return false; if (actionFilter && !l.action?.includes(actionFilter)) return false; return true; }); const actions = [...new Set(logs.map(l => l.action).filter(Boolean))]; return ( {loading &&
⏳ Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ°...
}
({filtered.length} ΠΈΠ· {logs.length})
{filtered.length > 0 ? ( v ? new Date(v).toLocaleString('ru-RU') : 'β€”' }, { key: 'user_name', label: 'ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ' }, { key: 'action', label: 'ДСйствиС' }, { key: 'entity_type', label: 'ΠžΠ±ΡŠΠ΅ΠΊΡ‚' }, { key: 'description', label: 'ОписаниС' }, ]} data={filtered} /> ) : }
); }