fix(ingest): קריאת קובץ-staging דרך storage.ensure_local — תיקון 500 בהעלאה תחת s3-only (INV-STG1) #228
Reference in New Issue
Block a user
Delete Branch "worktree-s3-ingest-readpath"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
הבעיה
העלאת פסיקה (
/missing-precedents) והעלאת החלטת-ועדה (internal-decisions) נכשלו בייצור:.docמנבו →Converted file not found: /tmp/.../...docx.docx→Package not found at '/data/internal-decisions/תל אביב/...docx'(500)השורש
ingest._stage_fileכותב את הקובץ דרךstorage.put_file(...)ומחזיר נתיב-DATA_DIR. תחת backends3-only (cutover 2026-06-11) ה-blob נכתב רק ל-MinIO ואין עותק בדיסק. אחר-כך הצינור קרא את אותו נתיב ישירות מהדיסק (extract_text) → אין קובץ → python-docx זרקPackageNotFoundError(ול-.doc, LibreOffice קיבל נתיב ריק → "Converted file not found").מסלול תיקי-המקרה לא נפגע כי הוא שומר עותק-דיסק קנוני +
mirror_file; רק מסלול_stage_fileהמשותף (precedent-library + internal-decisions + digests) קרא את ה-key כאילו הוא על הדיסק.התיקון (G1 נרמול-במקור · INV-STG1 קריאה דרך שכבת-האחסון)
_stage_fileמחזיר עכשיו את ה-KEY (נתיב יחסי-DATA_DIR), לאPath.ingest_documentו-digest_libraryמאתרים נתיב-קריאה מקומי דרךstorage.ensure_local:filesystem/dual→ עותק-הדיסק הקיים (ללא העתקה).s3-only → הורדה ל-temp שאנו מנקים ב-finally(בלי דליפה ל-/tmp).בדיקות
test_unified_ingest::test_ingest_reads_via_ensure_local_when_no_disk_copy— backend in-memory ללא עותק-דיסק (מדמה s3-only); מוודא שהצינור משלים ושה-temp נוקה. נכשל מול הקוד הישן, עובר מול החדש.test_storage_stagingעודכן לחוזה-ה-KEY החדש.Invariants
🤖 Generated with Claude Code