fix(render): real AE render — pass -comp, fix export insert, ensure exports bucket
Three bugs surfaced bringing up a real After Effects node (verified: AE 2026
claimed + ran, but produced no usable output):
1. aerender got no -comp/-rqindex → "output argument ignored", nothing rendered.
- Claim now returns comp_name from content.projects.render_aep_comp (e.g. "frfinal")
via new Store.GetTemplateCompName; threaded through ClaimedJob → runner.Job →
aerender args (`-comp <name>`, or `-rqindex 1` fallback when unknown).
2. CreateExportForJob INSERT passed render_quality as a bare param into an enum
column → 500 ("output-upload-url HTTP 500"), so completed renders had no export.
- Cast $8::render.render_quality (+ explicit casts for file_type/create_type enums).
3. flatrender-exports bucket didn't exist → uploads would fail anyway.
- render-svc now MakeBucket(exports, templates) idempotently at startup.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -159,6 +159,9 @@ type ClaimedJob struct {
|
||||
// BundleMD5 identifies the bundle content; used as a local cache key so repeated
|
||||
// renders of the same template download + extract it only once.
|
||||
BundleMD5 string `json:"bundle_md5,omitempty"`
|
||||
// CompName is the AE composition to render (-comp), e.g. "frfinal". Empty → the
|
||||
// node falls back to the project's render queue (-rqindex 1).
|
||||
CompName string `json:"comp_name,omitempty"`
|
||||
}
|
||||
|
||||
// OutputUploadURLResponse is returned by GetOutputUploadURL.
|
||||
|
||||
@@ -32,6 +32,9 @@ type Job struct {
|
||||
// AEPFilePath is the local path to the downloaded .aep project file.
|
||||
// In a full implementation the agent downloads this from MinIO before calling Run.
|
||||
AEPFilePath string
|
||||
// CompName is the composition to render (-comp), e.g. "frfinal". When empty the
|
||||
// node renders the project's render queue (-rqindex 1) instead.
|
||||
CompName string
|
||||
}
|
||||
|
||||
// Run executes the render job, calling onProgress and onPreview as it advances.
|
||||
@@ -103,11 +106,16 @@ func aeRender(ctx context.Context, aePath string, job *Job, outputPath string, o
|
||||
|
||||
// aerender flags:
|
||||
// -project <path.aep>
|
||||
// -comp <name> (or -rqindex 1 when no comp name is known)
|
||||
// -output <output.mp4>
|
||||
args := []string{
|
||||
"-project", job.AEPFilePath,
|
||||
"-output", outputPath,
|
||||
// Without -comp/-rqindex, aerender ignores -output and renders nothing.
|
||||
args := []string{"-project", job.AEPFilePath}
|
||||
if job.CompName != "" {
|
||||
args = append(args, "-comp", job.CompName)
|
||||
} else {
|
||||
args = append(args, "-rqindex", "1")
|
||||
}
|
||||
args = append(args, "-output", outputPath)
|
||||
|
||||
log.Printf("[ae] running: %s %v", aePath, args)
|
||||
cmd := exec.CommandContext(ctx, aePath, args...)
|
||||
|
||||
Reference in New Issue
Block a user