Observer dashboard extraction, PDF reports, jury UX overhaul, and miscellaneous improvements

- Extract observer dashboard to client component, add PDF export button
- Add PDF report generator with jsPDF for analytics reports
- Overhaul jury evaluation page with improved layout and UX
- Add new analytics endpoints for observer/admin reports
- Improve round creation/edit forms with better settings
- Fix filtering rules page, CSV export dialog, notification bell
- Update auth, prisma schema, and various type fixes

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-10 23:08:00 +01:00
parent 5c8d22ac11
commit d787a24921
31 changed files with 2565 additions and 930 deletions

View File

@@ -5,7 +5,7 @@ CREATE SCHEMA IF NOT EXISTS "public";
CREATE TYPE "UserRole" AS ENUM ('SUPER_ADMIN', 'PROGRAM_ADMIN', 'JURY_MEMBER', 'MENTOR', 'OBSERVER', 'APPLICANT');
-- CreateEnum
CREATE TYPE "UserStatus" AS ENUM ('INVITED', 'ACTIVE', 'SUSPENDED');
CREATE TYPE "UserStatus" AS ENUM ('NONE', 'INVITED', 'ACTIVE', 'SUSPENDED');
-- CreateEnum
CREATE TYPE "ProgramStatus" AS ENUM ('DRAFT', 'ACTIVE', 'ARCHIVED');

View File

@@ -28,6 +28,7 @@ enum UserRole {
}
enum UserStatus {
NONE
INVITED
ACTIVE
SUSPENDED

View File

@@ -346,7 +346,7 @@ async function main() {
email,
name: row['Full name']?.trim() || 'Unknown',
role: 'APPLICANT',
status: 'INVITED',
status: 'NONE',
phoneNumber: row['Téléphone']?.trim() || null,
},
})
@@ -424,7 +424,7 @@ async function main() {
email: memberEmail,
name: member.name,
role: 'APPLICANT',
status: 'INVITED',
status: 'NONE',
metadataJson: {
isPendingEmailVerification: true,
originalName: member.name,