fix: MCP后台删除/禁用同步清理market_apps源头,避免被_sync复活
This commit is contained in:
1 parent
6331e84185
commit
ab90ac9473
1 file changed
+22
-2
@@ -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",␍␍␍
|
||||||
␍␍␍
|
␍␍␍
|
||||||
}␍␍␍
|
}␍␍␍
|
||||||
|
|
||||||
Reference in new issue
Block a user