Checkpoint: Application complète : deux tableaux de bord (Veille Stratégique + AAP), import Excel quotidien avec déduplication, sources multiples (local/OneDrive/FTP/SharePoint), affichage liste/vignettes, filtres multi-critères, gestion utilisateurs, logs d'import, page paramètres, authentification locale, tâche cron 06h00, 13 tests Vitest passants.

This commit is contained in:
Manus
2026-03-16 10:45:35 -04:00
parent 5000fc555d
commit 8fb71e8bda
27 changed files with 4525 additions and 184 deletions

View File

@@ -0,0 +1,70 @@
CREATE TABLE `aap_items` (
`id` int AUTO_INCREMENT NOT NULL,
`dedupKey` varchar(64) NOT NULL,
`titre` text NOT NULL,
`categorie` enum('Handicap','PA','Enfance','Précarité','Sanitaire','Autre') NOT NULL,
`region` varchar(255),
`departement` varchar(255),
`dateCloture` timestamp,
`datePublication` timestamp,
`lien` text,
`importedAt` timestamp NOT NULL DEFAULT (now()),
CONSTRAINT `aap_items_id` PRIMARY KEY(`id`),
CONSTRAINT `aap_items_dedupKey_unique` UNIQUE(`dedupKey`)
);
--> statement-breakpoint
CREATE TABLE `app_settings` (
`id` int AUTO_INCREMENT NOT NULL,
`key` varchar(128) NOT NULL,
`value` text,
`updatedAt` timestamp NOT NULL DEFAULT (now()) ON UPDATE CURRENT_TIMESTAMP,
CONSTRAINT `app_settings_id` PRIMARY KEY(`id`),
CONSTRAINT `app_settings_key_unique` UNIQUE(`key`)
);
--> statement-breakpoint
CREATE TABLE `import_logs` (
`id` int AUTO_INCREMENT NOT NULL,
`fileType` enum('veille','aap') NOT NULL,
`source` varchar(512),
`status` enum('success','partial','error') NOT NULL,
`totalRows` int DEFAULT 0,
`newRows` int DEFAULT 0,
`skippedRows` int DEFAULT 0,
`errorMessage` text,
`details` json,
`startedAt` timestamp NOT NULL DEFAULT (now()),
`completedAt` timestamp,
CONSTRAINT `import_logs_id` PRIMARY KEY(`id`)
);
--> statement-breakpoint
CREATE TABLE `local_users` (
`id` int AUTO_INCREMENT NOT NULL,
`name` varchar(255) NOT NULL,
`email` varchar(320) NOT NULL,
`passwordHash` varchar(255) NOT NULL,
`role` enum('admin','user','readonly') NOT NULL DEFAULT 'user',
`isActive` boolean NOT NULL DEFAULT true,
`createdAt` timestamp NOT NULL DEFAULT (now()),
`updatedAt` timestamp NOT NULL DEFAULT (now()) ON UPDATE CURRENT_TIMESTAMP,
`lastSignedIn` timestamp,
CONSTRAINT `local_users_id` PRIMARY KEY(`id`),
CONSTRAINT `local_users_email_unique` UNIQUE(`email`)
);
--> statement-breakpoint
CREATE TABLE `veille_items` (
`id` int AUTO_INCREMENT NOT NULL,
`dedupKey` varchar(64) NOT NULL,
`titre` text NOT NULL,
`categorie` varchar(128),
`niveau` varchar(128),
`territoire` varchar(255),
`resume` text,
`source` varchar(512),
`passage` text,
`lien` text,
`typeVeille` enum('reglementaire','concurrentielle','technologique','generale') NOT NULL,
`datePublication` timestamp,
`importedAt` timestamp NOT NULL DEFAULT (now()),
CONSTRAINT `veille_items_id` PRIMARY KEY(`id`),
CONSTRAINT `veille_items_dedupKey_unique` UNIQUE(`dedupKey`)
);