From efb8e1af3d1fec365b75a9eee55352fdd0e89d4f Mon Sep 17 00:00:00 2001 From: WuYongJie <549727955@qq.com> Date: Wed, 14 Oct 2026 15:37:01 +0800 Subject: [PATCH] fix(ai): complete verification activation and recovery workflows --- app/admin/page.test.tsx | 72 ++++++++++ app/admin/page.tsx | 46 ++++-- .../models/[modelKey]/submission/route.ts | 7 + .../[verificationId]/reconcile/route.ts | 7 + components/SuperAdminsTab.tsx | 13 +- .../admin/AiModelManagementPanel.test.tsx | 107 ++++++++++++-- components/admin/AiModelManagementPanel.tsx | 131 ++++++++++++++---- components/admin/AiModelRecovery.test.tsx | 76 ++++++++++ docs/ai-model-management.md | 15 +- lib/__tests__/ai-detail-access.test.ts | 20 +++ lib/__tests__/ai-model-recovery.test.ts | 106 ++++++++++++++ lib/__tests__/ai-model-security.test.ts | 6 + lib/__tests__/ai-model-service.test.ts | 4 +- lib/__tests__/ai-model-verification.test.ts | 38 ++++- lib/ai-model-access.ts | 10 +- lib/ai-model-protocol.ts | 2 +- lib/ai-model-recovery.ts | 57 ++++++++ lib/ai-model-service.ts | 27 ++-- lib/ai-model-types.ts | 5 + lib/ai-model-verification-output.ts | 70 ++++++++++ lib/ai-model-verification-state.ts | 10 +- lib/ai-model-verification.ts | 68 ++++----- lib/detail-generator/access.ts | 2 +- lib/detail-generator/repository.ts | 2 +- scripts/verify-ai-model-workflow.ts | 91 ++++++++++++ 25 files changed, 867 insertions(+), 125 deletions(-) create mode 100644 app/admin/page.test.tsx create mode 100644 app/api/admin/ai-models/providers/[id]/models/[modelKey]/submission/route.ts create mode 100644 app/api/admin/ai-models/providers/[id]/verifications/[verificationId]/reconcile/route.ts create mode 100644 components/admin/AiModelRecovery.test.tsx create mode 100644 lib/__tests__/ai-detail-access.test.ts create mode 100644 lib/__tests__/ai-model-recovery.test.ts create mode 100644 lib/ai-model-recovery.ts create mode 100644 lib/ai-model-verification-output.ts create mode 100644 scripts/verify-ai-model-workflow.ts diff --git a/app/admin/page.test.tsx b/app/admin/page.test.tsx new file mode 100644 index 0000000..c54c61f --- /dev/null +++ b/app/admin/page.test.tsx @@ -0,0 +1,72 @@ +import { fireEvent, render, screen, waitFor } from '@testing-library/react' +import { useSession } from 'next-auth/react' +import AdminPage from './page' + +const push = jest.fn() +const router = { push } +const confirmAction = jest.fn() +jest.mock('next-auth/react', () => ({ useSession: jest.fn() })) +jest.mock('next/navigation', () => ({ useRouter: () => router })) +jest.mock('@/components/ConfirmActionDialog', () => ({ useConfirmActionDialog: () => ({ confirmAction, confirmActionDialog: null }) })) +jest.mock('@/components/board/MaterialsHeader', () => () => null) +jest.mock('@/components/DepartmentPermissionsTab', () => () => null) +jest.mock('@/components/admin/MaterialManagement', () => () => null) +jest.mock('@/components/admin/CategoryManagement', () => () => null) +jest.mock('@/components/admin/PublicTrafficTab', () => () => null) +jest.mock('@/components/admin/DataStatisticsTab', () => function TestDataStatisticsTab() { return