From 27d0827f3eb24ff4223fcfa7e49031d90348a477 Mon Sep 17 00:00:00 2001 From: limitcool Date: Fri, 3 Apr 2026 01:33:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=BC=BA=E7=BB=B4=E6=8A=A4?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E5=92=8C=E5=AE=A1=E8=AE=A1=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=8C=E4=BC=98=E5=8C=96=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/ui-regression.yml | 17 ++++++ admin/src/App.tsx | 12 +++++ admin/src/components/app-shell.tsx | 6 +++ frontend/Dockerfile | 6 ++- frontend/src/pages/api/maintenance/unlock.ts | 19 +++++-- frontend/src/pages/maintenance.astro | 54 +++++++++++++++++++- playwright-smoke/mock-server.mjs | 53 ++++++++++++++++++- playwright-smoke/playwright.config.ts | 14 ++++- playwright-smoke/tests/admin.spec.ts | 28 +++++----- playwright-smoke/tests/frontend.spec.ts | 32 ++++++++---- 10 files changed, 208 insertions(+), 33 deletions(-) diff --git a/.gitea/workflows/ui-regression.yml b/.gitea/workflows/ui-regression.yml index 0f4fc96..fb1917a 100644 --- a/.gitea/workflows/ui-regression.yml +++ b/.gitea/workflows/ui-regression.yml @@ -56,6 +56,19 @@ jobs: working-directory: playwright-smoke run: pnpm exec tsc -p tsconfig.json --noEmit + - name: Build frontend package + working-directory: frontend + env: + PUBLIC_API_BASE_URL: http://127.0.0.1:5159/api + run: pnpm build + + - name: Build admin package + working-directory: admin + env: + VITE_API_BASE: http://127.0.0.1:5159 + VITE_FRONTEND_BASE_URL: http://127.0.0.1:4321 + run: pnpm build + - name: Prepare Playwright artifact folders run: | rm -rf playwright-smoke/.artifacts @@ -66,6 +79,8 @@ jobs: id: ui_frontend working-directory: playwright-smoke continue-on-error: true + env: + PLAYWRIGHT_USE_BUILT_APP: '1' run: pnpm test:frontend - name: Collect frontend Playwright artifacts @@ -83,6 +98,8 @@ jobs: id: ui_admin working-directory: playwright-smoke continue-on-error: true + env: + PLAYWRIGHT_USE_BUILT_APP: '1' run: pnpm test:admin - name: Collect admin Playwright artifacts diff --git a/admin/src/App.tsx b/admin/src/App.tsx index d864be7..32f6e1f 100644 --- a/admin/src/App.tsx +++ b/admin/src/App.tsx @@ -94,6 +94,10 @@ const WorkersPage = lazy(async () => { const mod = await import('@/pages/workers-page') return { default: mod.WorkersPage } }) +const AuditPage = lazy(async () => { + const mod = await import('@/pages/audit-page') + return { default: mod.AuditPage } +}) type SessionContextValue = { session: AdminSessionResponse @@ -397,6 +401,14 @@ function AppRoutes() { } /> + + + + } + /> { - const formData = await request.formData().catch(() => null) - const code = String(formData?.get('code') ?? '').trim() - const returnTo = sanitizeMaintenanceReturnTo(String(formData?.get('returnTo') ?? '/')) + const contentType = request.headers.get('content-type') ?? '' + let code = '' + let returnTo = '/' + + if (contentType.includes('application/json')) { + const payload = (await request.json().catch(() => ({}))) as { + code?: unknown + returnTo?: unknown + } + code = String(payload.code ?? '').trim() + returnTo = sanitizeMaintenanceReturnTo(String(payload.returnTo ?? '/')) + } else { + const formData = await request.formData().catch(() => null) + code = String(formData?.get('code') ?? '').trim() + returnTo = sanitizeMaintenanceReturnTo(String(formData?.get('returnTo') ?? '/')) + } if (!code) { return redirect(`/maintenance?error=empty&returnTo=${encodeURIComponent(returnTo)}`, 302) diff --git a/frontend/src/pages/maintenance.astro b/frontend/src/pages/maintenance.astro index 0675a51..250db42 100644 --- a/frontend/src/pages/maintenance.astro +++ b/frontend/src/pages/maintenance.astro @@ -62,7 +62,12 @@ const errorMessage = )} -
+