fix: auto-fix code issues (cron)

- 修复重复导入/字段
- 修复异常处理
- 修复PEP8格式问题
- 添加类型注解
- 修复缺失的urllib.parse导入
This commit is contained in:
OpenClaw Bot
2026-02-28 06:03:09 +08:00
parent ff83cab6c7
commit fe3d64a1d2
41 changed files with 4501 additions and 1176 deletions

View File

@@ -32,6 +32,7 @@ backend_dir = os.path.dirname(os.path.abspath(__file__))
if backend_dir not in sys.path:
sys.path.insert(0, backend_dir)
class TestGrowthManager:
"""测试 Growth Manager 功能"""
@@ -63,7 +64,7 @@ class TestGrowthManager:
session_id="session_001",
device_info={"browser": "Chrome", "os": "MacOS"},
referrer="https://google.com",
utm_params={"source": "google", "medium": "organic", "campaign": "summer"}
utm_params={"source": "google", "medium": "organic", "campaign": "summer"},
)
assert event.id is not None
@@ -94,7 +95,7 @@ class TestGrowthManager:
user_id=self.test_user_id,
event_type=event_type,
event_name=event_name,
properties=props
properties=props,
)
self.log(f"成功追踪 {len(events)} 个事件")
@@ -130,7 +131,7 @@ class TestGrowthManager:
summary = self.manager.get_user_analytics_summary(
tenant_id=self.test_tenant_id,
start_date=datetime.now() - timedelta(days=7),
end_date=datetime.now()
end_date=datetime.now(),
)
assert "unique_users" in summary
@@ -156,9 +157,9 @@ class TestGrowthManager:
{"name": "访问首页", "event_name": "page_view_home"},
{"name": "点击注册", "event_name": "signup_click"},
{"name": "填写信息", "event_name": "signup_form_fill"},
{"name": "完成注册", "event_name": "signup_complete"}
{"name": "完成注册", "event_name": "signup_complete"},
],
created_by="test"
created_by="test",
)
assert funnel.id is not None
@@ -182,7 +183,7 @@ class TestGrowthManager:
analysis = self.manager.analyze_funnel(
funnel_id=funnel_id,
period_start=datetime.now() - timedelta(days=30),
period_end=datetime.now()
period_end=datetime.now(),
)
if analysis:
@@ -204,7 +205,7 @@ class TestGrowthManager:
retention = self.manager.calculate_retention(
tenant_id=self.test_tenant_id,
cohort_date=datetime.now() - timedelta(days=7),
periods=[1, 3, 7]
periods=[1, 3, 7],
)
assert "cohort_date" in retention
@@ -231,7 +232,7 @@ class TestGrowthManager:
variants=[
{"id": "control", "name": "红色按钮", "is_control": True},
{"id": "variant_a", "name": "蓝色按钮", "is_control": False},
{"id": "variant_b", "name": "绿色按钮", "is_control": False}
{"id": "variant_b", "name": "绿色按钮", "is_control": False},
],
traffic_allocation=TrafficAllocationType.RANDOM,
traffic_split={"control": 0.34, "variant_a": 0.33, "variant_b": 0.33},
@@ -240,7 +241,7 @@ class TestGrowthManager:
secondary_metrics=["conversion_rate", "bounce_rate"],
min_sample_size=100,
confidence_level=0.95,
created_by="test"
created_by="test",
)
assert experiment.id is not None
@@ -285,7 +286,7 @@ class TestGrowthManager:
variant_id = self.manager.assign_variant(
experiment_id=experiment_id,
user_id=user_id,
user_attributes={"user_id": user_id, "segment": "new"}
user_attributes={"user_id": user_id, "segment": "new"},
)
if variant_id:
@@ -321,7 +322,7 @@ class TestGrowthManager:
variant_id=variant_id,
user_id=user_id,
metric_name="button_click_rate",
metric_value=value
metric_value=value,
)
self.log(f"成功记录 {len(test_data)} 条指标")
@@ -375,7 +376,7 @@ class TestGrowthManager:
<p><a href="{{dashboard_url}}">立即开始使用</a></p>
""",
from_name="InsightFlow 团队",
from_email="welcome@insightflow.io"
from_email="welcome@insightflow.io",
)
assert template.id is not None
@@ -413,8 +414,8 @@ class TestGrowthManager:
template_id=template_id,
variables={
"user_name": "张三",
"dashboard_url": "https://app.insightflow.io/dashboard"
}
"dashboard_url": "https://app.insightflow.io/dashboard",
},
)
if rendered:
@@ -445,8 +446,8 @@ class TestGrowthManager:
recipient_list=[
{"user_id": "user_001", "email": "user1@example.com"},
{"user_id": "user_002", "email": "user2@example.com"},
{"user_id": "user_003", "email": "user3@example.com"}
]
{"user_id": "user_003", "email": "user3@example.com"},
],
)
assert campaign.id is not None
@@ -472,8 +473,8 @@ class TestGrowthManager:
actions=[
{"type": "send_email", "template_type": "welcome", "delay_hours": 0},
{"type": "send_email", "template_type": "onboarding", "delay_hours": 24},
{"type": "send_email", "template_type": "feature_tips", "delay_hours": 72}
]
{"type": "send_email", "template_type": "feature_tips", "delay_hours": 72},
],
)
assert workflow.id is not None
@@ -502,7 +503,7 @@ class TestGrowthManager:
referee_reward_value=50.0,
max_referrals_per_user=10,
referral_code_length=8,
expiry_days=30
expiry_days=30,
)
assert program.id is not None
@@ -524,8 +525,7 @@ class TestGrowthManager:
try:
referral = self.manager.generate_referral_code(
program_id=program_id,
referrer_id="referrer_user_001"
program_id=program_id, referrer_id="referrer_user_001"
)
if referral:
@@ -551,8 +551,7 @@ class TestGrowthManager:
try:
success = self.manager.apply_referral_code(
referral_code=referral_code,
referee_id="new_user_001"
referral_code=referral_code, referee_id="new_user_001"
)
if success:
@@ -579,7 +578,9 @@ class TestGrowthManager:
assert "total_referrals" in stats
assert "conversion_rate" in stats
self.log(f"推荐统计: {stats['total_referrals']} 推荐, {stats['conversion_rate']:.2%} 转化率")
self.log(
f"推荐统计: {stats['total_referrals']} 推荐, {stats['conversion_rate']:.2%} 转化率"
)
return True
except Exception as e:
self.log(f"获取推荐统计失败: {e}", success=False)
@@ -599,7 +600,7 @@ class TestGrowthManager:
incentive_type="discount",
incentive_value=20.0, # 20% 折扣
valid_from=datetime.now(),
valid_until=datetime.now() + timedelta(days=90)
valid_until=datetime.now() + timedelta(days=90),
)
assert incentive.id is not None
@@ -617,9 +618,7 @@ class TestGrowthManager:
try:
incentives = self.manager.check_team_incentive_eligibility(
tenant_id=self.test_tenant_id,
current_tier="free",
team_size=5
tenant_id=self.test_tenant_id, current_tier="free", team_size=5
)
self.log(f"找到 {len(incentives)} 个符合条件的激励")
@@ -642,7 +641,9 @@ class TestGrowthManager:
assert "top_features" in dashboard
today = dashboard["today"]
self.log(f"实时仪表板: 今日 {today['active_users']} 活跃用户, {today['total_events']} 事件")
self.log(
f"实时仪表板: 今日 {today['active_users']} 活跃用户, {today['total_events']} 事件"
)
return True
except Exception as e:
self.log(f"获取实时仪表板失败: {e}", success=False)
@@ -734,10 +735,12 @@ class TestGrowthManager:
print("✨ 测试完成!")
print("=" * 60)
async def main():
"""主函数"""
tester = TestGrowthManager()
await tester.run_all_tests()
if __name__ == "__main__":
asyncio.run(main())