Implement 10 platform features: evaluation UX, admin tools, AI summaries, applicant portal
Batch 1 - Quick Wins: - F1: Evaluation progress indicator with touch tracking in sticky status bar - F2: Export filtering results as CSV with dynamic AI column flattening - F3: Observer access to analytics dashboards (8 procedures changed to observerProcedure) Batch 2 - Jury Experience: - F4: Countdown timer component with urgency colors + email reminder service with cron endpoint - F5: Conflict of interest declaration system (dialog, admin management, review workflow) Batch 3 - Admin & AI Enhancements: - F6: Bulk status update UI with selection checkboxes, floating toolbar, status history recording - F7: AI-powered evaluation summary with anonymized data, OpenAI integration, scoring patterns - F8: Smart assignment improvements (geo diversity penalty, round familiarity bonus, COI blocking) Batch 4 - Form Flexibility & Applicant Portal: - F9: Evaluation form flexibility (text, boolean, section_header types, conditional visibility) - F10: Applicant portal (status timeline, per-round documents, mentor messaging) Schema: 5 new models (ReminderLog, ConflictOfInterest, EvaluationSummary, ProjectStatusHistory, MentorMessage), ProjectFile extended with roundId + isLate. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
53
CLAUDE.md
53
CLAUDE.md
@@ -22,8 +22,11 @@ The platform is designed for future expansion into a comprehensive program manag
|
||||
| First Admin | Database seed script |
|
||||
| Past Evaluations | Visible read-only after submit |
|
||||
| Grace Period | Admin-configurable per juror/project |
|
||||
| Smart Assignment | AI-powered (GPT) + Smart Algorithm fallback |
|
||||
| Smart Assignment | AI-powered (GPT) + Smart Algorithm fallback + geo-diversity, familiarity, COI scoring |
|
||||
| AI Data Privacy | All data anonymized before sending to GPT |
|
||||
| Evaluation Criteria Types | `numeric`, `text`, `boolean`, `section_header` (backward-compatible) |
|
||||
| COI Workflow | Mandatory declaration before evaluation, admin review |
|
||||
| Evaluation Reminders | Cron-based email reminders with countdown urgency |
|
||||
|
||||
## Brand Identity
|
||||
|
||||
@@ -83,14 +86,22 @@ mopc-platform/
|
||||
│ │ ├── (admin)/ # Admin dashboard (protected)
|
||||
│ │ ├── (jury)/ # Jury interface (protected)
|
||||
│ │ ├── api/ # API routes
|
||||
│ │ │ └── trpc/ # tRPC endpoint
|
||||
│ │ │ ├── trpc/ # tRPC endpoint
|
||||
│ │ │ └── cron/
|
||||
│ │ │ └── reminders/ # Cron endpoint for evaluation reminders (F4)
|
||||
│ │ ├── layout.tsx # Root layout
|
||||
│ │ └── page.tsx # Home/landing
|
||||
│ ├── components/
|
||||
│ │ ├── ui/ # shadcn/ui components
|
||||
│ │ ├── forms/ # Form components (evaluation, etc.)
|
||||
│ │ ├── admin/ # Admin-specific components
|
||||
│ │ │ └── evaluation-summary-card.tsx # AI summary display
|
||||
│ │ ├── forms/ # Form components
|
||||
│ │ │ ├── evaluation-form.tsx # With progress indicator (F1)
|
||||
│ │ │ ├── coi-declaration-dialog.tsx # COI blocking dialog (F5)
|
||||
│ │ │ └── evaluation-form-with-coi.tsx # COI-gated wrapper (F5)
|
||||
│ │ ├── layouts/ # Layout components (sidebar, nav)
|
||||
│ │ └── shared/ # Shared components
|
||||
│ │ └── countdown-timer.tsx # Live countdown with urgency (F4)
|
||||
│ ├── lib/
|
||||
│ │ ├── auth.ts # NextAuth configuration
|
||||
│ │ ├── prisma.ts # Prisma client singleton
|
||||
@@ -107,8 +118,14 @@ mopc-platform/
|
||||
│ │ │ ├── evaluation.ts
|
||||
│ │ │ ├── audit.ts
|
||||
│ │ │ ├── settings.ts
|
||||
│ │ │ └── gracePeriod.ts
|
||||
│ │ │ ├── gracePeriod.ts
|
||||
│ │ │ ├── export.ts # CSV export incl. filtering results (F2)
|
||||
│ │ │ ├── analytics.ts # Reports/analytics (observer access, F3)
|
||||
│ │ │ └── mentor.ts # Mentor messaging endpoints (F10)
|
||||
│ │ ├── services/ # Business logic services
|
||||
│ │ │ ├── smart-assignment.ts # With geo/familiarity/COI scoring (F8)
|
||||
│ │ │ ├── evaluation-reminders.ts # Email reminder service (F4)
|
||||
│ │ │ └── ai-evaluation-summary.ts # GPT summary generation (F7)
|
||||
│ │ └── middleware/ # RBAC & auth middleware
|
||||
│ ├── hooks/ # React hooks
|
||||
│ ├── types/ # Shared TypeScript types
|
||||
@@ -240,8 +257,11 @@ SMTP_USER="noreply@monaco-opc.com"
|
||||
SMTP_PASS="your-smtp-password"
|
||||
EMAIL_FROM="MOPC Platform <noreply@monaco-opc.com>"
|
||||
|
||||
# OpenAI (for smart assignment)
|
||||
# OpenAI (for smart assignment and AI evaluation summaries)
|
||||
OPENAI_API_KEY="your-openai-api-key"
|
||||
|
||||
# Cron (for scheduled evaluation reminders)
|
||||
CRON_SECRET="your-cron-secret-key"
|
||||
```
|
||||
|
||||
## Key Architectural Decisions
|
||||
@@ -273,8 +293,10 @@ OPENAI_API_KEY="your-openai-api-key"
|
||||
|------|------------|
|
||||
| **SUPER_ADMIN** | Full system access, all programs, user management |
|
||||
| **PROGRAM_ADMIN** | Manage specific programs, rounds, projects, jury |
|
||||
| **JURY_MEMBER** | View assigned projects only, submit evaluations |
|
||||
| **OBSERVER** | Read-only access to dashboards (optional) |
|
||||
| **JURY_MEMBER** | View assigned projects only, submit evaluations, declare COI |
|
||||
| **OBSERVER** | Read-only access to dashboards, all analytics/reports |
|
||||
| **MENTOR** | View assigned projects, message applicants via `mentorProcedure` |
|
||||
| **APPLICANT** | View own project status, upload documents per round, message mentor |
|
||||
|
||||
## Important Constraints
|
||||
|
||||
@@ -286,6 +308,12 @@ OPENAI_API_KEY="your-openai-api-key"
|
||||
6. **Mobile responsiveness is mandatory** - every view must work on phones
|
||||
7. **File downloads require project authorization** - jury/mentor must be assigned to the project
|
||||
8. **Mentor endpoints require MENTOR role** - uses `mentorProcedure` middleware
|
||||
9. **COI declaration required before evaluation** - blocking dialog gates evaluation form; admin reviews COI declarations
|
||||
10. **Evaluation form supports multiple criterion types** - `numeric`, `text`, `boolean`, `section_header`; defaults to `numeric` for backward compatibility
|
||||
11. **Smart assignment respects COI** - jurors with declared conflicts are skipped entirely; geo-diversity penalty and prior-round familiarity bonus applied
|
||||
12. **Cron endpoints protected by CRON_SECRET** - `/api/cron/reminders` validates secret header
|
||||
13. **Project status changes tracked** - every status update creates a `ProjectStatusHistory` record
|
||||
14. **Per-round document management** - `ProjectFile` supports `roundId` scoping and `isLate` deadline tracking
|
||||
|
||||
## Security Notes
|
||||
|
||||
@@ -326,9 +354,18 @@ The MOPC platform connects to these via environment variables.
|
||||
- Progress dashboards
|
||||
- CSV export
|
||||
- Audit logging
|
||||
- **F1: Evaluation progress indicator** - sticky status bar with percentage tracking across criteria, global score, decision, feedback
|
||||
- **F2: Export filtering results as CSV** - dynamic AI column flattening from `aiScreeningJson`
|
||||
- **F3: Observer access to reports/analytics** - all 8 analytics procedures use `observerProcedure`; observer reports page with round selector, tabs, charts
|
||||
- **F4: Countdown timer + email reminders** - live countdown with urgency colors; `EvaluationRemindersService` with cron endpoint (`/api/cron/reminders`)
|
||||
- **F5: Conflict of Interest declaration** - `ConflictOfInterest` model; blocking dialog before evaluation; admin COI review page
|
||||
- **F6: Bulk status update UI** - checkbox selection, floating toolbar, `ProjectStatusHistory` tracking
|
||||
- **F7: AI-powered evaluation summary** - `EvaluationSummary` model; GPT-generated strengths/weaknesses, themes, scoring stats
|
||||
- **F8: Smart assignment improvements** - `geoDiversityPenalty`, `previousRoundFamiliarity`, `coiPenalty` scoring factors
|
||||
- **F9: Evaluation form flexibility** - extended criterion types (`numeric`, `text`, `boolean`, `section_header`); conditional visibility, section grouping
|
||||
- **F10: Applicant portal enhancements** - `ProjectStatusHistory` timeline; per-round document management (`roundId` + `isLate` on `ProjectFile`); `MentorMessage` model for mentor-applicant chat
|
||||
|
||||
### Out of Scope (Phase 2+)
|
||||
- Auto-assignment algorithm
|
||||
- Typeform/Notion integrations
|
||||
- WhatsApp notifications
|
||||
- Learning hub
|
||||
|
||||
Reference in New Issue
Block a user