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:␍␍␍
existing.url = url␍␍␍
existing.updated_at = datetime.now()␍␍␍
# 注意:已存在记录时保留其 is_enabled(后台禁用态不被同步覆盖)␍␍␍
db.commit()␍␍␍
continue␍␍␍
␍␍␍
@@ -350,7 +351,7 @@ def _sync_market_mcp_to_servers(db: Session):
␍␍␍
headers="{}",␍␍␍
␍␍␍
is_enabled=True,
is_enabled=(ma.status != "removed"),␍␍␍
␍␍␍
status="disconnected",␍␍␍
␍␍␍
@@ -680,6 +681,16 @@ async def delete_mcp_server(
␍␍␍
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.commit()␍␍␍
@@ -713,6 +724,16 @@ async def toggle_mcp_server(
server.is_enabled = not server.is_enabled␍␍␍
␍␍␍
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()␍␍␍
␍␍␍
@@ -883,4 +904,3 @@ async def list_mcp_resources(
"message": "ok",␍␍␍
␍␍␍
}␍␍␍