Checkpoint: Checkpoint saved: Ajout d'une page "Paramètres de réception" complète pour configurer les différentes méthodes d'import de factures.
Nouvelles fonctionnalités : ✅ Table importSettings dans la base de données (7 tables au total) ✅ Routes tRPC pour gérer les paramètres de réception (get, update) ✅ Page "Paramètres de réception" accessible via le menu de navigation Configuration disponible : 1. **Import manuel** : Activation/désactivation de l'upload manuel de fichiers PDF via l'interface 2. **Import automatique depuis dossier** : - Activation/désactivation - Configuration du chemin du dossier source à surveiller - Fréquence de lecture du dossier (en minutes) 3. **Import par email** : - Activation/désactivation - Configuration du compte email (adresse + mot de passe) - Serveur IMAP (host + port) - Fréquence de lecture des emails (en minutes) Interface utilisateur : - 3 cartes distinctes avec icônes (Upload, FolderOpen, Mail) - Switches pour activer/désactiver chaque méthode - Champs de configuration qui apparaissent uniquement si la méthode est activée - Bouton "Enregistrer les paramètres" avec feedback visuel - Notifications toast pour confirmer la sauvegarde ou signaler les erreurs Architecture : - Schéma de base de données : table importSettings avec 14 colonnes - Backend : Fonctions db.ts (getImportSettingsByUser, upsertImportSettings) - Routes tRPC : importSettings.get et importSettings.update - Frontend : Page ImportSettings.tsx avec gestion d'état React - Navigation : Nouveau lien "Paramètres de réception" dans le menu latéral La page est maintenant accessible via /import-settings et permet aux utilisateurs de configurer toutes les méthodes d'importation de factures de manière centralisée.
This commit is contained in:
@@ -130,6 +130,36 @@ export const userSettings = mysqlTable("userSettings", {
|
||||
export type UserSettings = typeof userSettings.$inferSelect;
|
||||
export type InsertUserSettings = typeof userSettings.$inferInsert;
|
||||
|
||||
/**
|
||||
* Import settings table for configuring different import methods
|
||||
*/
|
||||
export const importSettings = mysqlTable("importSettings", {
|
||||
id: int("id").autoincrement().primaryKey(),
|
||||
userId: int("userId").notNull().unique(), // One settings record per user
|
||||
|
||||
// Manual import settings
|
||||
manualImportEnabled: int("manualImportEnabled").default(1).notNull(), // 0 = disabled, 1 = enabled
|
||||
|
||||
// Automatic import from folder settings
|
||||
autoImportEnabled: int("autoImportEnabled").default(0).notNull(), // 0 = disabled, 1 = enabled
|
||||
autoImportSourcePath: text("autoImportSourcePath"), // Path to folder to watch
|
||||
autoImportFrequency: int("autoImportFrequency").default(60).notNull(), // Frequency in minutes (default: 60 = 1 hour)
|
||||
|
||||
// Email import settings
|
||||
emailImportEnabled: int("emailImportEnabled").default(0).notNull(), // 0 = disabled, 1 = enabled
|
||||
emailImportAddress: varchar("emailImportAddress", { length: 320 }), // Email address to monitor
|
||||
emailImportPassword: text("emailImportPassword"), // Encrypted password
|
||||
emailImportHost: varchar("emailImportHost", { length: 255 }), // IMAP server host
|
||||
emailImportPort: int("emailImportPort").default(993), // IMAP port (default: 993 for SSL)
|
||||
emailImportFrequency: int("emailImportFrequency").default(30).notNull(), // Frequency in minutes (default: 30)
|
||||
|
||||
createdAt: timestamp("createdAt").defaultNow().notNull(),
|
||||
updatedAt: timestamp("updatedAt").defaultNow().onUpdateNow().notNull(),
|
||||
});
|
||||
|
||||
export type ImportSettings = typeof importSettings.$inferSelect;
|
||||
export type InsertImportSettings = typeof importSettings.$inferInsert;
|
||||
|
||||
/**
|
||||
* Import logs table for tracking all import operations
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user