2026-03-07 11:24:32 - health.services.data_sync - INFO - Syncing steps from 2026-03-06 to 2026-03-06 (1 days) 2026-03-07 11:24:32 - health.services.data_sync - INFO - ✓ Synced steps for 2026-03-06 2026-03-07 11:24:32 - health.services.data_sync - INFO - steps sync complete: 1 synced, 0 skipped, 0 errors 2026-03-07 11:24:32 - health.services.data_sync - INFO - Syncing heart_rate from 2026-03-06 to 2026-03-06 (1 days) 2026-03-07 11:24:33 - health.services.data_sync - INFO - ✓ Synced heart_rate for 2026-03-06 2026-03-07 11:24:33 - health.services.data_sync - INFO - heart_rate sync complete: 1 synced, 0 skipped, 0 errors 2026-03-07 11:24:33 - health.services.data_sync - INFO - Syncing sleep from 2026-03-06 to 2026-03-06 (1 days) 2026-03-07 11:24:33 - health.services.data_sync - INFO - ✓ Synced sleep for 2026-03-06 2026-03-07 11:24:33 - health.services.data_sync - INFO - sleep sync complete: 1 synced, 0 skipped, 0 errors 2026-03-07 11:24:33 - health.services.data_sync - INFO - Syncing stress from 2026-03-06 to 2026-03-06 (1 days) 2026-03-07 11:24:33 - health.services.data_sync - INFO - ✓ Synced stress for 2026-03-06 2026-03-07 11:24:33 - health.services.data_sync - INFO - stress sync complete: 1 synced, 0 skipped, 0 errors 2026-03-07 11:24:33 - health.services.data_sync - INFO - Syncing body_battery from 2026-03-06 to 2026-03-06 (1 days) 2026-03-07 11:24:33 - health.services.data_sync - INFO - ✓ Synced body_battery for 2026-03-06 2026-03-07 11:24:33 - health.services.data_sync - INFO - body_battery sync complete: 1 synced, 0 skipped, 0 errors 2026-03-07 11:24:33 - health.services.data_sync - INFO - Syncing spo2 from 2026-03-06 to 2026-03-06 (1 days) 2026-03-07 11:24:33 - health.services.data_sync - INFO - ✓ Synced spo2 for 2026-03-06 2026-03-07 11:24:33 - health.services.data_sync - INFO - spo2 sync complete: 1 synced, 0 skipped, 0 errors 2026-03-07 11:24:33 - health.services.data_sync - INFO - Syncing respiration from 2026-03-06 to 2026-03-06 (1 days) 2026-03-07 11:24:33 - health.services.data_sync - INFO - ✓ Synced respiration for 2026-03-06 2026-03-07 11:24:33 - health.services.data_sync - INFO - respiration sync complete: 1 synced, 0 skipped, 0 errors 2026-03-07 11:24:33 - health.services.data_sync - INFO - Syncing hydration from 2026-03-06 to 2026-03-06 (1 days) 2026-03-07 11:24:33 - health.services.data_sync - INFO - ✓ Synced hydration for 2026-03-06 2026-03-07 11:24:33 - health.services.data_sync - INFO - hydration sync complete: 1 synced, 0 skipped, 0 errors 2026-03-07 11:24:33 - health.services.data_sync - INFO - Syncing floors from 2026-03-06 to 2026-03-06 (1 days) 2026-03-07 11:24:34 - health.services.data_sync - INFO - ✓ Synced floors for 2026-03-06 2026-03-07 11:24:34 - health.services.data_sync - INFO - floors sync complete: 1 synced, 0 skipped, 0 errors 2026-03-07 11:24:34 - health.services.data_sync - INFO - Syncing intensity_minutes from 2026-03-06 to 2026-03-06 (1 days) 2026-03-07 11:24:34 - health.services.data_sync - INFO - ✓ Synced intensity_minutes for 2026-03-06 2026-03-07 11:24:34 - health.services.data_sync - INFO - intensity_minutes sync complete: 1 synced, 0 skipped, 0 errors 2026-03-07 11:24:34 - health.services.data_sync - INFO - Syncing hrv from 2026-03-06 to 2026-03-06 (1 days) 2026-03-07 11:24:34 - health.services.data_sync - INFO - ✓ Synced hrv for 2026-03-06 2026-03-07 11:24:34 - health.services.data_sync - INFO - hrv sync complete: 1 synced, 0 skipped, 0 errors 2026-03-07 11:24:34 - health.services.data_sync - INFO - Syncing rhr from 2026-03-06 to 2026-03-06 (1 days) 2026-03-07 11:24:34 - health.services.data_sync - INFO - ✓ Synced rhr for 2026-03-06 2026-03-07 11:24:34 - health.services.data_sync - INFO - rhr sync complete: 1 synced, 0 skipped, 0 errors 2026-03-07 11:24:34 - health.services.data_sync - INFO - Syncing weight from 2026-03-06 to 2026-03-06 (1 days) 2026-03-07 11:24:34 - health.services.data_sync - INFO - weight sync complete: 0 synced, 1 skipped, 0 errors 2026-03-07 11:24:34 - health.services.data_sync - INFO - Syncing lifestyle_logging from 2026-03-06 to 2026-03-06 (1 days) 2026-03-07 11:24:34 - health.services.data_sync - INFO - ✓ Synced lifestyle_logging for 2026-03-06 2026-03-07 11:24:34 - health.services.data_sync - INFO - lifestyle_logging sync complete: 1 synced, 0 skipped, 0 errors 2026-03-07 11:24:34 - health.services.data_sync - INFO - Syncing activities from 2026-03-06 to 2026-03-06 2026-03-07 11:24:34 - health.services.data_sync - INFO - Found 0 activities 2026-03-07 11:24:34 - health.services.data_sync - INFO - Activity sync complete: 0 synced, 0 skipped, 0 errors 2026-03-07 11:24:34 - health.services.query - INFO - Querying health data summary for 2026-03-06 2026-03-07 11:24:34 - health.services.query - INFO - Found 13 metrics and 0 activities 2026-03-07 11:24:34 - slack_bot.dispatcher - INFO - [1b9c7157] ✓ sync_garmin finished in 2.98s 2026-03-07 11:24:34 - slack_bot.dispatcher - INFO - [1b9c7157] Tool: get_daily_detailed_stats Args: {'target_date': '2026-03-06'} 2026-03-07 11:24:34 - health.services.query - INFO - Querying health data summary for 2026-03-06 2026-03-07 11:24:34 - health.services.query - INFO - Found 13 metrics and 0 activities 2026-03-07 11:24:34 - slack_bot.dispatcher - INFO - [1b9c7157] ✓ get_daily_detailed_stats finished in 0.01s 2026-03-07 11:24:34 - slack_bot.dispatcher - INFO - [1b9c7157] Requesting final analysis... 2026-03-07 11:24:39 - slack_bot.dispatcher - INFO - [1b9c7157] Final analysis received in 4.65s 2026-03-07 11:24:39 - slack_bot.dispatcher - INFO - Formatted text (len 758 -> 730) 2026-03-07 11:24:39 - slack_bot.dispatcher - WARNING - [1b9c7157] Update failed, posting new: The request to the Slack API failed. (url: https://slack.com/api/chat.update) The server responded with: {'ok': False, 'error': 'msg_too_long'} 2026-03-07 11:24:39 - slack_bot.dispatcher - INFO - [1b9c7157] Dispatch completed in 10.70s 2026-03-07 11:24:39 - __main__ - INFO - [1b9c7157] ✅ Request completed in 11.02s 2026-03-07 11:27:58 - __main__ - INFO - [3b08373b] 📥 Received message from U0A8ZCK7RJM in D0AA4GBQRKK: 现在是3月7日,同步3月7日数据 (Files: 0) 2026-03-07 11:27:58 - slack_bot.dispatcher - INFO - [3b08373b] Processing message in D0AA4GBQRKK from U0A8ZCK7RJM 2026-03-07 11:27:58 - slack_bot.dispatcher - INFO - [3b08373b] Calling Gemini for initial response... 2026-03-07 11:27:58 - slack_bot.dispatcher - INFO - [3b08373b] Request config: model=google/gemini-3-flash-preview, tools=21, context=39 msgs 2026-03-07 11:28:01 - slack_bot.dispatcher - WARNING - [3b08373b] Gemini returned empty response_text! (This usually means the proxy has issues) 2026-03-07 11:28:01 - slack_bot.dispatcher - INFO - [3b08373b] Gemini response: text=0 chars, tool_calls=3 2026-03-07 11:28:01 - slack_bot.dispatcher - INFO - [3b08373b] Tool calls successfully generated by Gemini (no SAFETY OVERRIDE needed) 2026-03-07 11:28:01 - slack_bot.dispatcher - INFO - [3b08373b] Gemini response in 2.60s: 0 chars, 3 tools 2026-03-07 11:28:01 - slack_bot.dispatcher - INFO - [3b08373b] Executing 3 tools 2026-03-07 11:28:01 - slack_bot.dispatcher - INFO - [3b08373b] Tool: sync_garmin Args: {'target_date': '2026-03-07'} 2026-03-07 11:28:01 - slack_bot.tools.garmin - INFO - Starting Garmin sync for 2026-03-07... 2026-03-07 11:28:01 - health.services.data_sync - INFO - Authenticating with Garmin... 2026-03-07 11:28:01 - health.services.garmin_client - INFO - Authenticating with Garmin Connect China for 350134531@qq.com 2026-03-07 11:28:01 - health.services.garmin_client - INFO - Successfully authenticated with Garmin Connect China 2026-03-07 11:28:01 - health.services.data_sync - INFO - Authentication successful 2026-03-07 11:28:01 - health.services.data_sync - INFO - Syncing 14 metric types from 2026-03-07 to 2026-03-07 2026-03-07 11:28:01 - health.services.data_sync - INFO - Syncing steps from 2026-03-07 to 2026-03-07 (1 days) 2026-03-07 11:28:02 - health.services.data_sync - INFO - ✓ Synced steps for 2026-03-07 2026-03-07 11:28:02 - health.services.data_sync - INFO - steps sync complete: 1 synced, 0 skipped, 0 errors 2026-03-07 11:28:02 - health.services.data_sync - INFO - Syncing heart_rate from 2026-03-07 to 2026-03-07 (1 days) 2026-03-07 11:28:02 - health.services.data_sync - INFO - ✓ Synced heart_rate for 2026-03-07 2026-03-07 11:28:02 - health.services.data_sync - INFO - heart_rate sync complete: 1 synced, 0 skipped, 0 errors 2026-03-07 11:28:02 - health.services.data_sync - INFO - Syncing sleep from 2026-03-07 to 2026-03-07 (1 days) 2026-03-07 11:28:02 - health.services.data_sync - INFO - ✓ Synced sleep for 2026-03-07 2026-03-07 11:28:02 - health.services.data_sync - INFO - sleep sync complete: 1 synced, 0 skipped, 0 errors 2026-03-07 11:28:02 - health.services.data_sync - INFO - Syncing stress from 2026-03-07 to 2026-03-07 (1 days) 2026-03-07 11:28:02 - health.services.data_sync - INFO - ✓ Synced stress for 2026-03-07 2026-03-07 11:28:02 - health.services.data_sync - INFO - stress sync complete: 1 synced, 0 skipped, 0 errors 2026-03-07 11:28:02 - health.services.data_sync - INFO - Syncing body_battery from 2026-03-07 to 2026-03-07 (1 days) 2026-03-07 11:28:02 - health.services.data_sync - INFO - ✓ Synced body_battery for 2026-03-07 2026-03-07 11:28:02 - health.services.data_sync - INFO - body_battery sync complete: 1 synced, 0 skipped, 0 errors 2026-03-07 11:28:02 - health.services.data_sync - INFO - Syncing spo2 from 2026-03-07 to 2026-03-07 (1 days) 2026-03-07 11:28:02 - health.services.data_sync - INFO - ✓ Synced spo2 for 2026-03-07 2026-03-07 11:28:02 - health.services.data_sync - INFO - spo2 sync complete: 1 synced, 0 skipped, 0 errors 2026-03-07 11:28:02 - health.services.data_sync - INFO - Syncing respiration from 2026-03-07 to 2026-03-07 (1 days) 2026-03-07 11:28:03 - health.services.data_sync - INFO - ✓ Synced respiration for 2026-03-07 2026-03-07 11:28:03 - health.services.data_sync - INFO - respiration sync complete: 1 synced, 0 skipped, 0 errors 2026-03-07 11:28:03 - health.services.data_sync - INFO - Syncing hydration from 2026-03-07 to 2026-03-07 (1 days) 2026-03-07 11:28:03 - health.services.data_sync - INFO - ✓ Synced hydration for 2026-03-07 2026-03-07 11:28:03 - health.services.data_sync - INFO - hydration sync complete: 1 synced, 0 skipped, 0 errors 2026-03-07 11:28:03 - health.services.data_sync - INFO - Syncing floors from 2026-03-07 to 2026-03-07 (1 days) 2026-03-07 11:28:03 - health.services.data_sync - INFO - ✓ Synced floors for 2026-03-07 2026-03-07 11:28:03 - health.services.data_sync - INFO - floors sync complete: 1 synced, 0 skipped, 0 errors 2026-03-07 11:28:03 - health.services.data_sync - INFO - Syncing intensity_minutes from 2026-03-07 to 2026-03-07 (1 days) 2026-03-07 11:28:03 - health.services.data_sync - INFO - ✓ Synced intensity_minutes for 2026-03-07 2026-03-07 11:28:03 - health.services.data_sync - INFO - intensity_minutes sync complete: 1 synced, 0 skipped, 0 errors 2026-03-07 11:28:03 - health.services.data_sync - INFO - Syncing hrv from 2026-03-07 to 2026-03-07 (1 days) 2026-03-07 11:28:03 - health.services.data_sync - INFO - ✓ Synced hrv for 2026-03-07 2026-03-07 11:28:03 - health.services.data_sync - INFO - hrv sync complete: 1 synced, 0 skipped, 0 errors 2026-03-07 11:28:03 - health.services.data_sync - INFO - Syncing rhr from 2026-03-07 to 2026-03-07 (1 days) 2026-03-07 11:28:03 - health.services.data_sync - INFO - ✓ Synced rhr for 2026-03-07 2026-03-07 11:28:03 - health.services.data_sync - INFO - rhr sync complete: 1 synced, 0 skipped, 0 errors 2026-03-07 11:28:03 - health.services.data_sync - INFO - Syncing weight from 2026-03-07 to 2026-03-07 (1 days) 2026-03-07 11:28:03 - health.services.data_sync - INFO - weight sync complete: 0 synced, 1 skipped, 0 errors 2026-03-07 11:28:03 - health.services.data_sync - INFO - Syncing lifestyle_logging from 2026-03-07 to 2026-03-07 (1 days) 2026-03-07 11:28:03 - health.services.data_sync - INFO - lifestyle_logging sync complete: 0 synced, 1 skipped, 0 errors 2026-03-07 11:28:03 - health.services.data_sync - INFO - Syncing activities from 2026-03-07 to 2026-03-07 2026-03-07 11:28:03 - health.services.data_sync - INFO - Found 0 activities 2026-03-07 11:28:03 - health.services.data_sync - INFO - Activity sync complete: 0 synced, 0 skipped, 0 errors 2026-03-07 11:28:03 - health.services.query - INFO - Querying health data summary for 2026-03-07 2026-03-07 11:28:03 - health.services.query - INFO - Found 12 metrics and 0 activities 2026-03-07 11:28:03 - slack_bot.dispatcher - INFO - [3b08373b] ✓ sync_garmin finished in 2.49s 2026-03-07 11:28:03 - slack_bot.dispatcher - INFO - [3b08373b] Tool: get_daily_detailed_stats Args: {'target_date': '2026-03-07'} 2026-03-07 11:28:03 - health.services.query - INFO - Querying health data summary for 2026-03-07 2026-03-07 11:28:03 - health.services.query - INFO - Found 12 metrics and 0 activities 2026-03-07 11:28:03 - slack_bot.dispatcher - INFO - [3b08373b] ✓ get_daily_detailed_stats finished in 0.01s 2026-03-07 11:28:03 - slack_bot.dispatcher - INFO - [3b08373b] Tool: get_activity_history Args: {'start_date': '2026-03-07', 'end_date': '2026-03-07'} 2026-03-07 11:28:03 - health.services.query - INFO - Querying activities from 2026-03-07 to 2026-03-07 2026-03-07 11:28:03 - health.services.query - INFO - Found 0 activities 2026-03-07 11:28:03 - slack_bot.dispatcher - INFO - [3b08373b] ✓ get_activity_history finished in 0.00s 2026-03-07 11:28:03 - slack_bot.dispatcher - INFO - [3b08373b] Requesting final analysis... 2026-03-07 11:28:08 - slack_bot.dispatcher - INFO - [3b08373b] Final analysis received in 4.57s 2026-03-07 11:28:08 - slack_bot.dispatcher - INFO - Formatted text (len 698 -> 664) 2026-03-07 11:28:08 - slack_bot.dispatcher - WARNING - [3b08373b] Update failed, posting new: The request to the Slack API failed. (url: https://slack.com/api/chat.update) The server responded with: {'ok': False, 'error': 'msg_too_long'} 2026-03-07 11:28:09 - slack_bot.dispatcher - INFO - [3b08373b] Dispatch completed in 10.27s 2026-03-07 11:28:09 - __main__ - INFO - [3b08373b] ✅ Request completed in 10.57s 2026-03-08 16:56:51 - __main__ - INFO - [2fea8b50] 📥 Received message from U0A8ZCK7RJM in D0AA4GBQRKK: 同步佳明数据 (Files: 0) 2026-03-08 16:56:52 - slack_bot.dispatcher - INFO - [2fea8b50] Processing message in D0AA4GBQRKK from U0A8ZCK7RJM 2026-03-08 16:56:52 - slack_bot.dispatcher - INFO - [2fea8b50] Calling Gemini for initial response... 2026-03-08 16:56:52 - slack_bot.dispatcher - INFO - [2fea8b50] Request config: model=google/gemini-3-flash-preview, tools=21, context=39 msgs 2026-03-08 16:56:55 - slack_bot.dispatcher - WARNING - [2fea8b50] Gemini returned empty response_text! (This usually means the proxy has issues) 2026-03-08 16:56:55 - slack_bot.dispatcher - INFO - [2fea8b50] Gemini response: text=0 chars, tool_calls=3 2026-03-08 16:56:55 - slack_bot.dispatcher - INFO - [2fea8b50] Tool calls successfully generated by Gemini (no SAFETY OVERRIDE needed) 2026-03-08 16:56:55 - slack_bot.dispatcher - INFO - [2fea8b50] Gemini response in 3.23s: 0 chars, 3 tools 2026-03-08 16:56:55 - slack_bot.dispatcher - INFO - [2fea8b50] Executing 3 tools 2026-03-08 16:56:55 - slack_bot.dispatcher - INFO - [2fea8b50] Tool: sync_garmin Args: {'target_date': '2026-03-08'} 2026-03-08 16:56:55 - slack_bot.tools.garmin - INFO - Starting Garmin sync for 2026-03-08... 2026-03-08 16:56:55 - health.services.data_sync - INFO - Authenticating with Garmin... 2026-03-08 16:56:55 - health.services.garmin_client - INFO - Authenticating with Garmin Connect China for 350134531@qq.com 2026-03-08 16:56:55 - health.services.garmin_client - INFO - Successfully authenticated with Garmin Connect China 2026-03-08 16:56:55 - health.services.data_sync - INFO - Authentication successful 2026-03-08 16:56:55 - health.services.data_sync - INFO - Syncing 14 metric types from 2026-03-08 to 2026-03-08 2026-03-08 16:56:55 - health.services.data_sync - INFO - Syncing steps from 2026-03-08 to 2026-03-08 (1 days) 2026-03-08 16:56:56 - health.services.data_sync - INFO - ✓ Synced steps for 2026-03-08 2026-03-08 16:56:56 - health.services.data_sync - INFO - steps sync complete: 1 synced, 0 skipped, 0 errors 2026-03-08 16:56:56 - health.services.data_sync - INFO - Syncing heart_rate from 2026-03-08 to 2026-03-08 (1 days) 2026-03-08 16:56:56 - health.services.data_sync - INFO - ✓ Synced heart_rate for 2026-03-08 2026-03-08 16:56:56 - health.services.data_sync - INFO - heart_rate sync complete: 1 synced, 0 skipped, 0 errors 2026-03-08 16:56:56 - health.services.data_sync - INFO - Syncing sleep from 2026-03-08 to 2026-03-08 (1 days) 2026-03-08 16:56:56 - health.services.data_sync - INFO - ✓ Synced sleep for 2026-03-08 2026-03-08 16:56:56 - health.services.data_sync - INFO - sleep sync complete: 1 synced, 0 skipped, 0 errors 2026-03-08 16:56:56 - health.services.data_sync - INFO - Syncing stress from 2026-03-08 to 2026-03-08 (1 days) 2026-03-08 16:56:56 - health.services.data_sync - INFO - ✓ Synced stress for 2026-03-08 2026-03-08 16:56:56 - health.services.data_sync - INFO - stress sync complete: 1 synced, 0 skipped, 0 errors 2026-03-08 16:56:56 - health.services.data_sync - INFO - Syncing body_battery from 2026-03-08 to 2026-03-08 (1 days) 2026-03-08 16:56:56 - health.services.data_sync - INFO - ✓ Synced body_battery for 2026-03-08 2026-03-08 16:56:56 - health.services.data_sync - INFO - body_battery sync complete: 1 synced, 0 skipped, 0 errors 2026-03-08 16:56:56 - health.services.data_sync - INFO - Syncing spo2 from 2026-03-08 to 2026-03-08 (1 days) 2026-03-08 16:56:56 - health.services.data_sync - INFO - ✓ Synced spo2 for 2026-03-08 2026-03-08 16:56:56 - health.services.data_sync - INFO - spo2 sync complete: 1 synced, 0 skipped, 0 errors 2026-03-08 16:56:56 - health.services.data_sync - INFO - Syncing respiration from 2026-03-08 to 2026-03-08 (1 days) 2026-03-08 16:56:57 - health.services.data_sync - INFO - ✓ Synced respiration for 2026-03-08 2026-03-08 16:56:57 - health.services.data_sync - INFO - respiration sync complete: 1 synced, 0 skipped, 0 errors 2026-03-08 16:56:57 - health.services.data_sync - INFO - Syncing hydration from 2026-03-08 to 2026-03-08 (1 days) 2026-03-08 16:56:57 - health.services.data_sync - INFO - ✓ Synced hydration for 2026-03-08 2026-03-08 16:56:57 - health.services.data_sync - INFO - hydration sync complete: 1 synced, 0 skipped, 0 errors 2026-03-08 16:56:57 - health.services.data_sync - INFO - Syncing floors from 2026-03-08 to 2026-03-08 (1 days) 2026-03-08 16:56:57 - health.services.data_sync - INFO - ✓ Synced floors for 2026-03-08 2026-03-08 16:56:57 - health.services.data_sync - INFO - floors sync complete: 1 synced, 0 skipped, 0 errors 2026-03-08 16:56:57 - health.services.data_sync - INFO - Syncing intensity_minutes from 2026-03-08 to 2026-03-08 (1 days) 2026-03-08 16:56:57 - health.services.data_sync - INFO - ✓ Synced intensity_minutes for 2026-03-08 2026-03-08 16:56:57 - health.services.data_sync - INFO - intensity_minutes sync complete: 1 synced, 0 skipped, 0 errors 2026-03-08 16:56:57 - health.services.data_sync - INFO - Syncing hrv from 2026-03-08 to 2026-03-08 (1 days) 2026-03-08 16:56:57 - health.services.data_sync - INFO - ✓ Synced hrv for 2026-03-08 2026-03-08 16:56:57 - health.services.data_sync - INFO - hrv sync complete: 1 synced, 0 skipped, 0 errors 2026-03-08 16:56:57 - health.services.data_sync - INFO - Syncing rhr from 2026-03-08 to 2026-03-08 (1 days) 2026-03-08 16:56:57 - health.services.data_sync - INFO - ✓ Synced rhr for 2026-03-08 2026-03-08 16:56:57 - health.services.data_sync - INFO - rhr sync complete: 1 synced, 0 skipped, 0 errors 2026-03-08 16:56:57 - health.services.data_sync - INFO - Syncing weight from 2026-03-08 to 2026-03-08 (1 days) 2026-03-08 16:56:57 - health.services.data_sync - INFO - weight sync complete: 0 synced, 1 skipped, 0 errors 2026-03-08 16:56:57 - health.services.data_sync - INFO - Syncing lifestyle_logging from 2026-03-08 to 2026-03-08 (1 days) 2026-03-08 16:56:57 - health.services.data_sync - INFO - lifestyle_logging sync complete: 0 synced, 1 skipped, 0 errors 2026-03-08 16:56:57 - health.services.data_sync - INFO - Syncing activities from 2026-03-08 to 2026-03-08 2026-03-08 16:56:57 - health.services.garmin_client - INFO - Fetched 1 activities 2026-03-08 16:56:57 - health.services.data_sync - INFO - Found 1 activities 2026-03-08 16:56:57 - health.services.data_sync - INFO - ✓ Synced activity 571329096 (elliptical) on 2026-03-08 2026-03-08 16:56:57 - health.services.data_sync - INFO - Activity sync complete: 1 synced, 0 skipped, 0 errors 2026-03-08 16:56:57 - health.services.query - INFO - Querying health data summary for 2026-03-08 2026-03-08 16:56:57 - health.services.query - INFO - Found 12 metrics and 1 activities 2026-03-08 16:56:57 - slack_bot.dispatcher - INFO - [2fea8b50] ✓ sync_garmin finished in 2.51s 2026-03-08 16:56:57 - slack_bot.dispatcher - INFO - [2fea8b50] Tool: get_daily_detailed_stats Args: {'target_date': '2026-03-08'} 2026-03-08 16:56:57 - health.services.query - INFO - Querying health data summary for 2026-03-08 2026-03-08 16:56:57 - health.services.query - INFO - Found 12 metrics and 1 activities 2026-03-08 16:56:57 - slack_bot.dispatcher - INFO - [2fea8b50] ✓ get_daily_detailed_stats finished in 0.01s 2026-03-08 16:56:57 - slack_bot.dispatcher - INFO - [2fea8b50] Tool: get_activity_history Args: {'start_date': '2026-03-08', 'end_date': '2026-03-08'} 2026-03-08 16:56:57 - health.services.query - INFO - Querying activities from 2026-03-08 to 2026-03-08 2026-03-08 16:56:57 - health.services.query - INFO - Found 1 activities 2026-03-08 16:56:57 - slack_bot.dispatcher - INFO - [2fea8b50] ✓ get_activity_history finished in 0.00s 2026-03-08 16:56:57 - slack_bot.dispatcher - INFO - [2fea8b50] Requesting final analysis... 2026-03-08 16:57:01 - slack_bot.dispatcher - INFO - [2fea8b50] Final analysis received in 3.95s 2026-03-08 16:57:01 - slack_bot.dispatcher - INFO - Formatted text (len 619 -> 591) 2026-03-08 16:57:02 - slack_bot.dispatcher - WARNING - [2fea8b50] Update failed, posting new: The request to the Slack API failed. (url: https://slack.com/api/chat.update) The server responded with: {'ok': False, 'error': 'msg_too_long'} 2026-03-08 16:57:02 - slack_bot.dispatcher - INFO - [2fea8b50] Dispatch completed in 10.56s 2026-03-08 16:57:02 - __main__ - INFO - [2fea8b50] ✅ Request completed in 10.89s Failed to establish a connection (session id: a8402645-4221-4b3c-944b-3fbaa4b47d01, error: The read operation timed out) on_error invoked (session id: e6a82843-81d0-4cea-8cb3-452bfd05d742, error: TimeoutError, message: The read operation timed out) /root/projects/butler/venv/lib64/python3.11/site-packages/slack_sdk/socket_mode/builtin/client.py:178: ResourceWarning: unclosed current_session.connect() ResourceWarning: Enable tracemalloc to get the object allocation traceback 2026-03-10 13:15:58 - __main__ - INFO - [60fb11f4] 📥 Received message from U0A8ZCK7RJM in D0AA4GBQRKK: 同步佳明数据 (Files: 0) 2026-03-10 13:15:58 - slack_bot.dispatcher - INFO - [60fb11f4] Processing message in D0AA4GBQRKK from U0A8ZCK7RJM 2026-03-10 13:15:58 - slack_bot.dispatcher - INFO - [60fb11f4] Calling Gemini for initial response... 2026-03-10 13:15:58 - slack_bot.dispatcher - INFO - [60fb11f4] Request config: model=google/gemini-3-flash-preview, tools=21, context=39 msgs 2026-03-10 13:16:02 - slack_bot.dispatcher - WARNING - [60fb11f4] Gemini returned empty response_text! (This usually means the proxy has issues) 2026-03-10 13:16:02 - slack_bot.dispatcher - INFO - [60fb11f4] Gemini response: text=0 chars, tool_calls=3 2026-03-10 13:16:02 - slack_bot.dispatcher - INFO - [60fb11f4] Tool calls successfully generated by Gemini (no SAFETY OVERRIDE needed) 2026-03-10 13:16:02 - slack_bot.dispatcher - INFO - [60fb11f4] Gemini response in 4.14s: 0 chars, 3 tools 2026-03-10 13:16:02 - slack_bot.dispatcher - INFO - [60fb11f4] Executing 3 tools 2026-03-10 13:16:02 - slack_bot.dispatcher - INFO - [60fb11f4] Tool: sync_garmin Args: {'target_date': '2026-03-09'} 2026-03-10 13:16:02 - slack_bot.tools.garmin - INFO - Starting Garmin sync for 2026-03-09... 2026-03-10 13:16:02 - health.services.data_sync - INFO - Authenticating with Garmin... 2026-03-10 13:16:02 - health.services.garmin_client - INFO - Authenticating with Garmin Connect China for 350134531@qq.com 2026-03-10 13:16:03 - health.services.garmin_client - INFO - Successfully authenticated with Garmin Connect China 2026-03-10 13:16:03 - health.services.data_sync - INFO - Authentication successful 2026-03-10 13:16:03 - health.services.data_sync - INFO - Syncing 14 metric types from 2026-03-09 to 2026-03-09 2026-03-10 13:16:03 - health.services.data_sync - INFO - Syncing steps from 2026-03-09 to 2026-03-09 (1 days) 2026-03-10 13:16:03 - health.services.data_sync - INFO - ✓ Synced steps for 2026-03-09 2026-03-10 13:16:03 - health.services.data_sync - INFO - steps sync complete: 1 synced, 0 skipped, 0 errors 2026-03-10 13:16:03 - health.services.data_sync - INFO - Syncing heart_rate from 2026-03-09 to 2026-03-09 (1 days) 2026-03-10 13:16:04 - health.services.data_sync - INFO - ✓ Synced heart_rate for 2026-03-09 2026-03-10 13:16:04 - health.services.data_sync - INFO - heart_rate sync complete: 1 synced, 0 skipped, 0 errors 2026-03-10 13:16:04 - health.services.data_sync - INFO - Syncing sleep from 2026-03-09 to 2026-03-09 (1 days) 2026-03-10 13:16:04 - health.services.data_sync - INFO - ✓ Synced sleep for 2026-03-09 2026-03-10 13:16:04 - health.services.data_sync - INFO - sleep sync complete: 1 synced, 0 skipped, 0 errors 2026-03-10 13:16:04 - health.services.data_sync - INFO - Syncing stress from 2026-03-09 to 2026-03-09 (1 days) 2026-03-10 13:16:04 - health.services.data_sync - INFO - ✓ Synced stress for 2026-03-09 2026-03-10 13:16:04 - health.services.data_sync - INFO - stress sync complete: 1 synced, 0 skipped, 0 errors 2026-03-10 13:16:04 - health.services.data_sync - INFO - Syncing body_battery from 2026-03-09 to 2026-03-09 (1 days) 2026-03-10 13:16:04 - health.services.data_sync - INFO - ✓ Synced body_battery for 2026-03-09 2026-03-10 13:16:04 - health.services.data_sync - INFO - body_battery sync complete: 1 synced, 0 skipped, 0 errors 2026-03-10 13:16:04 - health.services.data_sync - INFO - Syncing spo2 from 2026-03-09 to 2026-03-09 (1 days) 2026-03-10 13:16:04 - health.services.data_sync - INFO - ✓ Synced spo2 for 2026-03-09 2026-03-10 13:16:04 - health.services.data_sync - INFO - spo2 sync complete: 1 synced, 0 skipped, 0 errors 2026-03-10 13:16:04 - health.services.data_sync - INFO - Syncing respiration from 2026-03-09 to 2026-03-09 (1 days) 2026-03-10 13:16:05 - health.services.data_sync - INFO - ✓ Synced respiration for 2026-03-09 2026-03-10 13:16:05 - health.services.data_sync - INFO - respiration sync complete: 1 synced, 0 skipped, 0 errors 2026-03-10 13:16:05 - health.services.data_sync - INFO - Syncing hydration from 2026-03-09 to 2026-03-09 (1 days) 2026-03-10 13:16:05 - health.services.data_sync - INFO - ✓ Synced hydration for 2026-03-09 2026-03-10 13:16:05 - health.services.data_sync - INFO - hydration sync complete: 1 synced, 0 skipped, 0 errors 2026-03-10 13:16:05 - health.services.data_sync - INFO - Syncing floors from 2026-03-09 to 2026-03-09 (1 days) 2026-03-10 13:16:05 - health.services.data_sync - INFO - ✓ Synced floors for 2026-03-09 2026-03-10 13:16:05 - health.services.data_sync - INFO - floors sync complete: 1 synced, 0 skipped, 0 errors 2026-03-10 13:16:05 - health.services.data_sync - INFO - Syncing intensity_minutes from 2026-03-09 to 2026-03-09 (1 days) 2026-03-10 13:16:05 - health.services.data_sync - INFO - ✓ Synced intensity_minutes for 2026-03-09 2026-03-10 13:16:05 - health.services.data_sync - INFO - intensity_minutes sync complete: 1 synced, 0 skipped, 0 errors 2026-03-10 13:16:05 - health.services.data_sync - INFO - Syncing hrv from 2026-03-09 to 2026-03-09 (1 days) 2026-03-10 13:16:05 - health.services.data_sync - INFO - ✓ Synced hrv for 2026-03-09 2026-03-10 13:16:05 - health.services.data_sync - INFO - hrv sync complete: 1 synced, 0 skipped, 0 errors 2026-03-10 13:16:05 - health.services.data_sync - INFO - Syncing rhr from 2026-03-09 to 2026-03-09 (1 days) 2026-03-10 13:16:05 - health.services.data_sync - INFO - ✓ Synced rhr for 2026-03-09 2026-03-10 13:16:05 - health.services.data_sync - INFO - rhr sync complete: 1 synced, 0 skipped, 0 errors 2026-03-10 13:16:05 - health.services.data_sync - INFO - Syncing weight from 2026-03-09 to 2026-03-09 (1 days) 2026-03-10 13:16:05 - health.services.data_sync - INFO - weight sync complete: 0 synced, 1 skipped, 0 errors 2026-03-10 13:16:05 - health.services.data_sync - INFO - Syncing lifestyle_logging from 2026-03-09 to 2026-03-09 (1 days) 2026-03-10 13:16:05 - health.services.data_sync - INFO - ✓ Synced lifestyle_logging for 2026-03-09 2026-03-10 13:16:05 - health.services.data_sync - INFO - lifestyle_logging sync complete: 1 synced, 0 skipped, 0 errors 2026-03-10 13:16:05 - health.services.data_sync - INFO - Syncing activities from 2026-03-09 to 2026-03-09 2026-03-10 13:16:06 - health.services.garmin_client - INFO - Fetched 1 activities 2026-03-10 13:16:06 - health.services.data_sync - INFO - Found 1 activities 2026-03-10 13:16:06 - health.services.data_sync - INFO - ✓ Synced activity 571649099 (elliptical) on 2026-03-09 2026-03-10 13:16:06 - health.services.data_sync - INFO - Activity sync complete: 1 synced, 0 skipped, 0 errors 2026-03-10 13:16:06 - health.services.query - INFO - Querying health data summary for 2026-03-09 2026-03-10 13:16:06 - health.services.query - INFO - Found 13 metrics and 1 activities 2026-03-10 13:16:06 - slack_bot.dispatcher - INFO - [60fb11f4] ✓ sync_garmin finished in 3.21s 2026-03-10 13:16:06 - slack_bot.dispatcher - INFO - [60fb11f4] Tool: get_daily_detailed_stats Args: {'target_date': '2026-03-09'} 2026-03-10 13:16:06 - health.services.query - INFO - Querying health data summary for 2026-03-09 2026-03-10 13:16:06 - health.services.query - INFO - Found 13 metrics and 1 activities 2026-03-10 13:16:06 - slack_bot.dispatcher - INFO - [60fb11f4] ✓ get_daily_detailed_stats finished in 0.01s 2026-03-10 13:16:06 - slack_bot.dispatcher - INFO - [60fb11f4] Tool: get_activity_history Args: {'end_date': '2026-03-09', 'start_date': '2026-03-09'} 2026-03-10 13:16:06 - health.services.query - INFO - Querying activities from 2026-03-09 to 2026-03-09 2026-03-10 13:16:06 - health.services.query - INFO - Found 1 activities 2026-03-10 13:16:06 - slack_bot.dispatcher - INFO - [60fb11f4] ✓ get_activity_history finished in 0.00s 2026-03-10 13:16:06 - slack_bot.dispatcher - INFO - [60fb11f4] Requesting final analysis... 2026-03-10 13:16:11 - slack_bot.dispatcher - INFO - [60fb11f4] Final analysis received in 5.60s 2026-03-10 13:16:11 - slack_bot.dispatcher - INFO - Formatted text (len 818 -> 776) 2026-03-10 13:16:12 - slack_bot.dispatcher - WARNING - [60fb11f4] Update failed, posting new: The request to the Slack API failed. (url: https://slack.com/api/chat.update) The server responded with: {'ok': False, 'error': 'msg_too_long'} 2026-03-10 13:16:13 - slack_bot.dispatcher - INFO - [60fb11f4] 📤 Continuation message posted 2026-03-10 13:16:13 - slack_bot.dispatcher - INFO - [60fb11f4] Dispatch completed in 14.40s 2026-03-10 13:16:13 - __main__ - INFO - [60fb11f4] ✅ Request completed in 14.75s