fix: 主要核心后端添加报错捕获机制

This commit is contained in:
DLmaster361
2025-09-28 20:38:54 +08:00
parent dfc403733f
commit 06770eb3cc
36 changed files with 357 additions and 264 deletions

View File

@@ -1,6 +1,7 @@
# AUTO-MAS: A Multi-Script, Multi-Config Management and Automation Software
# Copyright © 2024-2025 DLmaster361
# Copyright © 2025 MoeSnowyFox
# Copyright © 2025 AUTO-MAS Team
# This file is part of AUTO-MAS.
@@ -99,15 +100,18 @@ async def test_notify() -> OutBase:
@router.post(
"/webhook/create", summary="创建自定义Webhook", response_model=OutBase, status_code=200
"/webhook/create",
summary="创建自定义Webhook",
response_model=OutBase,
status_code=200,
)
async def create_webhook(webhook_data: dict = Body(...)) -> OutBase:
"""创建自定义Webhook"""
try:
# 生成唯一ID
webhook_id = str(uuid.uuid4())
# 创建webhook配置
webhook_config = {
"id": webhook_id,
@@ -116,26 +120,22 @@ async def create_webhook(webhook_data: dict = Body(...)) -> OutBase:
"template": webhook_data.get("template", ""),
"enabled": webhook_data.get("enabled", True),
"headers": webhook_data.get("headers", {}),
"method": webhook_data.get("method", "POST")
"method": webhook_data.get("method", "POST"),
}
# 获取当前配置
current_config = await Config.get_setting()
custom_webhooks = current_config.get("Notify", {}).get("CustomWebhooks", [])
# 添加新webhook
custom_webhooks.append(webhook_config)
# 更新配置
update_data = {
"Notify": {
"CustomWebhooks": custom_webhooks
}
}
update_data = {"Notify": {"CustomWebhooks": custom_webhooks}}
await Config.update_setting(update_data)
return OutBase(message=f"Webhook '{webhook_config['name']}' 创建成功")
except Exception as e:
return OutBase(
code=500, status="error", message=f"{type(e).__name__}: {str(e)}"
@@ -143,48 +143,57 @@ async def create_webhook(webhook_data: dict = Body(...)) -> OutBase:
@router.post(
"/webhook/update", summary="更新自定义Webhook", response_model=OutBase, status_code=200
"/webhook/update",
summary="更新自定义Webhook",
response_model=OutBase,
status_code=200,
)
async def update_webhook(webhook_data: dict = Body(...)) -> OutBase:
"""更新自定义Webhook"""
try:
webhook_id = webhook_data.get("id")
if not webhook_id:
return OutBase(code=400, status="error", message="缺少Webhook ID")
# 获取当前配置
current_config = await Config.get_setting()
custom_webhooks = current_config.get("Notify", {}).get("CustomWebhooks", [])
# 查找并更新webhook
updated = False
for i, webhook in enumerate(custom_webhooks):
if webhook.get("id") == webhook_id:
custom_webhooks[i].update({
"name": webhook_data.get("name", webhook.get("name", "")),
"url": webhook_data.get("url", webhook.get("url", "")),
"template": webhook_data.get("template", webhook.get("template", "")),
"enabled": webhook_data.get("enabled", webhook.get("enabled", True)),
"headers": webhook_data.get("headers", webhook.get("headers", {})),
"method": webhook_data.get("method", webhook.get("method", "POST"))
})
custom_webhooks[i].update(
{
"name": webhook_data.get("name", webhook.get("name", "")),
"url": webhook_data.get("url", webhook.get("url", "")),
"template": webhook_data.get(
"template", webhook.get("template", "")
),
"enabled": webhook_data.get(
"enabled", webhook.get("enabled", True)
),
"headers": webhook_data.get(
"headers", webhook.get("headers", {})
),
"method": webhook_data.get(
"method", webhook.get("method", "POST")
),
}
)
updated = True
break
if not updated:
return OutBase(code=404, status="error", message="Webhook不存在")
# 更新配置
update_data = {
"Notify": {
"CustomWebhooks": custom_webhooks
}
}
update_data = {"Notify": {"CustomWebhooks": custom_webhooks}}
await Config.update_setting(update_data)
return OutBase(message="Webhook更新成功")
except Exception as e:
return OutBase(
code=500, status="error", message=f"{type(e).__name__}: {str(e)}"
@@ -192,37 +201,36 @@ async def update_webhook(webhook_data: dict = Body(...)) -> OutBase:
@router.post(
"/webhook/delete", summary="删除自定义Webhook", response_model=OutBase, status_code=200
"/webhook/delete",
summary="删除自定义Webhook",
response_model=OutBase,
status_code=200,
)
async def delete_webhook(webhook_data: dict = Body(...)) -> OutBase:
"""删除自定义Webhook"""
try:
webhook_id = webhook_data.get("id")
if not webhook_id:
return OutBase(code=400, status="error", message="缺少Webhook ID")
# 获取当前配置
current_config = await Config.get_setting()
custom_webhooks = current_config.get("Notify", {}).get("CustomWebhooks", [])
# 查找并删除webhook
original_length = len(custom_webhooks)
custom_webhooks = [w for w in custom_webhooks if w.get("id") != webhook_id]
if len(custom_webhooks) == original_length:
return OutBase(code=404, status="error", message="Webhook不存在")
# 更新配置
update_data = {
"Notify": {
"CustomWebhooks": custom_webhooks
}
}
update_data = {"Notify": {"CustomWebhooks": custom_webhooks}}
await Config.update_setting(update_data)
return OutBase(message="Webhook删除成功")
except Exception as e:
return OutBase(
code=500, status="error", message=f"{type(e).__name__}: {str(e)}"
@@ -230,11 +238,14 @@ async def delete_webhook(webhook_data: dict = Body(...)) -> OutBase:
@router.post(
"/webhook/test", summary="测试自定义Webhook", response_model=OutBase, status_code=200
"/webhook/test",
summary="测试自定义Webhook",
response_model=OutBase,
status_code=200,
)
async def test_webhook(webhook_data: dict = Body(...)) -> OutBase:
"""测试自定义Webhook"""
try:
webhook_config = {
"name": webhook_data.get("name", "测试Webhook"),
@@ -242,18 +253,16 @@ async def test_webhook(webhook_data: dict = Body(...)) -> OutBase:
"template": webhook_data.get("template", ""),
"enabled": True,
"headers": webhook_data.get("headers", {}),
"method": webhook_data.get("method", "POST")
"method": webhook_data.get("method", "POST"),
}
await Notify.CustomWebhookPush(
"AUTO-MAS Webhook测试",
"这是一条测试消息如果您收到此消息说明Webhook配置正确",
webhook_config
webhook_config,
)
return OutBase(message="Webhook测试成功")
except Exception as e:
return OutBase(
code=500, status="error", message=f"Webhook测试失败: {str(e)}"
)
return OutBase(code=500, status="error", message=f"Webhook测试失败: {str(e)}")