aps-agent/scripts/seed_web_demo.py

51 lines
2.2 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ============================================================
# Web 端演示数据手动播种脚本
# 用法(仓库根目录):
# python scripts/seed_web_demo.py # 为 platform 租户播种到 server/data
# python scripts/seed_web_demo.py --tenant <JMS租户uuid> --user-id 1001
# python scripts/seed_web_demo.py --data-dir <aps-data-dir> --force
# 线上容器内补播:kubectl exec 进容器后执行同一命令(数据落 /app/server/data)
# ============================================================
from __future__ import annotations
import argparse
import os
import sys
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
def main() -> None:
parser = argparse.ArgumentParser(description="为 Web 端播种 APS 演示项目")
parser.add_argument("--tenant", default="platform", help="租户 uuid(JMS 租户填其 uuid;默认 platform)")
parser.add_argument("--user-id", type=int, default=1001, help="演示项目属主用户 ID")
parser.add_argument("--username", default="demo-admin", help="演示项目属主用户名")
parser.add_argument("--data-dir", default=None, help="数据目录(默认 APS_DATA_DIR 或 server/data)")
parser.add_argument("--force", action="store_true", help="忽略 marker/已有项目,强制再播一套")
args = parser.parse_args()
os.environ.setdefault("APS_MODE", "web")
os.environ["APS_WEB_DEMO_SEED"] = "1"
if args.data_dir:
os.environ["APS_DATA_DIR"] = os.path.abspath(args.data_dir)
from server.auth.context import IdentityContext
from server.state.web_demo import marker_path, seed_demo_workspace
identity = IdentityContext(
user_id=args.user_id,
username=args.username,
fullname="演示管理员",
tenant_uuid=args.tenant,
roles=("planner",),
)
seeded = seed_demo_workspace(identity, force=args.force)
if seeded:
print(f"OK 已为租户 {args.tenant} 播种演示项目 -> {os.environ.get('APS_DATA_DIR') or 'server/data'}")
else:
print(f"SKIP 租户 {args.tenant} 已有项目或已播种(marker: {marker_path(args.tenant)}),--force 可强制重播")
if __name__ == "__main__":
main()