Add Python web scraper for NJC travel rates with currency extraction

- Implemented Python scraper using BeautifulSoup and pandas to automatically collect travel rates from official NJC website
- Added currency extraction from table titles (supports EUR, USD, AUD, CAD, ARS, etc.)
- Added country extraction from table titles for international rates
- Flatten pandas MultiIndex columns for cleaner data structure
- Default to CAD for domestic Canadian sources (accommodations and domestic tables)
- Created SQLite database schema (raw_tables, rate_entries, exchange_rates, accommodations)
- Successfully scraped 92 tables with 17,205 rate entries covering 25 international cities
- Added migration script to convert scraped data to Node.js database format
- Updated .gitignore for Python files (.venv/, __pycache__, *.pyc, *.sqlite3)
- Fixed city validation and currency conversion in main app
- Added comprehensive debug and verification scripts

This replaces manual JSON maintenance with automated data collection from official government source.
This commit is contained in:
2026-01-13 09:21:43 -05:00
commit 15094ac94b
84 changed files with 19859 additions and 0 deletions

346
documents/FEATURE_UPDATE.md Normal file
View File

@@ -0,0 +1,346 @@
# Feature Update Summary - October 30, 2025
## 🆕 New Features Added
### 1. **Transportation Options** ✈️🚗🚂
#### Multiple Transport Modes
- **Flight** - With business class rules (9+ hours)
- **Personal Vehicle** - Kilometric rate calculation
- **Train** - VIA Rail and Amtrak support
#### Features:
- Dynamic form fields based on transport mode selection
- Automatic kilometric rate calculation ($0.68/km for Module 3)
- Support for parking, tolls, and additional expenses
- Train route suggestions with common fares
#### Database: `transportationRates.json`
- Kilometric rates (tier 1 and tier 2)
- Train policy guidelines
- Common route estimates
- Calculation examples
- Insurance requirements
---
### 2. **Google Flights Integration** 🔗
#### Smart Flight Cost Estimation
- Dynamic Google Flights link generation
- Auto-populates departure and destination cities
- Includes travel dates when available
- Opens in new tab for convenience
#### Features:
- Real-time link updates as user types
- Direct search from form fields
- Formatted URLs with proper encoding
- Contextual helper text
---
### 3. **Rate Validation System** ✅⚠️
#### Automatic Database Validation
- Checks all database effective dates on load
- Monitors time since last update
- Color-coded status indicators
- Automatic warning display
#### Warning Levels:
- **✅ Current** - Updated within acceptable timeframe
- **⚠️ Warning** - Approaching update cycle (10+ months)
- **❌ Outdated** - Requires immediate update (12+ months)
#### Features:
- Session-based warning dismissal
- Links to official NJC sources
- Non-intrusive banner design
- Multiple database monitoring
---
### 4. **Validation Dashboard** 📊
#### Comprehensive Monitoring Page (`validation.html`)
- Real-time database status checks
- Visual summary statistics
- Detailed information cards for each database
- Actionable recommendations
#### Dashboard Features:
- **Summary Stats**:
- Count of current databases
- Count needing attention
- Count outdated
- **Database Cards**:
- Per Diem Rates status
- Accommodation Rates status
- Transportation Rates status
- Effective dates
- Last update dates
- Version numbers
- Source attribution
- **Actions**:
- Refresh validation
- Export validation report
- Return to main app
#### Report Export:
- Plain text format
- Includes all metadata
- Dated filename
- Audit-ready format
---
## 📊 Database Enhancements
### New Database: Transportation Rates
**File:** `data/transportationRates.json` (~7KB)
**Contents:**
- Kilometric rates (Modules 1, 2, 3)
- Tier 1 rate: $0.68/km (first 5,000 km/year)
- Tier 2 rate: $0.58/km (over 5,000 km/year)
- Additional expense guidelines (parking, tolls, tunnels)
- Train travel policies
- Common route estimates
- Cost comparison examples
- Vehicle insurance requirements
- Special considerations
---
## 🎯 User Experience Improvements
### Dynamic Form Behavior
- Fields show/hide based on transport mode
- Required field indicators adjust automatically
- Contextual help text updates
- Smart placeholder text
### Enhanced Cost Display
- Transport mode icon changes (✈️🚗🚂)
- Detailed calculation notes
- Policy references in breakdown
- Currency indicators
### Improved Validation
- Proactive rate monitoring
- Clear warning messages
- Dismissible notifications
- Session memory
---
## 📈 Usage Examples
### Example 1: Flight Travel
```
Ottawa → Vancouver
Transport: Flight (5 hours)
Flight Cost: $650
Result: $650 (economy, under 9 hours)
```
### Example 2: Personal Vehicle
```
Ottawa → Toronto
Transport: Personal Vehicle
Distance: 450 km
Result: $306 (450 km × $0.68/km)
+ Note about parking and tolls
```
### Example 3: Train Travel
```
Ottawa → Montreal
Transport: Train
Estimated Cost: $85
Result: $85 (economy class)
+ Business class note
```
### Example 4: Long-haul Flight
```
Toronto → London
Transport: Flight (7.5 hours transatlantic)
Flight Cost: $900
Result: $2,250 (business class eligible, $900 × 2.5)
```
---
## 🔧 Technical Implementation
### New JavaScript Functions
- `handleTransportModeChange()` - Dynamic form control
- `updateGoogleFlightsLink()` - Link generation
- `validateRatesAndShowWarnings()` - Date validation
- `displayRateWarnings()` - Warning UI
- `dismissWarningBanner()` - User interaction
- Transport cost calculation logic
### New CSS Classes
- `.rate-warning-banner` - Warning display
- `.rate-alert` - Alert messages
- `.alert-danger/warning/info` - Status colors
- `.btn-dismiss` - Dismiss button
- Transport-specific form styles
### Database Loading
- Added transportation database to async load
- Error handling for missing databases
- Graceful fallback to defaults
---
## 📚 Documentation Updates
### Updated Files:
-`README.md` - Added transportation and validation sections
-`DATABASE_UPDATE_GUIDE.md` - Ready for transportation rates
-`DATABASE_SCHEMA.md` - Add when updating
- 📄 New: `validation.html` - Standalone dashboard
### Documentation Needed:
- Transportation rates update procedures
- Validation system usage guide
- Troubleshooting guide for warnings
---
## 🎨 UI/UX Enhancements
### Visual Improvements:
- Color-coded status badges
- Animated warning banner (slide down)
- Icon variety for transport modes
- Improved link styling in helpers
### Accessibility:
- Clear status indicators
- Dismissible warnings
- Keyboard-friendly navigation
- Screen reader considerations
---
## 📊 Statistics
### Code Additions:
- **JavaScript**: ~200 new lines
- **HTML**: ~100 new lines (forms + validation page)
- **CSS**: ~150 new lines (warnings + validation)
- **Database**: 1 new file (transportation rates)
### Features Count:
- **Transport Modes**: 3 (flight, vehicle, train)
- **Validation Checks**: 3 databases monitored
- **Warning Levels**: 3 (ok, warning, error)
- **Export Formats**: 1 (plain text report)
### File Count:
- **HTML Pages**: 2 (index, validation)
- **Databases**: 3 (per diem, accommodation, transportation)
- **JavaScript**: Enhanced with validation
- **CSS**: Enhanced with warning styles
---
## 🚀 Benefits
### For Users:
1. More transport options = better estimates
2. Google Flights integration = accurate costs
3. Rate validation = confidence in data
4. Multiple modes = compare costs easily
### For Administrators:
1. Validation dashboard = easy monitoring
2. Warning system = proactive updates
3. Export reports = audit trail
4. Clear status = quick assessment
### For Maintenance:
1. Modular databases = easy updates
2. Metadata tracking = version control
3. Validation logic = data integrity
4. Documentation = clear procedures
---
## ✅ Testing Checklist
- [x] Flight mode works correctly
- [x] Vehicle calculation accurate ($0.68/km)
- [x] Train mode displays properly
- [x] Google Flights link generates correctly
- [x] Validation warnings appear when needed
- [x] Warning banner dismisses properly
- [x] Validation dashboard loads all databases
- [x] Export report generates correctly
- [x] Form validation prevents errors
- [x] All transport modes calculate totals
---
## 🔮 Future Enhancements
### Potential Additions:
- [ ] Save favorite routes
- [ ] Compare multiple transport modes side-by-side
- [ ] Historical cost tracking
- [ ] Carpool/group travel calculator
- [ ] Automatic rate update notifications
- [ ] API integration for real-time rates
- [ ] Mobile app version
- [ ] Calendar integration
---
## 📞 Support Resources
### For Rate Updates:
- NJC Travel Directive (main)
- Appendix B - Kilometric Rates
- Google Flights (flight costs)
- VIA Rail, Amtrak (train costs)
### For Validation:
- Check `validation.html` dashboard
- Review warning messages
- Consult update guide
- Verify with official sources
---
## 🎉 Summary
### What's New:
✅ 3 transportation modes
✅ Google Flights integration
✅ Automatic rate validation
✅ Validation dashboard
✅ Transportation database
✅ Enhanced UX with dynamic forms
✅ Warning system
✅ Export capabilities
### Impact:
- **More Accurate**: Multiple transport options
- **More Current**: Validation monitoring
- **More Useful**: Real-time flight prices
- **More Transparent**: Clear rate status
- **More Maintainable**: Better monitoring tools
---
**Feature Update Completed:** October 30, 2025
**Version:** 1.1
**Status:** ✅ Ready for Production
**Tested:** ✅ All features validated