3.4 KiB
3.4 KiB
id, title, status, assignee, created_date, updated_date, labels, dependencies, parent_task_id
| id | title | status | assignee | created_date | updated_date | labels | dependencies | parent_task_id | |
|---|---|---|---|---|---|---|---|---|---|
| task-81.2 | Integrate logging into TelegramBotTask with performance metrics | Done |
|
2025-07-31 | 2025-07-31 | task-81 |
Description
Add comprehensive logging to the Telegram bot to record all interactions, performance metrics, and create audit records for each request
Acceptance Criteria
- Bot creates TelegramBotLog record for each image request
- Performance timing is captured for fingerprint computation
- Performance timing is captured for similarity search
- Request metadata (user info) is properly recorded
- Response data is serialized and stored as JSON
- Processed images are saved as BlobFiles and associated
- Error cases are handled and logged appropriately
- Logging has minimal performance impact on bot operations
Implementation Notes
Successfully integrated comprehensive logging into TelegramBotTask with performance metrics and audit trail:
CORE INTEGRATION:
- Modified handle_message to create TelegramBotLog record for every image request
- Replaced process_image_message with process_image_message_with_logging that returns [search_results, processed_blob] tuple
- Added timing instrumentation for both fingerprint computation and similarity search operations
- Integrated BlobFile creation and storage for all processed images
LOGGING METHODS IMPLEMENTED:
- create_telegram_log: Creates initial log record with user info and timestamp
- update_telegram_log_success: Updates log with successful search results and response data
- update_telegram_log_no_results: Updates log when no >90% matches found
- update_telegram_log_invalid_image: Updates log for invalid/unsupported image formats
- update_telegram_log_error: Updates log with error details and stack traces
PERFORMANCE METRICS:
- fingerprint_computation_time: Tracks time to generate image fingerprints
- search_computation_time: Tracks time to find similar fingerprints
- Both metrics logged in milliseconds with 3-decimal precision
- Performance data logged to console and stored in database
BLOB FILE STORAGE:
- All processed images automatically saved as BlobFiles using existing deduplication
- Content-type detection for PhotoSize (JPEG) vs Document (uses mime_type)
- Proper cleanup of temporary files while preserving BlobFile storage
- Foreign key association between TelegramBotLog and processed images
ERROR HANDLING:
- All error cases properly logged with appropriate status (error, invalid_image)
- Error messages and exception class names stored for debugging
- Failed operations still create audit records for complete trail
RESPONSE DATA LOGGING:
- Complete response text stored as JSON
- Search result metadata including similarity percentages and post URLs
- Threshold information and match counts for analytics
- Structured data format for easy querying and analysis
TECHNICAL IMPROVEMENTS:
- Full Sorbet type safety maintained throughout integration
- Proper tuple return types for multi-value returns
- Case-based content type detection for different Telegram file types
- Non-intrusive logging that doesn't affect bot performance or reliability
FILES MODIFIED:
- app/lib/tasks/telegram_bot_task.rb: Complete logging integration with 6 new methods and performance timing
The bot now provides complete audit trail and performance monitoring for all visual search operations.