# Suivi des modifications — Projet Paprec ## 1. Résumé exécutif Ce document présente le suivi des fichiers modifiés et ajoutés pour le projet Paprec, ainsi que les éléments nécessaires: - lien vers la démo des fonctionnalités développées - Remarques techniques - Captures de l'architecture mock 🔗 **Lien Drive (Démo fonctionnalités développées)** : [Accéder à la démo](https://drive.google.com/file/d/1W6FbVFsI--H68lHCs-4cHyb5_rIs4YWi/view?usp=drive_link) --- ## 2. Détail des fichiers (suivi des modifications) ### Backend #### Fichiers SQL - `admins-asssitants.sql` - `justifications-descriptions.sql` #### Controllers - `admins.js` - `auth.controller` - `declaration-inputs.controller.js` - `declarations.controller.js` - `organizations.controller.js` - `users.controller.js` - `user.js` #### Models - `Administrateurs.js` - `Assistants.js` - `DescriptionDeclaration.js` - `JustificationDeclaration.js` #### Routes - `declarations-input.route.js` - `declarations.route.js` - `index.js` - `users.route.js` - `organizations.route.js` #### Schémas (backend) - `auth.schema.js` - `declarations-inputs.schema.js` - `declarations.schema.js` - `users.schema.js` #### Schémas (frontend) - `Beneficiaries.schema.js` - `declaration.schema.js` --- ### Frontend #### Config / Environnement - `.env.example` #### Packages - `package.json` #### Pages / Composants - `dashboard/page.jsx` - `dashboard/MyDeclarations.jsx` - `dashboard/PendingDeclarationDTRow.jsx` - `dashboard/ProcessedDeclarationDTRow.jsx` - `dashboard/ProcessedDeclarations.jsx` - `declarations/[id]/page.jsx` - `Kpis.jsx` - `route.js` (api/auth/[...nextauth]) #### Sous-dossier — Déclaration / Étapes - `AddParticipantModal.jsx` - `Beneficiaries.jsx` - `Confirm.jsx` - `Description.jsx` - `Form.jsx` - `SearchForm.jsx` - `Start.jsx` - `LessThanRecommended.jsx` - `Guests.jsx` #### Autres composants - `LanguageSelector.jsx` #### Pagination - `index.tsx` #### Locales - `en.json` - `fr.json` #### Styles - `_index.scss` - `_skeleton.scss` #### Utils - `generateMetaTitle.js` --- ## 3. Notes techniques importantes ### 3.1. Environnement d'authentification (implémentation temporaire) Pour permettre le développement sans dépendre du service d'authentification centralisé, une implémentation temporaire a été introduite. Celle-ci simule des utilisateurs (liste `fakeUsers`) et permet d'identifier si l'utilisateur est un assistant et, le cas échéant, de récupérer la liste des administrateurs associés. **Extrait (à intégrer dans AuthService)** ```javascript import axios from "axios"; import secrets from "../config/secrets"; import loadInterceptors from "../middlewares/axios"; import Assistants from "../models/Assistants"; import Administrateurs from "../models/Administrateurs"; const fakeUsers = [ { email: "test-1@paprec.com", password: "password", }, { email: "test-2@paprec.com", password: "password", }, { email: "test-3@paprec.com", password: "password", }, { email: "assistant1@paprec.com", password: "password", }, ]; const instance = axios.create({ baseURL: secrets.services.auth.baseUrl, headers: { common: { Authorization: `Bearer ${secrets.services.auth.token}`, }, }, timeout: secrets.services.auth.timeout, }); loadInterceptors(instance); const getAdminsIfUserIsAssistant = async (user) => { const assistant = await Assistants.findOne({ where: { Email: user.email } }); if (assistant) { const admins = await Administrateurs.findAll(); return admins.map((a) => a.email); } return null; }; const authenticate = async (email, password) => { /* const { data } = await instance.post("/auth", { email, password }); return data; */ const foundUser = fakeUsers?.find((user) => user.email === email && user.password === password); if (foundUser) { const admins = await getAdminsIfUserIsAssistant(foundUser); return { email: foundUser.email, isAssistant: Boolean(admins), }; } }; const AuthService = { authenticate, getAdminsIfUserIsAssistant, }; export default AuthService; ``` ### 4.2. Base de données — Tables mock pour tests Pour permettre les tests fonctionnels, nous avons créé des tables mock (fictives) pour simuler les jeux de données. **Pièce jointe** : ![Screenshot from 2025-09-17 11-47-21](https://hackmd.io/_uploads/ByNr8Musge.png) --- **Document créé le : 17/09/2025 *Version : 1.0* <style> section#notes-recommendations, section#notes-recommendations hr { display: none !important; } </style>