You've already forked opc-backend
121 lines
7.0 KiB
Python
121 lines
7.0 KiB
Python
|
|
"""Seed 10 certified OPC users with online avatar photos."""
|
|||
|
|
from django.core.management.base import BaseCommand
|
|||
|
|
from django.utils import timezone
|
|||
|
|
from users.models import User, Role, UserRole
|
|||
|
|
from opc_cert.models import OpcCertification
|
|||
|
|
|
|||
|
|
USERS_DATA = [
|
|||
|
|
{
|
|||
|
|
"username": "zhanglei", "nickname": "张磊", "email": "zhanglei@opc.cn",
|
|||
|
|
"phone": "13800000001", "bio": "10年全栈开发经验,精通 Vue/React/Django,曾主导多个百万级用户平台的架构设计与交付。",
|
|||
|
|
"location": "北京", "avatar_url": "https://api.dicebear.com/7.x/avataaars/svg?seed=zhanglei",
|
|||
|
|
"skills": ["Vue.js", "React", "Django", "全栈开发"], "experience": "前阿里巴巴高级工程师,负责过多个核心业务系统开发。",
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"username": "liuyanmei", "nickname": "刘艳梅", "email": "liuyanmei@opc.cn",
|
|||
|
|
"phone": "13800000002", "bio": "UI/UX 设计师,擅长移动端与 Web 端产品设计,拥有丰富的 B 端/C 端设计经验。",
|
|||
|
|
"location": "上海", "avatar_url": "https://api.dicebear.com/7.x/avataaars/svg?seed=liuyanmei",
|
|||
|
|
"skills": ["UI设计", "UX设计", "Figma", "Sketch"], "experience": "前腾讯设计中心资深设计师,主导过微信小程序生态设计规范。",
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"username": "wangqiang", "nickname": "王强", "email": "wangqiang@opc.cn",
|
|||
|
|
"phone": "13800000003", "bio": "数据科学家,擅长机器学习模型训练和数据可视化,熟悉 TensorFlow 与 PyTorch 框架。",
|
|||
|
|
"location": "深圳", "avatar_url": "https://api.dicebear.com/7.x/avataaars/svg?seed=wangqiang",
|
|||
|
|
"skills": ["数据分析", "Python", "机器学习", "TensorFlow"], "experience": "前华为云 AI 团队算法工程师。",
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"username": "chenxiaoling", "nickname": "陈小玲", "email": "chenxiaoling@opc.cn",
|
|||
|
|
"phone": "13800000004", "bio": "微信小程序和 App 开发专家,3年独立开发经验,已上线 20+ 款小程序。",
|
|||
|
|
"location": "杭州", "avatar_url": "https://api.dicebear.com/7.x/avataaars/svg?seed=chenxiaoling",
|
|||
|
|
"skills": ["微信小程序", "React Native", "Flutter"], "experience": "独立开发者,专注移动端开发与创新应用。",
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"username": "zhaowei", "nickname": "赵伟", "email": "zhaowei@opc.cn",
|
|||
|
|
"phone": "13800000005", "bio": "DevOps 工程师,精通 Kubernetes、Docker 和 CI/CD 流水线搭建。",
|
|||
|
|
"location": "成都", "avatar_url": "https://api.dicebear.com/7.x/avataaars/svg?seed=zhaowei",
|
|||
|
|
"skills": ["Docker", "Kubernetes", "CI/CD", "Linux"], "experience": "前字节跳动基础架构部高级 SRE 工程师。",
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"username": "sunmengmeng", "nickname": "孙萌萌", "email": "sunmengmeng@opc.cn",
|
|||
|
|
"phone": "13800000006", "bio": "品牌设计师与视觉创意总监,擅长 VI 体系设计、品牌策略和视觉营销。",
|
|||
|
|
"location": "广州", "avatar_url": "https://api.dicebear.com/7.x/avataaars/svg?seed=sunmengmeng",
|
|||
|
|
"skills": ["品牌设计", "VI设计", "平面设计", "Logo设计"], "experience": "服务过 50+ 品牌客户,包含多家上市企业。",
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"username": "huangdawei", "nickname": "黄大伟", "email": "huangdawei@opc.cn",
|
|||
|
|
"phone": "13800000007", "bio": "资深爬虫与数据采集工程师,精通反爬策略和大规模数据治理方案。",
|
|||
|
|
"location": "南京", "avatar_url": "https://api.dicebear.com/7.x/avataaars/svg?seed=huangdawei",
|
|||
|
|
"skills": ["爬虫", "Scrapy", "数据采集", "Python"], "experience": "曾为多家电商和金融企业搭建数据采集平台。",
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"username": "lixuemei", "nickname": "李雪梅", "email": "lixuemei@opc.cn",
|
|||
|
|
"phone": "13800000008", "bio": "内容运营与短视频创作者,抖音/快手/小红书多平台达人孵化经验。",
|
|||
|
|
"location": "武汉", "avatar_url": "https://api.dicebear.com/7.x/avataaars/svg?seed=lixuemei",
|
|||
|
|
"skills": ["视频剪辑", "短视频运营", "内容创作", "新媒体"], "experience": "MCN 机构签约创作者,累计粉丝 500 万+。",
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"username": "zhoujianhua", "nickname": "周建华", "email": "zhoujianhua@opc.cn",
|
|||
|
|
"phone": "13800000009", "bio": "自动化测试与质量保障专家,精通 Selenium、Playwright 和接口测试方案。",
|
|||
|
|
"location": "西安", "avatar_url": "https://api.dicebear.com/7.x/avataaars/svg?seed=zhoujianhua",
|
|||
|
|
"skills": ["自动化测试", "Playwright", "Selenium", "性能测试"], "experience": "前网易质量保障团队负责人,推动过全链路测试体系建设。",
|
|||
|
|
},
|
|||
|
|
{
|
|||
|
|
"username": "yangtianyu", "nickname": "杨天宇", "email": "yangtianyu@opc.cn",
|
|||
|
|
"phone": "13800000010", "bio": "AI 应用开发工程师,专注 LLM 集成、RAG 架构和智能对话系统。",
|
|||
|
|
"location": "重庆", "avatar_url": "https://api.dicebear.com/7.x/avataaars/svg?seed=yangtianyu",
|
|||
|
|
"skills": ["AI", "NLP", "LLM", "Python"], "experience": "前百度智能对话团队核心开发者。",
|
|||
|
|
},
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
|
|||
|
|
class Command(BaseCommand):
|
|||
|
|
help = '创建10个已认证的OPC专家用户'
|
|||
|
|
|
|||
|
|
def handle(self, *args, **options):
|
|||
|
|
# Get or create the OPC_USER role
|
|||
|
|
opc_role, _ = Role.objects.get_or_create(code='OPC_USER', defaults={'name': 'OPC认证专家', 'is_system': True})
|
|||
|
|
|
|||
|
|
created = 0
|
|||
|
|
for data in USERS_DATA:
|
|||
|
|
user, was_created = User.objects.get_or_create(
|
|||
|
|
username=data['username'],
|
|||
|
|
defaults={
|
|||
|
|
'nickname': data['nickname'],
|
|||
|
|
'email': data['email'],
|
|||
|
|
'phone': data['phone'],
|
|||
|
|
'bio': data['bio'],
|
|||
|
|
'location': data['location'],
|
|||
|
|
'avatar_url': data['avatar_url'],
|
|||
|
|
'rating': 4.80,
|
|||
|
|
'completed_tasks': 0,
|
|||
|
|
'is_recommended': True if created < 3 else False,
|
|||
|
|
'recommend_priority': 10 - created if created < 3 else 0,
|
|||
|
|
}
|
|||
|
|
)
|
|||
|
|
if was_created:
|
|||
|
|
user.set_password('opc123456')
|
|||
|
|
user.save()
|
|||
|
|
|
|||
|
|
# Assign OPC_USER role
|
|||
|
|
UserRole.objects.get_or_create(user=user, role=opc_role)
|
|||
|
|
|
|||
|
|
# Create approved certification
|
|||
|
|
OpcCertification.objects.get_or_create(
|
|||
|
|
user=user,
|
|||
|
|
defaults={
|
|||
|
|
'real_name': data['nickname'],
|
|||
|
|
'skills': data['skills'],
|
|||
|
|
'experience': data['experience'],
|
|||
|
|
'status': 'APPROVED',
|
|||
|
|
'reviewed_at': timezone.now(),
|
|||
|
|
}
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
if was_created:
|
|||
|
|
created += 1
|
|||
|
|
self.stdout.write(f' ✓ 创建用户: {data["nickname"]} ({data["username"]})')
|
|||
|
|
else:
|
|||
|
|
self.stdout.write(f' - 已存在: {data["nickname"]} ({data["username"]})')
|
|||
|
|
|
|||
|
|
self.stdout.write(self.style.SUCCESS(f'\n✅ 已创建 {created} 个认证专家用户'))
|