From 45e255856a6f8eaff3b7a629e447d14a31b2a9a7 Mon Sep 17 00:00:00 2001 From: MangoFanFanw Date: Sun, 31 May 2026 13:49:31 +0800 Subject: [PATCH] =?UTF-8?q?fix(backend):=20=E7=B4=AF=E7=A7=AF=E7=9A=84?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E4=BF=AE=E5=A4=8D=E5=92=8C=E7=BB=86=E8=8A=82?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 ++ src/nyahome/cli/cli_aii.py | 2 +- src/nyahome/database/__init__.py | 5 +++- src/nyahome/database/model_aii.py | 15 ++++++++--- src/nyahome/database/model_story.py | 26 ++++++++++++------- src/nyahome/service/chat_service.py | 4 +-- .../chatroom/ChatroomCreatorModal.vue | 9 ------- 7 files changed, 37 insertions(+), 26 deletions(-) diff --git a/.gitignore b/.gitignore index 67d07e9..0af8f52 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,5 @@ alembic/versions/ .idea .codemoss + +alembic.ini diff --git a/src/nyahome/cli/cli_aii.py b/src/nyahome/cli/cli_aii.py index 99025ba..5ff629e 100644 --- a/src/nyahome/cli/cli_aii.py +++ b/src/nyahome/cli/cli_aii.py @@ -96,5 +96,5 @@ def add_model( session.add(am) session.commit() session.refresh(am) - + console.print(f"[cyan]已添加模型 [{am.id}][{am.model_name}]({am.aii_provider_id})[/cyan]") diff --git a/src/nyahome/database/__init__.py b/src/nyahome/database/__init__.py index 0a8c234..be564d2 100644 --- a/src/nyahome/database/__init__.py +++ b/src/nyahome/database/__init__.py @@ -18,7 +18,10 @@ from .session import async_get_session, get_session # 创建数据库连接和数据库文件 def create_db() -> None: # noqa: RUF067 - SQLModel.metadata.create_all(engine) + try: + SQLModel.metadata.create_all(engine) + except Exception as e: + raise RuntimeError(f"连接或创建数据库失败:{e}") from e __all__ = [ diff --git a/src/nyahome/database/model_aii.py b/src/nyahome/database/model_aii.py index 5a486ea..0515401 100644 --- a/src/nyahome/database/model_aii.py +++ b/src/nyahome/database/model_aii.py @@ -1,3 +1,5 @@ +from typing import Optional + from pydantic import BaseModel from sqlmodel import Field, Relationship, SQLModel @@ -7,7 +9,7 @@ class AiiProvider(SQLModel, table=True): 模型提供商。 """ - id: int | None = Field(default=None, primary_key=True) + id: Optional[int] = Field(default=None, primary_key=True) name: str base_url: str api_key: str @@ -16,7 +18,7 @@ class AiiProvider(SQLModel, table=True): class AiiProviderPublic(BaseModel): - id: int | None = None + id: Optional[int] = None name: str base_url: str api_key: str @@ -27,16 +29,18 @@ class AiiModel(SQLModel, table=True): 模型。 """ - id: int | None = Field(default=None, primary_key=True) + id: Optional[int] = Field(default=None, primary_key=True) model_name: str max_context_length: int aii_provider_id: int = Field(default=None, foreign_key="aiiprovider.id") aii_provider: AiiProvider = Relationship(back_populates="aii_models") + chatrooms: list["Chatroom"] = Relationship(back_populates="default_model") + class AiiModelPublic(BaseModel): - id: int | None = None + id: Optional[int] = None model_name: str max_context_length: int @@ -58,3 +62,6 @@ def z_aii_provider(ap: AiiProvider) -> dict: "name": ap.name, "base_url": ap.base_url, } + + +from .model_story import Chatroom # noqa: E402 diff --git a/src/nyahome/database/model_story.py b/src/nyahome/database/model_story.py index 3f17b13..02c5972 100644 --- a/src/nyahome/database/model_story.py +++ b/src/nyahome/database/model_story.py @@ -16,33 +16,40 @@ class Chatroom(SQLModel, table=True): 规定 creator_id 为 0 的聊天室为公共聊天室,其权限由配置文件决定。 """ - id: int | None = Field(default=None, primary_key=True) + id: Optional[int] = Field(default=None, primary_key=True) name: str description: str feature_image: str = Field( default=f"{config_manager.get('site_url', 'http://localhost:9000')}/nyahome/normal-thumbnail.png" ) - content: str - script: str + content: str = Field(description="聊天室中的聊天内容。作为已序列化的 json 格式字符串存储,请参阅数据保存。") + script: str = Field(description="聊天室中的世界书内容。作为已序列化的 json 格式字符串存储,请参阅数据保存。") - script_template_id: int | None = Field( + script_template_id: Optional[int] = Field( default=None, sa_column=Column(ForeignKey("scripttemplate.id", name="fk_chatroom_script_template")) ) - script_template_version: str | None + script_template_version: Optional[str] script_template: "ScriptTemplate" = Relationship() creator_id: int = Field(sa_column=Column(ForeignKey("modeluser.id", name="fk_chatroom_creator"))) - creator: Optional["ModelUser"] = Relationship(back_populates="chatrooms") + creator: "ModelUser" = Relationship(back_populates="chatrooms") + + default_model_id: Optional[int] = Field( + sa_column=Column(ForeignKey("aiimodel.id", name="fk_chatroom_default_model")) + ) + default_model: Optional["AiiModel"] = Relationship(back_populates="chatrooms") class ChatroomPublic(BaseModel): - id: int | None = None + id: Optional[int] = None name: str description: str feature_image: str - script_template_id: int | None = None - script_template_version: str | None + script_template_id: Optional[int] = None + script_template_version: Optional[str] = None + + default_model_id: Optional[int] = None class ScriptTemplate(SQLModel, table=True): @@ -104,4 +111,5 @@ class ChatroomChatDelete(BaseModel): change: Literal["user", "aii"] +from .model_aii import AiiModel # noqa: E402 from .model_user import ModelUser # noqa: E402 diff --git a/src/nyahome/service/chat_service.py b/src/nyahome/service/chat_service.py index d8aad1b..377842d 100644 --- a/src/nyahome/service/chat_service.py +++ b/src/nyahome/service/chat_service.py @@ -126,11 +126,11 @@ async def s_start_async_streaming_chat( td = getattr(chuck.choices[0].delta, "reasoning_content", None) cd = chuck.choices[0].delta.content if td: - logger.debug(f"reasoning 流式输出:{cd}") + # logger.debug(f"reasoning 流式输出:{cd}") aii_thinking += td yield f"data: {json.dumps({'text': td, 'type': 'thinking'}, ensure_ascii=False)}\n\n" if cd: - logger.debug(f"content 流式输出:{cd}") + # logger.debug(f"content 流式输出:{cd}") aii_message += cd yield f"data: {json.dumps({'text': cd, 'type': 'output'}, ensure_ascii=False)}\n\n" logger.info(f"AI 完成输出 : {aii_message}") diff --git a/webui/src/components/chatroom/ChatroomCreatorModal.vue b/webui/src/components/chatroom/ChatroomCreatorModal.vue index 4100f51..28cd0c2 100644 --- a/webui/src/components/chatroom/ChatroomCreatorModal.vue +++ b/webui/src/components/chatroom/ChatroomCreatorModal.vue @@ -65,15 +65,6 @@ function onSubmit() { 确认! - - -