Files
ai-agent-admin/backend-fastapi/scripts/localize_builtin_agents.py
T
2026-06-08 18:14:59 +08:00

74 lines
2.1 KiB
Python

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Normalize legacy built-in agent records to Chinese.
Usage:
python scripts/localize_builtin_agents.py
python scripts/localize_builtin_agents.py --apply
"""
import argparse
import asyncio
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent.parent))
from sqlalchemy import select
from app.database import AsyncSessionLocal
from ai_platform.models import Agent
from ai_platform.services.agent_localization import normalize_builtin_agent_payload
def _agent_payload(agent: Agent) -> dict:
return {
"name": agent.name,
"code": agent.code,
"description": agent.description or "",
"persona": agent.persona or {},
}
async def localize_builtin_agents(apply: bool) -> None:
async with AsyncSessionLocal() as db:
result = await db.execute(
select(Agent).where(
Agent.is_deleted == False,
)
)
agents = result.scalars().all()
changed = []
for agent in agents:
original = _agent_payload(agent)
normalized = normalize_builtin_agent_payload(original)
if normalized == original:
continue
changed.append((agent, original, normalized))
print(f"{agent.code}: {original['name']} -> {normalized['name']}")
if apply:
agent.name = normalized["name"]
agent.description = normalized["description"]
agent.persona = normalized.get("persona") or {}
if apply:
await db.commit()
print(f"已更新 {len(changed)} 条内置智能体记录")
else:
await db.rollback()
print(f"dry-run: 将更新 {len(changed)} 条记录,确认后加 --apply 执行")
def main() -> None:
parser = argparse.ArgumentParser()
parser.add_argument("--apply", action="store_true", help="write changes to database")
args = parser.parse_args()
asyncio.run(localize_builtin_agents(args.apply))
if __name__ == "__main__":
main()