Implement Prototype 1 improvements: unified members, project filters, audit expansion, filtering rounds, special awards

- Unified Member Management: merge /admin/users and /admin/mentors into /admin/members with role tabs, search, pagination
- Project List Filters: add search, multi-status filter, round/category/country selects, boolean toggles, URL persistence
- Audit Log Expansion: track logins, round state changes, evaluation submissions, file access, role changes via shared logAudit utility
- Founding Date Field: add foundedAt to Project model with CSV import support
- Filtering Round System: configurable rules (field-based, document check, AI screening), execution engine, results review with override/reinstate
- Special Awards System: named awards with eligibility criteria, dedicated jury, PICK_WINNER/RANKED/SCORED voting modes, AI eligibility
- Dashboard resilience: wrap heavy queries in try-catch to prevent error boundary on transient DB failures
- Reusable pagination component extracted to src/components/shared/pagination.tsx
- Old /admin/users and /admin/mentors routes redirect to /admin/members
- Prisma migration for all schema additions (additive, no data loss)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-02 16:58:29 +01:00
parent 8fda8deded
commit 90e3adfab2
44 changed files with 7268 additions and 2154 deletions

View File

@@ -30,8 +30,8 @@ import {
Handshake,
FileText,
CircleDot,
GraduationCap,
History,
Trophy,
User,
} from 'lucide-react'
import { getInitials } from '@/lib/utils'
@@ -60,21 +60,21 @@ const navigation = [
href: '/admin/rounds' as const,
icon: CircleDot,
},
{
name: 'Awards',
href: '/admin/awards' as const,
icon: Trophy,
},
{
name: 'Projects',
href: '/admin/projects' as const,
icon: ClipboardList,
},
{
name: 'Jury Members',
href: '/admin/users' as const,
name: 'Members',
href: '/admin/members' as const,
icon: Users,
},
{
name: 'Mentors',
href: '/admin/mentors' as const,
icon: GraduationCap,
},
{
name: 'Reports',
href: '/admin/reports' as const,