76 lines
2.5 KiB
Python
76 lines
2.5 KiB
Python
|
|
# -*- coding: utf-8 -*-
|
|||
|
|
"""
|
|||
|
|
清理流程测试产生的数据:persons(测试自动创建_、测试新人物_)、chapters(t 开头的 6 位数字 id)
|
|||
|
|
用法:cd scripts/test && python process/cleanup_test_data.py
|
|||
|
|
"""
|
|||
|
|
import os
|
|||
|
|
import re
|
|||
|
|
import sys
|
|||
|
|
|
|||
|
|
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|||
|
|
|
|||
|
|
import requests
|
|||
|
|
|
|||
|
|
API_BASE = os.environ.get("SOUL_API_BASE", "http://localhost:8080").rstrip("/")
|
|||
|
|
ADMIN_USER = os.environ.get("SOUL_ADMIN_USERNAME", "admin")
|
|||
|
|
ADMIN_PASS = os.environ.get("SOUL_ADMIN_PASSWORD", "admin123")
|
|||
|
|
|
|||
|
|
|
|||
|
|
def main():
|
|||
|
|
r = requests.post(
|
|||
|
|
f"{API_BASE}/api/admin",
|
|||
|
|
json={"username": ADMIN_USER, "password": ADMIN_PASS},
|
|||
|
|
timeout=10,
|
|||
|
|
)
|
|||
|
|
if not r.json().get("success") or not r.json().get("token"):
|
|||
|
|
print("登录失败")
|
|||
|
|
return 1
|
|||
|
|
token = r.json()["token"]
|
|||
|
|
headers = {"Authorization": f"Bearer {token}", "Content-Type": "application/json"}
|
|||
|
|
|
|||
|
|
# 1. 删除测试 Person
|
|||
|
|
rp = requests.get(f"{API_BASE}/api/db/persons", headers=headers, timeout=10)
|
|||
|
|
if rp.json().get("success"):
|
|||
|
|
persons = rp.json().get("persons") or []
|
|||
|
|
for p in persons:
|
|||
|
|
name = p.get("name") or ""
|
|||
|
|
if name.startswith("测试自动创建_") or name.startswith("测试新人物_"):
|
|||
|
|
pid = p.get("personId")
|
|||
|
|
rd = requests.delete(
|
|||
|
|
f"{API_BASE}/api/db/persons?personId={pid}",
|
|||
|
|
headers=headers,
|
|||
|
|
timeout=10,
|
|||
|
|
)
|
|||
|
|
if rd.json().get("success"):
|
|||
|
|
print(f" 已删除 Person: {name} ({pid})")
|
|||
|
|
else:
|
|||
|
|
print(f" 删除 Person 失败: {name} - {rd.json()}")
|
|||
|
|
|
|||
|
|
# 2. 删除测试 Chapter(id 形如 t123456)
|
|||
|
|
rl = requests.get(
|
|||
|
|
f"{API_BASE}/api/db/book?action=list",
|
|||
|
|
headers=headers,
|
|||
|
|
timeout=10,
|
|||
|
|
)
|
|||
|
|
if rl.json().get("success"):
|
|||
|
|
sections = rl.json().get("sections") or []
|
|||
|
|
for s in sections:
|
|||
|
|
sid = s.get("id") or ""
|
|||
|
|
if re.match(r"^t\d{6}$", sid):
|
|||
|
|
rd = requests.delete(
|
|||
|
|
f"{API_BASE}/api/db/book?id={sid}",
|
|||
|
|
headers=headers,
|
|||
|
|
timeout=10,
|
|||
|
|
)
|
|||
|
|
if rd.json().get("success"):
|
|||
|
|
print(f" 已删除 Chapter: {sid} ({s.get('title', '')})")
|
|||
|
|
else:
|
|||
|
|
print(f" 删除 Chapter 失败: {sid} - {rd.json()}")
|
|||
|
|
|
|||
|
|
print("清理完成")
|
|||
|
|
return 0
|
|||
|
|
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
sys.exit(main())
|