feat: 添加视觉设计语言系统并重构认证页面UI

- 新增 visual_design_language.md 设计规范文档
- 新增 auth 设计 tokens (authBackground, authCard, authInput, feedback 系列等)
- 重构登录/注册/验证码/重置密码页面为新设计系统
- 新增 AuthHeroHeader, AuthSurfaceCard, AuthSection, AuthField, PasswordField 组件
- 重构 AppBanner 和 Toast 支持多类型配置 (info/success/warning/error)
- 后端 AgentScope: 重整 schemas/prompts/tools 作用域, 新增协议文档
- 更新 AGENTS.md 集成视觉设计语言约束
This commit is contained in:
qzl
2026-03-13 14:10:13 +08:00
parent fb3c649db7
commit a10a2db27a
100 changed files with 6333 additions and 4800 deletions
+16 -23
View File
@@ -1,6 +1,5 @@
from __future__ import annotations
import json
from typing import TYPE_CHECKING, Protocol, Literal
from uuid import UUID
@@ -345,26 +344,22 @@ class ScheduleItemService(BaseService):
)
elif existing_msg.status == InboxMessageStatus.REJECTED:
existing_msg.status = InboxMessageStatus.PENDING
existing_msg.content = json.dumps(
{
"type": "invite",
"permission": request_permission,
"action": "pending",
}
)
existing_msg.content = {
"type": "invite",
"permission": request_permission,
"action": "pending",
}
else:
message = InboxMessage(
recipient_id=recipient_id,
sender_id=user_id,
message_type=InboxMessageType.CALENDAR,
schedule_item_id=item.id,
content=json.dumps(
{
"type": "invite",
"permission": request_permission,
"action": "pending",
}
),
content={
"type": "invite",
"permission": request_permission,
"action": "pending",
},
created_by=user_id,
)
self._session.add(message)
@@ -432,7 +427,7 @@ class ScheduleItemService(BaseService):
status_code=404, detail="No pending invitation found"
)
content = json.loads(inbox.content or "{}")
content = inbox.content or {}
permission = content.get("permission", 1)
existing = await self._repository.get_subscription(item_id, user_id)
@@ -505,13 +500,11 @@ class ScheduleItemService(BaseService):
if sub.subscriber_id == user_id:
continue
content = json.dumps(
{
"type": action_type,
"title": title,
"action": action_type,
}
)
content = {
"type": action_type,
"title": title,
"action": action_type,
}
message = InboxMessage(
recipient_id=sub.subscriber_id,