Files
ACVE/task_implementation.md
2026-03-15 13:52:11 +00:00

94 lines
3.1 KiB
Markdown

# ACVE Task Implementation
## Scope
- Add 3 mini-games with persisted scoring and profile grading.
- Add deterministic study recommendations from user profile/progress.
- Auto-issue completion certificates and support PDF download.
- Add enrolled-courses view (`/my-courses`).
- Show `Continue` instead of `Start Course` when user is enrolled.
- Update case studies with Andres source content (`case_studies.txt`).
## Implemented Items
## 1. Mini-games + profile grade
- Expanded interactive modules to 3 in `lib/data/mockPractice.ts`.
- Added DB persistence for attempts via:
- `app/(protected)/practice/[slug]/actions.ts`
- `submitPracticeAttempt`
- `getPracticeAttempts`
- Replaced localStorage attempt history in `app/(protected)/practice/[slug]/page.tsx`.
- Added profile grade computation in `lib/recommendations.ts#getMiniGameGrade`.
## 2. Recommendations
- Added deterministic recommendation engine in `lib/recommendations.ts`:
- `refreshStudyRecommendations`
- `getActiveRecommendations`
- Recommendations refresh after:
- mini-game submission
- lesson completion toggle
- Recommendations are displayed on `/profile`.
## 3. Certificates + PDF
- Added certificate issuance utility in `lib/certificates.ts`:
- `issueCertificateIfEligible`
- `buildCertificatePdf`
- Hooked issuance after lesson completion in:
- `app/(protected)/courses/[slug]/learn/actions.ts`
- Added PDF endpoint:
- `app/api/certificates/[id]/pdf/route.ts`
## 4. Enrolled courses view
- Added protected page:
- `app/(protected)/my-courses/page.tsx`
- Displays enrolled courses, progress, continue/review CTA, and certificate download CTA.
## 5. Start vs Continue
- Updated course detail CTA in:
- `app/(public)/courses/[slug]/page.tsx`
- Logic:
- enrolled user => `Continue`
- not enrolled => `Start Course`
- unauthenticated => `Login to start`
## 6. Case studies update
- Expanded case-study type model:
- `types/caseStudy.ts`
- Replaced mock cases with:
- Marbury v. Madison
- Miranda v. Arizona
- Brown v. Board of Education
- Updated pages to render:
- resumen
- terminos juridicos con definiciones
- resultado juridico
- "Ponte a prueba"
- Files:
- `lib/data/mockCaseStudies.ts`
- `app/(public)/case-studies/page.tsx`
- `app/(public)/case-studies/[slug]/page.tsx`
## Navigation updates
- Added authenticated links in navbar:
- `/my-courses`
- `/profile`
- File:
- `components/Navbar.tsx`
## Prisma changes (schema)
- Updated `prisma/schema.prisma` with:
- `MiniGame`, `MiniGameQuestion`, `MiniGameAttempt`, `StudyRecommendation`
- `Certificate.certificateNumber`, `Certificate.pdfVersion`
- `@@unique([userId, courseId])` on `Certificate`
- Updated `prisma/seed.ts` to seed 3 mini-games + questions.
## Validation
- Ran: `npm run lint` (passes; one pre-existing warning remains in `lib/auth/requireTeacher.ts`).
## Required follow-up (environment)
- Prisma client generation failed in this environment due Node runtime mismatch (`Node v18`, project expects `>=24`).
- Before production use of new DB-backed features, run:
1. Node 24+ runtime
2. `npx prisma generate`
3. apply migration for schema updates