feat(backend): CivitAI download support for other model types with subtype routing

This commit is contained in:
Will Miao
2026-09-12 15:56:47 +08:00
parent 57729375b6
commit f2a7297cb9
18 changed files with 1492 additions and 16 deletions
+20 -2
View File
@@ -303,9 +303,13 @@ class TestOtherModelMetadataFromCivitai:
def _build(self, civitai_type: str) -> OtherModelMetadata:
return OtherModelMetadata.from_civitai_info(
{
"type": civitai_type,
"baseModel": "SDXL",
"model": {"name": "Model", "tags": ["tag"], "description": "desc"},
"model": {
"name": "Model",
"tags": ["tag"],
"description": "desc",
"type": civitai_type,
},
},
{"name": "model.safetensors", "sizeKB": 1, "hashes": {"SHA256": "AB"}},
"/tmp/model.safetensors",
@@ -329,6 +333,20 @@ class TestOtherModelMetadataFromCivitai:
assert metadata.sha256 == "ab"
assert metadata.tags == ["tag"]
def test_top_level_type_key_is_ignored(self):
"""Regression: the CivitAI type lives at version["model"]["type"]; a
top-level version["type"] key must not drive the mapping (#Phase-1 bug)."""
metadata = OtherModelMetadata.from_civitai_info(
{
"type": "Upscaler",
"baseModel": "SDXL",
"model": {"name": "Model", "type": "VAE"},
},
{"name": "model.safetensors", "sizeKB": 1, "hashes": {"SHA256": "AB"}},
"/tmp/model.safetensors",
)
assert metadata.sub_type == "vae"
def test_page_type_maps_to_other():
"""The WS progress page type for the other scanner is 'other'."""