docs: update documentation to reflect module completion and testing progress

Updated `PROJECT_STATUS.md` with completed modules (`auth`, `groups`, `tags`) and unit testing progress, including marked tests for controllers and services as done. Added logical and conceptual database models (`DATABASE_SCHEMA_PLAN.md`) and revised implementation statuses in `IMPLEMENTATION_GUIDE.md`.
This commit is contained in:
Mathis H (Avnyr) 2025-05-15 20:57:59 +02:00
parent 2de57e6e6f
commit cf292de428
3 changed files with 201 additions and 20 deletions

View File

@ -32,11 +32,15 @@ Pour une implémentation efficace, nous recommandons de suivre l'ordre suivant :
4. Configurer les guards et décorateurs pour la protection des routes 4. Configurer les guards et décorateurs pour la protection des routes
### Phase 3 : Modules Principaux ### Phase 3 : Modules Principaux
1. Implémenter le module projets 1. Implémenter le module projets ✅
2. Implémenter le module personnes 2. Implémenter le module personnes ✅
3. Implémenter le module groupes 3. Implémenter le module groupes ✅
4. Implémenter le module tags 4. Implémenter le module tags ✅
5. Établir les relations entre les modules 5. Établir les relations entre les modules ✅
- Relations PersonToGroup ✅
- Relations PersonToTag ✅
- Relations ProjectToTag ✅
- Relations ProjectCollaborators ✅
### Phase 4 : Communication en Temps Réel ### Phase 4 : Communication en Temps Réel
1. Configurer Socket.IO avec NestJS 1. Configurer Socket.IO avec NestJS
@ -101,4 +105,4 @@ Pour une implémentation efficace, nous recommandons de suivre l'ordre suivant :
Ce guide d'implémentation fournit une feuille de route complète pour le développement de l'application. En suivant les plans détaillés et les bonnes pratiques recommandées, vous pourrez construire une application robuste, sécurisée et performante. Ce guide d'implémentation fournit une feuille de route complète pour le développement de l'application. En suivant les plans détaillés et les bonnes pratiques recommandées, vous pourrez construire une application robuste, sécurisée et performante.
Pour plus de détails sur l'état actuel du projet et les tâches restantes, consultez le document [État d'Avancement du Projet](PROJECT_STATUS.md). Pour plus de détails sur l'état actuel du projet et les tâches restantes, consultez le document [État d'Avancement du Projet](PROJECT_STATUS.md).

View File

@ -22,19 +22,21 @@ Nous avons élaboré un plan de bataille complet pour l'implémentation du backe
#### Composants En Cours #### Composants En Cours
- ⏳ Relations entre les modules existants - ⏳ Relations entre les modules existants
- ⏳ Tests unitaires et e2e
#### Composants Récemment Implémentés #### Composants Récemment Implémentés
- ✅ Système de migrations de base de données avec DrizzleORM - ✅ Système de migrations de base de données avec DrizzleORM
- ✅ Tests unitaires pour les modules auth, groups et tags
#### Composants Non Implémentés #### Composants Non Implémentés
- Module d'authentification avec GitHub OAuth - Module d'authentification avec GitHub OAuth
- Stratégies JWT pour la gestion des sessions - Stratégies JWT pour la gestion des sessions
- ✅ Guards et décorateurs pour la protection des routes - ✅ Guards et décorateurs pour la protection des routes
- ✅ Module groupes - ✅ Module groupes
- ✅ Module tags - ✅ Module tags
- ❌ Communication en temps réel avec Socket.IO - ❌ Communication en temps réel avec Socket.IO
- ❌ Fonctionnalités de conformité RGPD - ❌ Fonctionnalités de conformité RGPD
- ⏳ Tests unitaires et e2e - ❌ Tests e2e complets
- ❌ Documentation API avec Swagger - ❌ Documentation API avec Swagger
### Frontend ### Frontend
@ -74,7 +76,15 @@ Nous avons élaboré un plan de bataille complet pour l'implémentation du backe
##### Modules Manquants ##### Modules Manquants
- [x] Implémenter le module groupes (contrôleurs, services, DTOs) - [x] Implémenter le module groupes (contrôleurs, services, DTOs)
- [x] Implémenter le module tags (contrôleurs, services, DTOs) - [x] Implémenter le module tags (contrôleurs, services, DTOs)
- [ ] Compléter les relations entre les modules existants - [x] Compléter les relations entre les modules existants
##### Tests Unitaires
- [x] Écrire des tests unitaires pour le module auth
- [x] Écrire des tests unitaires pour le module groups
- [x] Écrire des tests unitaires pour le module tags
- [x] Écrire des tests unitaires pour le module persons
- [x] Écrire des tests unitaires pour le module projects
- [x] Écrire des tests unitaires pour le module users
#### Priorité Moyenne #### Priorité Moyenne
@ -95,8 +105,9 @@ Nous avons élaboré un plan de bataille complet pour l'implémentation du backe
#### Priorité Basse #### Priorité Basse
##### Tests et Documentation ##### Tests et Documentation
- [x] Écrire des tests unitaires pour les services - [x] Écrire des tests unitaires pour les services (tous les modules)
- [x] Écrire des tests unitaires pour les contrôleurs - [x] Écrire des tests unitaires pour les contrôleurs (tous les modules)
- [x] Écrire des tests unitaires pour tous les modules
- [ ] Développer des tests e2e pour les API - [ ] Développer des tests e2e pour les API
- [ ] Configurer Swagger pour la documentation API - [ ] Configurer Swagger pour la documentation API
- [ ] Documenter les endpoints API - [ ] Documenter les endpoints API
@ -172,7 +183,7 @@ Nous avons élaboré un plan de bataille complet pour l'implémentation du backe
2. **Modules et Relations** 2. **Modules et Relations**
- ✅ Implémenter le module groupes - ✅ Implémenter le module groupes
- ✅ Implémenter le module tags - ✅ Implémenter le module tags
- Compléter les relations entre les modules existants - Compléter les relations entre les modules existants
### Frontend (Priorité Haute) ### Frontend (Priorité Haute)
1. **Authentification** 1. **Authentification**
@ -194,7 +205,7 @@ Nous avons élaboré un plan de bataille complet pour l'implémentation du backe
| Backend - Modules Fonctionnels | 80% | | Backend - Modules Fonctionnels | 80% |
| Backend - Authentification | 90% | | Backend - Authentification | 90% |
| Backend - WebSockets | 0% | | Backend - WebSockets | 0% |
| Backend - Tests et Documentation | 40% | | Backend - Tests et Documentation | 70% |
| Frontend - Structure de Base | 70% | | Frontend - Structure de Base | 70% |
| Frontend - Pages et Composants | 10% | | Frontend - Pages et Composants | 10% |
| Frontend - Authentification | 0% | | Frontend - Authentification | 0% |

View File

@ -11,6 +11,172 @@ Le schéma de base de données est conçu pour supporter les fonctionnalités su
- Création et gestion de groupes - Création et gestion de groupes
- Système de tags pour catégoriser les personnes et les projets - Système de tags pour catégoriser les personnes et les projets
### 1.1 Modèle Conceptuel de Données (MCD)
Le MCD représente les entités principales et leurs relations à un niveau conceptuel.
```mermaid
erDiagram
USER ||--o{ PROJECT : "possède"
USER ||--o{ PROJECT_COLLABORATOR : "collabore sur"
PROJECT ||--o{ PERSON : "contient"
PROJECT ||--o{ GROUP : "organise"
PROJECT ||--o{ PROJECT_COLLABORATOR : "a des collaborateurs"
PROJECT }o--o{ TAG : "est catégorisé par"
PERSON }o--o{ GROUP : "appartient à"
PERSON }o--o{ TAG : "est catégorisé par"
USER {
uuid id PK
string githubId
string name
string avatar
string role
datetime gdprTimestamp
}
PROJECT {
uuid id PK
string name
string description
json settings
uuid ownerId FK
boolean isPublic
}
PERSON {
uuid id PK
string name
string email
int technicalLevel
string gender
json attributes
uuid projectId FK
}
GROUP {
uuid id PK
string name
string description
json settings
uuid projectId FK
}
TAG {
uuid id PK
string name
string description
string color
enum type
}
PROJECT_COLLABORATOR {
uuid projectId FK
uuid userId FK
}
```
### 1.2 Modèle Logique de Données (MLD)
Le MLD représente la structure de la base de données avec toutes les tables, y compris les tables de jonction pour les relations many-to-many.
```mermaid
erDiagram
users ||--o{ projects : "owns"
users ||--o{ project_collaborators : "collaborates on"
projects ||--o{ persons : "contains"
projects ||--o{ groups : "organizes"
projects ||--o{ project_collaborators : "has collaborators"
projects ||--o{ project_to_tag : "is categorized by"
persons ||--o{ person_to_group : "belongs to"
persons ||--o{ person_to_tag : "is categorized by"
groups ||--o{ person_to_group : "contains"
tags ||--o{ person_to_tag : "categorizes"
tags ||--o{ project_to_tag : "categorizes"
users {
uuid id PK
string github_id
string name
string avatar
string role
datetime gdpr_timestamp
datetime created_at
datetime updated_at
}
projects {
uuid id PK
string name
string description
json settings
uuid owner_id FK
boolean is_public
datetime created_at
datetime updated_at
}
persons {
uuid id PK
string name
string email
int technical_level
string gender
json attributes
uuid project_id FK
datetime created_at
datetime updated_at
}
groups {
uuid id PK
string name
string description
json settings
uuid project_id FK
datetime created_at
datetime updated_at
}
tags {
uuid id PK
string name
string description
string color
enum type
datetime created_at
datetime updated_at
}
person_to_group {
uuid id PK
uuid person_id FK
uuid group_id FK
datetime created_at
}
person_to_tag {
uuid id PK
uuid person_id FK
uuid tag_id FK
datetime created_at
}
project_to_tag {
uuid id PK
uuid project_id FK
uuid tag_id FK
datetime created_at
}
project_collaborators {
uuid id PK
uuid project_id FK
uuid user_id FK
datetime created_at
}
```
## 2. Tables Principales ## 2. Tables Principales
### 2.1 Table `users` ### 2.1 Table `users`
@ -295,11 +461,11 @@ async function main() {
const db = drizzle(pool); const db = drizzle(pool);
console.log('Running migrations...'); console.log('Running migrations...');
await migrate(db, { migrationsFolder: './src/database/migrations' }); await migrate(db, { migrationsFolder: './src/database/migrations' });
console.log('Migrations completed successfully!'); console.log('Migrations completed successfully!');
await pool.end(); await pool.end();
} }
@ -372,7 +538,7 @@ const getProjectWithPersonsAndGroups = async (db, projectId) => {
}, },
}, },
}); });
return project; return project;
}; };
``` ```
@ -393,7 +559,7 @@ const getPersonsWithTags = async (db, projectId) => {
}, },
}, },
}); });
return persons; return persons;
}; };
``` ```
@ -402,4 +568,4 @@ const getPersonsWithTags = async (db, projectId) => {
Ce schéma de base de données fournit une structure solide pour l'application de création de groupes, avec une conception qui prend en compte les performances, la flexibilité et l'intégrité des données. Les relations entre les entités sont clairement définies, et les types de données sont optimisés pour les besoins de l'application. Ce schéma de base de données fournit une structure solide pour l'application de création de groupes, avec une conception qui prend en compte les performances, la flexibilité et l'intégrité des données. Les relations entre les entités sont clairement définies, et les types de données sont optimisés pour les besoins de l'application.
L'utilisation de DrizzleORM permet une intégration transparente avec NestJS et offre une expérience de développement type-safe, facilitant la maintenance et l'évolution du schéma au fil du temps. L'utilisation de DrizzleORM permet une intégration transparente avec NestJS et offre une expérience de développement type-safe, facilitant la maintenance et l'évolution du schéma au fil du temps.