V1.23.29 Mise en place des feuilles de route

This commit is contained in:
2026-09-17 08:53:43 +00:00
parent 2825430bf4
commit f0711f49ac
6 changed files with 20 additions and 222 deletions
-108
View File
@@ -1,108 +0,0 @@
REORGANISATION DE LA STRUCTURATION DES DONNEES ENTREPRISES
1. Tables mutualisées à créer :
- Constituer la table des activités principales (mutualisée)
- Constituer la table des natures juridiques
- Constituer la table des tranches des effectifs salariés
*** Attention *** Me proposer pour chacun de ces tables une structure et
attendre que je valide avant de les remplir de valeurs
2. Questions préalables et remarques concernant les tables Phase1 :
- A quoi correspond ENT_SectionActivite ?
- A t on récupéré des entreprises avec plusieurs noms de dirigeant ?
- Il est utile de garder les entreprises dans un departement nn qui n'ont pas
d'établissement identifié dans le département car cela va permettre de savoir qu'il
existe un établisement secondaire dont on n'a pas l'adresse !
Il faut pour cela créer un nouveau champ pour différencier Sièges et Filiales
- Interrogations concernant le champ JSON :
- quid du caractère_employeur ?
- quid du statut diffusion ?
- quid de complements{} ?
- quid de matching etablissements ?
- quid de epci ?
- quid de liste_rge = liste rouge ?
- quid de liste idcc ?
- quid de liste finess ?
- quid de liste uai ?
*** Important *** Attendre que toutes ces questions soient traitées avant de passer
à la phase suivante car les réponses peuvent avoir un impact sur
l'évolution de structure des tables Phase1
3. Modifications à apporter aux tables Phase1
- Constituer les champs suivants à partir éventuellement du JSON siege{} :
- ENT_AdresseSiegeLig1 = numero_voie+", "+type_voie+" "+libellé voie
*** Attention ** je tiens à ce que la ligne 1 soit bien écrite "15, rue des Chataignes"
Cette petite différence a une utilité pour moi
- ENT_AdresseSiègeLig2 = complement_adresse
- Renommer Ent_CodePostal en ENT_AdresseSiegeCP
- Renommer ENT_Commune en ENT_AdresseSiegeCommune
- Renommer ENT_CodeCommune en ENT_AdresseSiegeCodeCommune
- Ajouter ENT_AdresseSiegeCedex et y mettre le champ JSON
- Renommer ENT_Departement en ENT_AdresseSiegeDepartement
- Renommer ENT_Region en ENT_AdresseSiegeRegion
- Supprimer le champ ENT_AdresseSiege
- Créer un champ ENT_CapitalSocial
- ENT_FinanceAnnee, ENT_FinanceCa, ENT_FinanceResultatNet doivent être reportés dans Phase3 et après vérificztion suppression de ces champs
- ENT_CanalProspectio, ENT_Phase2, ENT_ScoreCiblage à supprimer
- ENT_Notes est il un champ récupéré ? Si non le supprimer
- Ajouter le champ ENT_Statut type enum "Siège" "Établissement Secondaire"
Quand on récupèrera en extraction ce type d'entreprise, on ne récupèrera pas l'adresse
ce qui me laisse penser que ces entreprises vont souvent échapper à certains critères de recherche
qu'il faudra prévoir (établissements secondaires dont on ne connait pas l'adresse)
- A récupérer dans le JSON (si ce n'est pas déjà le cas) :
- nombre d'établissements ouverts
- numéro de TVA (très important)
- autres champs en fonction des réponses du point 2
4. Déplacement des champs JSON
- Supprimer la table Phase2
- Recréer la table Phase2 en ajoutant le champ ENT_SIREN et ENT_ReponseBruteJson
- Déplacer les champs ENT_ReponseBruteJson de Phase1 vers Phase2
- Supprimer après vérificaztion du bon déplacement le champ ENT_ReponseBruteJson de Phase1
- Effectuer ce traitement pour tous les départements
5. Modification de la table ENT_Communes
- Ajouter le champ COM_ETS
- Y reporter le nombre d'établissements secondaires
6. Modification de la table ENT_Departements
- Ajouter le champ DEP_NbCommunes
- Ajouter les champs DEP_EI, DEP_TPE, DEP_PME, DEP_ETI, DEP_GE, DEP_ETS
- Effectuer les calculs
7. Création de la table des régions ENT_Regions
- Champ REG_Code
- Champ REG_NbDepartements
- Champ REG_NbCommunes
- Champ REG_NbEntreprises
- Ajouter les champs REG_EI, REG_TPE, REG_PME, REG_ETI, REG_GE, REG_ETS
- Effectuer les calculs
8. Faire le point sur les procédures de mise à jour de toutes ces tables
- Revoir les procédures de mise à jour de Phase1, Phase3
- Organiser leur traitement : la nuit, étendue du traitement...
- Etudier la mise à jour du capital social de chaque entreprise
9. Création d'une table mutualisée dans la BDD ENTREPRISES
Cette tabel aura pour objectif de servir de recensement des temps et coûts de traitement
des opérations automatiques réalisées par ASPIC pour qualifier des entreprises et cepour
l'ensemble des utilisateurs, en faisant en sorte de pouvoir faire ces analyses par type
d'entreprise. Je suis presque certain que cera difficile de qualifier des EI que des PME !
On ne va pas aller jusqu'à identifier les différences de ces releés par région, mais je
veux que ASPIC soit capable d'annoncer, par la voix de Viktor que "pour qualifier cette
sélecton de xx entreprises, j'estime que je vais mettre xx heures, que je vais réussir à
en qualifier xx (yy%) et cela va coûter xx€ sur votre crédit de xx€. Confirmez vous le
lancement de la qualification ?"
On lancera ensuite plusieurs tests de qualification pour commencer à alimenter cette tabel
mais cela fera l'objet d'un futur chantier !
-112
View File
@@ -1,112 +0,0 @@
REORGANISATION DE LA STRUCTURATION DES DONNEES ENTREPRISES
1. Tables mutualisées à créer :
- Constituer la table des activités principales (mutualisée)
- Constituer la table des natures juridiques
- Constituer la table des tranches des effectifs salariés
*** Attention *** Me proposer pour chacun de ces tables une structure et
attendre que je valide avant de les remplir de valeurs
2. Questions préalables et remarques concernant les tables Phase1 :
- A quoi correspond ENT_SectionActivite ==> une section NAF. Utile ?
- A t on récupéré des entreprises avec plusieurs noms de dirigeant ? ==> Oui
- Il est utile de garder les entreprises dans un departement nn qui n'ont pas
d'établissement identifié dans le département car cela va permettre de savoir qu'il
existe un établisement secondaire dont on n'a pas l'adresse !
Il faut pour cela créer un nouveau champ pour différencier Sièges et Filiales
- Interrogations concernant le champ JSON :
- quid du caractère_employeur ?
- quid du statut diffusion ?
- quid de complements{} ?
- quid de matching etablissements ?
- quid de epci ?
- quid de liste_rge = liste rouge ?
- quid de liste idcc ?
- quid de liste finess ?
- quid de liste uai ?
*** Important *** Attendre que toutes ces questions soient traitées avant de passer
à la phase suivante car les réponses peuvent avoir un impact sur
l'évolution de structure des tables Phase1
3. Modifications à apporter aux tables Phase1
- Constituer les champs suivants à partir éventuellement du JSON filiale{} :
- ENT_AdresseLig1 = numero_voie+", "+type_voie+" "+libellé voie
*** Attention ** je tiens à ce que la ligne 1 soit bien écrite "15, rue des Chataignes"
Cette petite différence a une utilité pour moi
- ENT_AdresseLig2 = complement_adresse
- Renommer Ent_CodePostal en ENT_AdresseCP
- Renommer ENT_Commune en ENT_AdresseCommune
- Renommer ENT_CodeCommune en ENT_AdresseCodeCommune
- Ajouter ENT_AdresseCedex et y mettre le champ JSON
- Renommer ENT_Departement en ENT_AdresseDepartement
- Renommer ENT_Region en ENT_AdresseRegion
- Ne pas conserver les détails de l'adresse du siège
- Ajouter le champ ENT_SiegeSIREN avec le numéro SIREN du siège
- Ajouter le champ ENT_SiegeDept avec le numéro de département du siège
- Récupérer tous les champs idcc, finess, uai, epci, ess, rge, qualiopi, association...
- Supprimer le champ ENT_AdresseSiege
- Créer un champ ENT_CapitalSocial
- ENT_FinanceAnnee, ENT_FinanceCa, ENT_FinanceResultatNet doivent être reportés dans Phase3 et après vérificztion suppression de ces champs
- ENT_CanalProspectio, ENT_Phase2, ENT_ScoreCiblage, ENT_StatutQualification à supprimer
- ENT_Notes est il un champ récupéré ? Si non le supprimer
- A récupérer dans le JSON (si ce n'est pas déjà le cas) :
- nombre d'établissements ouverts
- numéro de TVA (très important)
- autres champs en fonction des réponses du point 2
- les noms des dirigeants peuvent être intéressants pour les TPE, PME car ce seront les contacts probables
à conserver donc... de quelle façon ?
4. Déplacement des champs JSON
- Supprimer la table Phase2
- Créer la table Phase4
en ajoutant le champ ENT_SIREN et ENT_ReponseBruteJson
- Déplacer les champs ENT_ReponseBruteJson de Phase1 vers Phase2
- Supprimer après vérificaztion du bon déplacement le champ ENT_ReponseBruteJson de Phase1
- Effectuer ce traitement pour tous les départements
5. Modification de la table ENT_Communes
- Ajouter le champ COM_ETS
- Y reporter le nombre d'établissements secondaires
6. Modification de la table ENT_Departements
- Ajouter le champ DEP_NbCommunes
- Ajouter les champs DEP_EI, DEP_TPE, DEP_PME, DEP_ETI, DEP_GE, DEP_ETS
- Effectuer les calculs
7. Création de la table des régions ENT_Regions
- Champ REG_Code
- Champ REG_NbDepartements
- Champ REG_NbCommunes
- Champ REG_NbEntreprises
- Ajouter les champs REG_EI, REG_TPE, REG_PME, REG_ETI, REG_GE, REG_ETS
- Effectuer les calculs
8. Faire le point sur les procédures de mise à jour de toutes ces tables
- Revoir les procédures de mise à jour de Phase1, Phase3
- Organiser leur traitement : la nuit, étendue du traitement...
- Etudier la mise à jour du capital social de chaque entreprise avec fichiers PDF
même si ils ne sont pas mis à jour comme annoncé par ailleurs
9. Création d'une table mutualisée dans la BDD ENTREPRISES
Cette tabel aura pour objectif de servir de recensement des temps et coûts de traitement
des opérations automatiques réalisées par ASPIC pour qualifier des entreprises et cepour
l'ensemble des utilisateurs, en faisant en sorte de pouvoir faire ces analyses par type
d'entreprise. Je suis presque certain que cera difficile de qualifier des EI que des PME !
On ne va pas aller jusqu'à identifier les différences de ces releés par région, mais je
veux que ASPIC soit capable d'annoncer, par la voix de Viktor que "pour qualifier cette
sélecton de xx entreprises, j'estime que je vais mettre xx heures, que je vais réussir à
en qualifier xx (yy%) et cela va coûter xx€ sur votre crédit de xx€. Confirmez vous le
lancement de la qualification ?"
On lancera ensuite plusieurs tests de qualification pour commencer à alimenter cette tabel
mais cela fera l'objet d'un futur chantier !
Binary file not shown.
File diff suppressed because one or more lines are too long
@@ -527,3 +527,21 @@ Restait un point sans case évidente : la dimension relationnelle envers l'équi
**Statut.** BFH suspendu partout, à reprendre progressivement et sans urgence dans les mois à venir, avec une stratégie de mise à jour entièrement à reconcevoir (API paginée vs flux RNE en masse). Extraction Sirene seule en cours sans interruption depuis le 14 septembre, 55 départements sur 101 (métropole + DOM-TOM), 7 036 958 entreprises. Feuille de route ENTREPRISES V1.0 relue et commentée, pas encore amendée par Jean-Marc (en cours). Accès FTP RNE obtenu et testé en lecture seule, non exploité.
`<code>` n'avance pas dans cette section (deux scripts modifiés — `inpi_bilans_backfill.py`, `sirene_extract.py` — mais toujours hors du dépôt applicatif ASPIC lui-même) ; `<conception>` avance de 27 à 28 — nouvelle version **V1.23.28**.
## 29. Recalibrage à 13,4M d'entreprises, doublons de filiales confirmés, et institutionnalisation des feuilles de route (16 septembre 2026)
**Nouvelle méthode de travail actée pour cadrer les gros chantiers : les feuilles de route numérotées.** Jean-Marc, fatigué par la "navigation à vue" (peur constante d'oublier un point déjà discuté), a mis en place un circuit formel : il rédige une feuille de route par grand chantier, la dépose en PDF (puis `.docx`) dans un nouveau répertoire `src/fdr`, numérotée `1` à `11` selon le chantier (1. Évolutions BDD ENTREPRISES, 2. Gestion des contacts, 3. Sélection des Entreprises, 4 à 11 pas encore communiqués). Claude Code la lit intégralement, donne un retour écrit — jamais d'implémentation à ce stade — et, règle rendue systématique en cours de journée, **intègre désormais toujours ses commentaires dans une nouvelle version du fichier** plutôt que de les laisser vivre uniquement dans la conversation ("je pourrais décider de supprimer, mais je ne veux pas risquer de perdre un commentaire"). Outillage installé pour l'occasion sur le VPS (`python3 -m pip install --break-system-packages python-docx fpdf2 openpyxl` — pip lui-même absent, installé via `apt-get install python3-pip`) : génération de `.docx` éditables (Jean-Marc a explicitement demandé l'arrêt de la génération PDF, "je ne peux rien en faire"), lecture de maquettes d'écran Excel (`openpyxl`, testé avec succès sur une première maquette de fiche contact). Deux bugs de génération trouvés et corrigés en cours de route, tous deux désormais documentés pour ne pas être réintroduits : accents français supprimés par réflexe d'un ancien évitement d'encodage devenu inutile, et titre du document supprimé par erreur du `.docx` en corrigeant un doublon qui n'existait que côté PDF (les deux générateurs ne partagent pas la même logique d'en-tête).
**Feuille de route "Évolutions BDD ENTREPRISES" (ex-ENTREPRISES) itérée de V1 à V6.** Relecture point par point à chaque version, jamais d'implémentation. Découverte notable en répondant à une question de Jean-Marc sur les champs JSON : `matching_etablissements[]` contient un booléen `est_siege` directement exploitable pour distinguer siège et établissement secondaire, sans déduction ni colonne enum à maintenir — et ce même tableau donne probablement l'adresse propre de chaque établissement secondaire, invalidant l'hypothèse initiale de Jean-Marc qu'on ne pourrait pas la connaître. **Vérification empirique déterminante, demandée explicitement par Jean-Marc pour trancher un doute méthodologique** (il voulait s'assurer que la preuve ne reposait pas sur le champ adresse, déjà connu comme erroné pour les filiales) : comparaison réelle entre `Entreprises35Phase1` et `Entreprises44Phase1`, confirmant **7 802 SIREN présents comme ligne physique dans les deux tables à la fois** (exemple vérifié : "G2 (THE BRITISH CASHMERE)") — preuve reposant sur l'existence même de la ligne dans chaque table indépendante, pas sur son contenu. Conclusion actée par Jean-Marc : le stockage des filiales devra changer en profondeur pour éliminer ce doublon structurel, sujet noté pour la prochaine feuille de route plutôt que traité dans l'urgence. Autres décisions actées au fil des versions : `Phase2` disparaît purement et simplement de `ENTREPRISES` (son rôle renaît dans la base de chaque compte utilisateur, nom pressenti `ASP_ENTQualif`) ; le JSON brut migre vers une nouvelle table dédiée (`Phase4`, jamais "Phase2" pour éviter la collision de sens) ; ~30% des entreprises ont plusieurs dirigeants dans le JSON (un seul capturé actuellement) mais ces dirigeants sont rattachés à l'entreprise entière, pas à un établissement précis — limite à connaître avant de concevoir la future table des dirigeants.
**Nouvelle feuille de route "3. Sélection des Entreprises" déposée et itérée (V1 à V5).** Pose les bases du futur module de sélection multicritère (géographie, secteur, effectif, date de création...), explicitement bloqué tant que la structure d'`ENTREPRISES` n'est pas définitive. Points de retour marquants : le mécanisme "critères extensibles sans modifier le code" que souhaite Jean-Marc n'est pas à inventer, c'est le même patron déjà construit pour ASPIC (règles et consignes en langage naturel, section 15/17) ; l'hypothèse de Claude sur les dépendances entre critères (uniquement au sein de la hiérarchie géographique, pas entre facettes indépendantes) confirmée indépendamment par Jean-Marc, avec la nuance qu'il faudra vérifier à l'usage pour les EI/associations ; question ouverte sur le stockage des quotas anti-abus (MIRADOR, dont le rôle actuel se limiterait à l'étendre, vs la base propre de chaque compte).
**Recalibrage majeur de la cible nationale : 8,5M devient 13,4M.** Jean-Marc a trouvé un site tiers (nouvelles-entreprises.com, republication commerciale de données SIRENE) annonçant 13 458 259 "entreprises actives au registre SIRENE (établissements sièges)", recalculé chaque nuit. Écart expliqué et non contradictoire avec le chiffre de 8,5M utilisé jusque-là : l'INSEE publie aussi un agrégat statistique "entreprises" qui **regroupe les filiales d'un même groupe en une seule entité** — notre extraction, elle, dédoublonne par SIREN (unité légale), pas par ce regroupement statistique, donc sa cible réelle de convergence est bien plus proche de 13,4M. Projection disque recalculée sur mesure réelle (28,14 Go pour 8,7M entreprises à ce moment, soit 3 473 octets/entreprise compressé) : **~43,5 Go pour 13,4M**, toujours très confortable (~22-23% du disque du VPS). Vérification annexe : Bitdefender a signalé une activité suspecte sur ce même site tiers (`nouvelles-entreprises.com`) pendant que Jean-Marc le consultait — analysé et relativisé (le chemin `_nuxt/builds/latest.json` est un fichier technique standard et inoffensif du framework Nuxt.js, l'alerte provient plus probablement du `http://` non chiffré de l'URL) ; onglet fermé par précaution, sans lien avec ASPIC.
**Extraction Sirene poursuivie sans interruption.** Lyon (69) traité avec succès grâce au correctif arrondissements de la section 28 : **506 425 entreprises**, le plus gros département à ce jour, confirmant en conditions réelles que le correctif tient la charge (ex. Lyon 1er arrondissement seul : 17 781 entreprises, très supérieur à ce que le code englobant aurait donné). **Statut à la rédaction : 74 départements sur 101, 9 855 993 entreprises** (~74% de la nouvelle cible à 13,4M) — Paris et le reste de l'Île-de-France restent à traiter, plus la réextraction du 13 (Marseille) en toute fin de chaîne.
**Clarifications de fond, hors chantier ENTREPRISES, à la demande de Jean-Marc.** Distinction actée entre l'abonnement Claude Max personnel de Jean-Marc (couvre son usage interactif, pas l'API) et l'API Anthropic que consommeront les utilisateurs d'ASPIC (compte développeur séparé, facturation à l'usage) — point de confusion corrigé avant qu'il n'affecte un choix commercial. Piste "clé API par utilisateur" explorée puis écartée par Jean-Marc lui-même (confusion avec une autre idée) au profit de **Claude Cowork côté utilisateur final pour les fonctionnalités réseaux sociaux** — logique validée : Cowork tourne sur l'abonnement personnel de l'utilisateur, donc hors du budget API d'ASPIC, cohérent avec le souci de marge de Jean-Marc. Jean-Marc a lui-même noté que son abandon passé de Cowork (écriture bloquée hors `C:\`, dépôt Git en lecture seule) ne s'applique pas au même besoin : ce qu'il faisait avec Cowork était de l'administration serveur exigeant un accès direct (d'où son usage actuel de Claude Code), alors que le besoin envisagé pour les utilisateurs ASPIC est bureautique/local.
**Statut.** Extraction Sirene : 74/101 départements, 9 855 993 entreprises, en cours sans incident. BFH toujours suspendu (section 28). Deux feuilles de route actives dans `src/fdr` : "1. Évolutions BDD ENTREPRISES" (V6, renommée par Jean-Marc) et "3. Sélection des Entreprises" (V5) — aucune des deux encore validée pour passage à l'implémentation. Accès FTP RNE toujours inexploité. Collaborateurs ASPIC (Matilda, Viktor, Sophia, Léon, Nikita) et leurs rôles connus consignés en mémoire pour la suite.
`<code>` n'avance pas dans cette section (feuilles de route et scripts d'outillage PDF/docx/xlsx vivent hors du dépôt applicatif ASPIC) ; `<conception>` avance de 28 à 29 — nouvelle version **V1.23.29**.
+1 -1
View File
@@ -50,7 +50,7 @@
* capacité à détecter un déploiement resté en retard.
*/
const ASPIC_VERSION = 'V1.23.28';
const ASPIC_VERSION = 'V1.23.29';
if (basename($_SERVER['SCRIPT_NAME']) === 'version.php') {
header('Content-Type: application/json; charset=utf-8');