maxkb/test_url_simple.py
2025-08-25 19:39:23 +08:00

94 lines
2.8 KiB
Python
Raw 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.

#!/usr/bin/env python3
"""
简单测试URL生成逻辑
"""
import os
import tempfile
import shutil
import uuid
# 设置环境变量
os.environ['MAXKB_BASE_URL'] = 'http://xbase.aitravelmaster.com'
def test_url_generation():
"""模拟adapter.py中的upload_file逻辑"""
# 创建测试文件
with tempfile.NamedTemporaryFile(mode='w', suffix='.pdf', delete=False) as f:
f.write('test')
file_path = f.name
try:
# 模拟upload_file的逻辑
storage_path = '/tmp/storage' # 模拟存储路径
# 创建存储目录
sub_dir = 'mineru'
storage_dir = os.path.join(storage_path, sub_dir, 'images')
os.makedirs(storage_dir, exist_ok=True)
# 生成文件名
file_ext = os.path.splitext(file_path)[1]
file_name = f"{uuid.uuid4().hex}{file_ext}"
dest_path = os.path.join(storage_dir, file_name)
# 复制文件
shutil.copy2(file_path, dest_path)
# 生成URL这是关键部分
relative_path = os.path.relpath(dest_path, storage_path)
relative_path = relative_path.replace(os.path.sep, '/')
# 检查环境变量
base_url = os.getenv('MAXKB_BASE_URL', '')
print(f"MAXKB_BASE_URL from env: '{base_url}'")
print(f"Relative path: {relative_path}")
if base_url:
result_url = f"{base_url.rstrip('/')}/storage/{relative_path}"
print(f"✅ Generated full URL: {result_url}")
else:
result_url = f"/storage/{relative_path}"
print(f"⚠️ Generated relative URL: {result_url}")
# 验证URL格式
if result_url.startswith(('http://', 'https://')):
print("✅ URL is valid for Cloud API")
else:
print("❌ URL is NOT valid for Cloud API (must start with http:// or https://)")
return result_url
finally:
# 清理
if os.path.exists(file_path):
os.unlink(file_path)
# 清理存储目录
if os.path.exists('/tmp/storage'):
shutil.rmtree('/tmp/storage')
if __name__ == "__main__":
print("=" * 60)
print("Testing URL Generation Logic")
print("=" * 60)
print()
# 测试1有MAXKB_BASE_URL
print("Test 1: With MAXKB_BASE_URL set")
print("-" * 40)
url1 = test_url_generation()
print("\n" + "=" * 60)
# 测试2没有MAXKB_BASE_URL
print("\nTest 2: Without MAXKB_BASE_URL")
print("-" * 40)
os.environ['MAXKB_BASE_URL'] = ''
url2 = test_url_generation()
print("\n" + "=" * 60)
print("Summary:")
print(f"With MAXKB_BASE_URL: {url1}")
print(f"Without MAXKB_BASE_URL: {url2}")
print("=" * 60)