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:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user