You've already forked opc-backend
开发了多角色登录与鉴权接口:实现了普通用户、企业和管理员的登录分流,并支持Token验证。
开发了权限控制接口:实现了通过数据库分配菜单权限节点,控制接口访问安全。 开发了实名认证中心:实现了个人身份证信息与企业营业执照的提交与审核接口。 开发了任务与协作大厅核心业务:实现了任务的发布、接单、状态流转以及专家邀约接口。 配置了全局环境变量与数据库引擎:集成了 PostgreSQL 数据库、Redis 缓存与 MinIO 对象存储。
This commit is contained in:
0
tasks/management/commands/__init__.py
Normal file
0
tasks/management/commands/__init__.py
Normal file
141
tasks/management/commands/seed_tasks.py
Normal file
141
tasks/management/commands/seed_tasks.py
Normal file
@@ -0,0 +1,141 @@
|
||||
"""Seed 10 realistic tasks for the OPC platform."""
|
||||
from django.core.management.base import BaseCommand
|
||||
from django.utils import timezone
|
||||
from datetime import timedelta
|
||||
from tasks.models import Task, TaskStatus
|
||||
from users.models import User, Enterprise
|
||||
import random
|
||||
|
||||
|
||||
TASKS_DATA = [
|
||||
{
|
||||
"title": "企业官网全栈开发(Vue3 + Django)",
|
||||
"description": "为某科技公司打造全新的企业官方网站。前端使用 Vue 3 + Element Plus 框架,后端使用 Django REST Framework,需支持响应式布局、多语言切换以及 CMS 内容管理模块。要求有 SEO 优化方案和完善的部署文档。",
|
||||
"skill_tags": ["Vue.js", "Django", "前端开发", "全栈"],
|
||||
"budget_min": 25000, "budget_max": 45000,
|
||||
"task_type": "全栈开发",
|
||||
"deadline_days": 45,
|
||||
},
|
||||
{
|
||||
"title": "移动端 App UI/UX 设计(电商类)",
|
||||
"description": "为跨境电商平台设计一套完整的移动端 App UI/UX 方案,包括首页、商品详情、购物车、个人中心等核心页面。需要提供高保真 Figma 原型设计稿和设计规范文档,要求符合 iOS/Android 双端设计规范。",
|
||||
"skill_tags": ["UI设计", "UX设计", "Figma", "电商"],
|
||||
"budget_min": 15000, "budget_max": 30000,
|
||||
"task_type": "设计",
|
||||
"deadline_days": 30,
|
||||
},
|
||||
{
|
||||
"title": "数据分析看板开发(ECharts + Python)",
|
||||
"description": "基于已有的销售数据,开发一套实时数据分析看板,使用 ECharts 进行数据可视化呈现,后端使用 Python/Pandas 进行数据处理与聚合。需支持时间范围筛选、多维度交叉分析和 PDF 报表导出。",
|
||||
"skill_tags": ["数据分析", "Python", "ECharts", "可视化"],
|
||||
"budget_min": 18000, "budget_max": 35000,
|
||||
"task_type": "数据分析",
|
||||
"deadline_days": 25,
|
||||
},
|
||||
{
|
||||
"title": "微信小程序开发(社区团购类)",
|
||||
"description": "开发一款社区团购微信小程序,核心功能包括商品展示、拼团下单、分销推荐、订单管理和微信支付对接。后端使用云开发或已有 API 接口,需提供完整的源代码和部署文档。",
|
||||
"skill_tags": ["微信小程序", "JavaScript", "云开发"],
|
||||
"budget_min": 20000, "budget_max": 40000,
|
||||
"task_type": "移动开发",
|
||||
"deadline_days": 40,
|
||||
},
|
||||
{
|
||||
"title": "AI 智能客服系统集成",
|
||||
"description": "将大语言模型(如 DeepSeek / ChatGLM)集成到企业已有的客服系统中,实现智能工单分类、自动回复建议和知识库检索。需对接企业内部 API 和 CRM 系统,并提供模型微调方案。",
|
||||
"skill_tags": ["AI", "NLP", "Python", "API集成"],
|
||||
"budget_min": 35000, "budget_max": 60000,
|
||||
"task_type": "AI开发",
|
||||
"deadline_days": 50,
|
||||
},
|
||||
{
|
||||
"title": "品牌视觉设计(完整VI体系)",
|
||||
"description": "为创业公司提供完整的品牌视觉识别系统设计,包括 Logo、标准色、品牌字体、名片、信纸信封、品牌手册等全套 VI 设计。需提供 AI/PSD 源文件和 PDF 品牌手册。",
|
||||
"skill_tags": ["品牌设计", "VI设计", "Logo设计", "平面设计"],
|
||||
"budget_min": 12000, "budget_max": 25000,
|
||||
"task_type": "设计",
|
||||
"deadline_days": 20,
|
||||
},
|
||||
{
|
||||
"title": "自动化测试框架搭建(Web + API)",
|
||||
"description": "为已有的 SaaS 系统搭建完整的自动化测试框架,包括 Web 端 UI 自动化(Playwright/Selenium)和 API 自动化(Pytest + Requests),集成 CI/CD 流水线,输出测试报告和覆盖率统计。",
|
||||
"skill_tags": ["自动化测试", "Python", "Playwright", "CI/CD"],
|
||||
"budget_min": 16000, "budget_max": 28000,
|
||||
"task_type": "测试",
|
||||
"deadline_days": 30,
|
||||
},
|
||||
{
|
||||
"title": "短视频剪辑与运营(抖音/快手)",
|
||||
"description": "为餐饮品牌制作 20 条抖音/快手短视频内容,包括脚本撰写、实拍素材剪辑、字幕特效和 BGM 搭配。需提供周度内容日历和数据复盘报告,每条视频时长 15-60 秒。",
|
||||
"skill_tags": ["视频剪辑", "短视频运营", "内容创作"],
|
||||
"budget_min": 8000, "budget_max": 15000,
|
||||
"task_type": "内容运营",
|
||||
"deadline_days": 30,
|
||||
},
|
||||
{
|
||||
"title": "企业内部管理系统二次开发",
|
||||
"description": "基于现有的 Django Admin 管理后台进行二次开发,增加审批流引擎、消息通知模块、权限动态配置和数据导出功能。需配合前端 Vue 改造部分页面,提高运营效率。",
|
||||
"skill_tags": ["Django", "Vue.js", "后端开发", "系统集成"],
|
||||
"budget_min": 22000, "budget_max": 38000,
|
||||
"task_type": "后端开发",
|
||||
"deadline_days": 35,
|
||||
},
|
||||
{
|
||||
"title": "跨境电商数据爬取与分析",
|
||||
"description": "对 Amazon、eBay 等跨境电商平台的商品数据进行采集(Scrapy/Selenium),建立竞品价格监控和市场趋势分析模型。需要提供每日自动采集脚本和可视化分析 Dashboard。",
|
||||
"skill_tags": ["爬虫", "数据分析", "Python", "Scrapy"],
|
||||
"budget_min": 10000, "budget_max": 20000,
|
||||
"task_type": "数据采集",
|
||||
"deadline_days": 20,
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = 'Seed 10 realistic tasks for the OPC platform'
|
||||
|
||||
def handle(self, *args, **options):
|
||||
# Find a publisher: prefer admin/staff user
|
||||
publisher = User.objects.filter(is_staff=True, is_deleted=False).first()
|
||||
if not publisher:
|
||||
publisher = User.objects.filter(is_deleted=False).first()
|
||||
if not publisher:
|
||||
self.stderr.write('No users found. Please create at least one user first.')
|
||||
return
|
||||
|
||||
# Find an enterprise if available
|
||||
enterprise = Enterprise.objects.filter(is_deleted=False, status='VERIFIED').first()
|
||||
|
||||
created = 0
|
||||
for data in TASKS_DATA:
|
||||
deadline = timezone.now().date() + timedelta(days=data.pop('deadline_days'))
|
||||
task, was_created = Task.objects.get_or_create(
|
||||
title=data['title'],
|
||||
defaults={
|
||||
'publisher': publisher,
|
||||
'enterprise': enterprise,
|
||||
'description': data['description'],
|
||||
'skill_tags': data['skill_tags'],
|
||||
'budget_min': data['budget_min'],
|
||||
'budget_max': data['budget_max'],
|
||||
'task_type': data['task_type'],
|
||||
'deadline': deadline,
|
||||
'status': TaskStatus.OPEN,
|
||||
'contact_name': publisher.nickname or publisher.username,
|
||||
'contact_email': publisher.email,
|
||||
}
|
||||
)
|
||||
if was_created:
|
||||
created += 1
|
||||
self.stdout.write(f' ✓ Created: {task.title}')
|
||||
else:
|
||||
self.stdout.write(f' - Exists: {task.title}')
|
||||
|
||||
# Mark 3 random tasks as recommended
|
||||
recommended = Task.objects.filter(status=TaskStatus.OPEN, is_recommended=False).order_by('?')[:3]
|
||||
for i, t in enumerate(recommended):
|
||||
t.is_recommended = True
|
||||
t.recommend_priority = 10 - i
|
||||
t.save(update_fields=['is_recommended', 'recommend_priority'])
|
||||
|
||||
self.stdout.write(self.style.SUCCESS(f'\n✅ Seeded {created} new tasks, marked {len(recommended)} as recommended.'))
|
||||
120
tasks/management/commands/seed_users.py
Normal file
120
tasks/management/commands/seed_users.py
Normal file
@@ -0,0 +1,120 @@
|
||||
"""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} 个认证专家用户'))
|
||||
Reference in New Issue
Block a user