mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-07 00:16:57 +08:00
refactor(api): 渠道与存储管理端点通用化,端点层零目标特色
- schemas 新增公共 ManageRequest(target+action+params) 与 StorageAction 词汇表
- endpoint 层收敛为 POST /notification/manage、/storage/manage 两个通用接口,
不再定义任何渠道/存储特定的名称、参数与响应字段,前端上送参数原样透传
- chain 层 manage_channel/manage_storage 接受字符串标识纯透明转发,
StorageChain 移除全部特色管理方法
- FileManagerModule 新增 storage_manage 统一入口,模块返回归一化为
{success, message, data};wechatclawbot channel_manage 同步归一化,
路由标识兼容枚举名/值/对象
- dashboard 与 agentopsassistant 的用量查询改走 manage_storage(usage)
- 新增 10 项存储契约守护测试,通知侧补充 3 项链透传与字符串路由测试,
API 守护测试对 ManageRequest 开放映射按设计豁免
This commit is contained in:
@@ -93,9 +93,12 @@ class WechatClawBotModule(_ModuleBase, _MessageBase[WechatClawBot]):
|
||||
|
||||
动作语义与表单参数全部由模块自行解释:优先使用已保存配置实例,
|
||||
无匹配配置时可基于表单参数构造临时实例(未保存配置的扫码预览)。
|
||||
统一返回 {"success": bool, "message": ..., ...} 结构。
|
||||
统一返回 {"success": bool, "message": ..., "data": ...} 结构。
|
||||
"""
|
||||
if channel != self.get_subtype():
|
||||
# 路由标识归一化:兼容枚举名、枚举值与原始枚举对象
|
||||
if isinstance(channel, str) and channel not in (self.get_subtype().name, self.get_subtype().value):
|
||||
return None
|
||||
if not isinstance(channel, str) and channel != self.get_subtype():
|
||||
return None
|
||||
try:
|
||||
action = NotificationAction(action)
|
||||
@@ -116,14 +119,17 @@ class WechatClawBotModule(_ModuleBase, _MessageBase[WechatClawBot]):
|
||||
return {"success": False, "message": errmsg}
|
||||
|
||||
if action == NotificationAction.STATUS:
|
||||
return client.get_status(
|
||||
data = client.get_status(
|
||||
refresh_remote=bool(params.get("refresh_remote", True)),
|
||||
auto_generate_qrcode=bool(params.get("auto_generate_qrcode", True)),
|
||||
)
|
||||
return {"success": bool(data.get("success")), "message": data.get("message"), "data": data}
|
||||
if action == NotificationAction.REFRESH_QRCODE:
|
||||
return client.refresh_qrcode()
|
||||
data = client.refresh_qrcode()
|
||||
return {"success": bool(data.get("success")), "message": data.get("message"), "data": data}
|
||||
if action == NotificationAction.LOGOUT:
|
||||
return client.logout()
|
||||
data = client.logout()
|
||||
return {"success": bool(data.get("success")), "message": data.get("message"), "data": data}
|
||||
if action == NotificationAction.TEST_CONNECTION:
|
||||
state, message = client.test_connection()
|
||||
return {"success": state, "message": message}
|
||||
|
||||
Reference in New Issue
Block a user