51 lines
1.7 KiB
JSON
51 lines
1.7 KiB
JSON
{
|
|
"environment": "test",
|
|
"trigger": {
|
|
"entry": "/ai/canvas/:projectId",
|
|
"file": "stage-20m.obj",
|
|
"sourceUnit": "m",
|
|
"lightweight": true,
|
|
"quality": "performance",
|
|
"storage": "local presigned upload with optional headers omitted"
|
|
},
|
|
"before": {
|
|
"sourceUploadHTTP": 201,
|
|
"headersPresent": false,
|
|
"putAttempted": false,
|
|
"completeAttempted": false,
|
|
"exception": "TypeError: Cannot convert undefined or null to object",
|
|
"uiMessage": "模型未能加载,当前场景保持不变。请检查文件后重试。",
|
|
"screenshot": "import-failed.png"
|
|
},
|
|
"cause": {
|
|
"frontend": "Object.entries(upload.headers)",
|
|
"api": "ModelConversionService.prepareSource returned optional storage headers without normalizing its required browser response field",
|
|
"storageContract": "OssService.getPreSignedUrlS3 headers is optional; local storage intentionally omits it"
|
|
},
|
|
"fix": {
|
|
"backendSource": "be56a7e0ec79d1a1e7420d870709014ed4bf010a",
|
|
"apiVersion": "3.23.0.20261003.1",
|
|
"change": "Return upload.headers ?? {} in model-conversion source-upload API; leave supplied signature headers unchanged",
|
|
"scope": "Model conversion upload plan only; generic storage behavior unchanged"
|
|
},
|
|
"regression": {
|
|
"before": {
|
|
"tests": 2,
|
|
"failed": 1,
|
|
"passed": 1,
|
|
"seconds": 0.579,
|
|
"failure": "browserPlan.upload.headers expected {} but received undefined"
|
|
},
|
|
"after": {
|
|
"modelConversionTests": 13,
|
|
"modelConversionSeconds": 0.84,
|
|
"nxElapsedSeconds": 2.38,
|
|
"storageTests": 27,
|
|
"storageSeconds": 0.638,
|
|
"storageNxElapsedSeconds": 1.87
|
|
},
|
|
"sharedBuildSeconds": 0.66,
|
|
"apiNxBuildSeconds": 20.83
|
|
}
|
|
}
|