ada29a48a8
- 素材表统一为 mjk_broll_ 前缀(mjk_broll_categories/materials/tags) - 新增 218 条分类 seed + 2495 条素材 seed(含 ffprobe 时长) - 新增 Alembic 迁移: rename mjk_* to mjk_broll_*
60 lines
1.6 KiB
Python
60 lines
1.6 KiB
Python
"""
|
|
素材主表模型
|
|
============
|
|
|
|
空镜视频片段的元数据中心,一行代表一个素材。
|
|
|
|
素材直接挂载在三级分类(mjk_broll_categories.level=3)下,
|
|
匹配时通过 category_id 精确关联到具体场景分类。
|
|
"""
|
|
|
|
from sqlalchemy import BigInteger, ForeignKey, String
|
|
from sqlalchemy.orm import Mapped, mapped_column
|
|
|
|
from app.models.base import BaseModelBigInt
|
|
|
|
|
|
class BrollMaterial(BaseModelBigInt):
|
|
"""空镜素材主表"""
|
|
|
|
__tablename__ = "mjk_broll_materials"
|
|
|
|
category_id: Mapped[int] = mapped_column(
|
|
BigInteger,
|
|
ForeignKey("mjk_broll_categories.id"),
|
|
nullable=False,
|
|
comment="所属三级分类ID,关联 mjk_broll_categories",
|
|
)
|
|
|
|
title: Mapped[str] = mapped_column(
|
|
String(256),
|
|
nullable=False,
|
|
comment="素材标题/文件名,运营后台识别用",
|
|
)
|
|
|
|
url: Mapped[str] = mapped_column(
|
|
String(1024),
|
|
nullable=False,
|
|
comment="七牛云 CDN 访问地址,FFmpeg合成和前端播放直接使用",
|
|
)
|
|
|
|
duration: Mapped[float] = mapped_column(
|
|
default=0,
|
|
nullable=False,
|
|
comment="视频时长(秒),FFmpeg probe 提取,入库时必须大于0",
|
|
)
|
|
|
|
usage_count: Mapped[int] = mapped_column(
|
|
BigInteger,
|
|
default=0,
|
|
nullable=False,
|
|
comment="累计使用次数,驱动加权随机算法",
|
|
)
|
|
|
|
status: Mapped[str] = mapped_column(
|
|
String(16),
|
|
default="active",
|
|
nullable=False,
|
|
comment="状态:active(可用)/ disabled(下架)/ deleted(软删除)",
|
|
)
|