fix(sefaria): ירידות שורה (<br>) בתוך מקטע נשמרות; כיווץ רק בתיקוני הזוהר ובקורן - #42
Conversation
|
@palmoni5 |
|
@Y-PLONI |
|
@palmoni5 |
|
מצאתי באג בשמירת מזהי השורות, ושחזרתי אותו בשתי בדיקות שנכשלות על ראש ה־PR ( [P1] מפתח השורה צריך לשחזר גם את סדר תיקוני הטקסט הקודם, ולא רק לכווץ ב־ דוגמאות בספר
בשני הכיוונים מתקבל hash אחר לאותו מקטע, ולכן מוקצה מזהה חדש וקישורים שתלויים בו משתנים, בניגוד להבטחת ה־PR. תיקון שמפעיל הבדיקות הקיימות ( |
…זוהר cleanSefariaLine החליפה ברווח כל <br> שיש אחריו טקסט, בכל ספר מספריא. הכלל נוסף (493939c, #392) בשביל תיקוני הזוהר, שנשברים באמצע משפט לשורות קצרות, אבל ברוב הספרים <br> הוא מבנה אמיתי: הפרדה בין דיבורים ופסקאות, וכותרת מודגשת בשורה משלה. דווח על אבן האזל על הרמב"ם. סריקה של export ספריא מ-2026-09-18: 315,539 ירידות ב-2,108 ספרים נמחקו. 91.5% מהן באות אחרי סוף משפט, אחרי כותרת מודגשת או כ-<br><br>. ב-879 מתוך 944 ספרים (עם 20 ירידות לפחות) פחות מ-10% מהירידות באמצע משפט. עכשיו ה-<br> הפנימי נשמר, והכיווץ נעשה רק בספרים שברשימה COLLAPSE_INLINE_BREAK_BOOKS (לפי כותרת אנגלית). הרשימה מפורשת ולא נגזרת מסטטיסטיקה של הספר: ספר שקרוב לסף היה עובר צד כשספריא עורכת אותו, וכל שורותיו היו משתנות בעדכון. מפתח השורה מחושב כאילו ה-<br> הפנימי הוא רווח (rawSegmentForKey). כך מזהי השורות והקישורים לא משתנים, ורק תוכן השורה מתעדכן. בדיקה מוודאת שהצורה המכווצת של שורה שנשמרה זהה לפלט של הניקוי המכווץ.
בשלושת הספרים (מחזור ר"ה, מחזור יוה"כ וסידור קורן השלם, נוסח אשכנז) 65–72% מהירידות באות באמצע משפט, בשורות של כ-50 תווים לפי עימוד הדפוס. ספרים אלה נשארים ברצף אחד, כמו היום.
|
עדכון לאחר תיקון ה־P1 ובדיקת QA עצמאית: נמצאו עוד שני מקרים, וטופלו בקוד המקומי:
בדיקות |
0f9bc72 to
7fa6fa0
Compare
הבעיה
דווח שבאבן האזל על הרמב"ם לא מוצגות ירידות שורה שמסומנות בספריא ב-
<br>בתוך מקטע.cleanSefariaLineמחליפה ברווח כל<br>שיש אחריו טקסט, בכל ספר מספריא. הכלל נוסף ב-493939c (#392) בשביל תיקוני הזוהר, שנשברים באמצע משפט לשורות קצרות. אבל ברוב הספרים<br>הוא מבנה אמיתי: הפרדה בין דיבורים ופסקאות, או כותרת מודגשת בשורה משלה (<b>…</b><br>ביכין, בטור ועוד).סריקה של export ספריא מ-2026-09-18:
<br>בתוך מקטע<br><br>ההתפלגות לפי ספר דו-שיאית: ב-879 מתוך 944 ספרים (עם 20 ירידות לפחות) פחות מ-10% מהירידות באמצע משפט. הירידות שבאמצע משפט מרוכזות בתיקוני הזוהר (שורות של 19 תווים בממוצע) ובמהדורות קורן (כ-50 תווים, לפי עימוד הדפוס).
התיקון
<br>פנימי נשמר כברירת מחדל. הוא מנורמל ל-<br>וכפל רווחים מכווץ, כמו לפני.COLLAPSE_INLINE_BREAK_BOOKS, לפי כותרת אנגלית: תיקוני הזוהר, מחזור קורן לר"ה, מחזור קורן ליוה"כ וסידור קורן השלם (אשכנז). הרשימה מפורשת ולא נגזרת מסטטיסטיקה של הספר, מאחת משתי סיבות:<span>/<small>לפני<sup>במורה נבוכים, ומפרידי "• • •".rawSegmentForKeyמחשב את המפתח כאילו ה-<br>הפנימי הוא רווח, מאותה סיבה שהוא כבר מסיר את קידומת המספור (#1211). בלי זה, כל השורות שהתוכן שלהן השתנה היו מקבלות מזהה חדש, ואיתן כל הקישורים שלהן. עם זה, רקline.contentו-charCountמשתנים.השפעות לוואי
line_dh):DhExtractorבפורמט lead-bold לא חוצה<br>(מכוון). בשורות שבהן ה-<br>חוזר, עשויים להשתנות חלק מהמפתחות.SefariaDashlessDibburim.separate: מדלגת על שורה שיש בה תג במשפט הראשון. זה נוגע רק לספרים שברשימה שלה ששורותיהם מכילות<br>בתחילתן.בדיקות
SefariaCleanSefariaLineTest:LineKeyPrefixStabilityTest: שורה עם<br>שומרת את ה-<br>בתוכן, ומפתחה הוא המפתח של הצורה המכווצת. בבדיקה הקיימת,<br>שימש רק כדי ש"הניקוי ישנה" את השורה, ולכן הוחלף בסימון Otzar (@04…}).SefariaImageEmbedderTest.compatibleWithOtherCleanStepsעבר למצב כיווץ מפורש, כי מטרתו לבדוק את השילוב בין השלבים.:sefariasqlite:jvmTest: 351 בדיקות, 9 כשלים ב-ManualLinksRefreshIntegrationTestוב-SefariaBookPayloadReaderTest.inferredBaseFromTitleWhenNoDeclaredBase. הכשלים זהים בבסיסotzariaבלי השינוי (נתיבי Windows,Unsafe repository-relative path). בדקתי אתinferredBaseFromTitleWhenNoDeclaredBaseעל הבסיס במפורש.<br>בתוכן השורות, ובתיקוני הזוהר לא.🤖 Generated with Claude Code