From 5423af707d869ed6133214071ee0b114b8dda486 Mon Sep 17 00:00:00 2001 From: HycJack <772403255@qq.com> Date: Thu, 30 Apr 2026 04:46:54 +0800 Subject: [PATCH] Logging error in Loguru Handler #2 --- .../{message_ok_zh.mp3 => message_ok.mp3} | Bin .../audio/{tts_error_zh.mp3 => tts_error.mp3} | Bin .../assets/roles/zhuli/zh/tts_error.mp3 | Bin 5121 -> 12609 bytes talkingq-url/banban/dao/device_setting.py | 21 +++++++++++++++--- talkingq-url/banban/security.py | 7 +++++- talkingq-url/banban/service/avatar_storage.py | 7 +++++- talkingq-url/banban/service/device_setting.py | 8 +++---- 7 files changed, 34 insertions(+), 9 deletions(-) rename talkingq-url/assets/audio/{message_ok_zh.mp3 => message_ok.mp3} (100%) rename talkingq-url/assets/audio/{tts_error_zh.mp3 => tts_error.mp3} (100%) diff --git a/talkingq-url/assets/audio/message_ok_zh.mp3 b/talkingq-url/assets/audio/message_ok.mp3 similarity index 100% rename from talkingq-url/assets/audio/message_ok_zh.mp3 rename to talkingq-url/assets/audio/message_ok.mp3 diff --git a/talkingq-url/assets/audio/tts_error_zh.mp3 b/talkingq-url/assets/audio/tts_error.mp3 similarity index 100% rename from talkingq-url/assets/audio/tts_error_zh.mp3 rename to talkingq-url/assets/audio/tts_error.mp3 diff --git a/talkingq-url/assets/roles/zhuli/zh/tts_error.mp3 b/talkingq-url/assets/roles/zhuli/zh/tts_error.mp3 index 080cd1b69deed0ee92b8ae5c67e5e33422c5ecfa..67e49073de10a38e10f745ab6087dade4376febf 100644 GIT binary patch literal 12609 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 literal 5121 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 int: result = await self.execute( """ INSERT INTO device_settings ( device_id, sleep_mode, disable_time_start, disable_time_end, - timezone, volume, brightness, disable_weekdays + timezone, volume, brightness, disable_weekdays, `signal`, `version`, power ) VALUES ( :device_id, :sleep_mode, :disable_time_start, :disable_time_end, - :timezone, :volume, :brightness, :disable_weekdays + :timezone, :volume, :brightness, :disable_weekdays, :signal, :version, :power ) """, { @@ -39,6 +42,9 @@ class DeviceSettingDAO(BaseDAO): "volume": volume, "brightness": brightness, "disable_weekdays": disable_weekdays, + "signal": signal, + "version": version, + "power": power, }, ) await self.commit() @@ -70,6 +76,9 @@ class DeviceSettingDAO(BaseDAO): volume: Optional[int] = None, brightness: Optional[int] = None, disable_weekdays: Optional[str] = None, + signal: Optional[int] = None, + version: Optional[str] = None, + power: Optional[int] = None, ) -> None: await self.execute( """ @@ -80,7 +89,10 @@ class DeviceSettingDAO(BaseDAO): timezone = COALESCE(:timezone, timezone), volume = COALESCE(:volume, volume), brightness = COALESCE(:brightness, brightness), - disable_weekdays = COALESCE(:disable_weekdays, disable_weekdays) + disable_weekdays = COALESCE(:disable_weekdays, disable_weekdays), + `signal` = COALESCE(:signal, `signal`), + `version` = COALESCE(:version, `version`), + power = COALESCE(:power, power) WHERE device_id = :device_id """, { @@ -92,6 +104,9 @@ class DeviceSettingDAO(BaseDAO): "volume": volume, "brightness": brightness, "disable_weekdays": disable_weekdays, + "signal": signal, + "version": version, + "power": power, }, ) await self.commit() diff --git a/talkingq-url/banban/security.py b/talkingq-url/banban/security.py index b4e0f8c..47bc736 100644 --- a/talkingq-url/banban/security.py +++ b/talkingq-url/banban/security.py @@ -1,4 +1,9 @@ -from datetime import UTC, datetime, timedelta +from datetime import datetime, timedelta +try: + from datetime import UTC # Python 3.11+ +except ImportError: + from datetime import timezone + UTC = timezone.utc # Python 3.10 及更早版本 import jwt from fastapi import HTTPException, Request, status diff --git a/talkingq-url/banban/service/avatar_storage.py b/talkingq-url/banban/service/avatar_storage.py index 1163fc8..a1ef034 100644 --- a/talkingq-url/banban/service/avatar_storage.py +++ b/talkingq-url/banban/service/avatar_storage.py @@ -1,6 +1,11 @@ import asyncio from dataclasses import dataclass -from datetime import UTC, datetime +from datetime import datetime +try: + from datetime import UTC # Python 3.11+ +except ImportError: + from datetime import timezone + UTC = timezone.utc # Python 3.10 及更早版本 from pathlib import Path from uuid import uuid4 diff --git a/talkingq-url/banban/service/device_setting.py b/talkingq-url/banban/service/device_setting.py index 3052be5..6e0a289 100644 --- a/talkingq-url/banban/service/device_setting.py +++ b/talkingq-url/banban/service/device_setting.py @@ -38,8 +38,8 @@ class DeviceSettingService(DatabaseServiceBase): volume=volume, brightness=brightness, disable_weekdays=disable_weekdays, - signal_strength=signal_strength, - version_str=version_str, + signal=signal_strength, + version=version_str, ) finally: await db_session.close() @@ -79,8 +79,8 @@ class DeviceSettingService(DatabaseServiceBase): brightness=brightness, disable_weekdays=disable_weekdays, power=power, - signal_strength=signal_strength, - version_str=version_str, + signal=signal_strength, + version=version_str, ) finally: await db_session.close()