feat(v0.9.3): module settings system + noArchive wizard fix#11
Merged
Conversation
Add a generic IModuleSettings infrastructure allowing each Input/Output provider to declare its own configurable parameters stored in a new ModuleSetting table (module, key, value). Backend: - ModuleSetting Prisma model + migration v0_9_3_module_settings - IModuleSettingsProvider interface + ModuleSettingsRegistry injectable - ModuleSettingsService (CRUD with defaults fallback) + controller GET/PUT /api/settings/modules and /api/settings/modules/:module - HttpRestInputProvider: defaultTimeoutMs + maxRetries applied at runtime (timeout forwarded to fetchWithConfig, retry wrapper on network errors) - MailOutputProvider: maxAttachmentSizeMb check before SMTP send - MAIL_ATTACHMENT_TOO_LARGE error code + exception - ProvidersModule auto-registers providers implementing IModuleSettingsProvider Frontend: - Module settings registry for sidebar nav (module, labelKey, icon) - Dynamic /settings/modules/[module] page with auto-generated form - Settings sidebar level with System Settings + per-module links - api.put() method - noArchive toggle disabled in wizard when sources don't qualify (local mode requires exactly one file source; resets on sources change)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
IModuleSettingsgénérique permettant à chaque provider (Input/Output) de déclarer ses propres paramètres configurables, stockés en DB (ModuleSetting) et accessibles viaGET/PUT /api/settings/modules/:moduleHttpRestInputProviderutilisedefaultTimeoutMsetmaxRetriessur chaque appel HTTP ;MailOutputProviderbloque l'envoi si l'archive dépassemaxAttachmentSizeMb/settings/modules/[module]auto-générée depuis la définition backend, sidebar Settings dynamique listant les modules enregistrésDétail des changements
Backend
ModuleSettingPrisma model + migrationv0_9_3_module_settingsIModuleSettingsProviderinterface +ModuleSettingsRegistryinjectableModuleSettingsService+ModuleSettingsController(GET/PUT /api/settings/modules)HttpRestInputProvider:defaultTimeoutMs(défaut 30s) +maxRetries(défaut 0) appliqués à runtimeMailOutputProvider: vérificationmaxAttachmentSizeMb(défaut 25 Mo) avant envoi SMTPMAIL_ATTACHMENT_TOO_LARGEProvidersModule: enregistrement automatique des providers implémentantIModuleSettingsProviderFrontend
module-settings-registry.ts) pour la navigation sidebar/settings/modules/[module]: formulaire auto-généré (number, string, boolean, select)api.put()ajouté dans la lib APIStepZip: propcanNoArchive— toggle désactivé + message explicatif si conditions non rempliesBackupWizard: resetnoArchivedans le handler sources (pas d'effet réactif)Pattern d'extension
Pour ajouter des settings à un futur provider :
IModuleSettingsProvidersur la classe backendregisterModuleSettingsNav(...)dansfrontend/providers/index.tsAucune page existante à modifier.
Test plan
cd backend && pnpm exec prisma migrate devGET /api/settings/modulesretournehttp-restetmailavec leurs valeurs par défautPUT /api/settings/modules/http-restet vérifier la persistance/settings→ vérifier le sous-niveau sidebar (Paramètres système + HTTP REST + Mail)/settings/modules/http-rest→ vérifier le formulaire auto-généré