95 lines
3.4 KiB
Markdown
95 lines
3.4 KiB
Markdown
# Admin Models Auto Model Fix
|
|
|
|
## Summary
|
|
Fixed two issues with the admin models page related to the auto model setting for hobby/free plan users:
|
|
|
|
1. **Added missing UI**: Created the UI elements for setting the auto model for hobby/free plan users
|
|
2. **Fixed model selection logic**: Ensured that paid plan users can select their own models without the auto model setting interfering
|
|
|
|
## Changes Made
|
|
|
|
### 1. Frontend - admin.html
|
|
**File**: `/home/engine/project/chat/public/admin.html`
|
|
|
|
Added a new card section for configuring the auto model for hobby/free plan users:
|
|
- Form: `auto-model-form`
|
|
- Select dropdown: `auto-model-select`
|
|
- Status display: `auto-model-status`
|
|
|
|
The UI explains that this setting only affects hobby/free plan users, while paid plan users can select their own models.
|
|
|
|
### 2. Backend - server.js
|
|
**File**: `/home/engine/project/chat/server.js`
|
|
|
|
Modified the `resolvePlanModel()` function to fix the model selection logic:
|
|
|
|
**Previous Behavior**:
|
|
- For paid plans, if configured models existed, it would always return the first configured model, ignoring user selections
|
|
|
|
**New Behavior**:
|
|
- **For hobby/free plan users**:
|
|
- Uses the admin-configured `freePlanModel` setting when no specific model is requested
|
|
- Still allows them to explicitly request specific models if they have a valid tier
|
|
|
|
- **For paid plan users**:
|
|
- Always respects the user's model selection
|
|
- If user requests a model (even without a tier), uses it
|
|
- Only falls back to first configured model if user doesn't request anything or requests 'auto'
|
|
|
|
## Test Results
|
|
|
|
Created comprehensive tests (`test_model_resolution.js`) that verify:
|
|
|
|
✓ Hobby users get the auto model when no specific request
|
|
✓ Hobby users get the auto model when requesting 'auto'
|
|
✓ Hobby users can explicitly request other models
|
|
✓ Paid users always get their requested model
|
|
✓ Paid users can request models without tiers
|
|
✓ Paid users get first configured model when no request
|
|
✓ Paid users get first configured model when requesting 'auto'
|
|
|
|
All 8 test cases pass.
|
|
|
|
## Technical Details
|
|
|
|
### Model Resolution Flow
|
|
|
|
1. **Explicit model with tier (not 'auto')**: Return requested model immediately
|
|
2. **Hobby/Free plan**:
|
|
- Check admin's `freePlanModel` setting
|
|
- Fall back to first configured model
|
|
- Fall back to default model
|
|
3. **Paid plan**:
|
|
- If specific model requested (not 'auto'), use it
|
|
- Otherwise use first configured model
|
|
- Fall back to default model
|
|
|
|
### API Integration
|
|
|
|
The feature integrates with existing API endpoints:
|
|
- **GET** `/api/admin/plan-settings` - Retrieves current settings including `freePlanModel`
|
|
- **POST** `/api/admin/plan-settings` - Saves the `freePlanModel` setting
|
|
|
|
### JavaScript Integration
|
|
|
|
The admin.js file already had all the necessary handlers:
|
|
- `populateAutoModelOptions()` - Populates the dropdown with available models
|
|
- Form submission handler at lines 1515-1532
|
|
- Proper element references at lines 38-40
|
|
|
|
## User Impact
|
|
|
|
### For Admins
|
|
- New UI section in Admin Panel → Build models page
|
|
- Can configure which model hobby/free users automatically use
|
|
- Clear indication that paid users can choose their own models
|
|
|
|
### For Hobby/Free Plan Users
|
|
- Automatically assigned the admin-configured model
|
|
- Can still explicitly select other models if available
|
|
|
|
### For Paid Plan Users
|
|
- Full control over model selection
|
|
- Their choices are always respected
|
|
- Auto model setting does not affect them
|