5.2 KiB
5.2 KiB
✅ Holiday Calendar & Admin Configuration - Setup Complete!
🎉 Successfully Implemented
Database Tables Created:
- ✅
holidays- Organization holiday calendar - ✅
admin_configurations- System-wide admin settings
API Endpoints Created:
- ✅
/api/admin/holidays- CRUD operations for holidays - ✅
/api/admin/configurations- Manage admin settings
Features Implemented:
- ✅ Holiday management (add/edit/delete/bulk import)
- ✅ TAT calculation excludes holidays for STANDARD priority
- ✅ Automatic holiday cache with 6-hour refresh
- ✅ Admin configuration system ready for future UI
- ✅ Sample Indian holidays data (2025) prepared for import
🚀 Quick Start
1. Verify Tables:
# Check if tables were created
psql -d your_database -c "\dt holidays"
psql -d your_database -c "\dt admin_configurations"
2. Start the Backend:
npm run dev
You should see:
📅 Holiday calendar loaded for TAT calculations
[TAT Utils] Loaded 0 holidays into cache
3. Add Your First Holiday (via API):
As Admin user:
curl -X POST http://localhost:5000/api/admin/holidays \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ADMIN_TOKEN" \
-d '{
"holidayDate": "2025-11-05",
"holidayName": "Diwali",
"description": "Festival of Lights",
"holidayType": "NATIONAL"
}'
4. Bulk Import Indian Holidays (Optional):
curl -X POST http://localhost:5000/api/admin/holidays/bulk-import \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ADMIN_TOKEN" \
-d @data/indian_holidays_2025.json
📊 How It Works
TAT Calculation with Holidays:
STANDARD Priority:
- ❌ Skips weekends (Saturday/Sunday)
- ❌ Skips holidays (from holidays table)
- ✅ Only counts working hours (9 AM - 6 PM)
EXPRESS Priority:
- ✅ Includes all days (24/7)
- ✅ No holidays or weekends excluded
📚 Documentation
- Full Guide:
docs/HOLIDAY_CALENDAR_SYSTEM.md - Complete Summary:
HOLIDAY_AND_ADMIN_CONFIG_COMPLETE.md
🎯 Next Steps
For Backend Developers:
- Test holiday API endpoints
- Verify TAT calculations with holidays
- Add more admin configurations as needed
For Frontend Developers:
- Build Admin Holiday Management UI
- Create Holiday Calendar view
- Implement Configuration Settings page
🔍 Verify Setup
Check Holidays Table:
SELECT * FROM holidays;
-- Should return 0 rows (no holidays added yet)
Check Admin Configurations:
SELECT * FROM admin_configurations;
-- Should return 0 rows (will be seeded on first use)
Test Holiday API:
# Get all holidays for 2025
curl http://localhost:5000/api/admin/holidays?year=2025 \
-H "Authorization: Bearer YOUR_ADMIN_TOKEN"
📋 Sample Holidays Data
File: data/indian_holidays_2025.json
Contains 14 Indian national holidays for 2025:
- Republic Day (Jan 26)
- Holi
- Independence Day (Aug 15)
- Gandhi Jayanti (Oct 2)
- Diwali
- Christmas
- And more...
✅ Setup Status
| Component | Status | Notes |
|---|---|---|
| Holidays Table | ✅ Created | With 4 indexes |
| Admin Config Table | ✅ Created | With 3 indexes |
| Holiday Model | ✅ Implemented | Full CRUD support |
| Holiday Service | ✅ Implemented | Including bulk import |
| Admin Controller | ✅ Implemented | All endpoints ready |
| Admin Routes | ✅ Implemented | Secured with admin middleware |
| TAT Integration | ✅ Implemented | Holidays excluded for STANDARD |
| Holiday Cache | ✅ Implemented | 6-hour expiry, auto-refresh |
| Sample Data | ✅ Created | 14 holidays for 2025 |
| Documentation | ✅ Complete | Full guide available |
🎓 Example Usage
Create Request with Holiday in TAT Period:
// Create STANDARD priority request
POST /api/workflows
{
"title": "Test Request",
"priority": "STANDARD",
"approvers": [
{ "email": "approver@example.com", "tatHours": 48 }
]
}
// If holidays exist between now and +48 hours:
// - Due date will be calculated skipping those holidays
// - TAT calculation will be accurate
🛠️ Troubleshooting
Holidays not excluded from TAT?
- Check if holidays cache is loaded:
- Look for "Loaded X holidays into cache" in server logs
- Verify priority is STANDARD (EXPRESS doesn't use holidays)
- Check if holiday exists and is active:
SELECT * FROM holidays WHERE holiday_date = '2025-11-05' AND is_active = true;
Cache not updating after adding holiday?
- Cache refreshes automatically when admin adds/updates/deletes holidays
- If not working, restart backend server
- Cache also refreshes every 6 hours automatically
📞 Support
For issues or questions:
- Check documentation in
docs/folder - Review complete guide in
HOLIDAY_AND_ADMIN_CONFIG_COMPLETE.md - Consult with backend team
🎉 You're all set! Start adding holidays and enjoy accurate TAT calculations!
Last Updated: November 4, 2025
Version: 1.0.0
Team: Royal Enfield Workflow System