-
-
-
-
-
-
-
-
-
-
-
-
@@ -478,14 +465,27 @@
});
const getFilteredModelsForCol = (pricingFilter, domainFilter, currentSelectedId) => {
- return modelInfo.models.filter(m => {
- if (m.model_id === currentSelectedId) return true;
+ let filtered = modelInfo.models.filter(m => {
const matchDomain = domainFilter === "" || m.domain === domainFilter;
let matchPrice = true;
if (pricingFilter === 'free') matchPrice = m.is_free;
if (pricingFilter === 'paid') matchPrice = !m.is_free;
return matchDomain && matchPrice;
});
+
+ // Injection dynamique pour empêcher les cases vides si le modèle n'est pas dans les filtres
+ if (currentSelectedId && currentSelectedId.trim() !== "" && currentSelectedId !== "gemini-3.5-flash-lite") {
+ const exists = filtered.find(m => m.model_id === currentSelectedId);
+ if (!exists) {
+ const original = modelInfo.models.find(m => m.model_id === currentSelectedId);
+ if (original) {
+ filtered.unshift(original);
+ } else {
+ filtered.unshift({ model_id: currentSelectedId, name: currentSelectedId, domain: "Importé", pricing_prompt: 0, pricing_completion: 0 });
+ }
+ }
+ }
+ return filtered;
};
const formatDate = (isoString) => {
@@ -556,21 +556,29 @@
const reader = new FileReader();
reader.onload = (e) => {
const content = e.target.result;
+
+ // Regex hyper souple pour ignorer la casse, les espaces bizarres et les accents
const extractModel = (key) => {
- const regex = new RegExp(`- ${key} : (.*)`, 'i');
+ const safeKey = key.replace(/[éèe]/gi, '[éèe]');
+ const regex = new RegExp(`-\\s*${safeKey}\\s*:\\s*([^\\r\\n]*)`, 'i');
const match = content.match(regex);
return match && match[1] ? match[1].trim() : "";
};
- const checkAndSet = (val, defaultVal) => val !== "" ? val : defaultVal;
+ const w1 = extractModel('Travailleur 1');
+ const w2 = extractModel('Travailleur 2');
+ const w3 = extractModel('Travailleur 3');
+ const w4 = extractModel('Travailleur 4');
+ const w5 = extractModel('Travailleur 5');
- selectedPrompter.value = checkAndSet(extractModel('Prompteur'), 'gemini-3.5-flash-lite');
- workers.value[0] = extractModel('Travailleur 1');
- workers.value[1] = extractModel('Travailleur 2');
- workers.value[2] = extractModel('Travailleur 3');
- workers.value[3] = extractModel('Travailleur 4');
- workers.value[4] = extractModel('Travailleur 5');
- selectedConcatenator.value = checkAndSet(extractModel('Concaténeur'), 'gemini-3.5-flash-lite');
+ // Réassignation complète du tableau pour garantir la réactivité Vue.js
+ workers.value = [w1, w2, w3, w4, w5];
+
+ const p = extractModel('Prompteur');
+ selectedPrompter.value = p !== "" ? p : 'gemini-3.5-flash-lite';
+
+ const c = extractModel('Concateneur');
+ selectedConcatenator.value = c !== "" ? c : 'gemini-3.5-flash-lite';
alert("Configuration IA importée et appliquée avec succès !");
};