diff --git a/adminfront/src/features/audit/AuditLogsPage.tsx b/adminfront/src/features/audit/AuditLogsPage.tsx index 0a067e0e..fe7a60e6 100644 --- a/adminfront/src/features/audit/AuditLogsPage.tsx +++ b/adminfront/src/features/audit/AuditLogsPage.tsx @@ -32,6 +32,14 @@ import { TableHeader, TableRow, } from "../../components/ui/table"; +import { + formatAuditDateParts, + formatAuditValue, + parseAuditDetails, + resolveAuditAction, + resolveAuditActor, + resolveAuditTarget, +} from "../../../../common/core/audit"; import { SearchFilterBar } from "../../../../common/ui/search-filter-bar"; import { PageHeader } from "../../../../common/core/components/page"; import type { AuditLog } from "../../lib/adminApi"; @@ -44,61 +52,6 @@ const defaultAuditFilters = [ "latency_ms:>1000", ]; -type AuditDetails = { - request_id?: string; - method?: string; - path?: string; - status?: number; - latency_ms?: number; - error?: string; - tenant_id?: string; - actor_id?: string; - action?: string; - target?: string; - before?: unknown; - after?: unknown; -}; - -function parseDetails(details?: string): AuditDetails { - if (!details) { - return {}; - } - try { - const parsed = JSON.parse(details); - if (parsed && typeof parsed === "object") { - return parsed as AuditDetails; - } - } catch {} - return {}; -} - -function formatCellValue(value: unknown) { - if (value === null || value === undefined || value === "") { - return "-"; - } - if (typeof value === "string") { - return value; - } - try { - return JSON.stringify(value); - } catch { - return String(value); - } -} - -function formatIsoDateTime(value: string) { - if (!value) { - return { date: "-", time: "-" }; - } - const parsed = new Date(value); - if (Number.isNaN(parsed.getTime())) { - return { date: value, time: "-" }; - } - const date = parsed.toISOString().slice(0, 10); - const time = parsed.toLocaleTimeString("ko-KR", { hour12: false }); - return { date, time }; -} - function AuditLogsPage() { const [filters, setFilters] = React.useState(defaultAuditFilters); const [filterDraft, setFilterDraft] = React.useState(""); @@ -146,7 +99,7 @@ function AuditLogsPage() { if (isLoading) { return (
- {row.user_id || details.actor_id || "-"}
+ {actorLabel}
- {(row.user_id || details.actor_id) && (
+ {actorLabel !== "-" && (
- )}
-