avant codex
This commit is contained in:
10
backend/app/models/dicton.py
Normal file
10
backend/app/models/dicton.py
Normal file
@@ -0,0 +1,10 @@
|
||||
from typing import Optional
|
||||
from sqlmodel import Field, SQLModel
|
||||
|
||||
|
||||
class Dicton(SQLModel, table=True):
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
mois: int # 1-12
|
||||
jour: Optional[int] = None
|
||||
texte: str
|
||||
region: Optional[str] = None # Auvergne|Haute-Loire|National
|
||||
@@ -1,4 +1,4 @@
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timezone
|
||||
from typing import Optional
|
||||
from sqlmodel import Field, SQLModel
|
||||
|
||||
@@ -16,10 +16,12 @@ class Garden(SQLModel, table=True):
|
||||
ombre: Optional[str] = None # ombre | mi-ombre | plein_soleil
|
||||
sol_type: Optional[str] = None
|
||||
sol_ph: Optional[float] = None
|
||||
surface_m2: Optional[float] = None
|
||||
ensoleillement: Optional[str] = None
|
||||
grille_largeur: int = 6
|
||||
grille_hauteur: int = 4
|
||||
created_at: datetime = Field(default_factory=datetime.utcnow)
|
||||
updated_at: datetime = Field(default_factory=datetime.utcnow)
|
||||
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
||||
updated_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
||||
|
||||
|
||||
class GardenCell(SQLModel, table=True):
|
||||
@@ -39,7 +41,7 @@ class GardenImage(SQLModel, table=True):
|
||||
garden_id: int = Field(foreign_key="garden.id", index=True)
|
||||
filename: str
|
||||
caption: Optional[str] = None
|
||||
created_at: datetime = Field(default_factory=datetime.utcnow)
|
||||
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
||||
|
||||
|
||||
class Measurement(SQLModel, table=True):
|
||||
@@ -50,4 +52,4 @@ class Measurement(SQLModel, table=True):
|
||||
humidite_air: Optional[float] = None
|
||||
humidite_sol: Optional[float] = None
|
||||
source: str = "manuel" # manuel | capteur
|
||||
ts: datetime = Field(default_factory=datetime.utcnow)
|
||||
ts: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timezone
|
||||
from typing import Optional
|
||||
from sqlmodel import Field, SQLModel
|
||||
|
||||
|
||||
class PlantVariety(SQLModel, table=True):
|
||||
class Plant(SQLModel, table=True):
|
||||
__tablename__ = "plant"
|
||||
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
nom_commun: str
|
||||
nom_botanique: Optional[str] = None
|
||||
@@ -11,9 +13,11 @@ class PlantVariety(SQLModel, table=True):
|
||||
famille: Optional[str] = None
|
||||
tags: Optional[str] = None # CSV
|
||||
type_plante: Optional[str] = None # legume | fruit | aromatique | fleur
|
||||
categorie: Optional[str] = None # potager|fleur|arbre|arbuste
|
||||
besoin_eau: Optional[str] = None # faible | moyen | fort
|
||||
besoin_soleil: Optional[str] = None
|
||||
espacement_cm: Optional[int] = None
|
||||
hauteur_cm: Optional[int] = None
|
||||
temp_min_c: Optional[float] = None
|
||||
duree_culture_j: Optional[int] = None
|
||||
profondeur_semis_cm: Optional[float] = None
|
||||
@@ -23,13 +27,16 @@ class PlantVariety(SQLModel, table=True):
|
||||
repiquage_mois: Optional[str] = None
|
||||
plantation_mois: Optional[str] = None
|
||||
recolte_mois: Optional[str] = None
|
||||
maladies_courantes: Optional[str] = None
|
||||
astuces_culture: Optional[str] = None
|
||||
url_reference: Optional[str] = None
|
||||
notes: Optional[str] = None
|
||||
created_at: datetime = Field(default_factory=datetime.utcnow)
|
||||
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
||||
|
||||
|
||||
class PlantImage(SQLModel, table=True):
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
variety_id: int = Field(foreign_key="plantvariety.id", index=True)
|
||||
plant_id: int = Field(foreign_key="plant.id", index=True)
|
||||
filename: str
|
||||
caption: Optional[str] = None
|
||||
created_at: datetime = Field(default_factory=datetime.utcnow)
|
||||
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
||||
|
||||
@@ -1,12 +1,28 @@
|
||||
from datetime import date, datetime
|
||||
from datetime import date, datetime, timezone
|
||||
from typing import Optional
|
||||
from sqlmodel import Field, SQLModel
|
||||
|
||||
|
||||
class PlantingCreate(SQLModel):
|
||||
garden_id: int
|
||||
variety_id: int
|
||||
cell_id: Optional[int] = None
|
||||
date_semis: Optional[date] = None
|
||||
date_plantation: Optional[date] = None
|
||||
date_repiquage: Optional[date] = None
|
||||
quantite: int = 1
|
||||
statut: str = "prevu"
|
||||
date_recolte_debut: Optional[date] = None
|
||||
date_recolte_fin: Optional[date] = None
|
||||
rendement_estime: Optional[float] = None
|
||||
rendement_reel: Optional[float] = None
|
||||
notes: Optional[str] = None
|
||||
|
||||
|
||||
class Planting(SQLModel, table=True):
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
garden_id: int = Field(foreign_key="garden.id", index=True)
|
||||
variety_id: int = Field(foreign_key="plantvariety.id", index=True)
|
||||
variety_id: int = Field(foreign_key="plant.id", index=True)
|
||||
cell_id: Optional[int] = Field(default=None, foreign_key="gardencell.id")
|
||||
date_semis: Optional[date] = None
|
||||
date_plantation: Optional[date] = None
|
||||
@@ -18,8 +34,8 @@ class Planting(SQLModel, table=True):
|
||||
rendement_estime: Optional[float] = None
|
||||
rendement_reel: Optional[float] = None
|
||||
notes: Optional[str] = None
|
||||
created_at: datetime = Field(default_factory=datetime.utcnow)
|
||||
updated_at: datetime = Field(default_factory=datetime.utcnow)
|
||||
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
||||
updated_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
||||
|
||||
|
||||
class PlantingEvent(SQLModel, table=True):
|
||||
@@ -27,4 +43,4 @@ class PlantingEvent(SQLModel, table=True):
|
||||
planting_id: int = Field(foreign_key="planting.id", index=True)
|
||||
type: str # arrosage | taille | traitement | observation | autre
|
||||
note: Optional[str] = None
|
||||
ts: datetime = Field(default_factory=datetime.utcnow)
|
||||
ts: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
||||
|
||||
42
backend/app/models/recolte.py
Normal file
42
backend/app/models/recolte.py
Normal file
@@ -0,0 +1,42 @@
|
||||
from datetime import date, datetime, timezone
|
||||
from typing import Optional
|
||||
from sqlmodel import Field, SQLModel
|
||||
|
||||
|
||||
class RecolteCreate(SQLModel):
|
||||
quantite: float
|
||||
unite: str = "kg" # kg|g|unites|litres|bottes
|
||||
date_recolte: date
|
||||
notes: Optional[str] = None
|
||||
|
||||
|
||||
class Recolte(SQLModel, table=True):
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
plantation_id: int = Field(foreign_key="planting.id", index=True)
|
||||
quantite: float
|
||||
unite: str = "kg"
|
||||
date_recolte: date
|
||||
notes: Optional[str] = None
|
||||
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
||||
|
||||
|
||||
class ObservationCreate(SQLModel):
|
||||
type: str # maladie|ravageur|traitement|note
|
||||
titre: str
|
||||
description: Optional[str] = None
|
||||
date: date
|
||||
photo_url: Optional[str] = None
|
||||
plantation_id: Optional[int] = None
|
||||
garden_id: Optional[int] = None
|
||||
|
||||
|
||||
class Observation(SQLModel, table=True):
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
type: str
|
||||
titre: str
|
||||
description: Optional[str] = None
|
||||
date: date
|
||||
photo_url: Optional[str] = None
|
||||
plantation_id: Optional[int] = Field(default=None, foreign_key="planting.id")
|
||||
garden_id: Optional[int] = Field(default=None, foreign_key="garden.id")
|
||||
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
||||
@@ -1,17 +1,34 @@
|
||||
from datetime import date, datetime
|
||||
from datetime import date, datetime, timezone
|
||||
from typing import Optional
|
||||
from sqlmodel import Field, SQLModel
|
||||
|
||||
|
||||
class TaskCreate(SQLModel):
|
||||
titre: str
|
||||
description: Optional[str] = None
|
||||
garden_id: Optional[int] = None
|
||||
planting_id: Optional[int] = None
|
||||
outil_id: Optional[int] = None
|
||||
priorite: str = "normale" # basse | normale | haute
|
||||
echeance: Optional[date] = None
|
||||
recurrence: Optional[str] = None
|
||||
frequence_jours: Optional[int] = None
|
||||
date_prochaine: Optional[date] = None
|
||||
statut: str = "a_faire" # a_faire | en_cours | fait | annule
|
||||
|
||||
|
||||
class Task(SQLModel, table=True):
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
titre: str
|
||||
description: Optional[str] = None
|
||||
garden_id: Optional[int] = Field(default=None, foreign_key="garden.id")
|
||||
planting_id: Optional[int] = Field(default=None, foreign_key="planting.id")
|
||||
priorite: str = "normale" # basse | normale | haute
|
||||
outil_id: Optional[int] = Field(default=None, foreign_key="tool.id")
|
||||
priorite: str = "normale"
|
||||
echeance: Optional[date] = None
|
||||
recurrence: Optional[str] = None # quotidien | hebdomadaire | mensuel
|
||||
statut: str = "a_faire" # a_faire | en_cours | fait | annule
|
||||
created_at: datetime = Field(default_factory=datetime.utcnow)
|
||||
updated_at: datetime = Field(default_factory=datetime.utcnow)
|
||||
recurrence: Optional[str] = None
|
||||
frequence_jours: Optional[int] = None
|
||||
date_prochaine: Optional[date] = None
|
||||
statut: str = "a_faire"
|
||||
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
||||
updated_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
||||
|
||||
12
backend/app/models/tool.py
Normal file
12
backend/app/models/tool.py
Normal file
@@ -0,0 +1,12 @@
|
||||
from datetime import datetime, timezone
|
||||
from typing import Optional
|
||||
from sqlmodel import Field, SQLModel
|
||||
|
||||
|
||||
class Tool(SQLModel, table=True):
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
nom: str
|
||||
description: Optional[str] = None
|
||||
categorie: Optional[str] = None # beche|fourche|griffe|arrosage|taille|autre
|
||||
photo_url: Optional[str] = None
|
||||
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
||||
Reference in New Issue
Block a user