From 326c409d63e3ab7ac4c957c771f47472081177be Mon Sep 17 00:00:00 2001 From: Celes Renata Date: Wed, 15 Apr 2026 19:25:23 +0000 Subject: [PATCH] fix: use _global fallback for empty ticker in MinIO storage paths Macro news documents have no ticker, causing upload_normalized_text and upload_parser_output to produce paths like parsed//2026/... which MinIO rejects as XMinioInvalidObjectName. Use '_global' as the path segment when ticker is empty, matching the existing macro prefix pattern in upload_raw_document. --- services/shared/storage.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/services/shared/storage.py b/services/shared/storage.py index c7b27ff..69567a6 100644 --- a/services/shared/storage.py +++ b/services/shared/storage.py @@ -221,8 +221,9 @@ def upload_normalized_text( Stores under parsed/{ticker}/{yyyy}/{mm}/{dd}/{document_id}/normalized.txt """ ts = timestamp or datetime.now(timezone.utc) + safe_ticker = ticker or "_global" path = ( - f"parsed/{ticker}/{ts.year}/{ts.month:02d}/{ts.day:02d}/" + f"parsed/{safe_ticker}/{ts.year}/{ts.month:02d}/{ts.day:02d}/" f"{document_id}/normalized.txt" ) return upload_artifact( @@ -244,8 +245,9 @@ def upload_parser_output( Stores under parsed/{ticker}/{yyyy}/{mm}/{dd}/{document_id}/parser_output.json """ ts = timestamp or datetime.now(timezone.utc) + safe_ticker = ticker or "_global" path = ( - f"parsed/{ticker}/{ts.year}/{ts.month:02d}/{ts.day:02d}/" + f"parsed/{safe_ticker}/{ts.year}/{ts.month:02d}/{ts.day:02d}/" f"{document_id}/parser_output.json" ) return upload_artifact(