819 lines
32 KiB
Python
819 lines
32 KiB
Python
# AUTO-MAS: A Multi-Script, Multi-Config Management and Automation Software
|
|
# Copyright © 2024-2025 DLmaster361
|
|
# Copyright © 2025 MoeSnowyFox
|
|
|
|
# This file is part of AUTO-MAS.
|
|
|
|
# AUTO-MAS is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published
|
|
# by the Free Software Foundation, either version 3 of the License,
|
|
# or (at your option) any later version.
|
|
|
|
# AUTO-MAS is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty
|
|
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
|
|
# the GNU General Public License for more details.
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with AUTO-MAS. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
# Contact: DLmaster_361@163.com
|
|
|
|
|
|
from pydantic import BaseModel, Field
|
|
from typing import Any, Dict, List, Union, Optional, Literal
|
|
|
|
|
|
class OutBase(BaseModel):
|
|
code: int = Field(default=200, description="状态码")
|
|
status: str = Field(default="success", description="操作状态")
|
|
message: str = Field(default="操作成功", description="操作消息")
|
|
|
|
|
|
class InfoOut(OutBase):
|
|
data: Dict[str, Any] = Field(..., description="收到的服务器数据")
|
|
|
|
|
|
class VersionOut(OutBase):
|
|
if_need_update: bool = Field(..., description="后端代码是否需要更新")
|
|
current_hash: str = Field(..., description="后端代码当前哈希值")
|
|
current_time: str = Field(..., description="后端代码当前时间戳")
|
|
current_version: str = Field(..., description="后端当前版本号")
|
|
|
|
|
|
class NoticeOut(OutBase):
|
|
if_need_show: bool = Field(..., description="是否需要显示公告")
|
|
data: Dict[str, str] = Field(
|
|
..., description="公告信息, key为公告标题, value为公告内容"
|
|
)
|
|
|
|
|
|
class ComboBoxItem(BaseModel):
|
|
label: str = Field(..., description="展示值")
|
|
value: Optional[str] = Field(..., description="实际值")
|
|
|
|
|
|
class ComboBoxOut(OutBase):
|
|
data: List[ComboBoxItem] = Field(..., description="下拉框选项")
|
|
|
|
|
|
class GetStageIn(BaseModel):
|
|
type: Literal[
|
|
"Today",
|
|
"ALL",
|
|
"Monday",
|
|
"Tuesday",
|
|
"Wednesday",
|
|
"Thursday",
|
|
"Friday",
|
|
"Saturday",
|
|
"Sunday",
|
|
] = Field(
|
|
...,
|
|
description="选择的日期类型, Today为当天, ALL为包含当天未开放关卡在内的所有项",
|
|
)
|
|
|
|
|
|
class GlobalConfig_Function(BaseModel):
|
|
HistoryRetentionTime: Optional[Literal[7, 15, 30, 60, 90, 180, 365, 0]] = Field(
|
|
None, description="历史记录保留时间, 0表示永久保存"
|
|
)
|
|
IfAllowSleep: Optional[bool] = Field(default=None, description="允许休眠")
|
|
IfSilence: Optional[bool] = Field(default=None, description="静默模式")
|
|
BossKey: Optional[str] = Field(default=None, description="模拟器老板键")
|
|
IfAgreeBilibili: Optional[bool] = Field(
|
|
default=None, description="同意哔哩哔哩用户协议"
|
|
)
|
|
IfSkipMumuSplashAds: Optional[bool] = Field(
|
|
default=None, description="跳过Mumu模拟器启动广告"
|
|
)
|
|
|
|
|
|
class GlobalConfig_Voice(BaseModel):
|
|
Enabled: Optional[bool] = Field(default=None, description="语音功能是否启用")
|
|
Type: Optional[Literal["simple", "noisy"]] = Field(
|
|
default=None, description="语音类型, simple为简洁, noisy为聒噪"
|
|
)
|
|
|
|
|
|
class GlobalConfig_Start(BaseModel):
|
|
IfSelfStart: Optional[bool] = Field(
|
|
default=None, description="是否在系统启动时自动运行"
|
|
)
|
|
IfMinimizeDirectly: Optional[bool] = Field(
|
|
default=None, description="启动时是否直接最小化到托盘而不显示主窗口"
|
|
)
|
|
|
|
|
|
class GlobalConfig_UI(BaseModel):
|
|
IfShowTray: Optional[bool] = Field(default=None, description="是否常态显示托盘图标")
|
|
IfToTray: Optional[bool] = Field(default=None, description="是否最小化到托盘")
|
|
|
|
|
|
class CustomWebhook(BaseModel):
|
|
id: str = Field(..., description="Webhook唯一标识")
|
|
name: str = Field(..., description="Webhook名称")
|
|
url: str = Field(..., description="Webhook URL")
|
|
template: str = Field(..., description="消息模板类型")
|
|
enabled: bool = Field(default=True, description="是否启用")
|
|
headers: Optional[Dict[str, str]] = Field(default=None, description="自定义请求头")
|
|
body_template: Optional[str] = Field(default=None, description="自定义消息体模板")
|
|
|
|
|
|
class GlobalConfig_Notify(BaseModel):
|
|
SendTaskResultTime: Optional[Literal["不推送", "任何时刻", "仅失败时"]] = Field(
|
|
default=None, description="任务结果推送时机"
|
|
)
|
|
IfSendStatistic: Optional[bool] = Field(
|
|
default=None, description="是否发送统计信息"
|
|
)
|
|
IfSendSixStar: Optional[bool] = Field(
|
|
default=None, description="是否发送公招六星通知"
|
|
)
|
|
IfPushPlyer: Optional[bool] = Field(default=None, description="是否推送系统通知")
|
|
IfSendMail: Optional[bool] = Field(default=None, description="是否发送邮件通知")
|
|
SMTPServerAddress: Optional[str] = Field(default=None, description="SMTP服务器地址")
|
|
AuthorizationCode: Optional[str] = Field(default=None, description="SMTP授权码")
|
|
FromAddress: Optional[str] = Field(default=None, description="邮件发送地址")
|
|
ToAddress: Optional[str] = Field(default=None, description="邮件接收地址")
|
|
IfServerChan: Optional[bool] = Field(
|
|
default=None, description="是否使用ServerChan推送"
|
|
)
|
|
ServerChanKey: Optional[str] = Field(default=None, description="ServerChan推送密钥")
|
|
IfCompanyWebHookBot: Optional[bool] = Field(
|
|
default=None, description="是否使用企微Webhook推送"
|
|
)
|
|
CompanyWebHookBotUrl: Optional[str] = Field(
|
|
default=None, description="企微Webhook Bot URL"
|
|
)
|
|
CustomWebhooks: Optional[List[CustomWebhook]] = Field(
|
|
default=None, description="自定义Webhook列表"
|
|
)
|
|
|
|
|
|
class GlobalConfig_Update(BaseModel):
|
|
IfAutoUpdate: Optional[bool] = Field(default=None, description="是否自动更新")
|
|
Source: Optional[Literal["GitHub", "MirrorChyan", "AutoSite"]] = Field(
|
|
default=None, description="更新源: GitHub源, Mirror酱源, 自建源"
|
|
)
|
|
ProxyAddress: Optional[str] = Field(default=None, description="网络代理地址")
|
|
MirrorChyanCDK: Optional[str] = Field(default=None, description="Mirror酱CDK")
|
|
|
|
|
|
class GlobalConfig(BaseModel):
|
|
Function: Optional[GlobalConfig_Function] = Field(
|
|
default=None, description="功能相关配置"
|
|
)
|
|
Voice: Optional[GlobalConfig_Voice] = Field(
|
|
default=None, description="语音相关配置"
|
|
)
|
|
Start: Optional[GlobalConfig_Start] = Field(
|
|
default=None, description="启动相关配置"
|
|
)
|
|
UI: Optional[GlobalConfig_UI] = Field(default=None, description="界面相关配置")
|
|
Notify: Optional[GlobalConfig_Notify] = Field(
|
|
default=None, description="通知相关配置"
|
|
)
|
|
Update: Optional[GlobalConfig_Update] = Field(
|
|
default=None, description="更新相关配置"
|
|
)
|
|
|
|
|
|
class QueueIndexItem(BaseModel):
|
|
uid: str = Field(..., description="唯一标识符")
|
|
type: Literal["QueueConfig"] = Field(..., description="配置类型")
|
|
|
|
|
|
class QueueItemIndexItem(BaseModel):
|
|
uid: str = Field(..., description="唯一标识符")
|
|
type: Literal["QueueItem"] = Field(..., description="配置类型")
|
|
|
|
|
|
class TimeSetIndexItem(BaseModel):
|
|
uid: str = Field(..., description="唯一标识符")
|
|
type: Literal["TimeSet"] = Field(..., description="配置类型")
|
|
|
|
|
|
class QueueItem_Info(BaseModel):
|
|
ScriptId: Optional[str] = Field(
|
|
default=None, description="任务所对应的脚本ID, 为None时表示未选择"
|
|
)
|
|
|
|
|
|
class QueueItem(BaseModel):
|
|
Info: Optional[QueueItem_Info] = Field(default=None, description="队列项")
|
|
|
|
|
|
class TimeSet_Info(BaseModel):
|
|
Enabled: Optional[bool] = Field(default=None, description="是否启用")
|
|
Time: Optional[str] = Field(default=None, description="时间设置, 格式为HH:MM")
|
|
|
|
|
|
class TimeSet(BaseModel):
|
|
Info: Optional[TimeSet_Info] = Field(default=None, description="时间项")
|
|
|
|
|
|
class QueueConfig_Info(BaseModel):
|
|
Name: Optional[str] = Field(default=None, description="队列名称")
|
|
TimeEnabled: Optional[bool] = Field(default=None, description="是否启用定时")
|
|
StartUpEnabled: Optional[bool] = Field(default=None, description="是否启动时运行")
|
|
AfterAccomplish: Optional[
|
|
Literal[
|
|
"NoAction", "KillSelf", "Sleep", "Hibernate", "Shutdown", "ShutdownForce"
|
|
]
|
|
] = Field(default=None, description="完成后操作")
|
|
|
|
|
|
class QueueConfig(BaseModel):
|
|
Info: Optional[QueueConfig_Info] = Field(default=None, description="队列信息")
|
|
|
|
|
|
class ScriptIndexItem(BaseModel):
|
|
uid: str = Field(..., description="唯一标识符")
|
|
type: Literal["MaaConfig", "GeneralConfig"] = Field(..., description="配置类型")
|
|
|
|
|
|
class UserIndexItem(BaseModel):
|
|
uid: str = Field(..., description="唯一标识符")
|
|
type: Literal["MaaUserConfig", "GeneralUserConfig"] = Field(
|
|
..., description="配置类型"
|
|
)
|
|
|
|
|
|
class MaaUserConfig_Info(BaseModel):
|
|
Name: Optional[str] = Field(default=None, description="用户名")
|
|
Id: Optional[str] = Field(default=None, description="用户ID")
|
|
Mode: Optional[Literal["简洁", "详细"]] = Field(
|
|
default=None, description="用户配置模式"
|
|
)
|
|
StageMode: Optional[str] = Field(default=None, description="关卡配置模式")
|
|
Server: Optional[
|
|
Literal["Official", "Bilibili", "YoStarEN", "YoStarJP", "YoStarKR", "txwy"]
|
|
] = Field(default=None, description="服务器")
|
|
Status: Optional[bool] = Field(default=None, description="用户状态")
|
|
RemainedDay: Optional[int] = Field(default=None, description="剩余天数")
|
|
Annihilation: Optional[
|
|
Literal[
|
|
"Close",
|
|
"Annihilation",
|
|
"Chernobog@Annihilation",
|
|
"LungmenOutskirts@Annihilation",
|
|
"LungmenDowntown@Annihilation",
|
|
]
|
|
] = Field(default=None, description="剿灭模式")
|
|
Routine: Optional[bool] = Field(default=None, description="是否启用日常")
|
|
InfrastMode: Optional[Literal["Normal", "Rotation", "Custom"]] = Field(
|
|
default=None, description="基建模式"
|
|
)
|
|
InfrastPath: Optional[str] = Field(default=None, description="自定义基建文件路径")
|
|
Password: Optional[str] = Field(default=None, description="密码")
|
|
Notes: Optional[str] = Field(default=None, description="备注")
|
|
MedicineNumb: Optional[int] = Field(default=None, description="吃理智药数量")
|
|
SeriesNumb: Optional[Literal["0", "6", "5", "4", "3", "2", "1", "-1"]] = Field(
|
|
default=None, description="连战次数"
|
|
)
|
|
Stage: Optional[str] = Field(default=None, description="关卡选择")
|
|
Stage_1: Optional[str] = Field(default=None, description="备选关卡 - 1")
|
|
Stage_2: Optional[str] = Field(default=None, description="备选关卡 - 2")
|
|
Stage_3: Optional[str] = Field(default=None, description="备选关卡 - 3")
|
|
Stage_Remain: Optional[str] = Field(default=None, description="剩余理智关卡")
|
|
IfSkland: Optional[bool] = Field(default=None, description="是否启用森空岛签到")
|
|
SklandToken: Optional[str] = Field(default=None, description="SklandToken")
|
|
|
|
|
|
class MaaUserConfig_Data(BaseModel):
|
|
LastProxyDate: Optional[str] = Field(default=None, description="上次代理日期")
|
|
LastAnnihilationDate: Optional[str] = Field(
|
|
default=None, description="上次剿灭日期"
|
|
)
|
|
LastSklandDate: Optional[str] = Field(
|
|
default=None, description="上次森空岛签到日期"
|
|
)
|
|
ProxyTimes: Optional[int] = Field(default=None, description="代理次数")
|
|
IfPassCheck: Optional[bool] = Field(default=None, description="是否通过人工排查")
|
|
|
|
|
|
class MaaUserConfig_Task(BaseModel):
|
|
IfWakeUp: Optional[bool] = Field(default=None, description="开始唤醒")
|
|
IfRecruiting: Optional[bool] = Field(default=None, description="自动公招")
|
|
IfBase: Optional[bool] = Field(default=None, description="基建换班")
|
|
IfCombat: Optional[bool] = Field(default=None, description="刷理智")
|
|
IfMall: Optional[bool] = Field(default=None, description="获取信用及购物")
|
|
IfMission: Optional[bool] = Field(default=None, description="领取奖励")
|
|
IfAutoRoguelike: Optional[bool] = Field(default=None, description="自动肉鸽")
|
|
IfReclamation: Optional[bool] = Field(default=None, description="生息演算")
|
|
|
|
|
|
class UserConfig_Notify(BaseModel):
|
|
Enabled: Optional[bool] = Field(default=None, description="是否启用通知")
|
|
IfSendStatistic: Optional[bool] = Field(
|
|
default=None, description="是否发送统计信息"
|
|
)
|
|
IfSendSixStar: Optional[bool] = Field(default=None, description="是否发送高资喜报")
|
|
IfSendMail: Optional[bool] = Field(default=None, description="是否发送邮件通知")
|
|
ToAddress: Optional[str] = Field(default=None, description="邮件接收地址")
|
|
IfServerChan: Optional[bool] = Field(
|
|
default=None, description="是否使用Server酱推送"
|
|
)
|
|
ServerChanKey: Optional[str] = Field(default=None, description="ServerChanKey")
|
|
IfCompanyWebHookBot: Optional[bool] = Field(
|
|
default=None, description="是否使用Webhook推送"
|
|
)
|
|
CompanyWebHookBotUrl: Optional[str] = Field(
|
|
default=None, description="企微Webhook Bot URL"
|
|
)
|
|
CustomWebhooks: Optional[List[CustomWebhook]] = Field(
|
|
default=None, description="自定义Webhook列表"
|
|
)
|
|
|
|
|
|
class MaaUserConfig(BaseModel):
|
|
Info: Optional[MaaUserConfig_Info] = Field(default=None, description="基础信息")
|
|
Data: Optional[MaaUserConfig_Data] = Field(default=None, description="用户数据")
|
|
Task: Optional[MaaUserConfig_Task] = Field(default=None, description="任务列表")
|
|
Notify: Optional[UserConfig_Notify] = Field(default=None, description="单独通知")
|
|
|
|
|
|
class MaaConfig_Info(BaseModel):
|
|
Name: Optional[str] = Field(default=None, description="脚本名称")
|
|
Path: Optional[str] = Field(default=None, description="脚本路径")
|
|
|
|
|
|
class MaaConfig_Run(BaseModel):
|
|
TaskTransitionMethod: Optional[Literal["NoAction", "ExitGame", "ExitEmulator"]] = (
|
|
Field(default=None, description="简洁任务间切换方式")
|
|
)
|
|
ProxyTimesLimit: Optional[int] = Field(default=None, description="每日代理次数限制")
|
|
ADBSearchRange: Optional[int] = Field(default=None, description="ADB端口搜索范围")
|
|
RunTimesLimit: Optional[int] = Field(default=None, description="重试次数限制")
|
|
AnnihilationTimeLimit: Optional[int] = Field(
|
|
default=None, description="剿灭超时限制"
|
|
)
|
|
RoutineTimeLimit: Optional[int] = Field(default=None, description="日常超时限制")
|
|
AnnihilationWeeklyLimit: Optional[bool] = Field(
|
|
default=None, description="剿灭每周仅代理至上限"
|
|
)
|
|
|
|
|
|
class MaaConfig(BaseModel):
|
|
Info: Optional[MaaConfig_Info] = Field(default=None, description="脚本基础信息")
|
|
Run: Optional[MaaConfig_Run] = Field(default=None, description="脚本运行配置")
|
|
|
|
|
|
class GeneralUserConfig_Info(BaseModel):
|
|
|
|
Name: Optional[str] = Field(default=None, description="用户名")
|
|
Status: Optional[bool] = Field(default=None, description="用户状态")
|
|
RemainedDay: Optional[int] = Field(default=None, description="剩余天数")
|
|
IfScriptBeforeTask: Optional[bool] = Field(
|
|
default=None, description="是否在任务前执行脚本"
|
|
)
|
|
ScriptBeforeTask: Optional[str] = Field(default=None, description="任务前脚本路径")
|
|
IfScriptAfterTask: Optional[bool] = Field(
|
|
default=None, description="是否在任务后执行脚本"
|
|
)
|
|
ScriptAfterTask: Optional[str] = Field(default=None, description="任务后脚本路径")
|
|
Notes: Optional[str] = Field(default=None, description="备注")
|
|
|
|
|
|
class GeneralUserConfig_Data(BaseModel):
|
|
LastProxyDate: Optional[str] = Field(default=None, description="上次代理日期")
|
|
ProxyTimes: Optional[int] = Field(default=None, description="代理次数")
|
|
|
|
|
|
class GeneralUserConfig(BaseModel):
|
|
Info: Optional[GeneralUserConfig_Info] = Field(default=None, description="用户信息")
|
|
Data: Optional[GeneralUserConfig_Data] = Field(default=None, description="用户数据")
|
|
Notify: Optional[UserConfig_Notify] = Field(default=None, description="单独通知")
|
|
|
|
|
|
class GeneralConfig_Info(BaseModel):
|
|
Name: Optional[str] = Field(default=None, description="脚本名称")
|
|
RootPath: Optional[str] = Field(default=None, description="脚本根目录")
|
|
|
|
|
|
class GeneralConfig_Script(BaseModel):
|
|
ScriptPath: Optional[str] = Field(default=None, description="脚本可执行文件路径")
|
|
Arguments: Optional[str] = Field(default=None, description="脚本启动附加命令参数")
|
|
IfTrackProcess: Optional[bool] = Field(
|
|
default=None, description="是否追踪脚本子进程"
|
|
)
|
|
ConfigPath: Optional[str] = Field(default=None, description="配置文件路径")
|
|
ConfigPathMode: Optional[Literal["File", "Folder"]] = Field(
|
|
default=None, description="配置文件类型: 单个文件, 文件夹"
|
|
)
|
|
UpdateConfigMode: Optional[Literal["Never", "Success", "Failure", "Always"]] = (
|
|
Field(
|
|
default=None,
|
|
description="更新配置时机, 从不, 仅成功时, 仅失败时, 任务结束时",
|
|
)
|
|
)
|
|
LogPath: Optional[str] = Field(default=None, description="日志文件路径")
|
|
LogPathFormat: Optional[str] = Field(default=None, description="日志文件名格式")
|
|
LogTimeStart: Optional[int] = Field(default=None, description="日志时间戳开始位置")
|
|
LogTimeEnd: Optional[int] = Field(default=None, description="日志时间戳结束位置")
|
|
LogTimeFormat: Optional[str] = Field(default=None, description="日志时间戳格式")
|
|
SuccessLog: Optional[str] = Field(default=None, description="成功时日志")
|
|
ErrorLog: Optional[str] = Field(default=None, description="错误时日志")
|
|
|
|
|
|
class GeneralConfig_Game(BaseModel):
|
|
Enabled: Optional[bool] = Field(
|
|
default=None, description="游戏/模拟器相关功能是否启用"
|
|
)
|
|
Type: Optional[Literal["Emulator", "Client"]] = Field(
|
|
default=None, description="类型: 模拟器, PC端"
|
|
)
|
|
Path: Optional[str] = Field(default=None, description="游戏/模拟器程序路径")
|
|
Arguments: Optional[str] = Field(default=None, description="游戏/模拟器启动参数")
|
|
WaitTime: Optional[int] = Field(default=None, description="游戏/模拟器等待启动时间")
|
|
IfForceClose: Optional[bool] = Field(
|
|
default=None, description="是否强制关闭游戏/模拟器进程"
|
|
)
|
|
|
|
|
|
class GeneralConfig_Run(BaseModel):
|
|
ProxyTimesLimit: Optional[int] = Field(default=None, description="每日代理次数限制")
|
|
RunTimesLimit: Optional[int] = Field(default=None, description="重试次数限制")
|
|
RunTimeLimit: Optional[int] = Field(default=None, description="日志超时限制")
|
|
|
|
|
|
class GeneralConfig(BaseModel):
|
|
|
|
Info: Optional[GeneralConfig_Info] = Field(default=None, description="脚本基础信息")
|
|
Script: Optional[GeneralConfig_Script] = Field(default=None, description="脚本配置")
|
|
Game: Optional[GeneralConfig_Game] = Field(default=None, description="游戏配置")
|
|
Run: Optional[GeneralConfig_Run] = Field(default=None, description="运行配置")
|
|
|
|
|
|
class PlanIndexItem(BaseModel):
|
|
uid: str = Field(..., description="唯一标识符")
|
|
type: Literal["MaaPlanConfig"] = Field(..., description="配置类型")
|
|
|
|
|
|
class MaaPlanConfig_Info(BaseModel):
|
|
Name: Optional[str] = Field(default=None, description="计划表名称")
|
|
Mode: Optional[Literal["ALL", "Weekly"]] = Field(
|
|
default=None, description="计划表模式"
|
|
)
|
|
|
|
|
|
class MaaPlanConfig_Item(BaseModel):
|
|
MedicineNumb: Optional[int] = Field(default=None, description="吃理智药")
|
|
SeriesNumb: Optional[Literal["0", "6", "5", "4", "3", "2", "1", "-1"]] = Field(
|
|
None, description="连战次数"
|
|
)
|
|
Stage: Optional[str] = Field(default=None, description="关卡选择")
|
|
Stage_1: Optional[str] = Field(default=None, description="备选关卡 - 1")
|
|
Stage_2: Optional[str] = Field(default=None, description="备选关卡 - 2")
|
|
Stage_3: Optional[str] = Field(default=None, description="备选关卡 - 3")
|
|
Stage_Remain: Optional[str] = Field(default=None, description="剩余理智关卡")
|
|
|
|
|
|
class MaaPlanConfig(BaseModel):
|
|
|
|
Info: Optional[MaaPlanConfig_Info] = Field(default=None, description="基础信息")
|
|
ALL: Optional[MaaPlanConfig_Item] = Field(default=None, description="全局")
|
|
Monday: Optional[MaaPlanConfig_Item] = Field(default=None, description="周一")
|
|
Tuesday: Optional[MaaPlanConfig_Item] = Field(default=None, description="周二")
|
|
Wednesday: Optional[MaaPlanConfig_Item] = Field(default=None, description="周三")
|
|
Thursday: Optional[MaaPlanConfig_Item] = Field(default=None, description="周四")
|
|
Friday: Optional[MaaPlanConfig_Item] = Field(default=None, description="周五")
|
|
Saturday: Optional[MaaPlanConfig_Item] = Field(default=None, description="周六")
|
|
Sunday: Optional[MaaPlanConfig_Item] = Field(default=None, description="周日")
|
|
|
|
|
|
class HistoryIndexItem(BaseModel):
|
|
date: str = Field(..., description="日期")
|
|
status: Literal["完成", "异常"] = Field(..., description="状态")
|
|
jsonFile: str = Field(..., description="对应JSON文件")
|
|
|
|
|
|
class HistoryData(BaseModel):
|
|
index: Optional[List[HistoryIndexItem]] = Field(
|
|
default=None, description="历史记录索引列表"
|
|
)
|
|
recruit_statistics: Optional[Dict[str, int]] = Field(
|
|
default=None, description="公招统计数据, key为星级, value为对应的公招数量"
|
|
)
|
|
drop_statistics: Optional[Dict[str, Dict[str, int]]] = Field(
|
|
default=None,
|
|
description="掉落统计数据, 格式为 { '关卡号': { '掉落物': 数量 } }",
|
|
)
|
|
error_info: Optional[Dict[str, str]] = Field(
|
|
default=None, description="报错信息, key为时间戳, value为错误描述"
|
|
)
|
|
log_content: Optional[str] = Field(
|
|
default=None, description="日志内容, 仅在提取单条历史记录数据时返回"
|
|
)
|
|
|
|
|
|
class ScriptCreateIn(BaseModel):
|
|
type: Literal["MAA", "General"] = Field(
|
|
..., description="脚本类型: MAA脚本, 通用脚本"
|
|
)
|
|
|
|
|
|
class ScriptCreateOut(OutBase):
|
|
scriptId: str = Field(..., description="新创建的脚本ID")
|
|
data: Union[MaaConfig, GeneralConfig] = Field(..., description="脚本配置数据")
|
|
|
|
|
|
class ScriptGetIn(BaseModel):
|
|
scriptId: Optional[str] = Field(
|
|
default=None, description="脚本ID, 未携带时表示获取所有脚本数据"
|
|
)
|
|
|
|
|
|
class ScriptGetOut(OutBase):
|
|
index: List[ScriptIndexItem] = Field(..., description="脚本索引列表")
|
|
data: Dict[str, Union[MaaConfig, GeneralConfig]] = Field(
|
|
..., description="脚本数据字典, key来自于index列表的uid"
|
|
)
|
|
|
|
|
|
class ScriptUpdateIn(BaseModel):
|
|
scriptId: str = Field(..., description="脚本ID")
|
|
data: Union[MaaConfig, GeneralConfig] = Field(..., description="脚本更新数据")
|
|
|
|
|
|
class ScriptDeleteIn(BaseModel):
|
|
scriptId: str = Field(..., description="脚本ID")
|
|
|
|
|
|
class ScriptReorderIn(BaseModel):
|
|
indexList: List[str] = Field(..., description="脚本ID列表, 按新顺序排列")
|
|
|
|
|
|
class ScriptFileIn(BaseModel):
|
|
scriptId: str = Field(..., description="脚本ID")
|
|
jsonFile: str = Field(..., description="配置文件路径")
|
|
|
|
|
|
class ScriptUrlIn(BaseModel):
|
|
scriptId: str = Field(..., description="脚本ID")
|
|
url: str = Field(..., description="配置文件URL")
|
|
|
|
|
|
class ScriptUploadIn(BaseModel):
|
|
scriptId: str = Field(..., description="脚本ID")
|
|
config_name: str = Field(..., description="配置名称")
|
|
author: str = Field(..., description="作者")
|
|
description: str = Field(..., description="描述")
|
|
|
|
|
|
class UserInBase(BaseModel):
|
|
scriptId: str = Field(..., description="所属脚本ID")
|
|
|
|
|
|
class UserGetIn(UserInBase):
|
|
userId: Optional[str] = Field(
|
|
default=None, description="用户ID, 未携带时表示获取所有用户数据"
|
|
)
|
|
|
|
|
|
class UserGetOut(OutBase):
|
|
index: List[UserIndexItem] = Field(..., description="用户索引列表")
|
|
data: Dict[str, Union[MaaUserConfig, GeneralUserConfig]] = Field(
|
|
..., description="用户数据字典, key来自于index列表的uid"
|
|
)
|
|
|
|
|
|
class UserCreateOut(OutBase):
|
|
userId: str = Field(..., description="新创建的用户ID")
|
|
data: Union[MaaUserConfig, GeneralUserConfig] = Field(
|
|
..., description="用户配置数据"
|
|
)
|
|
|
|
|
|
class UserUpdateIn(UserInBase):
|
|
userId: str = Field(..., description="用户ID")
|
|
data: Union[MaaUserConfig, GeneralUserConfig] = Field(
|
|
..., description="用户更新数据"
|
|
)
|
|
|
|
|
|
class UserDeleteIn(UserInBase):
|
|
userId: str = Field(..., description="用户ID")
|
|
|
|
|
|
class UserReorderIn(UserInBase):
|
|
indexList: List[str] = Field(..., description="用户ID列表, 按新顺序排列")
|
|
|
|
|
|
class UserSetIn(UserInBase):
|
|
userId: str = Field(..., description="用户ID")
|
|
jsonFile: str = Field(..., description="JSON文件路径, 用于导入自定义基建文件")
|
|
|
|
|
|
class PlanCreateIn(BaseModel):
|
|
type: Literal["MaaPlan"]
|
|
|
|
|
|
class PlanCreateOut(OutBase):
|
|
planId: str = Field(..., description="新创建的计划ID")
|
|
data: MaaPlanConfig = Field(..., description="计划配置数据")
|
|
|
|
|
|
class PlanGetIn(BaseModel):
|
|
planId: Optional[str] = Field(
|
|
default=None, description="计划ID, 未携带时表示获取所有计划数据"
|
|
)
|
|
|
|
|
|
class PlanGetOut(OutBase):
|
|
index: List[PlanIndexItem] = Field(..., description="计划索引列表")
|
|
data: Dict[str, MaaPlanConfig] = Field(..., description="计划列表或单个计划数据")
|
|
|
|
|
|
class PlanUpdateIn(BaseModel):
|
|
planId: str = Field(..., description="计划ID")
|
|
data: MaaPlanConfig = Field(..., description="计划更新数据")
|
|
|
|
|
|
class PlanDeleteIn(BaseModel):
|
|
planId: str = Field(..., description="计划ID")
|
|
|
|
|
|
class PlanReorderIn(BaseModel):
|
|
indexList: List[str] = Field(..., description="计划ID列表, 按新顺序排列")
|
|
|
|
|
|
class QueueCreateOut(OutBase):
|
|
queueId: str = Field(..., description="新创建的队列ID")
|
|
data: QueueConfig = Field(..., description="队列配置数据")
|
|
|
|
|
|
class QueueGetIn(BaseModel):
|
|
queueId: Optional[str] = Field(
|
|
default=None, description="队列ID, 未携带时表示获取所有队列数据"
|
|
)
|
|
|
|
|
|
class QueueGetOut(OutBase):
|
|
index: List[QueueIndexItem] = Field(..., description="队列索引列表")
|
|
data: Dict[str, QueueConfig] = Field(
|
|
..., description="队列数据字典, key来自于index列表的uid"
|
|
)
|
|
|
|
|
|
class QueueUpdateIn(BaseModel):
|
|
queueId: str = Field(..., description="队列ID")
|
|
data: QueueConfig = Field(..., description="队列更新数据")
|
|
|
|
|
|
class QueueDeleteIn(BaseModel):
|
|
queueId: str = Field(..., description="队列ID")
|
|
|
|
|
|
class QueueReorderIn(BaseModel):
|
|
indexList: List[str] = Field(..., description="按新顺序排列的调度队列UID列表")
|
|
|
|
|
|
class QueueSetInBase(BaseModel):
|
|
queueId: str = Field(..., description="所属队列ID")
|
|
|
|
|
|
class TimeSetGetIn(QueueSetInBase):
|
|
timeSetId: Optional[str] = Field(
|
|
default=None, description="时间设置ID, 未携带时表示获取所有时间设置数据"
|
|
)
|
|
|
|
|
|
class TimeSetGetOut(OutBase):
|
|
index: List[TimeSetIndexItem] = Field(..., description="时间设置索引列表")
|
|
data: Dict[str, TimeSet] = Field(
|
|
..., description="时间设置数据字典, key来自于index列表的uid"
|
|
)
|
|
|
|
|
|
class TimeSetCreateOut(OutBase):
|
|
timeSetId: str = Field(..., description="新创建的时间设置ID")
|
|
data: TimeSet = Field(..., description="时间设置配置数据")
|
|
|
|
|
|
class TimeSetUpdateIn(QueueSetInBase):
|
|
timeSetId: str = Field(..., description="时间设置ID")
|
|
data: TimeSet = Field(..., description="时间设置更新数据")
|
|
|
|
|
|
class TimeSetDeleteIn(QueueSetInBase):
|
|
timeSetId: str = Field(..., description="时间设置ID")
|
|
|
|
|
|
class TimeSetReorderIn(QueueSetInBase):
|
|
indexList: List[str] = Field(..., description="时间设置ID列表, 按新顺序排列")
|
|
|
|
|
|
class QueueItemGetIn(QueueSetInBase):
|
|
queueItemId: Optional[str] = Field(
|
|
default=None, description="队列项ID, 未携带时表示获取所有队列项数据"
|
|
)
|
|
|
|
|
|
class QueueItemGetOut(OutBase):
|
|
index: List[QueueItemIndexItem] = Field(..., description="队列项索引列表")
|
|
data: Dict[str, QueueItem] = Field(
|
|
..., description="队列项数据字典, key来自于index列表的uid"
|
|
)
|
|
|
|
|
|
class QueueItemCreateOut(OutBase):
|
|
queueItemId: str = Field(..., description="新创建的队列项ID")
|
|
data: QueueItem = Field(..., description="队列项配置数据")
|
|
|
|
|
|
class QueueItemUpdateIn(QueueSetInBase):
|
|
queueItemId: str = Field(..., description="队列项ID")
|
|
data: QueueItem = Field(..., description="队列项更新数据")
|
|
|
|
|
|
class QueueItemDeleteIn(QueueSetInBase):
|
|
queueItemId: str = Field(..., description="队列项ID")
|
|
|
|
|
|
class QueueItemReorderIn(QueueSetInBase):
|
|
indexList: List[str] = Field(..., description="队列项ID列表, 按新顺序排列")
|
|
|
|
|
|
class DispatchIn(BaseModel):
|
|
taskId: str = Field(
|
|
...,
|
|
description="目标任务ID, 设置类任务可选对应脚本ID或用户ID, 代理类任务可选对应队列ID或脚本ID",
|
|
)
|
|
|
|
|
|
class TaskCreateIn(DispatchIn):
|
|
mode: Literal["自动代理", "人工排查", "设置脚本"] = Field(
|
|
..., description="任务模式"
|
|
)
|
|
|
|
|
|
class TaskCreateOut(OutBase):
|
|
websocketId: str = Field(..., description="新创建的任务ID")
|
|
|
|
|
|
class WebSocketMessage(BaseModel):
|
|
id: str = Field(..., description="消息ID, 为Main时表示消息来自主进程")
|
|
type: Literal["Update", "Message", "Info", "Signal"] = Field(
|
|
...,
|
|
description="消息类型 Update: 更新数据, Message: 请求弹出对话框, Info: 需要在UI显示的消息, Signal: 程序信号",
|
|
)
|
|
data: Dict[str, Any] = Field(..., description="消息数据, 具体内容根据type类型而定")
|
|
|
|
|
|
class PowerIn(BaseModel):
|
|
signal: Literal[
|
|
"NoAction", "Shutdown", "ShutdownForce", "Hibernate", "Sleep", "KillSelf"
|
|
] = Field(..., description="电源操作信号")
|
|
|
|
|
|
class HistorySearchIn(BaseModel):
|
|
mode: Literal["按日合并", "按周合并", "按月合并"] = Field(
|
|
..., description="合并模式"
|
|
)
|
|
start_date: str = Field(..., description="开始日期, 格式YYYY-MM-DD")
|
|
end_date: str = Field(..., description="结束日期, 格式YYYY-MM-DD")
|
|
|
|
|
|
class HistorySearchOut(OutBase):
|
|
data: Dict[str, Dict[str, HistoryData]] = Field(
|
|
...,
|
|
description="历史记录索引数据字典, 格式为 { '日期': { '用户名': [历史记录信息] } }",
|
|
)
|
|
|
|
|
|
class HistoryDataGetIn(BaseModel):
|
|
jsonPath: str = Field(..., description="需要提取数据的历史记录JSON文件")
|
|
|
|
|
|
class HistoryDataGetOut(OutBase):
|
|
data: HistoryData = Field(..., description="历史记录数据")
|
|
|
|
|
|
class SettingGetOut(OutBase):
|
|
data: GlobalConfig = Field(..., description="全局设置数据")
|
|
|
|
|
|
class SettingUpdateIn(BaseModel):
|
|
data: GlobalConfig = Field(..., description="全局设置需要更新的数据")
|
|
|
|
|
|
class UpdateCheckIn(BaseModel):
|
|
current_version: str = Field(..., description="当前前端版本号")
|
|
if_force: bool = Field(default=False, description="是否强制拉取更新信息")
|
|
|
|
|
|
class UpdateCheckOut(OutBase):
|
|
if_need_update: bool = Field(..., description="是否需要更新前端")
|
|
latest_version: str = Field(..., description="最新前端版本号")
|
|
update_info: Dict[str, List[str]] = Field(..., description="版本更新信息字典")
|
|
|
|
|
|
class WebhookTemplatesOut(OutBase):
|
|
data: Dict[str, Dict] = Field(..., description="Webhook模板数据")
|
|
|
|
|
|
class WebhookTestIn(BaseModel):
|
|
webhook: CustomWebhook = Field(..., description="要测试的Webhook配置")
|