---
# System prepended metadata

title: Suivi des modifications — Projet Paprec

---

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