remove crap, erd and architecure diagram

- a bit of cleaning of useless files
- finished ERD diagram
- added architecture diagram
    - added to dossier as well
This commit is contained in:
Awen Lelu
2026-03-10 10:32:47 +01:00
parent 7340e61a30
commit 57714071da
7 changed files with 93 additions and 38 deletions

View File

@@ -17,3 +17,8 @@ UML
===
# Entity Relations
<!-- include: uml/ERD.md -->
UML
===
# Architecture
<!-- include: uml/architecture.md -->

View File

@@ -4,17 +4,22 @@ config:
layout: elk
---
erDiagram
User ||--o{ Objectif: objectif
User |o--o{ Plan: abonnement
User |o--o{ RegimeAlimentaire: regime
User }o--o{ Allergie: allergies
User }o--o{ Exercice: exercices
Aliment }o--|| Allergie: alergène
Aliment }o--|{ Recette: ingredients
Recette }|--|{ RegimeAlimentaire: regime
Exercice }|--|{ Equipement: équipement
Exercice }|--|{ BodyPart: partieCorps
Exercice }|--|{ Muscle: muscle
UserProfile ||--o{ Objective: objective
UserProfile |o--o{ Subscription: subscription
UserProfile |o--o{ Diet: diet
UserProfile }o--o{ Ingredient: allergies
UserProfile ||--|| User: user
Ingredient |o--o{ Diet: diet
Recipe }|--o{ Ingredient: ingredients
ExercisePlan }|--o{ Exercise: exercises
ExercisePlan ||--o{ User: user
MealPlan }|--o{ Recipe: meals
MealPlan ||--o{ User: user
Exercise |o--o{ Equipement: equipements
Exercise |o--o{ BodyPart: bodyparts
Exercise |o--o{ Muscle: muscles
User{
int id
bool is_superuser
@@ -37,7 +42,7 @@ erDiagram
integer height
string picture
}
Objectif {
Objective{
int id
string name
string description
@@ -62,36 +67,44 @@ erDiagram
int sugars
int salt
}
Recette {
int Id
string Nom
int MinutesPreparation
int MinutesCuisson
string Resume
string Recette
string ImageUrl
Recipe{
int id
string name
int minute_preparation
int minute_preparation
string summary
string steps
string picture
}
Regime {
int Id
string Nom
string Description
MealPlan {
int id
datetime created_date
}
Exercice {
int Id
string Nom
string GifUrl
string Instructions
Diet {
int id
string name
string description
}
Exercise {
int id
string name
string image
string instructions
}
Equipement {
int Id
string Nom
int id
string name
}
BodyPart {
int Id
string Nom
int id
string name
}
Muscle {
int Id
string Nom
int id
string name
}
ExercisePlan {
int id
datetime created_date
}
```

View File

@@ -0,0 +1,27 @@
```mermaid +render
architecture-beta
group back(Server)[HealhAI Back]
group api(cloud)[API] in back
group etl(cloud)[ETL] in back
group datavis(cloud)[Data visualisation] in back
service db(database)[Database] in api
service gunicorn(server)[gunicorn] in api
service grafana(cloud)[Grafana] in datavis
service django-admin(cloud)[Django Admin] in datavis
service redis(database)[Redis] in etl
service parser(server)[Parser] in etl
junction parserJunction in etl
junction redisJunction in etl
gunicorn:L -- R:db
parser:B -- T:redis
parser:R --> L:parserJunction
redis:R <-- L:redisJunction
parserJunction:B -- T:redisJunction
grafana:T <-- B:db
django-admin:T -- B:gunicorn
gunicorn:T -- B:redisJunction
```

View File

@@ -78,6 +78,7 @@
presenterm
yaml-language-server
mermaid-cli
pythonSet.python.pkgs.weasyprint
];
};
default = pkgs.mkShellNoCC {

View File

@@ -11,6 +11,7 @@ class UserProfile(models.Model):
weight = models.IntegerField() # in g
height = models.IntegerField() # in cm
picture = models.ImageField(upload_to="profiles")
allergies = models.ManyToManyField("Ingredient", related_name="users")
diet = models.ForeignKey(
"Diet", on_delete=models.SET_NULL, null=True, blank=True, related_name="users"
@@ -27,7 +28,7 @@ class UserProfile(models.Model):
# with the date of plan generation.
class Objectif(models.Model):
class Objective(models.Model):
name = models.CharField(max_length=200)
description = models.TextField()
image_url = models.ImageField("objectives")
@@ -68,19 +69,27 @@ class Ingredient(models.Model):
class Recipe(models.Model):
nom = models.CharField(max_length=300)
name = models.CharField(max_length=300)
minutes_preparation = models.IntegerField()
minutes_cuisson = models.IntegerField()
summary = models.TextField()
steps = models.TextField()
picture = models.ImageField("recipes")
ingredients = models.ManyToManyField(Ingredient, related_name="ingredients")
class ExercisePlan(models.Model):
created_date = models.DateTimeField(default=datetime.now, editable=False)
exercises = models.ManyToManyField("Exercise", related_name="plans")
user = models.ForeignKey(
UserProfile, related_name="plans", on_delete=models.CASCADE
UserProfile, related_name="exercise_plans", on_delete=models.CASCADE
)
class MealPlan(models.Model):
created_date = models.DateTimeField(default=datetime.now, editable=False)
meals = models.ManyToManyField("Recipe", related_name="plans")
user = models.ForeignKey(
UserProfile, related_name="meal_plans", on_delete=models.CASCADE
)