Files
小鱼开发 ada29a48a8 feat: 空镜素材分类&数据入库
- 素材表统一为 mjk_broll_ 前缀(mjk_broll_categories/materials/tags)
- 新增 218 条分类 seed + 2495 条素材 seed(含 ffprobe 时长)
- 新增 Alembic 迁移: rename mjk_* to mjk_broll_*
2026-05-15 15:49:29 +08:00

64 lines
1.8 KiB
Python

"""
素材分类模型
============
装修工序的三级分类体系,支持通过 parent_id 链式关联实现无限层级。
层级定义:
- level=1:一级分类(装修大阶段),如 前期准备类、水电隐蔽类
- level=2:二级分类(具体工序),如 防水施工、电路施工
- level=3:三级分类(具体场景),如 卫生间基层清理-防水施工
"""
from sqlalchemy import BigInteger, ForeignKey, String
from sqlalchemy.orm import Mapped, mapped_column
from app.models.base import BaseModelBigInt
class BrollCategory(BaseModelBigInt):
"""空镜素材分类"""
__tablename__ = "mjk_broll_categories"
slug: Mapped[str] = mapped_column(
String(128),
unique=True,
nullable=False,
comment="分类标识符,URL友好格式",
)
name: Mapped[str] = mapped_column(
String(256),
nullable=False,
comment="分类中文名称,三级分类直接对应 scene 标准化后的值",
)
parent_id: Mapped[int | None] = mapped_column(
BigInteger,
ForeignKey("mjk_broll_categories.id"),
nullable=True,
comment="父分类ID,NULL 表示根分类(一级)",
)
level: Mapped[int] = mapped_column(
BigInteger,
default=1,
nullable=False,
comment="层级:1=一级(大阶段),2=二级(工序),3=三级(场景)",
)
sort_order: 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(软删除)",
)