9504f8ee87
runVideoPlan was passing blob URLs as "dataUrl" to uploadAssetWithProgress, which sent them to /api/oss/upload (base64 path). Blob URLs don't match DATA_URL_PATTERN regex, causing corrupt 44-byte files on OSS. Now uses uploadAssetBinary (FormData multipart) via /api/oss/upload-binary, fetching blob → uploading binary directly, same as EcommercePage path. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>