From c4aada1caa1a0b63eab41d34537d7616c0be658c Mon Sep 17 00:00:00 2001 From: syoul Date: Tue, 9 Dec 2025 12:11:34 +0100 Subject: [PATCH] fix: nettoyage agressif des liens team avec regex multiligne MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Utilisation d'une regex multiligne pour supprimer tous les blocs
  • contenant des liens /team - Nettoyage manuel en fallback si la regex ne capture pas tout - Suppression de tous les formats: /team, /team/, /team.html Cela devrait éliminer définitivement les doublons de liens Équipe --- Dockerfile.business | 83 +++++++++++++++++++++++++-------------------- 1 file changed, 46 insertions(+), 37 deletions(-) diff --git a/Dockerfile.business b/Dockerfile.business index bcb8d55..ed127ab 100644 --- a/Dockerfile.business +++ b/Dockerfile.business @@ -240,51 +240,60 @@ try: # ÉTAPE 1: Supprimer TOUS les liens Équipe existants (même s'il n'y en a qu'un) print("🧹 Nettoyage de tous les liens Équipe existants...") - lines = content.splitlines(keepends=True) - if lines and not lines[-1].endswith('\n'): - lines[-1] = lines[-1] + '\n' - new_lines = [] - skip_team_link = False - team_links_removed = 0 + # APPROCHE AGRESSIVE: Supprimer tous les blocs
  • contenant un lien vers /team + # Utiliser une regex multiligne pour détecter et supprimer les blocs complets + team_link_block_pattern = r']*>.*?]*href=["\']/?team(/|\.html)?["\'][^>]*>.*?.*?
  • ' + content_cleaned = re.sub(team_link_block_pattern, '', content, flags=re.DOTALL | re.IGNORECASE) - i = 0 - while i < len(lines): - line = lines[i] - - # Détecter le début d'un lien Équipe (inclut /team, /team/, /team.html) - # Utiliser une regex pour détecter tous les formats possibles - team_link_match = re.search(r'href=["\']/?team(/|\.html)?["\']|href=\{["\']/?team', line) - if team_link_match and not skip_team_link: - skip_team_link = True - team_links_removed += 1 - # Ignorer cette ligne et les lignes suivantes jusqu'à - i += 1 - continue - - # Si on est dans un bloc Équipe à supprimer, ignorer jusqu'à - if skip_team_link: - # Vérifier si on a atteint la fin du
  • - if '
  • ' in line: - skip_team_link = False - # Vérifier aussi si on trouve un nouveau
  • sans avoir fermé le précédent (cas mal formaté) - elif '' not in line: - # On est dans un nouveau
  • , donc le précédent était mal formaté, continuer - pass - i += 1 - continue - - new_lines.append(line) - i += 1 + # Compter combien de liens ont été supprimés + remaining_before = len(re.findall(r'href=["\']/?team(/|\.html)?["\']', content)) + remaining_after = len(re.findall(r'href=["\']/?team(/|\.html)?["\']', content_cleaned)) + team_links_removed = remaining_before - remaining_after if team_links_removed > 0: - print(f"✅ {team_links_removed} lien(s) Équipe supprimé(s)") + print(f"✅ {team_links_removed} lien(s) Équipe supprimé(s) (regex multiligne)") + elif remaining_after > 0: + print(f"⚠️ {remaining_after} lien(s) Équipe encore présent(s) après nettoyage regex, nettoyage manuel...") + # Nettoyage manuel ligne par ligne si la regex n'a pas tout capturé + lines = content_cleaned.splitlines(keepends=True) + if lines and not lines[-1].endswith('\n'): + lines[-1] = lines[-1] + '\n' + + new_lines = [] + skip_team_link = False + manual_removed = 0 + + i = 0 + while i < len(lines): + line = lines[i] + + # Détecter le début d'un lien Équipe + team_link_match = re.search(r'href=["\']/?team(/|\.html)?["\']|href=\{["\']/?team', line) + if team_link_match and not skip_team_link: + skip_team_link = True + manual_removed += 1 + i += 1 + continue + + if skip_team_link: + if '
  • ' in line: + skip_team_link = False + i += 1 + continue + + new_lines.append(line) + i += 1 + + if manual_removed > 0: + content_cleaned = ''.join(new_lines) + print(f"✅ {manual_removed} lien(s) Équipe supplémentaire(s) supprimé(s) (nettoyage manuel)") - # ÉTAPE 2: Ajouter un seul lien Équipe au bon endroit - content_cleaned = ''.join(new_lines) lines = content_cleaned.splitlines(keepends=True) if lines and not lines[-1].endswith('\n'): lines[-1] = lines[-1] + '\n' + + # ÉTAPE 2: Ajouter un seul lien Équipe au bon endroit insert_idx = -1 for i, line in enumerate(lines):