Files
MoviePilot/app/api/endpoints/notification.py
T
jxxghp a6dbd799d5 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 开放映射按设计豁免
2026-08-16 07:18:49 +08:00

39 lines
1.0 KiB
Python

from typing import Any, Dict
from fastapi import Depends
from app import schemas
from app.api.response import ResponseAPIRouter
from app.chain.notification import NotificationChain
from app.db.models import User
from app.api.deps import get_current_active_superuser
router = ResponseAPIRouter()
@router.post(
"/manage",
summary="通知渠道统一管理",
response_model=schemas.Response[Dict[str, Any]],
)
def manage_channel(
request: schemas.ManageRequest,
_: User = Depends(get_current_active_superuser),
):
"""
通知渠道统一管理入口
端点层不定义任何渠道特定的名称与参数,
渠道标识、管理动作与表单参数由前端上送并原样透传给渠道模块
"""
result = NotificationChain().manage_channel(
channel=request.target,
action=request.action,
**request.params,
)
return schemas.Response(
success=bool(result.get("success")),
message=result.get("message"),
data=result.get("data"),
)