Files
BIPMaterialManager/docs/settings-partial-save.md
Misaka_Company 73a49f9de3 docs: add settings partial save feature documentation
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-03-03 15:12:39 +08:00

1.6 KiB

Settings Partial Save Feature

Overview

The settings system now implements partial save functionality to prevent unintended overwrites of configuration values.

How It Works

  1. Field Whitelist: Only fields exposed in the UI can be modified
  2. Deep Merge: Updates are merged with existing config, preserving unmodified fields
  3. Backup & Rollback: Config is backed up before save; failures trigger automatic rollback

Editable Fields

Currently editable via UI:

  • erp.url - ERP system URL
  • erp.username - ERP login username
  • erp.password - ERP login password

Adding New Editable Fields

To add a new field to the UI:

  1. Add field to whitelist in src/main/services/config/config-manager.ts:
const UI_EDITABLE_FIELDS: string[] = [
  'erp.url',
  'erp.username',
  'erp.password',
  'database.dbType',  // Add new field here
]
  1. Add UI input in src/renderer/src/pages/SettingsPage.tsx
  2. Update handleSaveSettings to include the new field

API

savePartialSettings(settings: Partial)

Saves only the provided fields, preserving all existing configuration.

Returns: { success: boolean, error?: string }

Validation:

  • Checks whitelist before applying changes
  • Returns error for unauthorized fields

Error Handling

  • Unauthorized field: Returns error message listing invalid fields
  • Save failure: Automatically restores from backup
  • Backup failure: Logs warning, continues with save

Backup File

Location: .env.backup (in project root)

Created before every save operation. Used for rollback on failure.