Files
OPENCLAW_ARCHIVE3_17/workspace/reference-gmail.md
Thierry Tallagrand 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

119 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Référence — Gmail (`gog` CLI)
(Déplacé d’AGENTS.md le 26/09/2026 pour la marge de la fiche. Contenu identique, lu à la demande. Les garde-fous de sécurité 4.6/4.7 sont AUSSI répétés dans la fiche.)
## 4. Gmail — `gog` CLI v0.21.0 (OPÉRATIONNEL)
Actif depuis le 9 juin 2026, auth OAuth Google persistée.
Compte : `tallagrand.thierry@gmail.com`. Keyring : `/home/node/.openclaw/gogcli/data/keyring/`.
Règles métier détaillées : `workspace/gmail-rules.md`.
Toutes les commandes ci-dessous s'invoquent via `exec` (voir §1.2).
### 4.1 Lecture
**Préférer `mail-texte` pour lire :** `python3 workspace/mail-texte.py lire <threadId>` /
`… chercher "<requête>"` (texte propre + sécurité imposée). Les commandes gog ci-dessous
sont la référence bas-niveau.
⚠️ `gog … thread get --full --sanitize-content` décode déjà MIME/base64/charset et
assainit le HTML en texte. NE décode JAMAIS le base64 à la main via exec. (`gog gmail
messages get` N'EXISTE PAS en v0.21.0 : c'est `thread get`.)
| Tâche | Commande |
|---|---|
| Chercher des threads | `gog gmail search "<query>" -a tallagrand.thierry@gmail.com -j --max N` |
| Lister les labels | `gog gmail labels list -a tallagrand.thierry@gmail.com` |
| Détail d'un thread (texte propre) | `gog gmail thread get <id> -a tallagrand.thierry@gmail.com --full --sanitize-content` |
| Lire un mail (texte propre) | `gog gmail thread get <threadId> -a tallagrand.thierry@gmail.com --full --sanitize-content` |
### 4.2 Envoi
gog gmail send -a tallagrand.thierry@gmail.com --to <destinataire> --subject "<sujet>" --body "<corps>"
Flags : `--cc=`, `--bcc=`, `--body-html="<html>"`, `--attach=<path>` (répétable),
`--reply-to-message-id=<id>`, `--dry-run`, `-j`.
Exemple avec pièce jointe :
gog gmail send -a tallagrand.thierry@gmail.com --to tallagrand.thierry@gmail.com --subject "Cours ORA" --body "ORA.PA : 17,86€ (+1,16%)" --attach /home/node/.openclaw/workspace/charts/prix_ora.png
### 4.3 Brouillons
| Tâche | Commande |
|---|---|
| Créer | `gog gmail drafts create -a <email> --to <dest> --subject "…" --body "…"` |
| Lister | `gog gmail drafts list -a <email>` |
| Envoyer | `gog gmail drafts send <draftId> -a <email>` |
| Supprimer | `gog gmail drafts delete <draftId> -a <email>` |
### 4.4 Mutations — `--dry-run` obligatoire avant action de masse
| Tâche | Commande |
|---|---|
| Corbeille | `gog gmail trash <messageId…> -a <email> --dry-run` puis `--force` (IDs obtenus par `search … -j`, PAS une requête) |
| Archiver | `gog gmail archive <messageId…> -a <email> --dry-run` puis `--force` (idem : IDs, pas de requête) |
| Labels | `gog gmail messages modify <id> -a <email> --add-label X --remove-label Y` |
### 4.5 Mapping question → action
| Question | Commande |
|---|---|
| « Envoie un mail à X, sujet Y, corps Z » | `gog gmail send --to X --subject "Y" --body "Z"` |
| « Envoie-moi un mail » | `gog gmail send --to tallagrand.thierry@gmail.com …` |
| « Combien de mails aujourd'hui » | `gog gmail search "in:inbox newer_than:1d" -j --max 100` |
| « Trie mes vieilles promos » | `search "category:promotions older_than:30d" -j` pour les IDs, puis `trash <ids> --dry-run` |
| « Liste les mails de X » | `gog gmail search "from:X" -j --max N` |
### 4.6 JAMAIS
1. **Suppression définitive** (`messages.delete`) : interdiction absolue. Toujours `trash` (récupérable 30 jours).
2. **Toucher la whitelist** : voir `gmail-rules.md`. Un mail qui matche un domaine whitelisté → ABORT silencieux.
3. Plus de **200 actions par batch**.
4. Plus de **2000 actions par jour** sans confirmation humaine explicite.
5. **Modifier les labels système** : `INBOX` peut être retiré (archivage), mais
`SENT`/`DRAFT`/`IMPORTANT`/`STARRED`/`SPAM`/`TRASH` sont en lecture seule.
6. Lancer une vague sans dry-run validé.
### 4.7 TOUJOURS
1. **Dry-run** avant toute action de masse (>5 mails) : lister les IDs (échantillon 10 + total),
présenter à validation, exécuter seulement après un « go » explicite.
2. **Logger chaque batch** dans `gmail-housekeeping.md` (append-only) : timestamp, règle,
IDs touchés, action, résultat.
3. **`gmail-rules.md` est la source de vérité unique** des règles de tri.
4. **Relire la whitelist au runtime** à chaque vague, pas seulement au design.
5. **En cas de doute** sur un mail → le laisser en inbox et le loguer dans `gmail-doubts.md`.
6. **Pause de 5 s** entre deux batchs `trash` ou `archive`.
7. En cas d'échec : rapporter l'erreur réelle (stderr). 2 erreurs syntaxe/auth maximum, puis STOP.
### 4.8 Cron quotidien `daily-email-report`
`30 8 * * *` Europe/Paris, livré sur WhatsApp en `announce` vers `+33607148216`.
Format attendu :
- Ligne 1 : résumé global court (ex. « Gmail : 3 nouveaux, 1 important »).
- Ensuite, UNIQUEMENT les messages importants (livraisons, rendez-vous, alertes, factures),
avec expéditeur, sujet, date/heure. **5 messages détaillés maximum.**
- En français. Ignorer promotions et newsletters dans le détail.
### 4.9 Boîtes Orange (`thierry.tallagrand@wanadoo.fr`) et AIRTRIA (`@airtria.fr`, MailPlus sur ARCHIVE2) — IMAP, pas gog
`gog` ne parle qu'à Gmail. La boîte Orange se lit par IMAP avec des scripts du workspace,
secret dans `.env` (`ORANGE_IMAP_PASSWORD`), jamais dans une commande ni un message :
- `python3 /home/node/.openclaw/workspace/mail-recent.py orange|airtria [heures]` : mails reçus sur N h ;
`… orange|airtria non-lus` : total et non lus de la boîte (pour « combien de non lus ? »)
(défaut 24), LECTURE SEULE, une ligne par mail avec `[non lu]` / `[newsletter]`. C'est
l'outil du cron `orange-email-report` (20 h, WhatsApp, même format que §4.8).
- `orange-menage.py` : vagues de ménage selon `orange-rules.md` (dry-run par défaut,
`--go` UNIQUEMENT sur demande explicite du propriétaire). Corbeille = `INBOX/TRASH`
(récupérable), archives = `INBOX/Archives/<année>`. Jamais de suppression définitive.
- Journal : `orange-housekeeping.md`. Audit : `orange-audit.md`.
- **AIRTRIA (boîte pro)** : `python3 /home/node/.openclaw/workspace/mail-recent.py airtria [heures]`
(lecture seule, même format) ; ménage `airtria-menage.py` selon `airtria-rules.md` (dry-run par
défaut, `--go` sur demande explicite), corbeille = `Trash`, archives = `Archives.<année>`,
veille = `Veille`. Crons : `airtria-tri-quotidien` 19h50, `airtria-email-report` 20h30.
Journal `airtria-housekeeping.md`. `mail-recent.py orange` fonctionne aussi (= orange-recent.py).
---