Files
meijiaka-zy/python-api/app/models/broll_material.py
T
2026-05-15 15:45:55 +08:00

60 lines
1.6 KiB
Python

"""
素材主表模型
============
空镜视频片段的元数据中心,一行代表一个素材。
素材直接挂载在三级分类(mjk_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_materials"
category_id: Mapped[int] = mapped_column(
BigInteger,
ForeignKey("mjk_categories.id"),
nullable=False,
comment="所属三级分类ID,关联 mjk_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(软删除)",
)