- web/: React + Vite + TypeScript 前端 - backend/: Django + DRF + SimpleJWT 后端 - prototype/: HTML 设计原型 - docs/: PRD 和设计评审文档 - test: 单元测试 + E2E 极限测试
35 lines
1.5 KiB
Python
35 lines
1.5 KiB
Python
from rest_framework import serializers
|
|
|
|
|
|
class VideoGenerateSerializer(serializers.Serializer):
|
|
prompt = serializers.CharField(required=False, allow_blank=True, default='')
|
|
mode = serializers.ChoiceField(choices=['universal', 'keyframe'])
|
|
model = serializers.ChoiceField(choices=['seedance_2.0', 'seedance_2.0_fast'])
|
|
aspect_ratio = serializers.CharField(max_length=10)
|
|
duration = serializers.IntegerField()
|
|
|
|
|
|
class QuotaUpdateSerializer(serializers.Serializer):
|
|
daily_seconds_limit = serializers.IntegerField(min_value=0)
|
|
monthly_seconds_limit = serializers.IntegerField(min_value=0)
|
|
|
|
|
|
class UserStatusSerializer(serializers.Serializer):
|
|
is_active = serializers.BooleanField()
|
|
|
|
|
|
class AdminCreateUserSerializer(serializers.Serializer):
|
|
username = serializers.CharField(max_length=150)
|
|
email = serializers.EmailField()
|
|
password = serializers.CharField(min_length=6)
|
|
daily_seconds_limit = serializers.IntegerField(min_value=0, required=False, default=600)
|
|
monthly_seconds_limit = serializers.IntegerField(min_value=0, required=False, default=6000)
|
|
is_staff = serializers.BooleanField(required=False, default=False)
|
|
|
|
|
|
class SystemSettingsSerializer(serializers.Serializer):
|
|
default_daily_seconds_limit = serializers.IntegerField(min_value=0)
|
|
default_monthly_seconds_limit = serializers.IntegerField(min_value=0)
|
|
announcement = serializers.CharField(required=False, allow_blank=True, default='')
|
|
announcement_enabled = serializers.BooleanField(required=False, default=False)
|