51 lines
2.2 KiB
Python
51 lines
2.2 KiB
Python
# ============================================================
|
||
# 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()
|