全面更换orjson

This commit is contained in:
雅诺狐
2025-08-26 14:20:26 +08:00
parent bfabf896b5
commit 4a44ba9866
45 changed files with 991 additions and 1279 deletions

View File

@@ -1,4 +1,4 @@
import json
import orjson
import os
from src.common.logger import get_logger
@@ -49,27 +49,27 @@ class LocalStoreManager:
logger.debug(f"加载本地存储数据: {self.file_path}")
try:
with open(self.file_path, "r", encoding="utf-8") as f:
self.store = json.load(f)
self.store = orjson.loads(f.read())
logger.info("全都记起来了!")
except json.JSONDecodeError:
except orjson.JSONDecodeError:
logger.warning("啊咧?记事本被弄脏了,正在重建记事本......")
self.store = {}
with open(self.file_path, "w", encoding="utf-8") as f:
json.dump({}, f, ensure_ascii=False, indent=4)
f.write(orjson.dumps({}, option=orjson.OPT_INDENT_2).decode('utf-8'))
logger.info("记事本重建成功!")
else:
# 不存在本地存储文件,创建新的目录和文件
logger.warning("啊咧?记事本不存在,正在创建新的记事本......")
os.makedirs(os.path.dirname(self.file_path), exist_ok=True)
with open(self.file_path, "w", encoding="utf-8") as f:
json.dump({}, f, ensure_ascii=False, indent=4)
f.write(orjson.dumps({}, option=orjson.OPT_INDENT_2).decode('utf-8'))
logger.info("记事本创建成功!")
def save_local_store(self):
"""保存本地存储数据"""
logger.debug(f"保存本地存储数据: {self.file_path}")
with open(self.file_path, "w", encoding="utf-8") as f:
json.dump(self.store, f, ensure_ascii=False, indent=4)
f.write(orjson.dumps(self.store, option=orjson.OPT_INDENT_2).decode('utf-8'))
local_storage = LocalStoreManager("data/local_store.json") # 全局单例化

View File

@@ -1,4 +1,4 @@
import json
import orjson
import asyncio
import random
from datetime import datetime, time, timedelta
@@ -151,7 +151,7 @@ class ScheduleManager:
logger.info(f"从数据库加载今天的日程 ({today_str})。")
try:
schedule_data = json.loads(str(schedule_record.schedule_data))
schedule_data = orjson.loads(str(schedule_record.schedule_data))
# 使用Pydantic验证日程数据
if self._validate_schedule_with_pydantic(schedule_data):
@@ -164,7 +164,7 @@ class ScheduleManager:
else:
logger.warning("数据库中的日程数据格式无效,将异步重新生成日程")
await self.generate_and_save_schedule()
except json.JSONDecodeError as e:
except orjson.JSONDecodeError as e:
logger.error(f"日程数据JSON解析失败: {e},将异步重新生成日程")
await self.generate_and_save_schedule()
else:
@@ -282,7 +282,7 @@ class ScheduleManager:
response, _ = await self.llm.generate_response_async(prompt)
# 尝试解析和验证JSON项目内置的反截断机制会自动处理截断问题
schedule_data = json.loads(repair_json(response))
schedule_data = orjson.loads(repair_json(response))
# 使用Pydantic验证生成的日程数据
if self._validate_schedule_with_pydantic(schedule_data):
@@ -293,14 +293,14 @@ class ScheduleManager:
if existing_schedule:
# 更新现有日程
session.query(Schedule).filter(Schedule.date == today_str).update({
Schedule.schedule_data: json.dumps(schedule_data),
Schedule.schedule_data: orjson.dumps(schedule_data).decode('utf-8'),
Schedule.updated_at: datetime.now()
})
else:
# 创建新日程
new_schedule = Schedule(
date=today_str,
schedule_data=json.dumps(schedule_data)
schedule_data=orjson.dumps(schedule_data).decode('utf-8')
)
session.add(new_schedule)
session.commit()