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:
2025-05-15 20:57:59 +02:00
parent 2de57e6e6f
commit cf292de428
3 changed files with 201 additions and 20 deletions

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
- 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.1 Table `users`
@@ -295,11 +461,11 @@ async function main() {
const db = drizzle(pool);
console.log('Running migrations...');
await migrate(db, { migrationsFolder: './src/database/migrations' });
console.log('Migrations completed successfully!');
await pool.end();
}
@@ -372,7 +538,7 @@ const getProjectWithPersonsAndGroups = async (db, projectId) => {
},
},
});
return project;
};
```
@@ -393,7 +559,7 @@ const getPersonsWithTags = async (db, projectId) => {
},
},
});
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.
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.