High priority:
- Fix concurrent race condition for view_count/like_count (atomic update)
- Add route request ID tracking to prevent race conditions
- Filter get_joke by status=approved (no pending content leak)
- Add error feedback for like button
Performance:
- Optimize random joke query (avoid full table sort)
- Limit page_size max to 100 (DoS prevention)
Medium:
- Add localStorage quota error handling
- Handle empty AI response gracefully
- Fix generate content title extraction
Low:
- Add rejected_jokes to stats API
- Update dashboard to show rejected count
- jokes.py: Public joke listing, detail, and random endpoints
- categories.py: Type and crowd listing endpoints
- auth.py: Login endpoint with JWT token generation
- admin.py: Full CRUD for jokes, types, crowds with JWT protection
- Fix request body schemas to use Create DTOs instead of Response models
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>