1、后台页面/credit-ratios,需要选择视频,上边是模型价格,下边增加传入视频价格,也要输入对应的倍率、基础积分、每秒积分 2、前台/conversation获取积分逻辑的接口也要增加对应的传入视频的比例 3、然后前台根据用户上传视频自动获取对应的比例加上对应模型选择的积分计算总积分 4、后台提交也要验证对应的积分是否正确 5、多个视频总时长需限制15s,最低视频时长2s
28 lines
1.4 KiB
Python
28 lines
1.4 KiB
Python
from sqlalchemy import Float, Index, String
|
||
from sqlalchemy.orm import Mapped, mapped_column
|
||
|
||
from app.models.base import Base, TimestampMixin
|
||
|
||
|
||
class CreditRatio(Base, TimestampMixin):
|
||
__tablename__ = "credit_ratios"
|
||
__table_args__ = (
|
||
Index("ix_credit_ratios_gen_type_engine_resolution", "gen_type", "model_config_id", "resolution"),
|
||
Index("ix_credit_ratios_gen_type_resolution", "gen_type", "resolution"),
|
||
)
|
||
|
||
id: Mapped[str] = mapped_column(String(32), primary_key=True)
|
||
# 兼容旧字段名:
|
||
# gen_type=image 时,该字段保存 image_engines.id;
|
||
# gen_type=video 时,该字段保存 video_engines.id。
|
||
# 不再通过数据库外键绑定 model_configs.id,避免同一字段无法同时关联图片/视频引擎表。
|
||
model_config_id: Mapped[str] = mapped_column(String(32), index=True)
|
||
gen_type: Mapped[str] = mapped_column(String(16), default="video", index=True)
|
||
resolution: Mapped[str] = mapped_column(String(16), nullable=False, index=True)
|
||
ratio: Mapped[float] = mapped_column(Float, nullable=False)
|
||
base_credits: Mapped[float] = mapped_column(Float, default=80.0)
|
||
per_second_credits: Mapped[float] = mapped_column(Float, default=2.0)
|
||
input_video_ratio: Mapped[float] = mapped_column(Float, default=1.0)
|
||
input_video_base_credits: Mapped[float] = mapped_column(Float, default=0.0)
|
||
input_video_per_second_credits: Mapped[float] = mapped_column(Float, default=0.5)
|