Checkpoint: Simplification de la classification IA dans l'onglet Veille Stratégique : suppression de la catégorie médico-sociale (Handicap, PA, Enfance, etc.), remplacement de "Générale" par "Informationnelle", classification IA réduite au seul type de veille (réglementaire/concurrentielle/technologique/informationnelle). Migration BDD des données generale → informationnelle. 0 erreur TypeScript, 21 tests passés.

This commit is contained in:
Manus
2026-06-17 04:02:17 -04:00
parent 937dda1cac
commit dcb726832c
17 changed files with 1310 additions and 331 deletions

View File

@@ -0,0 +1,88 @@
/**
* Script de migration : generale → informationnelle
*
* Étapes :
* 1. Élargir l'enum typeVeille pour inclure 'informationnelle' (en plus de 'generale')
* 2. Mettre à jour les données existantes (generale → informationnelle)
* 3. Réduire l'enum pour supprimer 'generale'
* 4. Même chose pour defaultTypeVeille dans rss_feeds
*/
import mysql from "mysql2/promise";
import { readFileSync } from "fs";
import { config } from "dotenv";
config();
const DATABASE_URL = process.env.DATABASE_URL;
if (!DATABASE_URL) {
console.error("DATABASE_URL non définie");
process.exit(1);
}
// Extraire les paramètres de connexion depuis l'URL
const url = new URL(DATABASE_URL);
const sslParam = url.searchParams.get("ssl");
const sslConfig = sslParam ? JSON.parse(sslParam) : undefined;
const connection = await mysql.createConnection({
host: url.hostname,
port: parseInt(url.port || "3306"),
user: url.username,
password: url.password,
database: url.pathname.slice(1),
ssl: sslConfig,
});
console.log("Connexion BDD établie");
try {
// Étape 1 : Élargir l'enum veille_items.typeVeille
console.log("1. Élargissement de l'enum veille_items.typeVeille...");
await connection.execute(
`ALTER TABLE veille_items MODIFY COLUMN typeVeille ENUM('reglementaire','concurrentielle','technologique','generale','informationnelle') NOT NULL`
);
console.log(" ✓ Enum élargi");
// Étape 2 : Migrer les données veille_items
console.log("2. Migration des données veille_items (generale → informationnelle)...");
const [result1] = await connection.execute(
`UPDATE veille_items SET typeVeille = 'informationnelle' WHERE typeVeille = 'generale'`
);
console.log(`${result1.affectedRows} lignes mises à jour`);
// Étape 3 : Réduire l'enum veille_items.typeVeille (supprimer 'generale')
console.log("3. Réduction de l'enum veille_items.typeVeille (suppression de 'generale')...");
await connection.execute(
`ALTER TABLE veille_items MODIFY COLUMN typeVeille ENUM('reglementaire','concurrentielle','technologique','informationnelle') NOT NULL`
);
console.log(" ✓ Enum réduit");
// Étape 4 : Élargir l'enum rss_feeds.defaultTypeVeille
console.log("4. Élargissement de l'enum rss_feeds.defaultTypeVeille...");
await connection.execute(
`ALTER TABLE rss_feeds MODIFY COLUMN defaultTypeVeille ENUM('reglementaire','concurrentielle','technologique','generale','informationnelle')`
);
console.log(" ✓ Enum élargi");
// Étape 5 : Migrer les données rss_feeds
console.log("5. Migration des données rss_feeds (generale → informationnelle)...");
const [result2] = await connection.execute(
`UPDATE rss_feeds SET defaultTypeVeille = 'informationnelle' WHERE defaultTypeVeille = 'generale'`
);
console.log(`${result2.affectedRows} lignes mises à jour`);
// Étape 6 : Réduire l'enum rss_feeds.defaultTypeVeille (supprimer 'generale')
console.log("6. Réduction de l'enum rss_feeds.defaultTypeVeille (suppression de 'generale')...");
await connection.execute(
`ALTER TABLE rss_feeds MODIFY COLUMN defaultTypeVeille ENUM('reglementaire','concurrentielle','technologique','informationnelle')`
);
console.log(" ✓ Enum réduit");
console.log("\n✅ Migration terminée avec succès !");
} catch (err) {
console.error("❌ Erreur de migration :", err.message);
process.exit(1);
} finally {
await connection.end();
}