fix: auto-fix code issues (cron)
- 修复重复导入/字段 - 修复异常处理 - 修复PEP8格式问题 - 添加类型注解 - 修复重复函数定义 (health_check, create_webhook_endpoint, etc) - 修复未定义名称 (SearchOperator, TenantTier, Query, Body, logger) - 修复 workflow_manager.py 的类定义重复问题 - 添加缺失的导入
This commit is contained in:
@@ -10,7 +10,12 @@ InsightFlow Phase 8 Task 6: Developer Ecosystem Test Script
|
||||
4. 开发者文档与示例代码
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
from developer_ecosystem_manager import (
|
||||
DeveloperEcosystemManager,
|
||||
SDKLanguage, TemplateCategory,
|
||||
PluginCategory, PluginStatus,
|
||||
DeveloperStatus
|
||||
)
|
||||
import sys
|
||||
import os
|
||||
import uuid
|
||||
@@ -21,18 +26,10 @@ backend_dir = os.path.dirname(os.path.abspath(__file__))
|
||||
if backend_dir not in sys.path:
|
||||
sys.path.insert(0, backend_dir)
|
||||
|
||||
from developer_ecosystem_manager import (
|
||||
DeveloperEcosystemManager,
|
||||
SDKLanguage, SDKStatus,
|
||||
TemplateCategory, TemplateStatus,
|
||||
PluginCategory, PluginStatus,
|
||||
DeveloperStatus
|
||||
)
|
||||
|
||||
|
||||
class TestDeveloperEcosystem:
|
||||
"""开发者生态系统测试类"""
|
||||
|
||||
|
||||
def __init__(self):
|
||||
self.manager = DeveloperEcosystemManager()
|
||||
self.test_results = []
|
||||
@@ -44,7 +41,7 @@ class TestDeveloperEcosystem:
|
||||
'code_example': [],
|
||||
'portal_config': []
|
||||
}
|
||||
|
||||
|
||||
def log(self, message: str, success: bool = True):
|
||||
"""记录测试结果"""
|
||||
status = "✅" if success else "❌"
|
||||
@@ -54,13 +51,13 @@ class TestDeveloperEcosystem:
|
||||
'success': success,
|
||||
'timestamp': datetime.now().isoformat()
|
||||
})
|
||||
|
||||
|
||||
def run_all_tests(self):
|
||||
"""运行所有测试"""
|
||||
print("=" * 60)
|
||||
print("InsightFlow Phase 8 Task 6: Developer Ecosystem Tests")
|
||||
print("=" * 60)
|
||||
|
||||
|
||||
# SDK Tests
|
||||
print("\n📦 SDK Release & Management Tests")
|
||||
print("-" * 40)
|
||||
@@ -70,7 +67,7 @@ class TestDeveloperEcosystem:
|
||||
self.test_sdk_update()
|
||||
self.test_sdk_publish()
|
||||
self.test_sdk_version_add()
|
||||
|
||||
|
||||
# Template Market Tests
|
||||
print("\n📋 Template Market Tests")
|
||||
print("-" * 40)
|
||||
@@ -80,7 +77,7 @@ class TestDeveloperEcosystem:
|
||||
self.test_template_approve()
|
||||
self.test_template_publish()
|
||||
self.test_template_review()
|
||||
|
||||
|
||||
# Plugin Market Tests
|
||||
print("\n🔌 Plugin Market Tests")
|
||||
print("-" * 40)
|
||||
@@ -90,7 +87,7 @@ class TestDeveloperEcosystem:
|
||||
self.test_plugin_review()
|
||||
self.test_plugin_publish()
|
||||
self.test_plugin_review_add()
|
||||
|
||||
|
||||
# Developer Profile Tests
|
||||
print("\n👤 Developer Profile Tests")
|
||||
print("-" * 40)
|
||||
@@ -98,29 +95,29 @@ class TestDeveloperEcosystem:
|
||||
self.test_developer_profile_get()
|
||||
self.test_developer_verify()
|
||||
self.test_developer_stats_update()
|
||||
|
||||
|
||||
# Code Examples Tests
|
||||
print("\n💻 Code Examples Tests")
|
||||
print("-" * 40)
|
||||
self.test_code_example_create()
|
||||
self.test_code_example_list()
|
||||
self.test_code_example_get()
|
||||
|
||||
|
||||
# Portal Config Tests
|
||||
print("\n🌐 Developer Portal Tests")
|
||||
print("-" * 40)
|
||||
self.test_portal_config_create()
|
||||
self.test_portal_config_get()
|
||||
|
||||
|
||||
# Revenue Tests
|
||||
print("\n💰 Developer Revenue Tests")
|
||||
print("-" * 40)
|
||||
self.test_revenue_record()
|
||||
self.test_revenue_summary()
|
||||
|
||||
|
||||
# Print Summary
|
||||
self.print_summary()
|
||||
|
||||
|
||||
def test_sdk_create(self):
|
||||
"""测试创建 SDK"""
|
||||
try:
|
||||
@@ -142,7 +139,7 @@ class TestDeveloperEcosystem:
|
||||
)
|
||||
self.created_ids['sdk'].append(sdk.id)
|
||||
self.log(f"Created SDK: {sdk.name} ({sdk.id})")
|
||||
|
||||
|
||||
# Create JavaScript SDK
|
||||
sdk_js = self.manager.create_sdk_release(
|
||||
name="InsightFlow JavaScript SDK",
|
||||
@@ -162,27 +159,27 @@ class TestDeveloperEcosystem:
|
||||
)
|
||||
self.created_ids['sdk'].append(sdk_js.id)
|
||||
self.log(f"Created SDK: {sdk_js.name} ({sdk_js.id})")
|
||||
|
||||
|
||||
except Exception as e:
|
||||
self.log(f"Failed to create SDK: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_sdk_list(self):
|
||||
"""测试列出 SDK"""
|
||||
try:
|
||||
sdks = self.manager.list_sdk_releases()
|
||||
self.log(f"Listed {len(sdks)} SDKs")
|
||||
|
||||
|
||||
# Test filter by language
|
||||
python_sdks = self.manager.list_sdk_releases(language=SDKLanguage.PYTHON)
|
||||
self.log(f"Found {len(python_sdks)} Python SDKs")
|
||||
|
||||
|
||||
# Test search
|
||||
search_results = self.manager.list_sdk_releases(search="Python")
|
||||
self.log(f"Search found {len(search_results)} SDKs")
|
||||
|
||||
|
||||
except Exception as e:
|
||||
self.log(f"Failed to list SDKs: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_sdk_get(self):
|
||||
"""测试获取 SDK 详情"""
|
||||
try:
|
||||
@@ -194,7 +191,7 @@ class TestDeveloperEcosystem:
|
||||
self.log("SDK not found", success=False)
|
||||
except Exception as e:
|
||||
self.log(f"Failed to get SDK: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_sdk_update(self):
|
||||
"""测试更新 SDK"""
|
||||
try:
|
||||
@@ -207,7 +204,7 @@ class TestDeveloperEcosystem:
|
||||
self.log(f"Updated SDK: {sdk.name}")
|
||||
except Exception as e:
|
||||
self.log(f"Failed to update SDK: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_sdk_publish(self):
|
||||
"""测试发布 SDK"""
|
||||
try:
|
||||
@@ -217,7 +214,7 @@ class TestDeveloperEcosystem:
|
||||
self.log(f"Published SDK: {sdk.name} (status: {sdk.status.value})")
|
||||
except Exception as e:
|
||||
self.log(f"Failed to publish SDK: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_sdk_version_add(self):
|
||||
"""测试添加 SDK 版本"""
|
||||
try:
|
||||
@@ -234,7 +231,7 @@ class TestDeveloperEcosystem:
|
||||
self.log(f"Added SDK version: {version.version}")
|
||||
except Exception as e:
|
||||
self.log(f"Failed to add SDK version: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_template_create(self):
|
||||
"""测试创建模板"""
|
||||
try:
|
||||
@@ -259,7 +256,7 @@ class TestDeveloperEcosystem:
|
||||
)
|
||||
self.created_ids['template'].append(template.id)
|
||||
self.log(f"Created template: {template.name} ({template.id})")
|
||||
|
||||
|
||||
# Create free template
|
||||
template_free = self.manager.create_template(
|
||||
name="通用实体识别模板",
|
||||
@@ -274,27 +271,27 @@ class TestDeveloperEcosystem:
|
||||
)
|
||||
self.created_ids['template'].append(template_free.id)
|
||||
self.log(f"Created free template: {template_free.name}")
|
||||
|
||||
|
||||
except Exception as e:
|
||||
self.log(f"Failed to create template: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_template_list(self):
|
||||
"""测试列出模板"""
|
||||
try:
|
||||
templates = self.manager.list_templates()
|
||||
self.log(f"Listed {len(templates)} templates")
|
||||
|
||||
|
||||
# Filter by category
|
||||
medical_templates = self.manager.list_templates(category=TemplateCategory.MEDICAL)
|
||||
self.log(f"Found {len(medical_templates)} medical templates")
|
||||
|
||||
|
||||
# Filter by price
|
||||
free_templates = self.manager.list_templates(max_price=0)
|
||||
self.log(f"Found {len(free_templates)} free templates")
|
||||
|
||||
|
||||
except Exception as e:
|
||||
self.log(f"Failed to list templates: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_template_get(self):
|
||||
"""测试获取模板详情"""
|
||||
try:
|
||||
@@ -304,7 +301,7 @@ class TestDeveloperEcosystem:
|
||||
self.log(f"Retrieved template: {template.name}")
|
||||
except Exception as e:
|
||||
self.log(f"Failed to get template: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_template_approve(self):
|
||||
"""测试审核通过模板"""
|
||||
try:
|
||||
@@ -317,7 +314,7 @@ class TestDeveloperEcosystem:
|
||||
self.log(f"Approved template: {template.name}")
|
||||
except Exception as e:
|
||||
self.log(f"Failed to approve template: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_template_publish(self):
|
||||
"""测试发布模板"""
|
||||
try:
|
||||
@@ -327,7 +324,7 @@ class TestDeveloperEcosystem:
|
||||
self.log(f"Published template: {template.name}")
|
||||
except Exception as e:
|
||||
self.log(f"Failed to publish template: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_template_review(self):
|
||||
"""测试添加模板评价"""
|
||||
try:
|
||||
@@ -343,7 +340,7 @@ class TestDeveloperEcosystem:
|
||||
self.log(f"Added template review: {review.rating} stars")
|
||||
except Exception as e:
|
||||
self.log(f"Failed to add template review: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_plugin_create(self):
|
||||
"""测试创建插件"""
|
||||
try:
|
||||
@@ -371,7 +368,7 @@ class TestDeveloperEcosystem:
|
||||
)
|
||||
self.created_ids['plugin'].append(plugin.id)
|
||||
self.log(f"Created plugin: {plugin.name} ({plugin.id})")
|
||||
|
||||
|
||||
# Create free plugin
|
||||
plugin_free = self.manager.create_plugin(
|
||||
name="数据导出插件",
|
||||
@@ -386,23 +383,23 @@ class TestDeveloperEcosystem:
|
||||
)
|
||||
self.created_ids['plugin'].append(plugin_free.id)
|
||||
self.log(f"Created free plugin: {plugin_free.name}")
|
||||
|
||||
|
||||
except Exception as e:
|
||||
self.log(f"Failed to create plugin: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_plugin_list(self):
|
||||
"""测试列出插件"""
|
||||
try:
|
||||
plugins = self.manager.list_plugins()
|
||||
self.log(f"Listed {len(plugins)} plugins")
|
||||
|
||||
|
||||
# Filter by category
|
||||
integration_plugins = self.manager.list_plugins(category=PluginCategory.INTEGRATION)
|
||||
self.log(f"Found {len(integration_plugins)} integration plugins")
|
||||
|
||||
|
||||
except Exception as e:
|
||||
self.log(f"Failed to list plugins: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_plugin_get(self):
|
||||
"""测试获取插件详情"""
|
||||
try:
|
||||
@@ -412,7 +409,7 @@ class TestDeveloperEcosystem:
|
||||
self.log(f"Retrieved plugin: {plugin.name}")
|
||||
except Exception as e:
|
||||
self.log(f"Failed to get plugin: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_plugin_review(self):
|
||||
"""测试审核插件"""
|
||||
try:
|
||||
@@ -427,7 +424,7 @@ class TestDeveloperEcosystem:
|
||||
self.log(f"Reviewed plugin: {plugin.name} ({plugin.status.value})")
|
||||
except Exception as e:
|
||||
self.log(f"Failed to review plugin: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_plugin_publish(self):
|
||||
"""测试发布插件"""
|
||||
try:
|
||||
@@ -437,7 +434,7 @@ class TestDeveloperEcosystem:
|
||||
self.log(f"Published plugin: {plugin.name}")
|
||||
except Exception as e:
|
||||
self.log(f"Failed to publish plugin: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_plugin_review_add(self):
|
||||
"""测试添加插件评价"""
|
||||
try:
|
||||
@@ -453,13 +450,13 @@ class TestDeveloperEcosystem:
|
||||
self.log(f"Added plugin review: {review.rating} stars")
|
||||
except Exception as e:
|
||||
self.log(f"Failed to add plugin review: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_developer_profile_create(self):
|
||||
"""测试创建开发者档案"""
|
||||
try:
|
||||
# Generate unique user IDs
|
||||
unique_id = uuid.uuid4().hex[:8]
|
||||
|
||||
|
||||
profile = self.manager.create_developer_profile(
|
||||
user_id=f"user_dev_{unique_id}_001",
|
||||
display_name="张三",
|
||||
@@ -471,7 +468,7 @@ class TestDeveloperEcosystem:
|
||||
)
|
||||
self.created_ids['developer'].append(profile.id)
|
||||
self.log(f"Created developer profile: {profile.display_name} ({profile.id})")
|
||||
|
||||
|
||||
# Create another developer
|
||||
profile2 = self.manager.create_developer_profile(
|
||||
user_id=f"user_dev_{unique_id}_002",
|
||||
@@ -481,10 +478,10 @@ class TestDeveloperEcosystem:
|
||||
)
|
||||
self.created_ids['developer'].append(profile2.id)
|
||||
self.log(f"Created developer profile: {profile2.display_name}")
|
||||
|
||||
|
||||
except Exception as e:
|
||||
self.log(f"Failed to create developer profile: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_developer_profile_get(self):
|
||||
"""测试获取开发者档案"""
|
||||
try:
|
||||
@@ -494,7 +491,7 @@ class TestDeveloperEcosystem:
|
||||
self.log(f"Retrieved developer profile: {profile.display_name}")
|
||||
except Exception as e:
|
||||
self.log(f"Failed to get developer profile: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_developer_verify(self):
|
||||
"""测试验证开发者"""
|
||||
try:
|
||||
@@ -507,7 +504,7 @@ class TestDeveloperEcosystem:
|
||||
self.log(f"Verified developer: {profile.display_name} ({profile.status.value})")
|
||||
except Exception as e:
|
||||
self.log(f"Failed to verify developer: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_developer_stats_update(self):
|
||||
"""测试更新开发者统计"""
|
||||
try:
|
||||
@@ -517,7 +514,7 @@ class TestDeveloperEcosystem:
|
||||
self.log(f"Updated developer stats: {profile.plugin_count} plugins, {profile.template_count} templates")
|
||||
except Exception as e:
|
||||
self.log(f"Failed to update developer stats: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_code_example_create(self):
|
||||
"""测试创建代码示例"""
|
||||
try:
|
||||
@@ -540,7 +537,7 @@ print(f"Created project: {project.id}")
|
||||
)
|
||||
self.created_ids['code_example'].append(example.id)
|
||||
self.log(f"Created code example: {example.title}")
|
||||
|
||||
|
||||
# Create JavaScript example
|
||||
example_js = self.manager.create_code_example(
|
||||
title="使用 JavaScript SDK 上传文件",
|
||||
@@ -563,23 +560,23 @@ console.log('Upload complete:', result.id);
|
||||
)
|
||||
self.created_ids['code_example'].append(example_js.id)
|
||||
self.log(f"Created code example: {example_js.title}")
|
||||
|
||||
|
||||
except Exception as e:
|
||||
self.log(f"Failed to create code example: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_code_example_list(self):
|
||||
"""测试列出代码示例"""
|
||||
try:
|
||||
examples = self.manager.list_code_examples()
|
||||
self.log(f"Listed {len(examples)} code examples")
|
||||
|
||||
|
||||
# Filter by language
|
||||
python_examples = self.manager.list_code_examples(language="python")
|
||||
self.log(f"Found {len(python_examples)} Python examples")
|
||||
|
||||
|
||||
except Exception as e:
|
||||
self.log(f"Failed to list code examples: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_code_example_get(self):
|
||||
"""测试获取代码示例详情"""
|
||||
try:
|
||||
@@ -589,7 +586,7 @@ console.log('Upload complete:', result.id);
|
||||
self.log(f"Retrieved code example: {example.title} (views: {example.view_count})")
|
||||
except Exception as e:
|
||||
self.log(f"Failed to get code example: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_portal_config_create(self):
|
||||
"""测试创建开发者门户配置"""
|
||||
try:
|
||||
@@ -607,10 +604,10 @@ console.log('Upload complete:', result.id);
|
||||
)
|
||||
self.created_ids['portal_config'].append(config.id)
|
||||
self.log(f"Created portal config: {config.name}")
|
||||
|
||||
|
||||
except Exception as e:
|
||||
self.log(f"Failed to create portal config: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_portal_config_get(self):
|
||||
"""测试获取开发者门户配置"""
|
||||
try:
|
||||
@@ -618,15 +615,15 @@ console.log('Upload complete:', result.id);
|
||||
config = self.manager.get_portal_config(self.created_ids['portal_config'][0])
|
||||
if config:
|
||||
self.log(f"Retrieved portal config: {config.name}")
|
||||
|
||||
|
||||
# Test active config
|
||||
active_config = self.manager.get_active_portal_config()
|
||||
if active_config:
|
||||
self.log(f"Active portal config: {active_config.name}")
|
||||
|
||||
|
||||
except Exception as e:
|
||||
self.log(f"Failed to get portal config: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_revenue_record(self):
|
||||
"""测试记录开发者收益"""
|
||||
try:
|
||||
@@ -646,7 +643,7 @@ console.log('Upload complete:', result.id);
|
||||
self.log(f" - Developer earnings: {revenue.developer_earnings}")
|
||||
except Exception as e:
|
||||
self.log(f"Failed to record revenue: {str(e)}", success=False)
|
||||
|
||||
|
||||
def test_revenue_summary(self):
|
||||
"""测试获取开发者收益汇总"""
|
||||
try:
|
||||
@@ -659,32 +656,32 @@ console.log('Upload complete:', result.id);
|
||||
self.log(f" - Transaction count: {summary['transaction_count']}")
|
||||
except Exception as e:
|
||||
self.log(f"Failed to get revenue summary: {str(e)}", success=False)
|
||||
|
||||
|
||||
def print_summary(self):
|
||||
"""打印测试摘要"""
|
||||
print("\n" + "=" * 60)
|
||||
print("Test Summary")
|
||||
print("=" * 60)
|
||||
|
||||
|
||||
total = len(self.test_results)
|
||||
passed = sum(1 for r in self.test_results if r['success'])
|
||||
failed = total - passed
|
||||
|
||||
|
||||
print(f"Total tests: {total}")
|
||||
print(f"Passed: {passed} ✅")
|
||||
print(f"Failed: {failed} ❌")
|
||||
|
||||
|
||||
if failed > 0:
|
||||
print("\nFailed tests:")
|
||||
for r in self.test_results:
|
||||
if not r['success']:
|
||||
print(f" - {r['message']}")
|
||||
|
||||
|
||||
print("\nCreated resources:")
|
||||
for resource_type, ids in self.created_ids.items():
|
||||
if ids:
|
||||
print(f" {resource_type}: {len(ids)}")
|
||||
|
||||
|
||||
print("=" * 60)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user