fix: MCP后台删除/禁用同步清理market_apps源头,避免被_sync复活

This commit is contained in:
QihuAI Design committed 2026-07-16 20:09:16 +08:00
1 parent 6331e84185
commit ab90ac9473
1 file changed
+22 -2
+22 -2
View File
@@ -313,6 +313,7 @@ def _sync_market_mcp_to_servers(db: Session):
if url:␍␍␍ if url:␍␍␍
existing.url = url␍␍␍ existing.url = url␍␍␍
existing.updated_at = datetime.now()␍␍␍ existing.updated_at = datetime.now()␍␍␍
# 注意:已存在记录时保留其 is_enabled(后台禁用态不被同步覆盖)␍␍␍
db.commit()␍␍␍ db.commit()␍␍␍
continue␍␍␍ continue␍␍␍
␍␍␍ ␍␍␍
@@ -350,7 +351,7 @@ def _sync_market_mcp_to_servers(db: Session):
␍␍␍ ␍␍␍
headers="{}",␍␍␍ headers="{}",␍␍␍
␍␍␍ ␍␍␍
is_enabled=True, is_enabled=(ma.status != "removed"),␍␍␍
␍␍␍ ␍␍␍
status="disconnected",␍␍␍ status="disconnected",␍␍␍
␍␍␍ ␍␍␍
@@ -680,6 +681,16 @@ async def delete_mcp_server(
␍␍␍ ␍␍␍
name = server.name␍␍␍ name = server.name␍␍␍
␍␍␍ ␍␍␍
# 将源头 MarketApp(type='mcp')状态置为 removed,避免 _sync 在下次查询时又把 mcp_servers 复活(market_apps 被 app_installations 等外键引用,不能直接删除)␍␍
try:␍␍␍
from ...models import MarketApp␍␍␍
market_app = db.query(MarketApp).filter(MarketApp.id == server_id).first()␍␍␍
if market_app:␍␍␍
market_app.status = "removed"␍␍
market_app.updated_at = datetime.now()␍␍
db.add(market_app)␍␍
except Exception:␍␍␍
pass␍␍␍
db.delete(server)␍␍␍ db.delete(server)␍␍␍
␍␍␍ ␍␍␍
db.commit()␍␍␍ db.commit()␍␍␍
@@ -713,6 +724,16 @@ async def toggle_mcp_server(
server.is_enabled = not server.is_enabled␍␍␍ server.is_enabled = not server.is_enabled␍␍␍
␍␍␍ ␍␍␍
server.updated_at = datetime.now()␍␍␍ server.updated_at = datetime.now()␍␍␍
# 同步源头 MarketApp 状态:禁用 -> status='removed',启用 -> status='published'␍␍␍
try:␍␍␍
from ...models import MarketApp␍␍␍
market_app = db.query(MarketApp).filter(MarketApp.id == server_id).first()␍␍␍
if market_app:␍␍␍
market_app.status = "removed" if not server.is_enabled else "published"␍␍␍
market_app.updated_at = datetime.now()␍␍␍
db.add(market_app)␍␍␍
except Exception:␍␍␍
pass␍␍␍
␍␍␍ ␍␍␍
db.commit()␍␍␍ db.commit()␍␍␍
␍␍␍ ␍␍␍
@@ -883,4 +904,3 @@ async def list_mcp_resources(
"message": "ok",␍␍␍ "message": "ok",␍␍␍
␍␍␍ ␍␍␍
}␍␍␍ }␍␍␍