docs: add settings partial save feature documentation
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
60
docs/settings-partial-save.md
Normal file
60
docs/settings-partial-save.md
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
# 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`:
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
const UI_EDITABLE_FIELDS: string[] = [
|
||||||
|
'erp.url',
|
||||||
|
'erp.username',
|
||||||
|
'erp.password',
|
||||||
|
'database.dbType', // Add new field here
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
2. Add UI input in `src/renderer/src/pages/SettingsPage.tsx`
|
||||||
|
3. Update `handleSaveSettings` to include the new field
|
||||||
|
|
||||||
|
## API
|
||||||
|
|
||||||
|
### savePartialSettings(settings: Partial<SettingsData>)
|
||||||
|
|
||||||
|
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.
|
||||||
Reference in New Issue
Block a user