Files

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
}
}