Files
LogiFlow/scripts/bench/types.ts
T
LogiFlowandClaude Opus 5.5 600627c632 feat(rust) : serveur réécrit en Rust, Node retiré ; Calendrier en tête du menu (#571)
- Serveur Rust (server-rs/, axum + sqlx) : les 148 adresses de l'API,
  l'interface, les migrations de démarrage et les tâches de fond ; même
  comportement que Node (banc : 2027 cas, 0 écart hors écarts déclarés
  USERS-02, RAPPRO-21, R4, R5).
- Node retiré : server/, dépendances serveur, image Docker sans Node
  (51 Mo), docker-compose à un seul service applicatif.
- R4 : écritures d'un autre site refusées (Sec-Fetch-Site / Origin).
- R5 : « aujourd'hui » et sauvegarde automatique à l'heure de Paris.
- R6 : mainteneur dans .github/CODEOWNERS.
- Menu latéral : Accueil puis Calendrier en tête.
- Plan et état : docs/PLAN-MIGRATION-RUST.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ke2qyS8rgacP3ap5iezDbM
2026-10-15 20:31:14 +02:00

50 lines
1.9 KiB
TypeScript

// Description des requêtes rejouées par le banc.
// "anonyme" : sans session ; "api" : clé de l'API externe (en-tête X-API-Key)
export type AccountKey = "admin" | "directeur" | "manager" | "employe" | "sans-magasin" | "anonyme" | "api";
export const ALL_ACCOUNTS: AccountKey[] = ["admin", "directeur", "manager", "employe", "sans-magasin", "anonyme"];
export const LOGGED_ACCOUNTS: AccountKey[] = ["admin", "directeur", "manager", "employe", "sans-magasin"];
// Écart voulu entre Node et Rust (faille fermée…), décidé et inscrit au banc :
// ces champs sont retirés des deux côtés avant la comparaison, et le banc
// rappelle la raison à la fin de son rapport
export interface Deviation {
fields: string[];
reason: string;
}
// Lecture : rejouée sur la même base pour chaque compte
export interface ReadCase {
module: string;
path: string;
accounts?: AccountKey[]; // par défaut ALL_ACCOUNTS
// Champs ignorés dans la comparaison (valeurs propres à chaque passage)
ignore?: string[];
deviation?: Deviation;
}
// Les chemins et corps acceptent des gabarits :
// {{today}} {{today+3}} {{today-30}} → AAAA-MM-JJ ; {{year}} {{year-1}} {{month}}
// {{0.id}} → champ id de la réponse JSON de l'étape 0 du même scénario
export interface Step {
method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
path: string;
body?: unknown;
// json (par défaut), form (urlencoded) ou multipart (champs + fichiers)
bodyType?: "json" | "form" | "multipart";
files?: { field: string; filename: string; contentType: string; size: number }[];
headers?: Record<string, string>;
}
// Écriture : base remise à zéro avant chaque compte, puis état des tables comparé
export interface WriteScenario {
module: string;
name: string;
accounts?: AccountKey[]; // par défaut LOGGED_ACCOUNTS
steps: Step[];
tables: string[];
ignore?: string[];
deviation?: Deviation;
}