feat(scan): binary FIX scan reads frl_/frd_ names from .aep (no AE, never hangs)
Build backend images / build content-svc (push) Failing after 15s
Build backend images / build file-svc (push) Failing after 1m51s
Build backend images / build gateway (push) Failing after 51s
Build backend images / build identity-svc (push) Failing after 57s
Build backend images / build notification-svc (push) Failing after 52s
Build backend images / build render-svc (push) Failing after 56s
Build backend images / build studio-svc (push) Failing after 57s
Build backend images / build content-svc (push) Failing after 15s
Build backend images / build file-svc (push) Failing after 1m51s
Build backend images / build gateway (push) Failing after 51s
Build backend images / build identity-svc (push) Failing after 57s
Build backend images / build notification-svc (push) Failing after 52s
Build backend images / build render-svc (push) Failing after 56s
Build backend images / build studio-svc (push) Failing after 57s
Root cause of 'stuck on AE': heavy expression-driven projects take >10min for AE to open, exceeding the scan timeout → job dies → admin UI stuck 'scanning'. Fix: extend the stdlib .aep RIFX parser to collect every Utf8 name (ParseNames), since FIX media placeholders are renamed footage ITEMS (frl_c1m1), not layers, and text are layer names (frl_c1t1) — both are Utf8 chunks. QuickScan now branches on ?mode= (or auto-detects frl_ names) and scaffolds FIX scenes/elements + frd_*color slots directly from the binary. Verified on the real final.aep that timed out in AE: 1 scene, 6 elements, 4 colors in 0.5s vs 10-min AE timeout. Admin 'Quick scan (no AE)' is now the recommended path and passes the project mode. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/flatrender/render-svc/internal/aep"
|
||||
)
|
||||
|
||||
// TestBuildFixResultRealAEP: set FR_TEST_AEP to a FIX .aep to see the scenes the
|
||||
// binary parser scaffolds (no AE). Skipped in normal runs.
|
||||
func TestBuildFixResultRealAEP(t *testing.T) {
|
||||
path := os.Getenv("FR_TEST_AEP")
|
||||
if path == "" {
|
||||
t.Skip("set FR_TEST_AEP")
|
||||
}
|
||||
data, err := os.ReadFile(path)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
names, err := aep.ParseNames(data)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
res := buildFixResult(names)
|
||||
b, _ := json.MarshalIndent(res, "", " ")
|
||||
t.Logf("FIX scan result:\n%s", string(b))
|
||||
if len(res.Scenes) == 0 {
|
||||
t.Fatalf("expected at least one scene")
|
||||
}
|
||||
total := 0
|
||||
for _, s := range res.Scenes {
|
||||
total += len(s.Elements)
|
||||
}
|
||||
t.Logf("scenes=%d total elements=%d shared_colors=%d", len(res.Scenes), total, len(res.SharedColors))
|
||||
}
|
||||
Reference in New Issue
Block a user