الجواب باختصار.
إذا كنت تستدعي واجهة البرمجة أو خادم MCP بـoffset فغيّر ذلك: مرّر قيمة next_cursor من الردّ السابق في cursor. صار offset يعيد 400 في واجهة البرمجة وخطأ أداة في MCP، وكلاهما يقول ما يجب إرساله. وفي الموقع تعرض القوائم «الأحدث» و«الأقدم»، واختفت أرقام الصفحات. تكلّف الصفحة الشيء نفسه مهما كان عمقها: بين 0.1 و0.7 ميلي ثانية على نسخة من البيانات.
برنامج زحف كشف الصفحات البطيئة.
في 6 تشرين الثاني انطلق تنبيه زمن الاستجابة لدينا عند 3,108 ميلي ثانية. كان برنامج زحف على Alibaba Cloud، يعرّف عن نفسه كمتصفح ولا يحترم robots.txt، يسير في قائمة القوانين من الصفحة 1,035 إلى الصفحة 2,511. استغرقت كل صفحة بين ثانيتين و9 ثوانٍ.
لماذا كانت الصفحة 2,000 بطيئة.
يطلب offset من قاعدة البيانات أن تنتج كل الصفوف السابقة ثم ترميها. الصفحة 2,000 من قائمة القوانين كانت تقرأ 80,000 قانون لتعرض صفحة واحدة: 835 ميلي ثانية على جهاز الاختبار لدينا. إصلاح أول في اليوم نفسه صار يختار معرّفات الصفحة قبل قراءة الأعمدة المكلفة، فصارت الصفحات العميقة أسرع بنحو ست مرات. والإصلاح الثاني أزال offset.
كيف يعمل المؤشّر.
يحمل المؤشّر مفتاح الترتيب لآخر صف رأيته. الصفحة التالية هي الصفوف التي تلي هذا المفتاح، ويجيب عنها الفهرس مباشرة. أضفنا 13 فهرساً، واحداً لكل ترتيب قائمة. المؤشّر رمز مغلق: أعده كما هو.
ما الذي يتغيّر عندك.
واجهة البرمجة: /api/v1/laws/ و/api/v1/gazette/ و/api/v1/search/ تقبل cursor وتعيد next_cursor ما دام هناك مزيد. MCP 2.0.0: الأدوات get_law_texts وget_links وlist_legislation وlist_gazette_issues تفعل الشيء نفسه. للانتقال إلى فترة معيّنة استخدم since وuntil. العناوين المرقّمة القديمة مثل ?page=7 تُحوَّل إلى الصفحة الأولى من القائمة، وكل وثيقة ما زالت في خريطة موقع. وتحتفظ قائمة مواد القانون بصفحاتها المرقّمة، وهي نطاقات من مواقع المواد.
الدليل: لا فجوات ولا تكرار.
سرنا في قوائم كاملة بالمؤشّر على البيانات الحقيقية وقارنّا كل مسار باستعلام واحد غير مقسّم إلى صفحات: القوانين الـ103,102 كلها بالترتيبين (1,032 صفحة)، و6,848 عدداً من الجريدة الرسمية، و5,421 رابطاً بين النصوص. لم ينقص أي صف ولم يتكرر أي صف.
أدوات تقول إنها تقرأ فقط.
في اليوم نفسه وسم MCP 1.2.0 الأدوات العشر كلها بأنها للقراءة فقط. يطلب ChatGPT من المستخدم تأكيد كل استدعاء لأداة غير موسومة بذلك. وحصل مدخل السجل الرسمي على أيقونة، فلم تعد الأدلّة تعرض مربعاً فارغاً.