落地并存测服全端:智能体 Graph/路由、后台切 8180、主账与部署脚本齐备,便于线上重发与验收。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
"""
|
||||
运行账迁移 CLI。
|
||||
|
||||
用法:
|
||||
python -m agent.runtime_db.migrate --list
|
||||
python -m agent.runtime_db.migrate
|
||||
|
||||
需配置 PG_DSN 或 PG_HOST/PG_DATABASE/PG_USER;目标库必须是 inquiry_robot_runtime(禁止 ytd_runtime)。
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import logging
|
||||
import sys
|
||||
|
||||
from agent.config import get_settings
|
||||
from agent.runtime_db import apply_migrations, assert_safe_database, list_migration_files
|
||||
|
||||
|
||||
def main(argv: list[str] | None = None) -> int:
|
||||
logging.basicConfig(level=logging.INFO, format="%(levelname)s %(message)s")
|
||||
parser = argparse.ArgumentParser(description="inquiry_robot_runtime 迁移")
|
||||
parser.add_argument("--list", action="store_true", help="只列出 SQL 文件,不连库")
|
||||
args = parser.parse_args(argv)
|
||||
|
||||
if args.list:
|
||||
for name in list_migration_files():
|
||||
print(name)
|
||||
return 0
|
||||
|
||||
settings = get_settings()
|
||||
dsn = settings.resolve_pg_dsn()
|
||||
if not dsn:
|
||||
logging.error("未配置 PG_DSN / PG_*,无法迁移")
|
||||
return 2
|
||||
try:
|
||||
db = assert_safe_database(dsn)
|
||||
logging.info("目标库 %s", db)
|
||||
applied = apply_migrations(settings)
|
||||
logging.info("新应用 %s 个迁移: %s", len(applied), applied or "(无)")
|
||||
return 0
|
||||
except Exception as exc: # noqa: BLE001
|
||||
logging.exception("迁移失败: %s", exc)
|
||||
return 1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user