Commit Graph

24 Commits

Author SHA1 Message Date
9d100b45c6 agent bourse, revue glissante, niveau VW estime depuis l'autonomie, alertes 2026-10-12 17:15:53 +02:00
740c83e20e concierge : alertes piles, alertes de l'arbitre ; fiche : piles, surplus SDB 2026-10-10 01:11:59 +02:00
713626b432 fiche : revue de la journee (etat des leviers), journaux de tri 2026-10-09 00:38:18 +02:00
3ee3dbef13 arbitre : rappel du choix retenu avant l'application d'EVCS 2026-10-08 09:53:50 +02:00
a5663ce427 arbitre EVCS par WhatsApp, revue de la journee, jour faible et sans EDF dans la fiche 2026-10-08 09:53:04 +02:00
e0834a7627 concierge et fiche : regles Jeep rapides, decouverte tardive, alerte chauffe-eau
- concierge-live.js : question immediate si la Jeep a le contact mis (info fraiche)
  ou un GPS frais hors de zone.maison_jeep ; pas de question pour un branchement
  decouvert plus de 2 h apres son heure (trace) ; relais de l'alerte chauffe-eau
  (input_text.evcs_alerte_chauffe_eau, une fois par fenetre HC, active === true).
- AGENTS.md : chauffe-eau en lecture seule (etat reel = switch, raison, pas de
  pilotage, BOOST sur l'appareil), jour faible = EDF aux HC de nuit et de midi,
  recharge HC expliquee par victron_charge_reason.
- Journaux de tri Orange et AIRTRIA, DREAMS.
2026-10-07 23:29:01 +02:00
55e469e103 concierge: JEEP identifiee aussi par sa fin de trajet (odometre change)
- detect : chargeur off, last_info_update_at dans [branchement -10 min, branchement] et odometer.last_changed dans [-10 min, +20 min] (heure de relecture HA) -> ligne d'info JEEP, niveau a l'arrivee, sans question. Une Jeep garee qui republie sans rouler est exclue.
- Journaux de tri Orange et AIRTRIA, DREAMS.
2026-10-06 01:36:31 +02:00
4cd3615172 workspace: Jeep auto-identifiee, photo de tableau de bord, releves km, transfert Stoik
- concierge-live.js : variante (a), la JEEP identifiee par Uconnect recoit une
  ligne d'info sans question ; attente de 15 min avant de questionner une voiture
  inconnue ; releves km ; reponse sur une ligne ; simulation sans ecriture d'etat.
- concierge-write.js (EVCS) : niveau et releve km, tests.
- lecture-tableau.py : lecture d'une photo de tableau de bord par la Spark,
  confirmation avant envoi au concierge, % ignore si branchee depuis > 10 min.
- stoik-transfert.py : rapports Stoik de la boite AIRTRIA vers la Gmail, une fois.
- AGENTS.md et reference-concierge.md alignes.
- .gitignore : deux scripts ajoutes, DREAMS de l'agent bilans exclu.
2026-10-04 15:50:25 +02:00
1e3c0fc337 workspace-bilans: agent bilans AIRTRIA (fiche, outil, donnees), renvoi maison
- Nouvel agent « bilans » : AGENTS.md tire de reference-bilans.md (AIRTRIA_BILAN),
  scripts/bilans.py et bilans/airtria-balances.json identiques au pack
  /mnt/projects/analyse-bilans. Joignable dans le groupe WhatsApp « Bilans AIRTRIA »
  du compte Samsung (binding peer groupe dans openclaw.json, non versionne).
- Agent maison : §4 « MAILS », §4bis renvoi des bilans vers le groupe.
- .gitignore : liste blanche de workspace-bilans (memoire et etat exclus).
2026-10-03 00:47:02 +02:00
5dc72349e5 workspace: niveau du vehicule par le concierge (option A), simulation par drapeau
- concierge-write.js : setVehicleLevel (entier 0-100, refus sans correction,
  relecture), ZERO dans SELECTOR_LABELS ; tests 13/13.
- concierge-live.js answer : reconnait « NN % », ecrit le niveau, lignes
  « 🔋 Niveau noté » / « ⚠️ Niveau NON noté ».
- Drapeau workspace/.simulation lu par concierge-live.js et airtria-ha-vehicule.js :
  aucune ecriture HA pendant un banc agent.
- airtria-ha-vehicule.js : validation de tous les arguments avant ecriture.
- AGENTS.md et reference-concierge.md : vehicule et niveau passent par le concierge.
- Journaux de tri Orange et AIRTRIA, DREAMS.
2026-10-03 00:19:15 +02:00
aabd6b77e6 workspace: jours de depart du matin de la JEEP dans la fiche, DREAMS
- AGENTS.md : depart du matin 06:30 mar/mer/ven/sam/dim, apres-midi 15:30 mardi et samedi, jours lus dans HA.
- DREAMS.md : mise a jour par l'agent.
2026-10-01 16:26:43 +02:00
f18ce33d32 workspace: mode de charge de nuit, concierge sans relais parasite, journaux
- airtria-ha-vehicule.js : option --mode-nuit complete|sans_edf (seul
  input_select.victron_evcs_night_charge_mode, relecture, refus des options
  inconnues) ; libelle « aucune voiture branchee » distinct du selecteur.
- concierge-live.js : message sans vehicule marque « (aucune action concierge »,
  a ne pas relayer.
- AGENTS.md : routage charge voiture de la nuit et budget, regle §5.0.
- Journaux de tri Orange et AIRTRIA.
2026-09-30 23:50:32 +02:00
f121f0a196 workspace: rapport solaire, prevision de nuit, concierge, courrier, fiche allegee
- Fiche agent maison (AGENTS.md) : prevision de nuit relayee par script, import
  EDF, regle JEEP midi, saisie vehicule/niveau/depart, concierge qui relaie
  « ✅ Noté » ou « Rien n'est noté », groupe A deplace (28 649 -> 25 831 car.).
- Nouvelles references : reference-concierge.md, reference-workspace.md.
- Scripts : rapport-solaire.js, prevision-nuit.js, airtria-ha-vehicule.js,
  concierge-live.js (answer ne sort plus jamais vide, mode CONCIERGE_SIMULATION).
- Courrier Orange / AIRTRIA / Gmail : audits, regles, menage, recents.
- Bancs EVCS tests-pv (G5 accepte « anomal »).
- .gitignore : liste blanche etendue aux nouveaux scripts et bancs.
2026-09-30 11:32:44 +02:00
973a736bc2 concierge: ecouteur 'error' sur le client pg (evite une mort silencieuse)
Un 'error' socket du client pg SANS ecouteur = exception non capturee qui echappe au
try/catch et TUE le process -- donc l'alerte d'echec d'auth ne partirait jamais ("un
battement dans un process mort ne bat pas", piege signale par EVCS). makeClient attache
desormais un ecouteur : l'erreur devient non fatale, l'await en cours rejette et reste
rattrape par l'etage live.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RZsbhyGmRwZogdoBwT6C6y
2026-09-16 09:36:10 +02:00
04c1e19bf3 airtria-ha-read: age = fait neutre, pas de verdict "fige" (EVCS)
EVCS a mesure que "FIGE >15 min" crie au loup : un systeme stable a des entites metier
IMMOBILES par construction (voiture branchee depuis 12 h, mode "Bloque" inchange), et
last_reported == last_changed -- aucun champ de l'API ne distingue un ecrivain mort d'une
reecriture identique. L'age n'est donc pas une preuve de panne.

- airtria-ha-read.js : "inchange depuis X" (fait neutre), plus de marqueur FIGE.
- AGENTS.md 1.7 : l'age d'une entite metier n'est pas une panne ; la vivacite se lit sur le
  battement de coeur seul ; entite metier lue pour sa VALEUR, pas sa fraicheur. La vraie
  erreur du "12,1 kWh" = le perimetre (compteur de vie), pas l'age.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RZsbhyGmRwZogdoBwT6C6y
2026-09-16 08:19:34 +02:00
78577eda85 airtria: lecteur HA deterministe (anti-fabrication) + UTC->Paris
Le 16/09 Airtria a FABRIQUE un "jeton HA 401, regenere cote HA" alors que le jeton
renvoie 200 : elle raisonnait sur l'etat HA au lieu de le lire. Faute de methode de
lecture fiable, elle confabulait (valeurs a 03:25, puis une panne a 04:35).

- airtria-ha-read.js : lit /api/states, imprime etat + unite + last_changed converti en
  heure de Paris + age (marque FIGE si >15 min) ; en echec, imprime le VRAI code HTTP.
  Airtria lit via ce script et rapporte ce qu'il imprime. Verifie en live (SOC 46 %,
  power -408 W = decharge ; source_mode et night_target correctement marques FIGE).
- AGENTS.md 1.7 : ne jamais fabriquer une panne/cause ; lire pour de vrai via
  airtria-ha-read.js, ne pas raisonner sur une valeur.
- AGENTS.md 5ter : pointe vers le lecteur ; rappelle que /api/states est en UTC.
- .gitignore : whitelist elargie workspace/airtria-*.js.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RZsbhyGmRwZogdoBwT6C6y
2026-09-16 08:13:59 +02:00
f09e2efd6e airtria: garde-fous de lecture (anti-substitution, last_changed) + ref. entites energie
Suite a une reponse WhatsApp erronee du 16/09 (question SOC VW : grandeur absente, puis
grandeurs voisines servies comme reponse - 5 faux sur 6, dont un compteur fige depuis 8 h
cite comme "cette nuit", et une batterie dite qui "monte" alors qu'elle descendait).
Corrections de domaine fournies par EVCS.

- AGENTS.md 1.7 : ne JAMAIS substituer une grandeur absente (le dire et s'arreter) ;
  verifier last_changed avant de citer une valeur comme actuelle ; publier une grandeur
  directionnelle avec le SIGNE de sa puissance.
- AGENTS.md 5ter : reference "ou lire quoi" (SOC maison + sens via battery_power,
  source_mode, cible de nuit vivante, compteurs gx_device_* empoisonnes a ne pas lire
  comme des deltas ; SOC voiture = n'existe pas).
- airtria-charge-session.js : lecteur SQL lecture seule (role airtria_ro, reutilise
  makeClient) de la session de charge en cours, pour l'energie reellement prise par la
  voiture (dont reseau) sans lire un compteur HA fige.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RZsbhyGmRwZogdoBwT6C6y
2026-09-16 03:40:26 +02:00
6da250914d concierge: lire airtria_ro depuis l'env/.env + alerte d'echec d'auth
Le mot de passe airtria_ro est desormais lu depuis AIRTRIA_RO_PASSWORD
(variable d'environnement, sinon .env monte dans le conteneur), plus depuis
.pg-airtria : EVCS renouvelle ce mot de passe, un fichier fige faisait echouer
l'auth EN SILENCE. readPgPassword LEVE (rattrapable) au lieu de process.exit ;
mot de passe resolu paresseusement dans makeClient.

Nouveau module concierge-health.js (meme patron que le moniteur LLM) : battement
de coeur horodate a CHAQUE cycle detect, statut live dans HA, et alerte WhatsApp
UNIQUEMENT sur transition ok<->erreur (dedup, pas de rappel periodique). Chemin
HA independant de PostgreSQL : l'alerte auth KO part meme quand c'est l'auth qui
tombe. Best-effort : si les helpers HA manquent, le concierge n'echoue pas.

- concierge-health.test.js : machine a etats (dedup + transitions) verifiee, sans reseau
- concierge-health-ha-package.yaml.draft : helpers HA (a integrer cote proprietaire)
- SPEC : source du secret corrigee + section supervision

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RZsbhyGmRwZogdoBwT6C6y
2026-09-16 03:26:50 +02:00
d0805331ad concierge 2026-09-15 05:25:25 +02:00
b834e3bf75 Concierge au branchement + moniteur LLM/RAM + docs
Concierge: declenche au BRANCHEMENT (transition on de evenement) au lieu de la session ;
helper porte 'branchement' (ts::text verbatim) ; fraicheur [on-10, min(now, on+30)].
Moniteur LLM/RAM (llm-monitor.js) : endpoint spark + RAM, alerte WhatsApp sur changement
d'etat, publie l'etat dans HA (last_seen a chaque passage) + interrupteur de pilotage.
Docs: SPEC a jour, MONITORING-LLM.md, brouillons de config HA.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RZsbhyGmRwZogdoBwT6C6y
2026-09-15 04:59:15 +02:00
534ae0d663 Concierge vehicule : code (detection, live, write + test de portee)
Complete le commit doc precedent : ajoute le code JS du concierge, exclu jusqu'ici
par la liste blanche workspace/*. Exception ciblee !workspace/concierge-*.js dans
.gitignore (aucun secret : les tokens sont lus depuis .ha-token/.pg-airtria, ignores).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RZsbhyGmRwZogdoBwT6C6y
2026-09-14 02:39:00 +02:00
40a4605a31 premiere mise en service du concierge 2026-09-14 02:34:42 +02:00
Tallagrand Thierry
8c027a31f8 docs(workspace): elagage AGENTS.md, absorption de TOOLS.md, bilan bourse a 2 graphes
AGENTS.md : 26 399 -> 14 654 caracteres. La migration 2026.8.1 y avait fusionne
TOOLS.md, portant le fichier bien au-dela de la limite d'injection : l'agent n'en
lisait plus que 19 %. Suppression de trois sections bourse redondantes, du bloc
heartbeat (fonction desactivee), des consignes Discord/Slack (canaux desactives)
et du boilerplate. Correction des references a TOOLS.md, qui n'existe plus, et
du nom de l'outil d'envoi WhatsApp (message, pas whatsapp send_message).
Ajout de trois regles issues d'incidents reels : validation d'un PNG par du -b
et jamais par view_image, absence de parametre de rebase sur le webhook N8N,
et rappel de la limite de 30 000 caracteres de ce fichier.

bourse-config.json : mise sous suivi. Retrait du graphe "normalise", dont le
titre annoncait un rebase 100 inexistant et qui ecrasait ORA.PA (~18 EUR) sous
NVDA (~250 USD) sur un axe commun. Nommage explicite des fichiers de sortie.

TOOLS.md : supprime, son contenu vit desormais dans AGENTS.md.

MEMORY.md et gmail-housekeeping.md : enregistrement d'un etat anterieur
(troncatures des 7 juillet et 5 aout, jamais commitees depuis le 26 juin).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NuEBkGBjkpZGgqJnX1DCrm
2026-09-02 02:57:36 +02:00
Tallagrand Thierry
5363f99b76 Gmail Phase E/F + HANDOFF global + cleanup cron/root
- Réécriture HANDOFF.md dashboard multi-domaines

- Mise à jour MEMORY.md / TOOLS.md / AGENTS.md

- Cleanup fichiers cron obsolètes + fichiers root

- Gmail Phase E : audit, 18 filtres natifs, labels Promos/Dev-Tools/Social

- Gmail Phase F : archive Philippot + Ulys terminée
2026-06-26 00:28:07 +02:00