14 KiB
14 KiB
🎛️ Admin Features - Frontend Implementation Guide
✅ What's Been Implemented
I've successfully integrated the Admin Configuration & Holiday Management system into your Settings page!
📊 Features Overview
1. System Configuration Manager ⚙️
- View and edit all system configurations
- Organized by category (TAT Settings, Document Policy, AI Config, etc.)
- Different input types: text, number, sliders, toggles
- Validation rules applied
- Save/Reset to default functionality
- Real-time feedback
2. Holiday Calendar Manager 📅
- View holidays by year
- Add/edit/delete holidays
- Holiday types: National, Regional, Organizational, Optional
- Recurring holiday support
- Month-wise organized view
- Visual calendar interface
3. Access Control 🔒
- Admin-only tabs (System Configuration, Holiday Calendar)
- Non-admin users see only User Settings
- Graceful degradation for non-admin users
🎨 UI Components Created
New Files:
src/services/adminApi.ts- API service layersrc/components/admin/ConfigurationManager.tsx- Configuration UIsrc/components/admin/HolidayManager.tsx- Holiday management UIsrc/components/admin/index.ts- Barrel export
Updated Files:
src/pages/Settings/Settings.tsx- Integrated admin features
🚀 How to Use (As Admin)
Access Settings:
Navigate to: Settings (sidebar menu)
Tabs Available (Admin Users):
- User Settings - Personal preferences (notifications, appearance, etc.)
- System Configuration - Admin-only system settings
- Holiday Calendar - Admin-only holiday management
Tabs Available (Non-Admin Users):
- User Settings only
⚙️ System Configuration Tab
Categories:
TAT Settings:
- Default TAT for Express Priority (hours)
- Default TAT for Standard Priority (hours)
- First Reminder Threshold (%) - Slider
- Second Reminder Threshold (%) - Slider
- Working Day Start Hour
- Working Day End Hour
Document Policy:
- Maximum File Upload Size (MB)
- Allowed File Types
- Document Retention Period (Days)
AI Configuration:
- Enable AI Remark Generation - Toggle
- AI Remark Maximum Characters
How to Edit:
- Navigate to System Configuration tab
- Select a category
- Modify the value
- Click Save
- Click Reset to Default to restore original value
Visual Indicators:
- 🟡 Modified Badge - Value has been changed
- 🟠 Requires Restart Badge - Server restart needed after save
- ✅ Success Message - Configuration saved
- ❌ Error Message - Validation failed or save error
📅 Holiday Calendar Tab
Features:
Year Selector:
- View holidays for any year (current year ±2)
- Dropdown selection
Add Holiday:
- Click + Add Holiday button
- Fill in form:
- Date (required)
- Holiday Name (required)
- Description (optional)
- Holiday Type: National/Regional/Organizational/Optional
- Recurring checkbox (for annual holidays)
- Click Add Holiday
Edit Holiday:
- Find holiday in list
- Click Edit button
- Modify fields
- Click Update Holiday
Delete Holiday:
- Find holiday in list
- Click Delete button
- Confirm deletion
View:
- Holidays grouped by month
- Badges show holiday type
- "Recurring" badge for annual holidays
- Description shown below holiday name
🎯 Configuration Input Types
Text Input:
<Input type="text" value={value} onChange={...} />
- Used for: File types, text values
Number Input:
<Input type="number" min={1} max={100} value={value} onChange={...} />
- Used for: TAT hours, file sizes, retention days
- Validation: min/max enforced
Slider:
<Slider value={[50]} min={0} max={100} step={1} onChange={...} />
- Used for: Percentage thresholds
- Visual feedback with current value display
Toggle Switch:
<Switch checked={true} onCheckedChange={...} />
- Used for: Boolean settings (enable/disable features)
📊 Backend Integration
API Endpoints Used:
Configuration:
GET /api/admin/configurations- Fetch all configsGET /api/admin/configurations?category=TAT_SETTINGS- Filter by categoryPUT /api/admin/configurations/:configKey- Update valuePOST /api/admin/configurations/:configKey/reset- Reset to default
Holidays:
GET /api/admin/holidays?year=2025- Get holidays for yearPOST /api/admin/holidays- Create holidayPUT /api/admin/holidays/:holidayId- Update holidayDELETE /api/admin/holidays/:holidayId- Delete holidayPOST /api/admin/holidays/bulk-import- Import multiple holidays
🔒 Security
Frontend:
- Admin tabs only visible if
user.isAdmin === true - Uses
useAuth()context to check admin status
Backend:
- All admin endpoints protected with
authenticateToken - Additional
requireAdminmiddleware - Non-admin users get 403 Forbidden
🎨 UI/UX Features
Success/Error Messages:
- Green alert for successful operations
- Red alert for errors
- Auto-dismiss after 3 seconds
Loading States:
- Spinner while fetching data
- Disabled buttons during save
- "Saving..." button text
Validation:
- Required field checks
- Min/max validation for numbers
- Visual feedback for invalid input
Responsive Design:
- Grid layout for large screens
- Stack layout for mobile
- Scrollable content areas
📱 Mobile Responsiveness
Configuration Manager:
- Tabs stack on small screens
- Full-width inputs
- Touch-friendly buttons
Holiday Manager:
- Year selector and Add button stack vertically
- Holiday cards full-width on mobile
- Edit/Delete buttons accessible
🧪 Testing Guide
Test Configuration Management:
-
Login as Admin:
- Navigate to Settings
- Verify 3 tabs visible
-
Edit TAT Setting:
- Go to System Configuration → TAT Settings
- Change "Default TAT for Express Priority" to 36
- Click Save
- Verify success message
- Check backend: value should be updated in DB
-
Use Slider:
- Go to "First Reminder Threshold"
- Drag slider to 60%
- Click Save
- Verify success message
-
Toggle AI Feature:
- Go to AI Configuration
- Toggle "Enable AI Remark Generation"
- Click Save
- Verify success message
-
Reset to Default:
- Edit any configuration
- Click "Reset to Default"
- Confirm
- Verify value restored
Test Holiday Management:
-
Add Holiday:
- Go to Holiday Calendar tab
- Click "+ Add Holiday"
- Fill form:
- Date: 2025-12-31
- Name: New Year's Eve
- Type: Organizational
- Click "Add Holiday"
- Verify appears in December section
-
Edit Holiday:
- Find holiday in list
- Click "Edit"
- Change description
- Click "Update Holiday"
- Verify changes saved
-
Delete Holiday:
- Find holiday
- Click "Delete"
- Confirm
- Verify removed from list
-
Change Year:
- Select different year from dropdown
- Verify holidays load for that year
Test as Non-Admin:
- Login as regular user
- Navigate to Settings
- Verify only User Settings visible
- Verify blue info card: "Admin features not accessible"
🎓 Configuration Categories
TAT_SETTINGS:
- Default TAT hours
- Reminder thresholds
- Working hours
- Impact: Affects all new workflow requests
DOCUMENT_POLICY:
- Max file size
- Allowed file types
- Retention period
- Impact: Affects file uploads system-wide
AI_CONFIGURATION:
- Enable/disable AI
- Max characters
- Impact: Affects conclusion remark generation
NOTIFICATION_RULES: (Future)
- Email/SMS preferences
- Notification frequency
- Impact: Affects all notifications
WORKFLOW_SHARING: (Future)
- Spectator permissions
- Share link settings
- Impact: Affects collaboration features
🔄 Data Flow
Settings Page (Admin User)
↓
ConfigurationManager Component
↓
adminApi.getAllConfigurations()
↓
Backend: GET /api/admin/configurations
↓
Fetch from admin_configurations table
↓
Display by category with appropriate UI components
↓
User edits value
↓
adminApi.updateConfiguration(key, value)
↓
Backend: PUT /api/admin/configurations/:key
↓
Update database
↓
Success message + refresh
🎨 Styling Reference
Color Scheme:
- TAT Settings: Blue (
bg-blue-100) - Document Policy: Purple (
bg-purple-100) - Notification Rules: Amber (
bg-amber-100) - AI Configuration: Pink (
bg-pink-100) - Workflow Sharing: Emerald (
bg-emerald-100)
Holiday Types:
- NATIONAL: Red (
bg-red-100) - REGIONAL: Blue (
bg-blue-100) - ORGANIZATIONAL: Purple (
bg-purple-100) - OPTIONAL: Gray (
bg-gray-100)
📋 Future Enhancements
Configuration Manager:
- ✨ Bulk edit mode
- ✨ Search/filter configurations
- ✨ Configuration history (audit trail)
- ✨ Import/export configurations
- ✨ Configuration templates
Holiday Manager:
- ✨ Visual calendar view (month grid)
- ✨ Drag-and-drop dates
- ✨ Import from Google Calendar
- ✨ Export to CSV/iCal
- ✨ Holiday templates by country
- ✨ Multi-select delete
- ✨ Holiday conflict detection
🐛 Troubleshooting
Admin Tabs Not Showing?
Check:
- Is user logged in?
- Is
user.isAdmintrue in database? - Check console for authentication errors
Solution:
-- Make user admin
UPDATE users SET is_admin = true WHERE email = 'your-email@example.com';
Configurations Not Loading?
Check:
- Backend running?
- Admin auth token valid?
- Check network tab for 403/401 errors
Solution:
- Verify JWT token is valid
- Check
requireAdminmiddleware is working
Holidays Not Saving?
Check:
- Date format correct? (YYYY-MM-DD)
- Holiday name filled?
- Check console for validation errors
📚 Component API
ConfigurationManager Props:
interface ConfigurationManagerProps {
onConfigUpdate?: () => void; // Callback after config updated
}
HolidayManager Props:
// No props required - fully self-contained
✨ Sample Screenshots (Describe UI)
Admin View:
┌─────────────────────────────────────────┐
│ Settings │
│ Manage your account settings... │
└─────────────────────────────────────────┘
┌───────────────────────────────────────────┐
│ [User Settings] [System Config] [Holidays]│
└───────────────────────────────────────────┘
System Configuration Tab:
┌─────────────────────────────────────────┐
│ [TAT_SETTINGS] [DOCUMENT_POLICY] [AI] │
└─────────────────────────────────────────┘
TAT SETTINGS
┌─────────────────────────────────────────┐
│ ⏰ Default TAT for Express Priority │
│ Default turnaround time in hours │
│ Default: 24 │
│ [24] ← input │
│ [Save] [Reset to Default] │
└─────────────────────────────────────────┘
│ ⏰ First TAT Reminder Threshold (%) │
│ Send first reminder at... │
│ 50% ━━●━━━━━━━━ Range: 0-100 │
│ [Save] [Reset to Default] │
└─────────────────────────────────────────┘
🎯 Key Points
- ✅ Admin Only: System Config & Holidays tabs require admin role
- ✅ Real-time Validation: Min/max enforced on save
- ✅ Auto-refresh: Changes reflect immediately
- ✅ Holiday TAT Impact: Holidays automatically excluded from STANDARD priority
- ✅ Mobile Friendly: Responsive design for all screen sizes
🚀 Next Steps
Immediate:
- ✅ Test as Admin - Login and verify tabs visible
- ✅ Add Holidays - Import Indian holidays or add manually
- ✅ Configure TAT - Set organization-specific TAT defaults
Future:
- 📋 Add visual calendar view for holidays
- 📋 Add configuration audit trail
- 📋 Add bulk configuration import/export
- 📋 Add user role management UI
- 📋 Add notification template editor
📞 Support
Common Issues:
- Admin tabs not showing? → Check
user.isAdminin database - Configurations not loading? → Check backend logs, verify admin token
- Holidays not affecting TAT? → Verify priority is STANDARD, restart backend
Documentation:
- Backend Guide:
Re_Backend/HOLIDAY_AND_ADMIN_CONFIG_COMPLETE.md - Setup Guide:
Re_Backend/SETUP_COMPLETE.md - API Docs:
Re_Backend/docs/HOLIDAY_CALENDAR_SYSTEM.md
Status: ✅ COMPLETE & READY TO USE!
Last Updated: November 4, 2025
Version: 1.0.0
Team: Royal Enfield Workflow