سياسة البيانات: من أين تأتي أرقام الجدول وما حدودها
هذه الصفحة تشرح بالتفصيل من أين يأتي كل رقم في جدول المباريات، وأي الحقول قرّرنا عدم عرضها ولماذا. نشرناها لأن القارئ يستحق أن يعرف حدود ما يقرأ.
المصدر
بيانات المباريات كلها تأتي من تغذية JSON واحدة تنتجها إضافة على موقع المصدر، وتُقسّم المباريات ثلاثة أقسام: اليوم والأمس والغد. نحن لا نملك هذه التغذية ولا نعدّلها، ولا نشغّل جدولاً موازياً للمباريات، ولا نجمع البيانات من مصادر أخرى ثم ندمجها. مصدر واحد يعني مسؤولية واحدة واضحة ولا يعني تناقضاً بين صفحتين.
ولا ننسخ نصوص المصدر ولا تخطيط صفحاته. القراءة من التغذية المنظّمة، ومن البيانات المنظّمة (schema.org) المنشورة على صفحة المباراة نفسها، وبحدّ حقلين فقط هما موعد الانطلاق واسم البطولة. ما عدا ذلك لا نقرأه ولا نعيد نشره.
كيف تصل البيانات إلى صفحتك
لكل صفحة مسارَان للبيانات. الأول أن نسخة من الجدول مطبوعة داخل ملف HTML وقت بناء الموقع، فتظهر البطاقات كاملة حتى لو تعطّل كل شيء آخر، وتراها محرّكات البحث بلا حاجة إلى تشغيل جافاسكربت. والثاني أن الصفحة تحاول بعد فتحها قراءة التغذية الحيّة وتحديث البطاقات بها.
إن نجحت القراءة الحيّة كتبنا لك وقت تحديث المصدر. وإن فشلت أبقينا اللقطة الثابتة وأخبرناك صراحةً أنها لقطة وذكرنا تاريخها. لا نعرض بيانات قديمة على أنها لحظية في أي حال.
الحقول التي نعرضها
هذه الحقول اختبرناها على كل سجلّات التغذية ووجدناها موثوقة، فنعرضها كما ترد بلا تعديل: اسم الفريق المضيف واسم الفريق الضيف، شعار كل فريق حين يكون موجوداً، تاريخ المباراة، حالة المباراة، رابط المباراة في المصدر، واسم القناة الناقلة حين تكون قناة حقيقية.
الحقول التي أوقفنا عرضها، ولماذا
الإضافة التي تنتج التغذية تضع قيمة احتياطية جاهزة في أي حقل لا تجد له بيانات. المشكلة أن هذه القيمة الاحتياطية تصل إلينا وكأنها معلومة حقيقية. وقد قِسنا كل حقل على سبع وثمانين مباراة، وهذه النتائج:
| الحقل | ما وجدناه بالقياس | قرارنا |
|---|---|---|
| ساعة بدء المباراة | خمس قيم مختلفة فقط لسبع وثمانين مباراة، لأن الإضافة تستبدلها بوقت نشر المقال | لا تُعرض ولا تدخل البيانات المنظّمة |
| اسم البطولة | سبع وثمانون من سبع وثمانين تحمل القيمة العامة نفسها، أي لا بطولة حقيقية واحدة | لا يُعرض |
| المعلّق | فارغ في كل السجلّات بلا استثناء | لا يُعرض |
| النتيجة | صفر لكل فريق في كل السجلّات، بينما الحالة تقول إن المباراة لم تبدأ | تُعرض فقط إذا قالت الحالة إن المباراة بدأت أو انتهت |
| القناة الناقلة | ثماني عشرة قناة حقيقية، مقابل سبع وثلاثين مباراة تحمل قيمة عامة تعني «لا بيانات» | تُعرض القنوات الحقيقية فقط |
| الحالة | كل السجلّات تقول «لم تبدأ»، حتى مباريات الأمس | تُعرض كما ترد، مع تنبيه صريح على صفحة الأمس |
كيف تحقّقنا من ساعة البدء
لم نكتفِ بملاحظة أن القيم متكرّرة. أخذنا مباريات تحمل في التغذية ساعة البدء نفسها، ثم قارنّاها بالبيانات المنظّمة المنشورة على صفحة كل مباراة في المصدر. فوجدنا أربع مباريات تعطي التغذية لكل منها الساعة ذاتها، بينما مواعيد بدايتها الحقيقية مختلفة: الحادية والعشرون، والعاشرة والنصف مساءً، والعشرون، والعشرون. أي أن الحقل ليس ساعة بدء أصلاً.
وأثر ذلك أن عرض حقل الوقت كان سيكتب موعداً واحداً خاطئاً لعشرات المباريات في اليوم. لكن الموعد الصحيح منشور أصلاً في البيانات المنظّمة على صفحة كل مباراة في المصدر، فصرنا نقرأ من هناك حقلين فقط: موعد الانطلاق واسم البطولة، لهذه المباراة بعينها. ولا نأخذ نصّ تلك الصفحة ولا تخطيطها ولا أي حقل آخر.
ما نرفضه من بيانات المصدر
ليس كل ما ينشره المصدر معلومة. قيمة الملعب على صفحات المباريات هي العبارة نفسها في كل مباراة، وبلد العنوان فيها واحد حتى في مباراة برتغالية أو عراقية، أي أنها قيمة قالب لا ملعب. لذلك لا يظهر ملعب على أي صفحة عندنا ولا في البيانات المنظّمة. وكذلك نرفض ساعة النهاية لأنها دائماً ساعة البداية زائد ساعتين، أي قيمة محسوبة لا معلنة.
أثر ذلك على البيانات المنظّمة
الصفحة الرئيسة وصفحات الجداول تضم قائمة ItemList تصف البطاقات الظاهرة فعلاً، وكل عنصر فيها يشير إلى المكان الذي تفتحه البطاقة نفسها: صفحة المباراة عندنا إن وُجدت، وإلا عنوان المباراة في المصدر. وصفحة المباراة عندنا تحمل SportsEvent واحداً يصف ما هو مكتوب فيها فقط: الفريقان، والتاريخ، وموعد الانطلاق حين يكون مقروءاً من بيانات المصدر ومطبوعاً على الصفحة، والبطولة، والحالة. وحيث لا يوجد موعد موثوق يُكتب التاريخ مجرّداً بلا ساعة.
قاعدة صفحات المباريات
لا نُنشئ صفحة لمباراة لمجرد أن التغذية تحمل اسمَي فريقين وتاريخاً؛ تلك صفحة رقيقة تكرّر المصدر بلا فائدة. المباراة تحصل على صفحة عندنا فقط إذا اكتملت هويتها (فريقان حقيقيان، وتاريخ، وعنوان مصدر صالح) وتوفّرت معها معلومتان موضوعيتان على الأقل من هذه القائمة: بطولة حقيقية، موعد انطلاق موثوق، معلّق، ملعب، نتيجة حين تكون المباراة قد بدأت فعلاً، قناة ناقلة حقيقية. والمعلومة التي تمنح الصفحة حقّها في الوجود يجب أن تكون ظاهرة على الصفحة نفسها.
لا يوجد حدّ أعلى لعدد هذه الصفحات ولا هدف رقمي؛ العدد يتغيّر مع البيانات. ومباراة مضى موعدها ولم تصل نتيجتها لا تحصل على صفحة، لأن الصفحة كانت ستقول «لم تبدأ» عن مباراة لُعبت بالأمس. والمباراة التي لا تستوفي القاعدة تبقى بطاقة في الجدول، ورابطها هو عنوان المباراة في المصدر كما ورد في التغذية، بلا تعديل ولا صفحة تحويل وسيطة.
ما لا يفعله هذا الموقع
- لا يبثّ المباريات ولا يستضيف روابط بث.
- لا ينشر تشكيلات متوقّعة أو أخبار انتقالات بلا مصدر.
- لا يخترع قيمة لحقل غائب، بل يحذف مكانه من الصفحة.
- لا يعرض حالة «جارية الآن» من تلقاء نفسه بناءً على الساعة.
- لا ينسخ نصوص مواقع أخرى.
إن تحسّن المصدر
قرارات الحجب في هذه الصفحة مكتوبة في ملف إعدادات واحد، كل قرار فيه مقترن بسببه المُقاس. فإذا صارت التغذية تعطي ساعة بدء حقيقية، يُفتح الحقل من مكان واحد فتظهر الساعة في البطاقات وفي البيانات المنظّمة معاً في البناء التالي. الشفافية هنا ليست اعتذاراً عن نقص، بل الطريقة التي تجعل إصلاحه ممكناً.