maj via codex

This commit is contained in:
2026-02-22 18:34:50 +01:00
parent 20af00d653
commit 55387f4b0e
90 changed files with 9902 additions and 1251 deletions

View File

@@ -7282,3 +7282,178 @@ naive tzinfo: None
aware tzinfo: UTC
You've hit your limit · resets 7pm (Europe/Paris)
## Mise a jour Codex - 2026-02-22
### Termine
- Task 5 (Service Open-Meteo enrichi):
- `backend/app/services/meteo.py`
- ajout aggregation journaliere `sol_0cm` depuis `hourly.soil_temperature_0cm`
- parsing defensif des valeurs numeriques
- tests: `backend/tests/test_meteo_service.py` (3 passes)
- Task 8 (Router Astuces filtres):
- `backend/app/routers/astuces.py`
- nouveaux filtres `categorie`, `tag`, `mois`
- compatibilite filtres existants `entity_type`, `entity_id`
- tests: `backend/tests/test_astuces_filters.py` (5 passes)
### Stabilisation tests
- Ajout de flags de runtime backend:
- `ENABLE_SCHEDULER` et `ENABLE_BOOTSTRAP` dans `backend/app/config.py`
- documentes dans `.env.example`
- `backend/app/main.py` respecte ces flags dans le lifespan
- `backend/tests/conftest.py` desactive scheduler/bootstrap pour les tests
- `conftest` fournit une session SQLModel par requete TestClient pour eviter les blocages thread/session
### Point restant
- `backend/tests/test_meteo.py::test_meteo_tableau_vide` reste bloquant dans ce contexte (timeout), malgre la desactivation scheduler/bootstrap.
- Les nouveaux tests unitaire meteo/astuces passent.
## Mise a jour Codex - Frontend (Tasks 9, 10, 11)
### Task 9 termine
- `frontend/src/api/meteo.ts` enrichi:
- `getTableau`, `getStationCurrent`, `getPrevisions`, `refresh`
- types `TableauRow`, `StationCurrent`, `OpenMeteoDay`
- `frontend/src/api/astuces.ts` cree
- `frontend/src/stores/astuces.ts` cree
### Task 10 termine
- `frontend/src/views/CalendrierView.vue`:
- onglet meteo refondu en tableau synthetique station + open-meteo
- widget station actuelle
- suppression ancien bloc `meteoData`
- ajout `loadTableau` + `loadStationCurrent`
### Task 11 termine
- `frontend/src/views/AstucesView.vue` cree (filtres + CRUD)
- route ajoutee: `/astuces` dans `frontend/src/router/index.ts`
- menu mobile: `frontend/src/components/AppDrawer.vue`
- menu desktop: `frontend/src/App.vue`
### Validation frontend
- `npm run lint` -> OK
- `npm run build` -> OK
## Mise a jour Codex - 2026-02-22 (Meteo, Jardin, UI)
### Migration executee (OK)
- Migration lancee dans le conteneur backend:
- `docker compose exec backend python -c "from app.migrate import run_migrations; run_migrations()"`
- Colonnes ajoutees en base SQLite:
- table `garden`: `carre_potager`, `carre_x_cm`, `carre_y_cm`
- table `astuce`: `photos`, `videos`
### Jardin: carre potager
- Backend:
- `backend/app/models/garden.py` ajoute les champs `carre_potager`, `carre_x_cm`, `carre_y_cm`
- `backend/app/migrate.py` mis a jour pour ces colonnes
- Frontend:
- `frontend/src/views/JardinsView.vue`
- ajout checkbox "Carre potager" + dimensions X/Y en cm
- conversion automatique cm -> m pour `longueur_m` / `largeur_m`
- surface calculee automatiquement si absente
### Popup edition plante responsive
- `frontend/src/views/PlantesView.vue`
- modal edition:
- smartphone: 1 colonne
- laptop/desktop: 2 colonnes (`lg:grid-cols-2`)
- notes + actions en largeur complete
### Meteo: vue unique + navigation temporelle
- Backend:
- `backend/app/routers/meteo.py`
- endpoint `/api/meteo/tableau` accepte desormais:
- `center_date=YYYY-MM-DD`
- `span` (jours avant/apres)
- Frontend:
- `frontend/src/views/CalendrierView.vue` refondu en vue meteo unique
- suppression des onglets `lunaire/meteo/taches/dictons`
- boutons navigation: `Prev`, `Today`, `Next`
- fenetre active sur +/- 15 jours autour de la date centrale
- detail a droite conserve (station, open-meteo, lunaire, dictons, saint)
### Navigation application
- Route principale renommee:
- `/meteo` -> `CalendrierView`
- Redirections conservees:
- `/calendrier` -> `/meteo`
- `/lunaire` -> `/meteo`
- Menus renommes en "Meteo":
- `frontend/src/App.vue` / `frontend/src/App.vue.js`
- `frontend/src/components/AppDrawer.vue` / `frontend/src/components/AppDrawer.vue.js`
### Validation
- Backend: compilation Python OK sur fichiers modifies
- Frontend: build OK (`npm --prefix frontend run build`)
## Mise a jour Codex - 2026-02-22 (Station/Open-Meteo, Dashboard, Outils video)
### Base de donnees meteo: mises a jour executees
- Script station locale execute avec succes:
- `python3 station_meteo/update_station_db.py`
- ecriture confirmee en base (`meteostation`):
- `current`: `2026-02-22T17:00` (pression `922.5`, vent `3.2`)
- `veille`: `2026-02-21T00:00`
- Backfill station locale (NOAA) execute:
- plage `2026-01-01` -> `2026-02-22`
- `53` jours traites, `53` upserts, `0` erreur
- Script historique Open-Meteo cree:
- `station_meteo/update_openmeteo_history_db.py`
- options: `--start-date`, `--end-date`, `--lat`, `--lon`, `--chunk-days`, `--dry-run`
- source: endpoint archive Open-Meteo
- cible: table `meteoopenmeteo` (upsert par date)
- Backfill Open-Meteo execute:
- `python3 station_meteo/update_openmeteo_history_db.py --start-date 2026-01-01 --end-date 2026-02-22`
- resultat: `53` lignes recuperees et mises a jour en base
### Dashboard / Meteo: ergonomie et visuel
- `frontend/src/views/DashboardView.vue`
- ajout d'un bloc "Condition actuelle" (icone meteo + libelle + temperature station + heure releve)
- affichage prevision sur 7 jours avec icones meteo
- suppression du scroll horizontal des cartes meteo:
- passage d'un layout `flex overflow-x-auto` a une grille responsive
- conteneur elargi (`max-w-6xl`) pour une meilleure lisibilite laptop
- `frontend/src/views/CalendrierView.vue`
- icone pression plus lisible dans le bandeau station:
- `` remplace par `🧭`
### Navigation responsive
- `frontend/src/components/AppDrawer.vue`
- correction ouverture menu en fenetre reduite laptop/tablette:
- `md:hidden` -> `lg:hidden`
- le drawer est maintenant disponible sur toutes les largeurs < `lg`
### Jardins: popup edition responsive
- `frontend/src/views/JardinsView.vue`
- popup `Nouveau/Modifier jardin` passe en responsive:
- smartphone: `1` colonne
- laptop/desktop: `2` colonnes
- modal elargi (`max-w-4xl`)
- sections longues en pleine largeur (`lg:col-span-2`)
### Outils: ajout du champ video
- Backend:
- `backend/app/models/tool.py`: ajout `video_url`
- `backend/app/migrate.py`: ajout migration auto colonne `tool.video_url`
- test ajoute: `backend/tests/test_tools.py::test_tool_with_video_url`
- Frontend:
- `frontend/src/api/tools.ts`: type `video_url?: string`
- `frontend/src/views/OutilsView.vue`:
- upload video (`accept="video/*"`)
- preview video dans le formulaire
- enregistrement `video_url` via endpoint upload
- affichage video et lien "🎬 Video" sur les cartes outils
- Base locale:
- colonne `video_url` ajoutee et verifiee dans `data/jardin.db`
### Validation technique
- Frontend builds:
- `npm --prefix frontend run build` -> OK (plusieurs executions apres changements)
- Python compilation:
- `python3 -m py_compile` sur scripts/modeles modifies -> OK
- Note tests backend:
- `pytest backend/tests/test_tools.py` reste bloque dans ce contexte d'execution,
mais les changements de schema/code compilent et la colonne DB est presente.