From f8f43058c5405d2f0b9df06c3e523db880fb6f71 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sun, 16 Aug 2026 07:19:05 +0800 Subject: [PATCH] =?UTF-8?q?refactor(api):=20=E6=B8=A0=E9=81=93=E4=B8=8E?= =?UTF-8?q?=E5=AD=98=E5=82=A8=E7=AE=A1=E7=90=86=E8=B0=83=E7=94=A8=E9=80=82?= =?UTF-8?q?=E9=85=8D=E5=90=8E=E7=AB=AF=E9=80=9A=E7=94=A8=20manage=20?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 src/api/manage.ts 通用封装:ManageRequest(target+action+params) 与 manageNotificationChannel/manageStorage 两个调用入口 - 存储类调用全部改走 POST /storage/manage:用量、整理方式、 配置保存/重置、二维码与 OAuth 登录确认(smb/alist/rclone/u115/alipan) - ClawBot 状态查询、二维码刷新、登出与缓存迁移改走 POST /notification/manage,原 query 参数转入 body params - 同步更新 AccountSettingNotification 单测断言,prune 失效 lint 抑制项 --- eslint-suppressions.json | 2 +- src/api/manage.ts | 43 +++++++++++++++++++ src/components/cards/DirectoryCard.vue | 16 ++++--- src/components/cards/StorageCard.vue | 4 +- src/components/dialog/AlistConfigDialog.vue | 6 +-- src/components/dialog/AliyunAuthDialog.vue | 22 +++++++--- .../dialog/NotificationChannelInfoDialog.vue | 32 ++++++++------ src/components/dialog/RcloneConfigDialog.vue | 6 +-- src/components/dialog/SmbConfigDialog.vue | 6 +-- src/components/dialog/U115AuthDialog.vue | 18 ++++++-- .../setting/AccountSettingNotification.vue | 15 ++++--- .../AccountSettingNotification.spec.ts | 12 ++++-- 12 files changed, 132 insertions(+), 50 deletions(-) create mode 100644 src/api/manage.ts diff --git a/eslint-suppressions.json b/eslint-suppressions.json index d95c5a0a..4644eb33 100644 --- a/eslint-suppressions.json +++ b/eslint-suppressions.json @@ -101,7 +101,7 @@ }, "src/components/cards/DirectoryCard.vue": { "@typescript-eslint/no-explicit-any": { - "count": 3 + "count": 1 }, "sonarjs/super-linear-regex": { "count": 1 diff --git a/src/api/manage.ts b/src/api/manage.ts new file mode 100644 index 00000000..2bf177b7 --- /dev/null +++ b/src/api/manage.ts @@ -0,0 +1,43 @@ +import type { AxiosRequestConfig } from 'axios' +import api from './index' + +/** 通用管理请求:目标标识 + 管理动作 + 透传参数,与后端 ManageRequest 一致。 */ +export interface ManageRequest { + target: string + action: string + params?: Record +} + +/** + * 调用统一管理端点(通知渠道 / 网盘存储) + * + * 端点层不定义任何目标特定的名称与参数, + * 目标标识、管理动作与表单参数原样透传给后端模块 + */ +function manageTarget>( + endpoint: 'notification/manage' | 'storage/manage', + request: ManageRequest, + config?: AxiosRequestConfig, +): Promise { + return api.post(endpoint, { params: {}, ...request }, config) +} + +/** 对指定通知渠道执行管理动作,返回响应中的业务数据。 */ +export function manageNotificationChannel>( + channel: string, + action: string, + params: Record = {}, + config?: AxiosRequestConfig, +): Promise { + return manageTarget('notification/manage', { target: channel, action, params }, config) +} + +/** 对指定网盘存储执行管理动作,返回响应中的业务数据。 */ +export function manageStorage>( + storage: string, + action: string, + params: Record = {}, + config?: AxiosRequestConfig, +): Promise { + return manageTarget('storage/manage', { target: storage, action, params }, config) +} diff --git a/src/components/cards/DirectoryCard.vue b/src/components/cards/DirectoryCard.vue index 22be7ace..d489a86c 100644 --- a/src/components/cards/DirectoryCard.vue +++ b/src/components/cards/DirectoryCard.vue @@ -1,6 +1,6 @@