Restore MiniMax media routing parity across image and video flows

The server now keeps portable image ratio normalization, enforces documented Seedream size presets, routes MiniMax img2img through generations-style payloads, and submits Hailuo video variants through the video generations API with proper reference-image handling.

Constraint: The deployed test chain relies on popiartServer as the lowest-risk place to adapt provider-specific routing without broad newapi changes
Rejected: Expand newapi relay modes for every MiniMax image/video branch | larger blast radius than needed for the verified server-managed flows
Confidence: high
Scope-risk: moderate
Reversibility: clean
Directive: Keep MiniMax-specific media routing in popiartServer unless upstream newapi adapters are upgraded to the same contract
Tested: go test ./internal/server -run TestInferRouteKeyForModelRecognizesViduAsVideo|TestGenerate|TestResolve|TestSubmitMiniMaxVideoTask|TestExecuteImageToImageJobUsesGenerationsPathForMiniMax|TestExecuteImageToVideoJob|TestResolveVideoReferencesSupportsImagesArray
Not-tested: Full PopiNewAPI unit suite (blocked earlier by external module checksum drift in local checkout)
This commit is contained in:
wtgoku
2026-04-15 11:57:05 +08:00
parent a73b85c45f
commit 6ff9ad6997
7 changed files with 982 additions and 67 deletions
+10 -5
View File
@@ -23,11 +23,16 @@ func TestConfigFromEnvDefaultsVideoRouteToViduQ2(t *testing.T) {
func TestInferRouteKeyForModelRecognizesViduAsVideo(t *testing.T) {
cases := map[string]string{
"viduq2": "video.image2video",
"vidu2.0": "video.image2video",
"sora-2": "video.image2video",
"runway-gen4": "video.image2video",
"gpt-image-1": "image.text2image",
"viduq2": "video.image2video",
"vidu2.0": "video.image2video",
"sora-2": "video.image2video",
"runway-gen4": "video.image2video",
"T2V-01": "video.image2video",
"I2V-01": "video.image2video",
"S2V-01": "video.image2video",
"MiniMax-Hailuo-2.3": "video.image2video",
"MiniMax-Hailuo-02": "video.image2video",
"gpt-image-1": "image.text2image",
}
for modelID, want := range cases {