Checkpoint: La migration de création de webImportSources est rendue idempotente avec CREATE TABLE IF NOT EXISTS. Un test garantit la présence des colonnes de connecteur et l’absence de modification de la table factures. 73 tests, TypeScript et build validés ; aucune donnée métier n’a été modifiée.
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
CREATE TABLE `webImportSources` (
|
CREATE TABLE IF NOT EXISTS `webImportSources` (
|
||||||
`id` int AUTO_INCREMENT NOT NULL,
|
`id` int AUTO_INCREMENT NOT NULL,
|
||||||
`userId` int NOT NULL,
|
`userId` int NOT NULL,
|
||||||
`name` varchar(100) NOT NULL,
|
`name` varchar(100) NOT NULL,
|
||||||
|
|||||||
21
server/webImportSourcesMigration.test.ts
Normal file
21
server/webImportSourcesMigration.test.ts
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
import { readFileSync } from "node:fs";
|
||||||
|
import { resolve } from "node:path";
|
||||||
|
import { describe, expect, it } from "vitest";
|
||||||
|
|
||||||
|
const migration = readFileSync(
|
||||||
|
resolve(process.cwd(), "drizzle/0036_broken_rattler.sql"),
|
||||||
|
"utf8",
|
||||||
|
);
|
||||||
|
|
||||||
|
describe("webImportSources migration", () => {
|
||||||
|
it("peut être appliquée sans échec si la table a déjà été créée", () => {
|
||||||
|
expect(migration).toMatch(/CREATE TABLE IF NOT EXISTS `webImportSources`/);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("définit les colonnes nécessaires au connecteur sans modifier les factures", () => {
|
||||||
|
expect(migration).toContain("`portalUrl` varchar(500) NOT NULL");
|
||||||
|
expect(migration).toContain("`loginPassword` text NOT NULL");
|
||||||
|
expect(migration).toContain("`apiToken` varchar(128) NOT NULL");
|
||||||
|
expect(migration).not.toContain("invoices");
|
||||||
|
});
|
||||||
|
});
|
||||||
7
todo.md
7
todo.md
@@ -1,9 +1,14 @@
|
|||||||
# Invoice Analyzer - TODO
|
# Invoice Analyzer - TODO
|
||||||
|
|
||||||
|
## Correction création connecteur web en production — 30/09/2026
|
||||||
|
- [ ] Diagnostiquer l’échec SQL d’insertion sans exposer les identifiants
|
||||||
|
- [ ] Corriger le schéma ou la persistance du connecteur web
|
||||||
|
- [ ] Valider la création puis déployer en recette et production sans toucher aux volumes PDF
|
||||||
|
|
||||||
## Correction validation connecteur web — 30/09/2026
|
## Correction validation connecteur web — 30/09/2026
|
||||||
- [x] Reproduire l’erreur `portalUrl` invalide et identifier l’écart formulaire/API
|
- [x] Reproduire l’erreur `portalUrl` invalide et identifier l’écart formulaire/API
|
||||||
- [x] Corriger la normalisation et la validation de l’URL du portail
|
- [x] Corriger la normalisation et la validation de l’URL du portail
|
||||||
- [ ] Valider les tests, puis déployer en recette et production sans toucher à MySQL ni aux volumes
|
- [x] Valider les tests, puis déployer en recette et production sans toucher à MySQL ni aux volumes
|
||||||
|
|
||||||
## Diagnostic réception e-mail automatique — 24/09/2026
|
## Diagnostic réception e-mail automatique — 24/09/2026
|
||||||
- [x] Reproduire le démarrage de la réception automatique et identifier le blocage interface → API → planificateur
|
- [x] Reproduire le démarrage de la réception automatique et identifier le blocage interface → API → planificateur
|
||||||
|
|||||||
Reference in New Issue
Block a user