完善二期清单

This commit is contained in:
Azmat@qq.com
2026-08-18 14:11:05 +08:00
parent d1ecb52125
commit dfe94a923e
55 changed files with 1754 additions and 137 deletions
+37
View File
@@ -100,6 +100,43 @@ class ScriptSegment(TimeStampedModel):
ordering = ["sort_order", "created_at"]
class ScriptTemplate(TeamOwnedModel):
"""「套路模板」:把一版脚本里可复用的部分抽出来存团队库,换个商品重开项目时套用。
只存**套路**不存**文案**:outline 里每镜只留作用/时长/商品露出/说话方式,
旧商品的口播词一律不进模板,避免换商品重跑时把上一个品牌漏出去。
"""
name = models.CharField(max_length=128)
presentation_format = models.CharField(max_length=32, blank=True) # oral|drama|vlog
video_structure = models.CharField(max_length=32, blank=True) # pain|contrast|review|scene
persona = models.CharField(max_length=32, blank=True) # 人物设定 key(对齐向导 WIZ_PERSONAS)
total_duration = models.PositiveIntegerField(default=0)
# [{index, role, duration, product_exposure, delivery}] · 镜头节奏 + 脚本结构
outline = models.JSONField(default=list, blank=True)
# 结尾转化方式的**写法参考**(可能带旧品牌词,套用时提示模型换成新商品)
cta = models.TextField(blank=True)
# 场景风格名(人物场景风格的场景侧;人物侧由 persona 承载)
scenes = models.JSONField(default=list, blank=True)
source_project = models.ForeignKey(
Project, on_delete=models.SET_NULL, null=True, blank=True, related_name="script_templates"
)
source_script = models.ForeignKey(
"ScriptVersion", on_delete=models.SET_NULL, null=True, blank=True, related_name="templates"
)
usage_count = models.PositiveIntegerField(default=0)
class Meta:
ordering = ["-created_at"]
constraints = [
models.UniqueConstraint(fields=["team", "name"], name="uniq_script_template_name_per_team"),
]
indexes = [models.Index(fields=["team", "-created_at"])]
def __str__(self) -> str:
return self.name
class BaseAssetGroup(TimeStampedModel):
class Kind(models.TextChoices):
PRODUCT = "product", "Product"