Dernière collecte : le fichier du 132 passe dans la base du service d état (STUD-1110) #1696
Loading…
Reference in a new issue
No description provided.
Delete branch "hermes/migration-derniere-collecte-sqlite"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal — migrer
/opt/studio/derniere-collecte.json(l instantané des chaînes YouTube, réécrit à chaque passage partableau-bord.pysur le 132) vers la base SQLite du service d état, recette de STUD-1107.Ce que fait la branche
derniere_collecte: une ligne par clé de PREMIER NIVEAU du document (t,donnees,erreurs,tiktok,instagram), valeur encodée en JSON trié ;cleest le nom du champ, pas de colonne fourre-tout. Le découpage s arrête au premier niveau, comme le relevé de l atelier : la collecte est un INSTANTANÉ réécrit d un bloc, et ses valeurs sont les structures Analytics de Google.bascules.nomn est plus une liste fermée (motif GLOB, avec_reparer_basculesqui refait une base restée sur l ancienne liste sans perdre de ligne) — douze migrations sont en cours sur cette table.GET /derniere-collecte,GET /derniere-collecte/detail,POST /derniere-collecte/remplacer.python3 etat_client.py basculer derniere-collecte [--essai]/revenir derniere-collecte: comparaison identique avant bascule, ancien gardé en.bak-sqlite-<date>, copie réécrite depuis la base. Le fichier se désigne par$ETAT_DERNIERE_COLLECTE(son écrivain vit sur le 132).revue.pyetserveur.py:tableau-bord.pyécrit la collecte dans la base ET dans le fichier via_tableau/collecte_commun.py(une seule fois pour ses deux passages d écriture). Un service muet est dit sur la sortie d erreur.Bancs
_tableau/test_collecte_bascule.py(nouveau) : essai, bascule pendant un montage, copie réécrite, écriture dans ses trois cas (service / fichier / fichier-muet), retour arrière, re-bascule, refus d un document qui n est pas un objet.controle/test_etat_partage.py3b : la table, la comparaison, le refus d une liste et d une clé à blanc, la réparation d une base d avant._infra/test_etat_service.py: les trois routes.État — suite complète
_tableau/lancer-tests.py --tout(couverture et cliquet) en cours, sortie jointe en commentaire. Aucun front touché. Rien déployé sur le 132.ebef11379873bb9477f7fusion-auto: pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.73bb9477f71c16f58f6ePoussée après rebasage sur
main(1c16f58f, surb613cad4) : la PR portait l'étiquetteconflitparce que la migration des sujets (#1694) est passée la première et touchait exactement les mêmes fichiers. Résolution en union, les deux migrations vivent côte à côte :bascules.nomen GLOB (texte identique des deux côtés), tablesujets_*puis tablederniere_collectedansetat_partage.sql,NOMS = ("sorties", "file_montage", "sujets", "derniere-collecte"), les deux paires de fonctions client (sujets/derniere-collecte) et les deux branches debasculer/revenir. La forge donne maintenantmergeable: true.Aucun champ de
/api/...n'est touché : le service d'état (http://192.168.1.142:8799) n'est pas l'API de la page. Trois routes nouvelles y sont ajoutées, plus rien n'est modifié sur les routes existantes. Le front n'a rien à faire.Preuves, sur
1c16f58f:Le rouge est
_tableau/test_accueil_parite.py(code 1), le même banc surmain, avec la même erreur :Il est donc préexistant et sans rapport avec cette branche (le JSON doré de
/api/accueila pris du retard sur son producteur Python). Mesuré sur un worktree détaché demainena3575e4d, suite complète aussi : 168 bancs verts, 1 rouge — le même.Cliquet de couverture : inchangé. Sur la branche comme sur
main(mesure du même jour,a3575e4d) : cœur 99,1 %, ensemble 96,7 %, avec la même phrase « la couverture a BAISSÉ » — la mesure enregistrée (99,4 % / 99,0 %) est antérieure aux deux, le rouge est donc lui aussi préexistant._tableau/collecte_commun.py, le module neuf, sort à 100 % (mesuré parcoverage run --include="*collecte_commun.py" _tableau/test_collecte_bascule.py), etetat_partage.pygagne ses lignes neuves (routes et_reparer_bascules) sans perdre de couverture.Ce que la branche fait, en une ligne :
/opt/studio/derniere-collecte.jsonentre dans la base partagée (tablederniere_collecte, une ligne par clé de premier niveau, routesGET /derniere-collecte,GET /derniere-collecte/detail,POST /derniere-collecte/remplacer),basculer derniere-collecte [--essai]/revenir derniere-collecteposent et défont la bascule, le fichier reste la copie de référence que lit la page du 132, ettableau-bord.pyécrit désormais la collecte dans la base ET dans le fichier par_tableau/collecte_commun.py(un service muet est dit, jamais une écriture perdue en silence).1c16f58f6eb9c91da103Deuxième rebasage, même raison et même résultat : cette fois sur
e6a8582e(l'arrivée du banc des doublons inter-onglets,#1620), qui ajoutait deux fichiers absents de ma base — sans lui, la PR affichait_tableau/test_onglets_doublons.pyet_tableau/ONGLETS.mdcomme s'ils étaient supprimés. La branche est maintenant partie du sommet demain, et son diff ne contient plus que ses onze fichiers :Preuves au sommet poussé,
b9c91da1(le reste de la discussion vaut pour1c16f58f: même contenu, seuls les commits demainarrivent).Le rouge reste
_tableau/test_accueil_parite.py(code 1), le même que surmainet pour la même erreur (le JSON doré n'est plus la sortie de Python, clésseuil_heures_apres,courbes,monetisation,fin_seuil) : préexistant, sans rapport avec cette branche. Deux vérifications pour le dire sans se tromper : le banc échoue à l'identique dans un worktree détaché demain(a3575e4d, suite complète : 168 verts et ce seul rouge), et entrea3575e4det le sommet actuel demain, aucun commit ne touche_tableau/test_accueil_parite.pyni un fichier de l'accueil (git diff --stat a3575e4d origin/main -- _tableau/test_accueil_parite.py: vide).Cliquet de couverture, inchangé lui aussi : cœur 99,1 %, ensemble 96,7 %, la même phrase qu'une suite complète de
mainseul, mesurée le même jour — le rouge du cliquet est donc antérieur à la branche._tableau/collecte_commun.pysort à 100 % (coverage run --include="*collecte_commun.py" _tableau/test_collecte_bascule.py), et les lignes neuves d'etat_partage.py(routes,_reparer_bascules) sont couvertes par_infra/test_etat_service.py, y compris la réparation d'une base restée sur l'ancienne liste de noms.fusion-auto: pas de fusion, la PR est en conflit avec main : à rebaser. Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.fusion-auto: pas de fusion, la CI est rouge (Front Svelte). Le chef de l'atelier renvoie la carte à l'agent ; l'étiquette tombera d'elle-même une fois corrigé.