gilles 3b1601a07b feat(service): open-meteo enrichi (sol, ETP, past_days, humidité) + tests
- Remplace le service meteo.py minimal par une version enrichie :
  past_days=7 + forecast=8, champs humidite_moy, sol_0cm, etp_mm
- Corrige les noms de champs API (weather_code, wind_speed_10m_max)
  et passe les paramètres daily en liste de tuples pour compatibilité
- Ajoute fetch_and_store_forecast() pour le scheduler (Task 6)
- Conserve fetch_forecast() pour compatibilité ascendante (GET /api/meteo)
- Crée backend/tests/test_meteo.py (test_health passe, 3 autres
  échouent en attente des endpoints Task 7)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 14:46:37 +01:00

Jardin — Application de gestion de jardins

Interface web mobile-first pour gérer vos jardins, cultures, tâches et calendrier lunaire.
Thème : Gruvbox Dark Seventies.


Prérequis

  • Docker + Docker Compose

Lancement rapide

cp .env.example .env
docker compose up --build

Développement local

Backend

cd backend
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
DATABASE_URL=sqlite:///./data/jardin.db UPLOAD_DIR=./data/uploads uvicorn app.main:app --reload

Frontend

cd frontend
npm install
npm run dev   # → http://localhost:5173

Tests backend

cd backend
source .venv/bin/activate
pytest tests/ -v

Structure du projet

jardin/
├── backend/              # API FastAPI + SQLite
│   ├── app/
│   │   ├── main.py       # App FastAPI, lifespan, CORS
│   │   ├── database.py   # Engine SQLite, session
│   │   ├── config.py     # Variables d'environnement
│   │   ├── seed.py       # Données de démo
│   │   ├── models/       # Tables SQLModel (11 tables)
│   │   └── routers/      # Endpoints API
│   └── tests/            # Tests pytest (18 tests)
├── frontend/             # SPA Vue 3 + Vite + Tailwind
│   └── src/
│       ├── api/          # Clients Axios
│       ├── stores/       # Stores Pinia
│       ├── components/   # Header, Drawer
│       ├── router/       # Vue Router (9 routes)
│       └── views/        # 9 pages
├── data/                 # Volume persistant (SQLite + uploads)
├── docker-compose.yml
└── .env.example

Données de démo

Au premier démarrage, l'application crée automatiquement :

  • 1 jardin "Mon potager" (grille 6×4, plein sud)
  • 3 variétés : Tomate Andine Cornue, Courgette Verte, Laitue Batavia
  • 2 plantations en cours
  • 3 tâches (arrosage, traitement pucerons, compost)

Sauvegarde

La base SQLite se trouve dans data/jardin.db. Copiez ce fichier pour sauvegarder :

cp data/jardin.db data/jardin_backup_$(date +%Y%m%d).db

API

Documentation interactive disponible sur http://localhost:8000/docs (Swagger UI).

Endpoints principaux :

Méthode Endpoint Description
GET /api/health Santé de l'API
GET/POST /api/gardens Jardins
GET/PUT/DELETE /api/gardens/{id} Jardin par ID
GET/POST /api/gardens/{id}/cells Cases de la grille
GET/POST /api/gardens/{id}/measurements Mesures temp/humidité
GET/POST /api/varieties Variétés
GET/POST /api/plantings Plantations
GET/POST /api/plantings/{id}/events Historique d'une plantation
GET/POST /api/tasks Tâches
GET /api/settings Paramètres utilisateur
PUT /api/settings Mettre à jour les paramètres
GET /api/lunar?month=YYYY-MM Calendrier lunaire
POST /api/upload Upload d'une image
Description
No description provided
Readme 340 MiB
Languages
JavaScript 60.2%
Vue 19.6%
Python 17.7%
TypeScript 2.3%
CSS 0.1%