From 8973162defd8eca93c98dfabeaeabf4d84bff21c Mon Sep 17 00:00:00 2001 From: Luke Mino-Altherr Date: Tue, 17 Mar 2026 09:04:28 -0400 Subject: [PATCH] fix: preserve user_metadata in ingest_existing_file instead of dropping it Pass user_metadata through spec['metadata'] to batch_insert_seed_assets. Update batch_insert_seed_assets to accept raw dicts (UserMetadata) in addition to ExtractedMetadata, passing them through as-is without calling .to_user_metadata(). Amp-Thread-ID: https://ampcode.com/threads/T-019cfbe3-6440-724b-a17b-66ce09ecd1ed Co-authored-by: Amp --- app/assets/services/bulk_ingest.py | 8 +++++--- app/assets/services/ingest.py | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/app/assets/services/bulk_ingest.py b/app/assets/services/bulk_ingest.py index 67aad838f..658a08067 100644 --- a/app/assets/services/bulk_ingest.py +++ b/app/assets/services/bulk_ingest.py @@ -34,7 +34,7 @@ class SeedAssetSpec(TypedDict): info_name: str tags: list[str] fname: str - metadata: ExtractedMetadata | None + metadata: ExtractedMetadata | dict[str, Any] | None hash: str | None mime_type: str | None job_id: str | None @@ -152,8 +152,10 @@ def batch_insert_seed_assets( # Build user_metadata from extracted metadata or fallback to filename extracted_metadata = spec.get("metadata") - if extracted_metadata: - user_metadata: dict[str, Any] | None = extracted_metadata.to_user_metadata() + if isinstance(extracted_metadata, dict): + user_metadata: dict[str, Any] | None = extracted_metadata + elif extracted_metadata: + user_metadata = extracted_metadata.to_user_metadata() elif spec["fname"]: user_metadata = {"filename": spec["fname"]} else: diff --git a/app/assets/services/ingest.py b/app/assets/services/ingest.py index 286adbf0b..81a81ae03 100644 --- a/app/assets/services/ingest.py +++ b/app/assets/services/ingest.py @@ -177,7 +177,7 @@ def ingest_existing_file( "info_name": name, "tags": tags, "fname": os.path.basename(abs_path), - "metadata": None, + "metadata": user_metadata, "hash": None, "mime_type": mime_type, "job_id": job_id,