fix(history): accept ComfyUI asset hash aliases

This commit is contained in:
rookiestar28
2026-06-12 16:06:44 +08:00
parent b3bf098382
commit 223514c9b4
2 changed files with 76 additions and 2 deletions
+2 -2
View File
@@ -34,13 +34,13 @@ def _pick_string(payload: Dict[str, Any], *keys: str) -> str:
def _pick_asset_hash(image_ref: Dict[str, Any]) -> str:
asset_hash = _pick_string(image_ref, "asset_hash")
asset_hash = _pick_string(image_ref, "asset_hash", "hash")
if asset_hash:
return asset_hash
nested = image_ref.get("asset")
if isinstance(nested, dict):
return _pick_string(nested, "asset_hash")
return _pick_string(nested, "asset_hash", "hash")
return ""
+74
View File
@@ -104,6 +104,80 @@ class TestComfyUIHistoryParsing(unittest.TestCase):
self.assertFalse(images[0]["asset_api_required"])
self.assertEqual(images[0]["resolution"], "view")
def test_extract_images_accepts_top_level_hash_alias(self):
from services.comfyui_history import extract_images
history_item = {
"outputs": {
"2": {
"images": [
{
"filename": "hash-alias.png",
"type": "output",
"hash": "blake3:alias123",
}
]
}
}
}
images = extract_images(history_item)
self.assertEqual(len(images), 1)
self.assertEqual(images[0]["filename"], "hash-alias.png")
self.assertEqual(images[0]["asset_hash"], "blake3:alias123")
self.assertIn("filename=blake3%3Aalias123", images[0]["view_url"])
self.assertFalse(images[0]["asset_api_required"])
self.assertEqual(images[0]["resolution"], "view")
def test_extract_images_accepts_nested_hash_alias(self):
from services.comfyui_history import extract_images
history_item = {
"outputs": {
"2": {
"images": [
{
"name": "nested-hash-alias.png",
"asset": {
"hash": "blake3:nested-alias",
},
}
]
}
}
}
images = extract_images(history_item)
self.assertEqual(len(images), 1)
self.assertEqual(images[0]["filename"], "nested-hash-alias.png")
self.assertEqual(images[0]["asset_hash"], "blake3:nested-alias")
self.assertIn("filename=blake3%3Anested-alias", images[0]["view_url"])
self.assertFalse(images[0]["asset_api_required"])
self.assertEqual(images[0]["resolution"], "view")
def test_extract_images_prefers_asset_hash_over_hash_alias(self):
from services.comfyui_history import extract_images
history_item = {
"outputs": {
"2": {
"images": [
{
"filename": "preferred.png",
"asset_hash": "blake3:preferred",
"hash": "blake3:alias",
}
]
}
}
}
images = extract_images(history_item)
self.assertEqual(len(images), 1)
self.assertEqual(images[0]["asset_hash"], "blake3:preferred")
self.assertIn("filename=blake3%3Apreferred", images[0]["view_url"])
self.assertNotIn("filename=blake3%3Aalias", images[0]["view_url"])
def test_extract_images_preserves_asset_api_only_refs_as_explicit_no_go_contract(
self,
):