feat(admin): Phase 4 质量词 Admin(平台单层) — QualityWord + 生成侧读配置(无配置回落) + 质量词页
后端:apps/ai QualityWord(stage/slot/text/sort/enabled)+ migration;services.py quality_words/quality_suffix, 4 个 builder 接入(person/model_tryon/storyboard/video)无配置回落原写死值零回归;adminpanel CRUD + 审计。 前端:adminApi quality 系列;Admin 质量词页(按 stage 分组卡 + 编辑模式开关 + 行内增改删 chip)。 测试:adminpanel 23 + accounts 22 = 45 单测过(CRUD/权限/生成读配置+回落/停用词不取); 无头 e2e _admin-p4.mjs 4 断言过 + 0 console error + live 库零残留;tsc+build 绿。 注:apps.ai 3 个 image_edit 路由测试失败为进场前既有(已 stash 比对 HEAD 同样失败),非本 Phase 引入。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
6560633959
commit
01d4f235ed
@@ -107,3 +107,28 @@ class AITask(TeamOwnedModel):
|
||||
def __str__(self) -> str:
|
||||
return f"{self.task_type}:{self.status}:{self.id}"
|
||||
|
||||
|
||||
class QualityWord(TimeStampedModel):
|
||||
"""平台单层质量词配置:按生成阶段(stage)+ 槽位(slot)挂若干质量词,
|
||||
生成侧拼提示词时优先读取本配置;**无配置则回落各 builder 的写死值**(零回归)。
|
||||
全平台共用一套(不挂 team),团队级覆盖以后再说。"""
|
||||
|
||||
class Stage(models.TextChoices):
|
||||
PERSON = "person", "人物立绘"
|
||||
MODEL_TRYON = "model_tryon", "模特上身图"
|
||||
STORYBOARD = "storyboard", "故事板"
|
||||
VIDEO = "video", "视频"
|
||||
|
||||
stage = models.CharField(max_length=24, choices=Stage.choices)
|
||||
slot = models.CharField(max_length=24, default="quality")
|
||||
text = models.CharField(max_length=200)
|
||||
sort = models.IntegerField(default=0)
|
||||
enabled = models.BooleanField(default=True)
|
||||
|
||||
class Meta:
|
||||
ordering = ["stage", "sort", "created_at"]
|
||||
indexes = [models.Index(fields=["stage", "slot"])]
|
||||
|
||||
def __str__(self) -> str:
|
||||
return f"{self.stage}/{self.slot}/{self.text}"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user