Files
SillyTavern_replica/test_worldbook_read.py
2026-05-01 15:44:14 +08:00

81 lines
2.6 KiB
Python

"""
测试世界书读取功能
"""
import sys
from pathlib import Path
# 添加backend目录到Python路径
backend_dir = Path(__file__).parent / "backend"
sys.path.insert(0, str(backend_dir))
from core.config import settings
from services.worldbook_service import WorldBookService
print("=" * 60)
print("世界书读取功能测试")
print("=" * 60)
print(f"\n1. 配置检查:")
print(f" 世界书目录: {settings.WORLDBOOKS_PATH}")
print(f" 目录存在: {settings.WORLDBOOKS_PATH.exists()}")
# 列出所有JSON文件
json_files = list(settings.WORLDBOOKS_PATH.glob("*.json"))
print(f" JSON文件数量: {len(json_files)}")
for f in json_files:
print(f" - {f.name}")
print(f"\n2. 测试读取世界书列表:")
try:
worldbooks = WorldBookService.list_worldbooks()
print(f" ✓ 成功读取世界书列表")
print(f" 世界书数量: {len(worldbooks)}")
for wb in worldbooks:
print(f" - {wb['name']} (条目数: {wb['entries_count']})")
except Exception as e:
print(f" ❌ 读取失败: {e}")
import traceback
traceback.print_exc()
if worldbooks:
# 测试读取第一个世界书的详细信息
first_book = worldbooks[0]
book_name = first_book['name']
print(f"\n3. 测试读取世界书详情: {book_name}")
try:
book_detail = WorldBookService.get_worldbook(book_name)
print(f" ✓ 成功读取世界书详情")
print(f" 名称: {book_detail.get('name')}")
print(f" 描述: {book_detail.get('description', '')}")
print(f" 条目数: {len(book_detail.get('entries', []))}")
except Exception as e:
print(f" ❌ 读取失败: {e}")
import traceback
traceback.print_exc()
# 测试分页功能
print(f"\n4. 测试分页功能:")
try:
result = WorldBookService.list_entries(book_name, page=1, page_size=5)
print(f" ✓ 分页查询成功")
print(f" 总条目数: {result['total']}")
print(f" 当前页: {result['page']}")
print(f" 每页数量: {result['page_size']}")
print(f" 总页数: {result['total_pages']}")
print(f" 返回条目数: {len(result['entries'])}")
if result['entries']:
print(f" 第一条目预览:")
first_entry = result['entries'][0]
print(f" UID: {first_entry.get('uid')}")
print(f" 内容长度: {len(first_entry.get('content', ''))}")
except Exception as e:
print(f" ❌ 分页查询失败: {e}")
import traceback
traceback.print_exc()
print("\n" + "=" * 60)
print("测试完成")
print("=" * 60)