refactor(schemas): 统一 message/notification 命名边界,旧名收敛至兼容映射表

- notification 域:渠道能力(MessageChannel→NotificationChannel、ChannelCapability* 迁入 notification.py)
- message 域:消息收发(Notification→Message、NotificationType→MessageType、CommingMessage→IncomingMessage、NotificationHistoryItem→MessageHistoryItem、NotificationClear*→MessageClear*)
- Agent 工具契约:send_notification_message→send_message、notification_callback→message_callback
- 源码不保留旧名物理别名,旧导入经 app/runtime/compat/manifest.py SYMBOL_ALIASES 惰性解析
- API 路径与持久化键冻结不变,前端零改动
- 新增兼容守护测试与 docs/rules/07 命名边界规范
This commit is contained in:
jxxghp
2026-08-16 19:32:20 +08:00
parent 98276a68a8
commit 240a4dffe6
96 changed files with 1975 additions and 1751 deletions
+7 -7
View File
@@ -6,7 +6,7 @@ from sqlalchemy.orm import Session
from app.db import DbOper
from app.db.models.agentchat import AgentChat
from app.schemas.types import MessageChannel
from app.schemas.types import NotificationChannel
DEFAULT_AGENT_CHAT_TITLE = "未命名会话"
@@ -25,9 +25,9 @@ class AgentChatOper(DbOper):
return time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
@staticmethod
def _channel_value(channel: Optional[Union[MessageChannel, str]]) -> Optional[str]:
def _channel_value(channel: Optional[Union[NotificationChannel, str]]) -> Optional[str]:
"""获取渠道枚举的字符串值。"""
if isinstance(channel, MessageChannel):
if isinstance(channel, NotificationChannel):
return channel.value
return channel
@@ -92,7 +92,7 @@ class AgentChatOper(DbOper):
session_id: str,
user_id: Optional[str] = None,
username: Optional[str] = None,
channel: Optional[Union[MessageChannel, str]] = None,
channel: Optional[Union[NotificationChannel, str]] = None,
source: Optional[str] = None,
original_chat_id: Optional[str] = None,
client_session_id: Optional[str] = None,
@@ -167,7 +167,7 @@ class AgentChatOper(DbOper):
user_id: Optional[str],
title: Optional[str],
username: Optional[str] = None,
channel: Optional[Union[MessageChannel, str]] = None,
channel: Optional[Union[NotificationChannel, str]] = None,
source: Optional[str] = None,
original_chat_id: Optional[str] = None,
client_session_id: Optional[str] = None,
@@ -206,7 +206,7 @@ class AgentChatOper(DbOper):
user_id: Optional[str] = None,
messages: Optional[list[dict]] = None,
username: Optional[str] = None,
channel: Optional[Union[MessageChannel, str]] = None,
channel: Optional[Union[NotificationChannel, str]] = None,
source: Optional[str] = None,
original_chat_id: Optional[str] = None,
client_session_id: Optional[str] = None,
@@ -250,7 +250,7 @@ class AgentChatOper(DbOper):
user_id: Optional[str] = None,
messages: Optional[list[dict]] = None,
username: Optional[str] = None,
channel: Optional[Union[MessageChannel, str]] = None,
channel: Optional[Union[NotificationChannel, str]] = None,
source: Optional[str] = None,
original_chat_id: Optional[str] = None,
client_session_id: Optional[str] = None,
+5 -5
View File
@@ -6,7 +6,7 @@ from sqlalchemy.orm import Session
from app.db import DbOper
from app.db.models.message import Message
from app.schemas import MessageChannel, NotificationType
from app.schemas import NotificationChannel, MessageType
class MessageOper(DbOper):
@@ -18,9 +18,9 @@ class MessageOper(DbOper):
super().__init__(db)
def add(self,
channel: Optional[MessageChannel] = None,
channel: Optional[NotificationChannel] = None,
source: Optional[str] = None,
mtype: Optional[NotificationType] = None,
mtype: Optional[MessageType] = None,
title: Optional[str] = None,
text: Optional[str] = None,
image: Optional[str] = None,
@@ -64,9 +64,9 @@ class MessageOper(DbOper):
return Message(**kwargs).create_and_to_dict(self._db)
async def async_add(self,
channel: Optional[MessageChannel] = None,
channel: Optional[NotificationChannel] = None,
source: Optional[str] = None,
mtype: Optional[NotificationType] = None,
mtype: Optional[MessageType] = None,
title: Optional[str] = None,
text: Optional[str] = None,
image: Optional[str] = None,