Implement job metadata extraction and task management features. Add validation for frame range limits, enhance job and task data structures, and introduce new API endpoints for metadata and task retrieval. Update client-side components to handle metadata extraction and display task statuses. Improve error handling in API responses.
This commit is contained in:
@@ -35,6 +35,7 @@ type Job struct {
|
||||
OutputFormat string `json:"output_format"` // PNG, JPEG, EXR, etc.
|
||||
AllowParallelRunners bool `json:"allow_parallel_runners"` // Allow multiple runners to work on this job
|
||||
TimeoutSeconds int `json:"timeout_seconds"` // Job-level timeout (24 hours default)
|
||||
BlendMetadata *BlendMetadata `json:"blend_metadata,omitempty"` // Extracted metadata from blend file
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
StartedAt *time.Time `json:"started_at,omitempty"`
|
||||
CompletedAt *time.Time `json:"completed_at,omitempty"`
|
||||
@@ -72,6 +73,15 @@ const (
|
||||
TaskStatusFailed TaskStatus = "failed"
|
||||
)
|
||||
|
||||
// TaskType represents the type of a task
|
||||
type TaskType string
|
||||
|
||||
const (
|
||||
TaskTypeRender TaskType = "render"
|
||||
TaskTypeMetadata TaskType = "metadata"
|
||||
TaskTypeVideoGeneration TaskType = "video_generation"
|
||||
)
|
||||
|
||||
// Task represents a render task assigned to a runner
|
||||
type Task struct {
|
||||
ID int64 `json:"id"`
|
||||
@@ -79,6 +89,7 @@ type Task struct {
|
||||
RunnerID *int64 `json:"runner_id,omitempty"`
|
||||
FrameStart int `json:"frame_start"`
|
||||
FrameEnd int `json:"frame_end"`
|
||||
TaskType TaskType `json:"task_type"`
|
||||
Status TaskStatus `json:"status"`
|
||||
CurrentStep string `json:"current_step,omitempty"`
|
||||
RetryCount int `json:"retry_count"`
|
||||
@@ -199,3 +210,27 @@ type TaskLogEntry struct {
|
||||
StepName string `json:"step_name,omitempty"`
|
||||
}
|
||||
|
||||
// BlendMetadata represents extracted metadata from a blend file
|
||||
type BlendMetadata struct {
|
||||
FrameStart int `json:"frame_start"`
|
||||
FrameEnd int `json:"frame_end"`
|
||||
RenderSettings RenderSettings `json:"render_settings"`
|
||||
SceneInfo SceneInfo `json:"scene_info"`
|
||||
}
|
||||
|
||||
// RenderSettings represents render settings from a blend file
|
||||
type RenderSettings struct {
|
||||
ResolutionX int `json:"resolution_x"`
|
||||
ResolutionY int `json:"resolution_y"`
|
||||
Samples int `json:"samples"`
|
||||
OutputFormat string `json:"output_format"`
|
||||
Engine string `json:"engine"`
|
||||
}
|
||||
|
||||
// SceneInfo represents scene information from a blend file
|
||||
type SceneInfo struct {
|
||||
CameraCount int `json:"camera_count"`
|
||||
ObjectCount int `json:"object_count"`
|
||||
MaterialCount int `json:"material_count"`
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user