Spaces:
Sleeping
Sleeping
File size: 4,175 Bytes
603954b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | # π§ UI Responsiveness Fixes Applied
**Commit:** 8d9a0554c8ecc850ebc54ab08b564d0bc0790511
## Issues Fixed
### 1. β
**Demo Load Freezing Tabs**
- **Problem:** `demo.load()` was calling `refresh_analytics()` on page load, blocking UI thread
- **Solution:** Removed `demo.load()` blocking call
- **File:** `app.py` (line ~555)
- **Result:** Tabs are now immediately responsive on load
### 2. β
**Chatbot Format Mismatch with Gradio 6.14.0**
- **Problem:** Using old dict format `{"role": "user", "content": "..."}` for chat history
- **Solution:** Updated to Gradio 6.14.0 format: `[[user_msg, bot_msg], ...]` (list of lists)
- **File:** `app.py` - `chatbot_query()` function
- **Result:** Chatbot now works correctly with Gradio 6.14.0
### 3. β
**Database Queries Blocking UI**
- **Problem:** Database queries (`query_database()`, `chatbot_query()`, `refresh_analytics()`) are synchronous and can block event loop
- **Solution:** Added timeout handling to all queries (15-30 second limits)
- **Files:** `database.py` - `run_query()`, `get_vehicles_by_state()`, `get_hourly_traffic()`, `get_top_plates()`, `get_suspicious_vehicles()`, `health_check()`
- **Result:** Queries that hang no longer freeze the UI
### 4. β
**HuggingFace API Timeout Crashing Event Loop**
- **Problem:** `client.chat_completion()` could timeout and crash without fallback
- **Solution:** Added try/except around API call with fallback to rule-based SQL generation
- **File:** `database.py` - `ask_llm()` function
- **Result:** If Mistral API times out, app falls back to rule-based queries instead of crashing
### 5. β
**SQL Columns Missing (Time Column)**
- **Problem:** `save_detection()` trying to insert into non-existent "time" column
- **Database schema has:** `timestamp`, `date`, `hour`, `day` - NOT "time"
- **Solution:**
- Extract hour from time string and use existing "hour" column
- Extract day of week from date and use existing "day" column
- Use NOW() for timestamp field
- **File:** `database.py` - `save_detection()` function
- **Result:** Detections now save correctly without column mapping errors
### 6. β
**Cannot Navigate to Other Tabs**
- **Root Cause:** Blocking operations on page load and response timeout
- **Solutions Applied:**
- Removed demo.load() that was blocking
- Added 15-30 second timeouts to all queries
- Database queries now fail gracefully instead of hanging
- UI remains responsive even during long operations
- **Result:** All tabs are now clickable and responsive
## Technical Details
### Timeout Settings
- **API Calls:** 30 second timeout (Mistral LLM)
- **Analytics Queries:** 15 second timeout
- **Health Check:** 10 second timeout
- **Fallback:** If timeout, use default safe query or rule-based SQL
### Database Connection Pool
All queries now set `statement_timeout` at connection level:
```sql
SET statement_timeout = 15000 -- milliseconds
```
### Chatbot History Format
**Old (incorrect):**
```python
history = [
{"role": "user", "content": "..."},
{"role": "assistant", "content": "..."}
]
```
**New (Gradio 6.14.0 compatible):**
```python
history = [
["user message", "bot response"],
["another user msg", "another bot response"]
]
```
## Testing Checklist
- [ ] Load HF Space in browser
- [ ] All tabs clickable immediately (Detection, NLP Query, AI Assistant, Analytics)
- [ ] Click Detection tab β upload image β detect (should work)
- [ ] Click NLP Database Query tab β enter query β search (should work or timeout gracefully)
- [ ] Click AI Assistant tab β type message β send (should work)
- [ ] Click Analytics tab β click Refresh (should work or show error, not freeze)
- [ ] Switch between tabs rapidly (should not freeze)
- [ ] Long-running queries should timeout gracefully after 15-30 seconds
## Files Modified
1. **app.py** - Removed blocking demo.load(), fixed Chatbot format
2. **database.py** - Added timeout handling, fixed save_detection()
## Next Steps
1. Verify HF Space is updated with new code
2. Test all tabs navigate smoothly
3. Test long-running queries (should timeout gracefully)
4. If still issues, check HF Spaces logs for specific errors
|