# 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** :

---
**Document créé le : 17/09/2025
*Version : 1.0*
<style>
section#notes-recommendations,
section#notes-recommendations hr {
display: none !important;
}
</style>