PersonInfoModel; 修改部分方法参数和部分文件位置;移除多余文件;炸毁可启动性

This commit is contained in:
UnCLAS-Prommer
2026-02-21 15:54:03 +08:00
parent 6bcd7cbebb
commit 119241f251
7 changed files with 93 additions and 821 deletions

View File

@@ -0,0 +1,39 @@
from rich.traceback import install
from sqlmodel import select
from typing import Optional
import hashlib
from src.common.logger import get_logger
from src.common.data_models.person_info_data_model import MaiPersonInfo
from src.common.database.database_model import PersonInfo
from src.common.database.database import get_db_session
install(extra_lines=3)
logger = get_logger("person_utils")
class PersonUtils:
@staticmethod
def get_person_info_by_id(person_id: str) -> Optional[MaiPersonInfo]:
"""根据person_id获取用户信息"""
try:
with get_db_session() as session:
statement = select(PersonInfo).filter_by(person_id=person_id)
if result := session.exec(statement).first():
return MaiPersonInfo.from_db_instance(result)
except Exception as e:
logger.error(f"查询用户信息失败: {str(e)}")
return None
@staticmethod
def calculate_person_id(platform: str, user_id: str) -> str:
"""根据平台和用户ID计算person_id"""
return hashlib.sha256(f"{platform}_{user_id}".encode("utf-8")).hexdigest()
@staticmethod
def get_person_info_by_user_id_and_platform(user_id: str, platform: str) -> Optional[MaiPersonInfo]:
"""根据user_id和platform获取用户信息"""
person_id = PersonUtils.calculate_person_id(platform, user_id)
return PersonUtils.get_person_info_by_id(person_id)

View File

@@ -0,0 +1,42 @@
from rich.traceback import install
from typing import Optional
import base64
from src.common.logger import get_logger
from src.config.config import global_config, model_config
from src.llm_models.utils_model import LLMRequest
install(extra_lines=3)
logger = get_logger("chat_voice")
# TODO: 在LLMRequest重构后修改这里
asr_model = LLMRequest(model_set=model_config.model_task_config.voice, request_type="audio")
async def get_voice_text(voice_bytes: bytes) -> Optional[str]:
"""
获取音频文件转录文本
Args:
voice_bytes (bytes): 语音消息的字节数据
Returns:
return (Optional[str]): 转录后的文本描述,如果转录失败或未启用语音识别功能,则返回 None
"""
if not global_config.voice.enable_asr:
logger.warning("语音识别未启用,无法处理语音消息")
return None
try:
voice_base64 = base64.b64encode(voice_bytes).decode("utf-8")
text = await asr_model.generate_response_for_voice(voice_base64)
if not text:
logger.warning("语音转文字结果为空")
# logger.debug(f"转录结果是是{text}")
return text
except Exception as e:
logger.error(f"语音转文字失败: {str(e)}")
return None