fix
Some checks failed
CD Preprod / Backend — Lint (push) Successful in 10m21s
CD Preprod / Frontend — Lint & Type-check (push) Successful in 10m54s
CD Preprod / Backend — Unit Tests (push) Successful in 10m12s
CD Preprod / Frontend — Unit Tests (push) Successful in 10m32s
CD Preprod / Backend — Integration Tests (push) Successful in 9m57s
CD Preprod / Build Backend (push) Successful in 50s
CD Preprod / Build Log Exporter (push) Successful in 26s
CD Preprod / Build Frontend (push) Successful in 19m3s
CD Preprod / Deploy to Preprod (push) Successful in 23s
CD Preprod / Notify Success (push) Has been cancelled
CD Preprod / Smoke Tests (push) Has been cancelled
CD Preprod / Notify Failure (push) Has been cancelled
Some checks failed
CD Preprod / Backend — Lint (push) Successful in 10m21s
CD Preprod / Frontend — Lint & Type-check (push) Successful in 10m54s
CD Preprod / Backend — Unit Tests (push) Successful in 10m12s
CD Preprod / Frontend — Unit Tests (push) Successful in 10m32s
CD Preprod / Backend — Integration Tests (push) Successful in 9m57s
CD Preprod / Build Backend (push) Successful in 50s
CD Preprod / Build Log Exporter (push) Successful in 26s
CD Preprod / Build Frontend (push) Successful in 19m3s
CD Preprod / Deploy to Preprod (push) Successful in 23s
CD Preprod / Notify Success (push) Has been cancelled
CD Preprod / Smoke Tests (push) Has been cancelled
CD Preprod / Notify Failure (push) Has been cancelled
This commit is contained in:
parent
bbf059cce9
commit
a5b21436c7
@ -11,9 +11,9 @@ import {
|
|||||||
Bug,
|
Bug,
|
||||||
Server,
|
Server,
|
||||||
} from 'lucide-react';
|
} from 'lucide-react';
|
||||||
|
import { get, download } from '@/lib/api/client';
|
||||||
|
|
||||||
const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:4000';
|
const LOGS_PREFIX = '/api/v1/logs';
|
||||||
const LOGS_API_URL = `${API_URL}/api/v1/logs`;
|
|
||||||
|
|
||||||
// ─── Types ────────────────────────────────────────────────────────────────────
|
// ─── Types ────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
@ -125,8 +125,7 @@ export default function AdminLogsPage() {
|
|||||||
|
|
||||||
// Load available services
|
// Load available services
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
fetch(`${LOGS_API_URL}/services`)
|
get<{ services: string[] }>(`${LOGS_PREFIX}/services`)
|
||||||
.then(r => r.json())
|
|
||||||
.then(d => setServices(d.services || []))
|
.then(d => setServices(d.services || []))
|
||||||
.catch(() => {});
|
.catch(() => {});
|
||||||
}, []);
|
}, []);
|
||||||
@ -150,14 +149,9 @@ export default function AdminLogsPage() {
|
|||||||
setLoading(true);
|
setLoading(true);
|
||||||
setError(null);
|
setError(null);
|
||||||
try {
|
try {
|
||||||
const res = await fetch(
|
const data = await get<LogsResponse>(
|
||||||
`${LOGS_API_URL}/export?${buildQueryString('json')}`,
|
`${LOGS_PREFIX}/export?${buildQueryString('json')}`,
|
||||||
);
|
);
|
||||||
if (!res.ok) {
|
|
||||||
const body = await res.json().catch(() => ({}));
|
|
||||||
throw new Error(body.error || `HTTP ${res.status}`);
|
|
||||||
}
|
|
||||||
const data: LogsResponse = await res.json();
|
|
||||||
setLogs(data.logs || []);
|
setLogs(data.logs || []);
|
||||||
setTotal(data.total || 0);
|
setTotal(data.total || 0);
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
@ -174,19 +168,11 @@ export default function AdminLogsPage() {
|
|||||||
const handleExport = async (format: 'json' | 'csv') => {
|
const handleExport = async (format: 'json' | 'csv') => {
|
||||||
setExportLoading(true);
|
setExportLoading(true);
|
||||||
try {
|
try {
|
||||||
const res = await fetch(
|
const filename = `xpeditis-logs-${new Date().toISOString().slice(0, 10)}.${format}`;
|
||||||
`${LOGS_API_URL}/export?${buildQueryString(format)}`,
|
await download(
|
||||||
|
`${LOGS_PREFIX}/export?${buildQueryString(format)}`,
|
||||||
|
filename,
|
||||||
);
|
);
|
||||||
if (!res.ok) throw new Error(`HTTP ${res.status}`);
|
|
||||||
const blob = await res.blob();
|
|
||||||
const url = URL.createObjectURL(blob);
|
|
||||||
const a = document.createElement('a');
|
|
||||||
a.href = url;
|
|
||||||
a.download = `xpeditis-logs-${new Date().toISOString().slice(0, 10)}.${format}`;
|
|
||||||
document.body.appendChild(a);
|
|
||||||
a.click();
|
|
||||||
document.body.removeChild(a);
|
|
||||||
URL.revokeObjectURL(url);
|
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
setError(err.message);
|
setError(err.message);
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user