Update app.py
Browse files
app.py
CHANGED
@@ -905,39 +905,53 @@ if (warmupStartBtn){
|
|
905 |
|
906 |
|
907 |
|
908 |
-
|
909 |
-
// Saisie optionnelle ; vide => on lance avec DEFAULT_MODELS définis plus haut (P4.1)
|
910 |
const txt = prompt(
|
911 |
-
'Modèles (optionnel
|
912 |
'Laisse vide pour utiliser la liste par défaut.',
|
913 |
''
|
914 |
);
|
915 |
|
916 |
-
let
|
917 |
if (txt && txt.trim()){
|
918 |
-
|
919 |
-
|
|
|
|
|
920 |
} else {
|
921 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
922 |
}
|
923 |
|
|
|
|
|
|
|
924 |
try{
|
925 |
const r = await fetch('/warmup/start', {
|
926 |
method:'POST',
|
927 |
headers:{ 'Content-Type':'application/json' },
|
928 |
-
body: JSON.stringify(
|
929 |
});
|
930 |
if(!r.ok){
|
931 |
const t = await r.text();
|
932 |
alert('Échec démarrage: ' + r.status + ' ' + t);
|
933 |
return;
|
934 |
}
|
935 |
-
|
936 |
await refreshWarmupUI();
|
937 |
if (!warmupTimer) warmupTimer = setInterval(refreshWarmupUI, 1000);
|
938 |
}catch(e){
|
939 |
alert('Erreur réseau');
|
940 |
}
|
|
|
941 |
});
|
942 |
}
|
943 |
|
|
|
905 |
|
906 |
|
907 |
|
908 |
+
// Saisie optionnelle — accepte virgules, espaces, retours à la ligne, points-virgules
|
|
|
909 |
const txt = prompt(
|
910 |
+
'Modèles (optionnel). Tu peux séparer par virgule, espace ou retour à la ligne.\n' +
|
911 |
'Laisse vide pour utiliser la liste par défaut.',
|
912 |
''
|
913 |
);
|
914 |
|
915 |
+
let models;
|
916 |
if (txt && txt.trim()){
|
917 |
+
// Découpe souple + nettoyage + dédoublonnage
|
918 |
+
const mods = txt.split(/[\s,;]+/).map(s=>s.trim()).filter(Boolean);
|
919 |
+
if (!mods.length){ alert('Aucun modèle détecté.'); return; }
|
920 |
+
models = Array.from(new Set(mods));
|
921 |
} else {
|
922 |
+
// Liste par défaut définie plus haut (P4.1)
|
923 |
+
models = DEFAULT_MODELS;
|
924 |
+
}
|
925 |
+
|
926 |
+
// Ouvre la popup et affiche immédiatement la liste demandée
|
927 |
+
openWarmupPopup();
|
928 |
+
if (warmupPopupStatus) warmupPopupStatus.textContent = 'Préparation en cours…';
|
929 |
+
if (warmupLogs) {
|
930 |
+
warmupLogs.textContent = 'Warm-up demandé pour :\n' + models.map(m=>' • '+m).join('\n');
|
931 |
+
warmupLogs.scrollTop = warmupLogs.scrollHeight; // auto-scroll vers le bas
|
932 |
}
|
933 |
|
934 |
+
// Sécurité : évite 2 timers concurrents
|
935 |
+
if (warmupTimer) { clearInterval(warmupTimer); warmupTimer = null; }
|
936 |
+
|
937 |
try{
|
938 |
const r = await fetch('/warmup/start', {
|
939 |
method:'POST',
|
940 |
headers:{ 'Content-Type':'application/json' },
|
941 |
+
body: JSON.stringify({ models })
|
942 |
});
|
943 |
if(!r.ok){
|
944 |
const t = await r.text();
|
945 |
alert('Échec démarrage: ' + r.status + ' ' + t);
|
946 |
return;
|
947 |
}
|
948 |
+
// Rafraîchit l’UI et démarre le polling
|
949 |
await refreshWarmupUI();
|
950 |
if (!warmupTimer) warmupTimer = setInterval(refreshWarmupUI, 1000);
|
951 |
}catch(e){
|
952 |
alert('Erreur réseau');
|
953 |
}
|
954 |
+
|
955 |
});
|
956 |
}
|
957 |
|