Pending course, rest ready for launch
This commit is contained in:
93
task_implementation.md
Normal file
93
task_implementation.md
Normal file
@@ -0,0 +1,93 @@
|
||||
# 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
|
||||
|
||||
Reference in New Issue
Block a user