113 lines
3.2 KiB
Python
113 lines
3.2 KiB
Python
|
|
"""
|
|||
|
|
种子数据:初始化 3 个默认付费套餐
|
|||
|
|
用法: cd backend && ./venv/Scripts/python.exe scripts/seed_billing_plans.py
|
|||
|
|
"""
|
|||
|
|
import sys
|
|||
|
|
import os
|
|||
|
|
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|||
|
|
|
|||
|
|
from app.core.database import SessionLocal, init_db
|
|||
|
|
from app.models.billing import BillingPlan
|
|||
|
|
import uuid
|
|||
|
|
|
|||
|
|
PLANS = [
|
|||
|
|
{
|
|||
|
|
"id": "a0000000-0000-0000-0000-000000000001",
|
|||
|
|
"name": "免费版",
|
|||
|
|
"tier": "free",
|
|||
|
|
"price_monthly": 0,
|
|||
|
|
"price_yearly": 0,
|
|||
|
|
"daily_quota": 50,
|
|||
|
|
"agent_limit": 3,
|
|||
|
|
"knowledge_limit": 10,
|
|||
|
|
"file_upload_mb": 5,
|
|||
|
|
"models": ["deepseek-v4-pro"],
|
|||
|
|
"features": [
|
|||
|
|
"每日 50 次对话",
|
|||
|
|
"3 个自建智能体",
|
|||
|
|
"基础模型 DeepSeek-V3",
|
|||
|
|
"10 条全局知识",
|
|||
|
|
"5 MB 文件上传",
|
|||
|
|
"社区支持",
|
|||
|
|
],
|
|||
|
|
"is_active": True,
|
|||
|
|
"sort_order": 0,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "a0000000-0000-0000-0000-000000000002",
|
|||
|
|
"name": "专业版",
|
|||
|
|
"tier": "pro",
|
|||
|
|
"price_monthly": 29,
|
|||
|
|
"price_yearly": 198,
|
|||
|
|
"daily_quota": 500,
|
|||
|
|
"agent_limit": 20,
|
|||
|
|
"knowledge_limit": 500,
|
|||
|
|
"file_upload_mb": 50,
|
|||
|
|
"models": ["deepseek-v4-pro", "gpt-4o", "claude-sonnet-4-6", "gemini-2.5-pro"],
|
|||
|
|
"features": [
|
|||
|
|
"每日 500 次对话",
|
|||
|
|
"20 个自建智能体",
|
|||
|
|
"全部高级模型",
|
|||
|
|
"500 条全局知识",
|
|||
|
|
"50 MB 文件上传",
|
|||
|
|
"优先响应队列",
|
|||
|
|
"对话历史云端同步",
|
|||
|
|
"对话导出 Markdown/PDF",
|
|||
|
|
"专属客服通道",
|
|||
|
|
],
|
|||
|
|
"is_active": True,
|
|||
|
|
"sort_order": 1,
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"id": "a0000000-0000-0000-0000-000000000003",
|
|||
|
|
"name": "企业版",
|
|||
|
|
"tier": "enterprise",
|
|||
|
|
"price_monthly": 99,
|
|||
|
|
"price_yearly": 899,
|
|||
|
|
"daily_quota": 0,
|
|||
|
|
"agent_limit": 0,
|
|||
|
|
"knowledge_limit": 0,
|
|||
|
|
"file_upload_mb": 200,
|
|||
|
|
"models": ["deepseek-v4-pro", "gpt-4o", "claude-sonnet-4-6", "gemini-2.5-pro"],
|
|||
|
|
"features": [
|
|||
|
|
"无限对话次数",
|
|||
|
|
"无限智能体",
|
|||
|
|
"团队协作(10 人)",
|
|||
|
|
"全部知识库功能",
|
|||
|
|
"200 MB 文件上传",
|
|||
|
|
"最高优先响应",
|
|||
|
|
"API 调用额度 ¥50/月",
|
|||
|
|
"管理员面板",
|
|||
|
|
"专属成功经理 + 电话支持",
|
|||
|
|
],
|
|||
|
|
"is_active": True,
|
|||
|
|
"sort_order": 2,
|
|||
|
|
},
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
|
|||
|
|
def seed():
|
|||
|
|
init_db()
|
|||
|
|
db = SessionLocal()
|
|||
|
|
try:
|
|||
|
|
for plan_data in PLANS:
|
|||
|
|
existing = db.query(BillingPlan).filter(BillingPlan.id == plan_data["id"]).first()
|
|||
|
|
if existing:
|
|||
|
|
print(f"跳过已存在: {plan_data['name']}")
|
|||
|
|
continue
|
|||
|
|
plan = BillingPlan(**plan_data)
|
|||
|
|
db.add(plan)
|
|||
|
|
print(f"创建套餐: {plan_data['name']} (tier={plan_data['tier']})")
|
|||
|
|
db.commit()
|
|||
|
|
print("种子数据初始化完成")
|
|||
|
|
except Exception as e:
|
|||
|
|
db.rollback()
|
|||
|
|
print(f"错误: {e}")
|
|||
|
|
raise
|
|||
|
|
finally:
|
|||
|
|
db.close()
|
|||
|
|
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
seed()
|