Read this page in English
→ سجل المشروع

برنامج تحديث البيانات صار علنياً

يجمع scripts/nightly.sh صفحات موقع الجامعة اللبنانية، ويعيد بناء قاعدة البيانات ويفحصها، ثم يفتح طلب دمج لا يغيّر إلا البيانات. وقد كشفت أول تجربتين له خطأين جسيمين قبل دفع أي شيء.

كيف تحدّث البيانات

برنامج واحد ينتهي بطلب دمج.

كان تحديث البيانات يجري من مستودع خاص. أما الآن فيقوم scripts/nightly.sh في المستودع العام بالعمل نفسه: يجمع صفحات موقع المركز، ويعيد بناء data/، ويجري الفحوص، ويصدّر، ثم يفتح طلب دمج لا يغيّر إلا data/. يدمجه أحد المشرفين، فتنشر مسارات العمل الموقعَ ومجموعة بيانات Hugging Face والصور. ويؤدي الخيار --dry-run كل ذلك محلياً من دون دفع. ويرفض البرنامج العمل داخل GitHub Actions.

النماذج تقرأ التعديلات والإحالات.

بعد نجاح فحوص البناء يطلب البرنامج من نموذج أن يحكم على التعديلات المقترحة وأن يقرأ الإحالات بين المواد: Gemini عبر الأمر agy أولاً، ثم Claude عندما تنفد حصة agy. ولا يُسأل النموذج إلا عمّا لم يُجَب عنه بعد. وتُحفظ الأجوبة في db/model/ ضمن طلب دمج البيانات نفسه، فيراها شخص قبل أن تصل إلى الموقع. وإذا فشلت خطوة النموذج احتُفظ بما قُرئ ولا يتوقف التصدير.

تجربتان وخطآن مكشوفان.

وجّهت التجربة الأولى أداة الجمع إلى نسخة جزئية من مخزنها، فأزال التصدير 93,487 قانوناً من الأرشيف المحلي ولم يُبقِ إلا 9,710 قوانين كانت في تلك النسخة. وفشل فحص البناء بسبب القوانين الناقصة، فلم يُصدَّر شيء. وأعادت التجربة الثانية تاريخ آخر تغيير لـ164,305 صفحات من أصل 165,855 صفحة لم تتغيّر إلى يوم التشغيل. ولو نُشر ذلك لتغيّر كل تاريخ في خرائط الموقع ولأُعيد بناء كل الصفحات. أما الآن فيحمّل البرنامج تواريخ الصفحات من data/ المنشورة قبل البناء، ويبني الخيار LEBLEG_SCRAPE=0 من الأرشيف المنشور عندما تتولى مهمة أخرى جمع الصفحات.

النص الجديد يحصل على متجهاته ضمن سقف يومي.

يحتاج البحث بالمعنى إلى متجه لكل مقطع. يجد مسار عمل المتجهات الآن المقاطع التي لا متجه لها ويحوّلها بـgemini-embedding-001، بحدّ أقصى دولار واحد و20,000 مقطع في اليوم. والتشغيل الذي يبلغ السقف يُستأنف في اليوم التالي من دون الدفع مرتين، ولا يُنشر شيء ما دام أي مقطع حالي بلا متجه.

المصادر

استخدم المكتبة