diff --git a/fdr/1. ENTREPRISES V1.0 b/fdr/1. ENTREPRISES V1.0 deleted file mode 100644 index 9f3fe7c..0000000 --- a/fdr/1. ENTREPRISES V1.0 +++ /dev/null @@ -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 ! - - - - - - - - - diff --git a/fdr/1. ENTREPRISES V2.0 b/fdr/1. ENTREPRISES V2.0 deleted file mode 100644 index 7d1aea1..0000000 --- a/fdr/1. ENTREPRISES V2.0 +++ /dev/null @@ -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 ! - - - - - - - - - diff --git a/fdr/1. Évolutions BDD ENTREPRISES V6.pdf b/fdr/1. Évolutions BDD ENTREPRISES V6.pdf new file mode 100644 index 0000000..0f3edf5 Binary files /dev/null and b/fdr/1. Évolutions BDD ENTREPRISES V6.pdf differ diff --git a/journal/ASPIC - Journal. Index.md b/journal/ASPIC - Journal. Index.md index 0fce70a..fc8397d 100644 --- a/journal/ASPIC - Journal. Index.md +++ b/journal/ASPIC - Journal. Index.md @@ -183,4 +183,4 @@ Version incrémentée une seule fois pour l'ensemble de cette session (uniquemen - Affiner individuellement l'identité/le relationnel de chaque collaborateur (Matilda, Viktor, Léon, Nikita, Sophia) — explicitement reporté par Jean-Marc le 11 septembre 2026 à plus tard ("quand je n'aurai que ça à faire"). - Créer un répertoire dédié sur le serveur pour transmettre directement des fichiers à Claude (photos notamment) — envisagé par Jean-Marc le 11 septembre 2026, pas encore fait. - **Services externes pour les futurs chantiers (prospection, réseaux sociaux) — réflexions stratégiques section 23 (11 septembre 2026).** Volet prospection largement avancé dans la nuit du 11 au 12 septembre : canal Sirene/RNE choisi et mis en œuvre pour de bon (voir réflexions stratégiques section 25) — décision de méthode de la section 23 confirmée dans les faits (gratuit d'abord, achat de contact seulement une fois la cible resserrée). Volet réseaux sociaux toujours entièrement ouvert, recherche à reprendre quand ce chantier s'ouvrira. -- **Prospection B2B (réflexions stratégiques section 25, 11-12 septembre 2026) — mise à jour du 12 septembre 2026 (après-midi) : les 4 départements bretons sont désormais tous extraits.** `Entreprises56/29/22/35Phase1` alimentées via `src/scripts/sirene_extract.py` (déplacé de `/docker/aspic/scripts/` dans le dépôt applicatif ce même après-midi, pour bénéficier du même suivi Git que le reste — voir `.gitignore` mis à jour pour exclure `scripts/__pycache__/`) : 167 468 + 174 691 + 128 904 + 227 713 = **698 776 entreprises** (chiffre après correction Rennes, voir juste après), Phase3 (historique financier) alimentée en parallèle pour chacun. Cas limite rencontré puis corrigé le même après-midi : sur la commune de **Rennes** (35238, pas Saint-Malo comme noté par erreur dans un premier temps), la section NAF "L" (activités immobilières) restait plafonnée à 10 000 même après repli par section — ajout d'un 3e niveau de repli par code NAF précis (liste complète des 732 codes récupérée depuis le message d'erreur de validation de l'API elle-même). Rennes réextraite avec ce correctif : 69 115 entreprises retrouvées pour la seule commune (dont 50 857 bien rattachées à Rennes elle-même comme siège), portant le total du 35 de 221 646 à 227 713. **Mise à jour de la nuit du 12 au 13 septembre 2026 (réflexions stratégiques, section 26).** Comptes INSEE et INPI créés (identifiants dans `src/scripts/.env`, jamais commité). Backfill historique des comptes annuels (le **BFH**, `src/scripts/inpi_bilans_backfill.py`) conçu et lancé sur le 56 — a provoqué un incident sérieux (OOM ayant tué le script et systemd), corrigé (garde-fou de pagination + `ulimit -v` désormais systématique sur ces scripts). Tables `ENT_Departements`/`ENT_Config` ajoutées. Compression InnoDB appliquée à Phase1 (-60% de taille disque, projection nationale ramenée de ~70 à ~28-30 Go). Plan pour la suite de la nuit, sans supervision : une fois le BFH du 56 terminé, extraction + BFH enchaînés pour **44, 49, 85, 17, 40, 64, 65**. Toujours à faire : synchronisation quotidienne par API différentielle (`companies/diff`/`bilans-saisis`) déclenchée par n8n plutôt qu'une crontab — comptes créés mais rien construit côté n8n. Écran de sélection par isochrone (IGN Géoplateforme, démontré fonctionnel) — idée actée, rien construit côté interface. **Mise à jour du 13 septembre 2026 (réflexions stratégiques, section 27).** Chaîne 44/49/85/17/40/64/65 terminée sans incident dans la nuit. Champ `ENT_CodeCommune` ajouté à Phase1 (backfill sans nouvel appel API) et cinq compteurs par taille d'entreprise (`COM_EI/TPE/PME/ETI/GE`) ajoutés à `ENT_Communes`, calculés quotidiennement par `ent_communes_stats.py` (deux bugs corrigés : agrégat `SUM()` sur ensemble vide, et pollution inter-département des stats d'une commune). Quatre prototypes de carte de prospection géographique publiés en Artifacts (Lorient, Lanester, Concarneau, Beuzec-Cap-Sizun) : commune de départ + communes accessibles en 30 min de route réelles (isochrone IGN), avec effectifs réels par taille — navigation par cliquer-glisser (clic gauche et droit) après un premier essai à l'ascenseur natif jugé peu lisible. Deuxième chaîne lancée pour 31/32/33/46/47/09/13/66 : bug de fond découvert et corrigé sur le repli NAF à 3 niveaux (retestait les 732 codes NAF entiers à chaque section plafonnée au lieu des seuls codes de la section — bloquait Toulouse depuis des heures), département 31 relancé et terminé après correctif. Cap des 2 millions d'entreprises cumulées franchi (2,23M sur 15 départements). Premières réflexions actées sur la refonte du module Contacts (lien entreprise↔contact non exclusif, qualification portée par l'entreprise) — rien construit, sujet remis à l'ouverture formelle du chantier. **Mise à jour du 14-15 septembre 2026 (réflexions stratégiques, section 28).** Deux bugs supplémentaires trouvés et corrigés sur le BFH (curseur de pagination basé sur le SIREN au lieu de l'identifiant unique du bilan, perdant ~14% des lots ; jeton INPI expirant en cours d'exécution sans reconnexion automatique), puis un vrai quota INPI dépassé rencontré (`quota_exceeded`) — **BFH suspendu entièrement** sur décision de Jean-Marc (risque de bannissement jugé disproportionné), à reprendre progressivement dans les mois à venir. Découverte indépendante et majeure sur l'extraction Sirene : **Paris, Lyon et Marseille étaient massivement sous-captées** (les entreprises y sont rattachées à un code arrondissement, jamais au code commune englobant qu'utilisait la liste de communes) — corrigé dans `sirene_extract.py`, `ENT_Communes` réparée pour le 13, réextraction replanifiée. Nouvelle chaîne d'extraction Sirene seule (aucun appel INPI) lancée pour la France entière restante, **DOM-TOM inclus** à la demande de Jean-Marc (La Réunion en tête). Statut au 15 septembre : 55 départements, 7 036 958 entreprises (~83% du national), BFH à l'arrêt. Piste d'export en masse du RNE par FTP/SFTP (`opendata`/`www.inpi.net`) identifiée via un contact de Jean-Marc, vérifiée réelle et testée en lecture seule (stock formalités 15,1 Go incluant le capital social, dernier stock à 6 mois d'écart, pas de flux quotidien visible) — accès obtenu, rien exploité encore. Jean-Marc est revenu sur sa décision initiale : le capital social doit être mutualisé dans `ENTREPRISES` (donnée factuelle), pas privé par compte, avec une exception assumée au principe de non-écriture applicative pour ce champ précis. Feuille de route formelle déposée (`src/fdr/1. ENTREPRISES V1.0`) et relue en détail (retour donné, pas d'implémentation) — découverte au passage que le champ JSON `matching_etablissements[]` donne probablement l'adresse des établissements secondaires. Trombinoscope des cinq collaborateurs ASPIC clarifié : Matilda, Viktor (commercial/qualification), Sophia, Léon (gestion/`ENTREPRISES`), Nikita. +- **Prospection B2B (réflexions stratégiques section 25, 11-12 septembre 2026) — mise à jour du 12 septembre 2026 (après-midi) : les 4 départements bretons sont désormais tous extraits.** `Entreprises56/29/22/35Phase1` alimentées via `src/scripts/sirene_extract.py` (déplacé de `/docker/aspic/scripts/` dans le dépôt applicatif ce même après-midi, pour bénéficier du même suivi Git que le reste — voir `.gitignore` mis à jour pour exclure `scripts/__pycache__/`) : 167 468 + 174 691 + 128 904 + 227 713 = **698 776 entreprises** (chiffre après correction Rennes, voir juste après), Phase3 (historique financier) alimentée en parallèle pour chacun. Cas limite rencontré puis corrigé le même après-midi : sur la commune de **Rennes** (35238, pas Saint-Malo comme noté par erreur dans un premier temps), la section NAF "L" (activités immobilières) restait plafonnée à 10 000 même après repli par section — ajout d'un 3e niveau de repli par code NAF précis (liste complète des 732 codes récupérée depuis le message d'erreur de validation de l'API elle-même). Rennes réextraite avec ce correctif : 69 115 entreprises retrouvées pour la seule commune (dont 50 857 bien rattachées à Rennes elle-même comme siège), portant le total du 35 de 221 646 à 227 713. **Mise à jour de la nuit du 12 au 13 septembre 2026 (réflexions stratégiques, section 26).** Comptes INSEE et INPI créés (identifiants dans `src/scripts/.env`, jamais commité). Backfill historique des comptes annuels (le **BFH**, `src/scripts/inpi_bilans_backfill.py`) conçu et lancé sur le 56 — a provoqué un incident sérieux (OOM ayant tué le script et systemd), corrigé (garde-fou de pagination + `ulimit -v` désormais systématique sur ces scripts). Tables `ENT_Departements`/`ENT_Config` ajoutées. Compression InnoDB appliquée à Phase1 (-60% de taille disque, projection nationale ramenée de ~70 à ~28-30 Go). Plan pour la suite de la nuit, sans supervision : une fois le BFH du 56 terminé, extraction + BFH enchaînés pour **44, 49, 85, 17, 40, 64, 65**. Toujours à faire : synchronisation quotidienne par API différentielle (`companies/diff`/`bilans-saisis`) déclenchée par n8n plutôt qu'une crontab — comptes créés mais rien construit côté n8n. Écran de sélection par isochrone (IGN Géoplateforme, démontré fonctionnel) — idée actée, rien construit côté interface. **Mise à jour du 13 septembre 2026 (réflexions stratégiques, section 27).** Chaîne 44/49/85/17/40/64/65 terminée sans incident dans la nuit. Champ `ENT_CodeCommune` ajouté à Phase1 (backfill sans nouvel appel API) et cinq compteurs par taille d'entreprise (`COM_EI/TPE/PME/ETI/GE`) ajoutés à `ENT_Communes`, calculés quotidiennement par `ent_communes_stats.py` (deux bugs corrigés : agrégat `SUM()` sur ensemble vide, et pollution inter-département des stats d'une commune). Quatre prototypes de carte de prospection géographique publiés en Artifacts (Lorient, Lanester, Concarneau, Beuzec-Cap-Sizun) : commune de départ + communes accessibles en 30 min de route réelles (isochrone IGN), avec effectifs réels par taille — navigation par cliquer-glisser (clic gauche et droit) après un premier essai à l'ascenseur natif jugé peu lisible. Deuxième chaîne lancée pour 31/32/33/46/47/09/13/66 : bug de fond découvert et corrigé sur le repli NAF à 3 niveaux (retestait les 732 codes NAF entiers à chaque section plafonnée au lieu des seuls codes de la section — bloquait Toulouse depuis des heures), département 31 relancé et terminé après correctif. Cap des 2 millions d'entreprises cumulées franchi (2,23M sur 15 départements). Premières réflexions actées sur la refonte du module Contacts (lien entreprise↔contact non exclusif, qualification portée par l'entreprise) — rien construit, sujet remis à l'ouverture formelle du chantier. **Mise à jour du 14-15 septembre 2026 (réflexions stratégiques, section 28).** Deux bugs supplémentaires trouvés et corrigés sur le BFH (curseur de pagination basé sur le SIREN au lieu de l'identifiant unique du bilan, perdant ~14% des lots ; jeton INPI expirant en cours d'exécution sans reconnexion automatique), puis un vrai quota INPI dépassé rencontré (`quota_exceeded`) — **BFH suspendu entièrement** sur décision de Jean-Marc (risque de bannissement jugé disproportionné), à reprendre progressivement dans les mois à venir. Découverte indépendante et majeure sur l'extraction Sirene : **Paris, Lyon et Marseille étaient massivement sous-captées** (les entreprises y sont rattachées à un code arrondissement, jamais au code commune englobant qu'utilisait la liste de communes) — corrigé dans `sirene_extract.py`, `ENT_Communes` réparée pour le 13, réextraction replanifiée. Nouvelle chaîne d'extraction Sirene seule (aucun appel INPI) lancée pour la France entière restante, **DOM-TOM inclus** à la demande de Jean-Marc (La Réunion en tête). Statut au 15 septembre : 55 départements, 7 036 958 entreprises (~83% du national), BFH à l'arrêt. Piste d'export en masse du RNE par FTP/SFTP (`opendata`/`www.inpi.net`) identifiée via un contact de Jean-Marc, vérifiée réelle et testée en lecture seule (stock formalités 15,1 Go incluant le capital social, dernier stock à 6 mois d'écart, pas de flux quotidien visible) — accès obtenu, rien exploité encore. Jean-Marc est revenu sur sa décision initiale : le capital social doit être mutualisé dans `ENTREPRISES` (donnée factuelle), pas privé par compte, avec une exception assumée au principe de non-écriture applicative pour ce champ précis. Feuille de route formelle déposée (`src/fdr/1. ENTREPRISES V1.0`) et relue en détail (retour donné, pas d'implémentation) — découverte au passage que le champ JSON `matching_etablissements[]` donne probablement l'adresse des établissements secondaires. Trombinoscope des cinq collaborateurs ASPIC clarifié : Matilda, Viktor (commercial/qualification), Sophia, Léon (gestion/`ENTREPRISES`), Nikita. **Mise à jour du 16 septembre 2026 (réflexions stratégiques, section 29).** Méthode des feuilles de route institutionnalisée : dépôt PDF/`.docx` numéroté (1 à 11) dans `src/fdr`, retour de Claude Code toujours intégré dans une nouvelle version du fichier (plus seulement en conversation). Outillage installé (`python-docx`, `openpyxl`) pour générer des `.docx` éditables et lire des maquettes Excel. Vérification empirique demandée par Jean-Marc pour trancher un doute : **7 802 SIREN confirmés présents en double entre les tables du 35 et du 44** (établissement secondaire compté aussi bien dans le département du siège que dans celui où il se trouve) — le stockage des filiales devra être repensé, noté pour la suite. Nouvelle feuille de route "3. Sélection des Entreprises" déposée et itérée. **Cible nationale recalibrée de 8,5M à 13,4M** (un site tiers cite le chiffre SIRENE brut "établissements sièges", à distinguer de l'agrégat statistique INSEE qui regroupe les filiales d'un groupe) — projection disque recalculée à ~43,5 Go (toujours confortable). Lyon (69) extrait avec succès : 506 425 entreprises, le plus gros département à ce jour, correctif arrondissements validé en conditions réelles. Statut extraction : 74/101 départements, 9 855 993 entreprises. Clarifications hors chantier : abonnement Claude Max ≠ API Anthropic (deux facturations séparées) ; piste Claude Cowork pour les fonctionnalités réseaux sociaux côté utilisateur final (hors budget API d'ASPIC). diff --git a/journal/ASPIC - Reflexions strategiques.md b/journal/ASPIC - Reflexions strategiques.md index e198241..47babf0 100644 --- a/journal/ASPIC - Reflexions strategiques.md +++ b/journal/ASPIC - Reflexions strategiques.md @@ -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é. `` 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) ; `` 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. + +`` n'avance pas dans cette section (feuilles de route et scripts d'outillage PDF/docx/xlsx vivent hors du dépôt applicatif ASPIC) ; `` avance de 28 à 29 — nouvelle version **V1.23.29**. diff --git a/version.php b/version.php index a46d77d..44c4afe 100644 --- a/version.php +++ b/version.php @@ -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');