Commit Graph

29 Commits

Author SHA1 Message Date
djalim d3de5c29e7 refactor: add migration, seed permissions, update permissions API
feat(notes): add XLSX import island and admin route

feat(upload): add drag‑and‑drop upload, template download, UI tweaks
2026-04-27 17:08:58 +02:00
djalim 733259e317 feat : fixed some page not being as described in the figma 2026-04-27 11:21:32 +02:00
djalim 5ba8b8cb68 feat(ui): implement full UI layer for all modules
Add interactive island components and server partials for notes,
students, and admin modules, following the Figma prototype design.

- static/styles/ui.css: shared component library (buttons, tables,
  chips, cards, filters, tabs, form inputs)
- notes: NotesView (student grade view with UE cards, promo tabs,
  weighted averages), AdminConsultNotes, AdminUEs islands + partials
- students: ConsultStudents (list/filter/delete), AdminPromotions
  (CRUD) islands + partials
- admin: AdminModules, AdminUsers, AdminRoles islands + partials
- All partials use State type with unknown cast for session access

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-26 22:54:10 +02:00
djalim b0930b8da2 fix: correct handler bugs exposed by test suite
Check Deno code / Check Deno code (pull_request) Failing after 6s
Tests / Unit tests (pull_request) Successful in 13s
Tests / Integration tests (pull_request) Successful in 1m17s
- ajustements [numEtud]/[idUE]: fix .where() missing and() — PUT/DELETE
  were applying only numEtud condition, modifying all rows for a student
- modules/users/enseignements POST: add try/catch, return 500 on invalid JSON
- modules/[idModule] PUT: add try/catch + type check on nom (string required)
- modules POST: add .trim() check to reject whitespace-only id/nom
- users POST: add .trim() check to reject whitespace-only id/nom/prenom
- ues POST: add .trim() check to reject whitespace-only nom
- notes POST: add type check (typeof number) and bounds check (0 ≤ note ≤ 20)
- ue-modules POST: add coeff >= 0 validation

Update robustness tests to reflect fixed behavior (remove [BUG] labels,
replace assertRejects with status code assertions).
2026-04-26 19:01:53 +02:00
djalim 6db04045f4 fix(lint): add version to drizzle-orm imports and prefix unused NOT_FOUND 2026-04-26 11:30:33 +00:00
anys 66183c2ad8 feat(api): implement UE-Module coefficient update and deletion endpoint
- PUT /ue-modules/{idModule}/{idUE}/{idPromo}: update coeff for
  UE-Module-Promo association
- DELETE /ue-modules/{idModule}/{idUE}/{idPromo}: remove UE-Module-Promo
  association
- requires employee role
2026-04-23 14:01:40 +02:00
anys 9976b9e2b4 feat(api): implement UE-Module association get endpoint
- GET /ue-modules/{idModule}/{idUE}/{idPromo}: recover the detail of an
  ue-module association by its composite key
- requires employee role
2026-04-23 11:57:30 +00:00
Clément Oudelet 457b008ba3 PMPR-46/47 : PUT et DELETE /notes/{numEtud}/{idModule} 2026-04-23 11:56:20 +00:00
anys 22750ba07e feat(api): implement ajustement delete endpoint
- DELETE /ajustements/{numEtud}/{idUE}: remove ajustement from DB
- Requires employee role
- Returns 204 on success
2026-04-23 13:55:24 +02:00
anys 49876339bf feat(api): implement ajustement update endpoint
- PUT /ajustements/{numEtud}/{idUE}: update ajustement valeur
- Requires employee role
2026-04-23 11:48:31 +00:00
Clément Oudelet eeb087ea76 PMPR-36 : DELETE /ues/{idUE} - supprimer une UE 2026-04-23 13:44:43 +02:00
Clément Oudelet 7ad70c4525 GET /notes/{numEtud}/{idModule} - récupérer le détail d'une note pour un étudiant dans un module 2026-04-23 13:11:48 +02:00
Clément Oudelet 79669d60cf PMPR-38 : POST /ue-modules - associer un module à une UE 2026-04-22 20:40:28 +02:00
anys d3f1f433e1 feat(api): implement single ajustement retrieval endpoint
- GET /ajustements/{numEtud}/{idUE}: get ajustement by student numEtud
  and UE id
- Requires employee role
2026-04-22 17:24:39 +00:00
anys 022994e5a7 feat(api): implement ajustements list and create endpoints
- GET /ajustements: list all ajustements with optional numEtud/idUE
  filters
- POST /ajustements: create new ajustement for student in UE
- Both require employee role
2026-04-22 17:24:07 +00:00
Clément Oudelet 33d023986c PMPR-34 : GET /ues/{idUE} - récupérer une UE par son id 2026-04-22 17:20:20 +00:00
Clément Oudelet bbc9ea58e2 PMPR-37 : GET /ue-modules - liste les associations UE-Module 2026-04-22 17:15:54 +00:00
Clément Oudelet 96b7edf77f PMPR-43 : POST /notes - créer une note 2026-04-22 17:14:45 +00:00
Clément Oudelet 2f15efe21e PMPR-33 : POST /ues - créer une UE 2026-04-22 14:28:03 +02:00
Clément Oudelet b2847a4a7d PMPR-42 : GET /notes - récupère les notes 2026-04-22 12:20:59 +00:00
Clément Oudelet 32ffbb7cda PMPR-32 : GET /ues - liste toutes les UEs 2026-04-22 12:50:46 +02:00
Kevin FEDYNA 85766ffeed changed login and logout to adapt to domain and added ToU 2025-01-21 22:31:36 +01:00
fedyna-k ce944c8d92 Fixed card CSS and hint 2025-01-15 23:51:54 +01:00
Kevin FEDYNA b894930e12 Fix after MR 2025-01-15 15:57:08 +01:00
Kevin FEDYNA 3f3c7be1f9 Merge branch 'main' into PMPR-3 2025-01-15 15:48:50 +01:00
Clayzxr 8cee593d33 Adding cards for modules and creating mobility module 2025-01-15 15:44:52 +01:00
Kevin FEDYNA 9db588ff02 Partials OK, auto navbar and content 2025-01-15 15:43:52 +01:00
Kevin FEDYNA ed2997d51f Remaped imports to prepare for new content handling 2025-01-15 11:20:48 +01:00
Kevin FEDYNA eea49969b5 Added catalog generation, need to bug fix 2025-01-15 10:15:02 +01:00