feat(*): 创作平台 - 升级短剧分镜工作流并完善模型计费与界面状态

This commit is contained in:
ddCat committed 2026-08-29 13:19:01 +08:00
1 parent 4b75504f75
commit 0558cf4381
33 files changed
+2849 -239

No files matched your search

+64 -10
View File
@@ -203,16 +203,56 @@ type CanvasUnitLink struct {
}
type Shot struct {
ID string `json:"id" gorm:"primaryKey;size:36"`
ProjectID string `json:"projectId" gorm:"index;size:36"`
UnitID string `json:"unitId" gorm:"index;size:36"`
Title string `json:"title" gorm:"size:240"`
Description string `json:"description" gorm:"type:text"`
Position int `json:"position"`
DurationMs int64 `json:"durationMs"`
Status string `json:"status" gorm:"index;size:24"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
ID string `json:"id" gorm:"primaryKey;size:36"`
ProjectID string `json:"projectId" gorm:"index;size:36"`
UnitID string `json:"unitId" gorm:"index;size:36"`
CurrentRevisionID string `json:"currentRevisionId,omitempty" gorm:"index;size:36"`
Title string `json:"title" gorm:"size:240"`
Description string `json:"description" gorm:"type:text"`
Position int `json:"position"`
DurationMs int64 `json:"durationMs"`
Status string `json:"status" gorm:"index;size:24"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
// ShotRevision 保存可复现的分镜脚本版本;Shot 只保留稳定身份、排序和当前版本指针。
type ShotRevision struct {
ID string `json:"id" gorm:"primaryKey;size:36"`
ShotID string `json:"shotId" gorm:"index;size:36;uniqueIndex:idx_shot_revisions_version,priority:1"`
Version int `json:"version" gorm:"uniqueIndex:idx_shot_revisions_version,priority:2"`
PlotDescription string `json:"plotDescription" gorm:"type:text"`
Action string `json:"action" gorm:"type:text"`
Dialogue string `json:"dialogue" gorm:"type:text"`
ShotSize string `json:"shotSize" gorm:"size:80"`
CameraAngle string `json:"cameraAngle" gorm:"size:80"`
CameraMovement string `json:"cameraMovement" gorm:"size:120"`
DurationMs int64 `json:"durationMs"`
ImagePrompt string `json:"imagePrompt" gorm:"type:text"`
VideoPrompt string `json:"videoPrompt" gorm:"type:text"`
NegativePrompt string `json:"negativePrompt" gorm:"type:text"`
ContinuityNotes string `json:"continuityNotes" gorm:"type:text"`
ActionBeatsJSON string `json:"actionBeatsJson" gorm:"type:text"`
CreatedBy string `json:"createdBy,omitempty" gorm:"index;size:36"`
CreatedAt time.Time `json:"createdAt"`
}
// ShotArtifact 是镜头的版本化生产产物。修改分镜或资产引用时只标记 stale,不删除历史。
type ShotArtifact struct {
ID string `json:"id" gorm:"primaryKey;size:36"`
ProjectID string `json:"projectId" gorm:"index;size:36"`
UnitID string `json:"unitId" gorm:"index;size:36"`
ShotID string `json:"shotId" gorm:"index;size:36;uniqueIndex:idx_shot_artifacts_version,priority:1"`
RevisionID string `json:"revisionId,omitempty" gorm:"index;size:36"`
TaskID string `json:"taskId,omitempty" gorm:"index;size:36"`
Type string `json:"type" gorm:"index;size:40;uniqueIndex:idx_shot_artifacts_version,priority:2"`
Version int `json:"version" gorm:"uniqueIndex:idx_shot_artifacts_version,priority:3"`
ResourceID string `json:"resourceId,omitempty" gorm:"index;size:36"`
Status string `json:"status" gorm:"index;size:24"`
Selected bool `json:"selected" gorm:"index"`
MetadataJSON string `json:"metadataJson" gorm:"type:text"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
type ShotAssetReference struct {
@@ -268,6 +308,20 @@ type WorkflowStepTask struct {
CreatedAt time.Time `json:"createdAt"`
}
// ProductionTaskLink 显式区分领域项目、画布和镜头上下文,避免继续复用 Task.ProjectID 表达多种身份。
type ProductionTaskLink struct {
ID string `json:"id" gorm:"primaryKey;size:36"`
TaskID string `json:"taskId" gorm:"index;size:36;uniqueIndex:idx_production_task_context,priority:1"`
ProjectID string `json:"projectId" gorm:"index;size:36"`
CanvasID string `json:"canvasId,omitempty" gorm:"index;size:80"`
UnitID string `json:"unitId,omitempty" gorm:"index;size:36"`
ShotID string `json:"shotId,omitempty" gorm:"index;size:36;uniqueIndex:idx_production_task_context,priority:2"`
WorkflowStepID string `json:"workflowStepId,omitempty" gorm:"index;size:36"`
ArtifactType string `json:"artifactType,omitempty" gorm:"index;size:40;uniqueIndex:idx_production_task_context,priority:3"`
CreatedAt time.Time `json:"createdAt"`
UpdatedAt time.Time `json:"updatedAt"`
}
type CanvasProject struct {
ID string `json:"id" gorm:"primaryKey;size:80"`
UserID string `json:"userId" gorm:"index;size:36;index:idx_canvas_projects_user_updated,priority:1"`