|
|
|
@@ -45,26 +45,26 @@ En terminal interactif (VS Code), `migrate dev` fonctionne normalement (taper `y
|
|
|
|
|
- Defaults + timestamps auto ajoutés sur Campus, Utilisateur, CategorieMateriel (Role n'a pas de timestamps -> non modifié).
|
|
|
|
|
- `@unique` sur `Role.code`, `Utilisateur.microsoftId`, `Utilisateur.email`.
|
|
|
|
|
- `Utilisateur.classe` -> nullable : un `RESPONSABLE` n'a pas de classe (seuls les étudiants en ont).
|
|
|
|
|
- ERD mis à jour en miroir (`UK`, `nullable`).
|
|
|
|
|
- Ajout dans l'ERD des annotations `UK` (sur `code`, `microsoft_id`, `email`) et `nullable` (sur `classe`).
|
|
|
|
|
- Choix laissé de côté : tailles `@db.NVarChar(n)` (colonnes restées en `NVARCHAR(1000)` par défaut). À reconsidérer plus tard.
|
|
|
|
|
|
|
|
|
|
### Étape 3 — Bloc A : Infrastructure (SallePret, PosteEmprunt) — commit `d026b75`
|
|
|
|
|
- `SallePret` rattachée à `Campus` ; `PosteEmprunt` rattaché à `SallePret`. Conforme à l'ERD.
|
|
|
|
|
- `SallePret` rattachée à `Campus` (FK `campus_id`) ; `PosteEmprunt` rattaché à `SallePret` (FK `salle_pret_id`).
|
|
|
|
|
|
|
|
|
|
### Étape 4 — Bloc B : CarteEtudiante — commit `dfa73cd`
|
|
|
|
|
- Rattachée à `Utilisateur`.
|
|
|
|
|
- Dette notée : `qr_code` devrait être `@unique` (sert à l'identification, RG02) — non posé pour rester fidèle à l'ERD.
|
|
|
|
|
|
|
|
|
|
### Étape 5 — Bloc C : Matériel (Materiel, Accessoire, MaterielAccessoire) — commit `0774ee3`
|
|
|
|
|
- Table de liaison `MaterielAccessoire` (sans timestamps, conforme ERD).
|
|
|
|
|
- Table de liaison `MaterielAccessoire` entre `Materiel` et `Accessoire`, sans colonnes `created_at`/`updated_at`.
|
|
|
|
|
- Dette notée : `@@unique([materielId, accessoireId])` et `Materiel.statut @default("DISPONIBLE")`.
|
|
|
|
|
|
|
|
|
|
### Étape 6 — Bloc D : Transactions (Emprunt, Checklist, ChecklistElement) — commit `6908a2b`
|
|
|
|
|
- Champs de retour/optionnels nullable : `dateRetourReelle`, `modeIdentificationRetour`, `commentaireDepart`, `commentaireRetour`, `Checklist.commentaire`, `ChecklistElement.commentaire`.
|
|
|
|
|
- Pourquoi : RG12 crée l'emprunt au départ ; les infos de retour n'existent pas encore. En `NOT NULL`, la création serait impossible.
|
|
|
|
|
- `ChecklistElement.accessoireId` nullable : conforme au diagramme de classes (`Accessoire "0..1"`), un élément peut être un libellé libre sans accessoire catalogué.
|
|
|
|
|
- `ChecklistElement.accessoireId` rendu nullable : un élément de checklist peut être un libellé libre, sans accessoire catalogué associé (cardinalité 0..1).
|
|
|
|
|
- Les 9 FK en `NoAction` : traçabilité + évitement des cascade paths.
|
|
|
|
|
- ERD mis à jour en miroir (champs annotés `nullable`).
|
|
|
|
|
- Annotation `nullable` ajoutée dans l'ERD sur les champs de retour/commentaires d'`Emprunt` et `accessoire_id`/`commentaire` de checklist.
|
|
|
|
|
|
|
|
|
|
### Étape 7 — Stratégie Git : branche `develop`
|
|
|
|
|
- Création de `develop` depuis `master`. Désormais tous les commits vont sur `develop` ; `master` figé au Bloc C.
|
|
|
|
@@ -75,8 +75,8 @@ En terminal interactif (VS Code), `migrate dev` fonctionne normalement (taper `y
|
|
|
|
|
- Double relation `Anomalie` vers `Utilisateur` nommée : `@relation("AnomalieEtudiant")` (étudiant concerné) et `@relation("AnomalieResponsable")` (responsable qui traite).
|
|
|
|
|
- Defaults : `Anomalie.detecteeAutomatiquement @default(true)`, `Notification.lu @default(false)`, `Notification.dateCreation @default(now())`.
|
|
|
|
|
- Les 12 FK en `NoAction` (traçabilité).
|
|
|
|
|
- `Notification` et `Historique` sans `updatedAt` (conforme ERD).
|
|
|
|
|
- ERD mis à jour en miroir.
|
|
|
|
|
- `Notification` et `Historique` créées sans colonne `updatedAt` (seulement `date_creation`/`created_at`).
|
|
|
|
|
- Annotation `nullable` ajoutée dans l'ERD sur `traitee_par_id`, `observation`, `date_resolution`, `anomalie_id` et les 5 FK optionnelles d'`Historique`.
|
|
|
|
|
|
|
|
|
|
### Étape 9 — Seeds de référence — commit `2c3a5db`
|
|
|
|
|
- Fichier `prisma/seed.ts` autonome (adapter MSSQL, lecture directe des variables DB), lancé via `npm run seed` (script ajouté au `package.json`).
|
|
|
|
@@ -108,7 +108,7 @@ En terminal interactif (VS Code), `migrate dev` fonctionne normalement (taper `y
|
|
|
|
|
|
|
|
|
|
### Étape 12 — Block 1 : ESLint + Prettier
|
|
|
|
|
- ESLint 10 (flat config `eslint.config.mjs`) + typescript-eslint 8 ; Prettier 3 (`.prettierrc.json`).
|
|
|
|
|
- Règles du `CLAUDE.md` encodées : `no-explicit-any`, `no-non-null-assertion`, `explicit-module-boundary-types`, `no-unused-vars` (ignore le préfixe `_`), `prefer-const`. `eslint-config-prettier` désactive les règles en conflit avec Prettier.
|
|
|
|
|
- Règles de qualité strictes encodées : `no-explicit-any`, `no-non-null-assertion`, `explicit-module-boundary-types`, `no-unused-vars` (ignore le préfixe `_`), `prefer-const`. `eslint-config-prettier` désactive les règles en conflit avec Prettier.
|
|
|
|
|
- Prettier : quotes simples, point-virgule, 100 colonnes, 2 espaces, trailing commas.
|
|
|
|
|
- Scripts : `lint`, `lint:fix`, `format`, `format:check`.
|
|
|
|
|
- État : lint vert sur tout le code existant ; formatage appliqué (3 fichiers) ; build OK.
|
|
|
|
@@ -118,6 +118,13 @@ En terminal interactif (VS Code), `migrate dev` fonctionne normalement (taper `y
|
|
|
|
|
- Correctif : `tsconfig.json` élargi à `src` + `prisma` en `noEmit` (IDE et `tsc --noEmit`) ; nouveau `tsconfig.build.json` dédié à la compilation `src` -> `dist` (`npm run build`).
|
|
|
|
|
- Bénéfice : les scripts Prisma sont désormais type-checkés (angle mort comblé).
|
|
|
|
|
|
|
|
|
|
### Étape 14 — Block 4 : architecture en couches + 1er endpoint (catalogue matériel)
|
|
|
|
|
- Mise en place de l'architecture en couches : `routes/` -> `controllers/` -> `services/` -> `repositories/` (un dossier par couche).
|
|
|
|
|
- Auth simulée temporaire : middleware `current-user` qui résout l'utilisateur via l'en-tête `x-user-email` et pose `req.user` (typé via `types/authenticated-user.ts` + augmentation `Express.Request`). À remplacer par la validation JWT au Block 3.
|
|
|
|
|
- Endpoint `GET /api/materiels` (catalogue) : applique RG10 (matériels `DISPONIBLE` du campus de l'étudiant), filtres `categorieId` et `q` (recherche nom/marque/modèle/référence).
|
|
|
|
|
- Format de réponse standardisé : `{ "data": ... }` (cohérent avec `{ "error": ... }`).
|
|
|
|
|
- Vérifié au runtime : 401 sans en-tête / utilisateur inconnu, 200 avec les disponibles du campus, filtres OK, 400 sur `categorieId` invalide.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
## Dette technique en attente
|
|
|
|
@@ -132,4 +139,4 @@ En terminal interactif (VS Code), `migrate dev` fonctionne normalement (taper `y
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
*Dernière mise à jour : 2026-06-15 — Tooling backend finalisé (ESLint, Prettier, tsconfig split).*
|
|
|
|
|
*Dernière mise à jour : 2026-06-18 — 1er endpoint (catalogue matériel) et architecture en couches en place.*
|
|
|
|
|