1. الحالة ونطاق التكامل
Lens مزود اختياري ضمن واجهة اكتشاف الأدلة في روافد. لا يُستدعى تلقائيًا في البحث الافتراضي؛ يجب طلبه صراحة عبر providers=lens أو إضافته إلى قائمة المزودات.
الحالة الآلية للتكامل متاحة من https://healthrenewal.org/api/v1/lens. نقطة البحث الفعلية: https://healthrenewal.org/api/v1/evidence-discovery.
2. أمثلة الاستخدام
Lens فقط: /api/v1/evidence-discovery?q=autism&providers=lens&limit=5
بحث مختلط: /api/v1/evidence-discovery?q=autism&providers=europe_pmc,crossref,datacite,lens&limit=10
إذا لم يكن الاعتماد مفعّلًا، لا تفشل الواجهة كاملة؛ تظهر Lens بحالة not_configured بينما تستمر المزودات الأخرى.
3. Lens ID والهوية المصدرية
كل سجل Lens صالح يحتفظ بـLens ID في provider_id وidentifiers.lens، مع رابط مباشر إلى السجل الأصلي في Lens. لا يُستبدل Lens ID بمعرف داخلي مبهم عند العرض أو التصدير.
4. الإسناد Attribution
الإسناد المعتمد في التكامل هو Data Sourced from The Lens. يعاد ككائن attribution داخل سجل Lens، ويجب إظهاره عند نقطة عرض بيانات Lens للمستخدم، مع رابط إلى Lens.org وسياسة The Lens attribution policy.
5. الحصص والاعتمادية
يُفرض حد التكامل الحالي تشغيليًا بحد 10 طلبات في الدقيقة و20,000 طلب في الشهر. الحجز ذري ومشترك بين نسخ الخادم عبر PostgreSQL.
يتم حجز الحصة قبل الاتصال الخارجي. إذا تعطلت طبقة الحصة يفشل Lens وحده بصورة fail closed. لا توجد retries تلقائية لطلب Lens الخارجي، لمنع تضخيم الاستهلاك.
6. الأمان وإدارة الاعتماد
رمز Lens يحفظ فقط كمتغير خادمي باسم LENS_SCHOLARLY_API_TOKEN. لا يظهر في HTML أو JSON العام أو JavaScript العميل أو المستودع.
عداد الحصة يستخدم تنفيذًا مميزًا داخل schema خاصة، بينما بوابة RPC العامة SECURITY INVOKER فقط. التنفيذ محصور في service_role؛ لا يسمح به لـanon أو authenticated.
7. الخصوصية وعدم التتبع
لا ينشئ تكامل Lens ملفًا شخصيًا للمستخدم ولا معرف مستخدم خاصًا بـLens ولا fingerprint ولا جدول تتبع لاستعلامات الأفراد. عداد الحصة عالمي للخدمة ويخزن نافذة الاستخدام وعدد الطلبات فقط.
8. حقوق البيانات والمحتوى
الوصول إلى Lens API لا يُعامل كترخيص لإعادة نشر النص الكامل أو أي مادة مقيدة. التكامل يعيد metadata للاكتشاف، المعرفات، provenance، وروابط المصدر وفق الحدود المسموح بها.
أي إعادة استخدام لاحقة يجب أن تراعي حقوق السجل الأصلي وشروط Lens والمصدر. غياب رخصة صريحة لا يعني السماح.
9. نموذج البيانات
يتم تطبيع العنوان، الملخص عند توفره، نوع النشر، السنة والتاريخ، المصدر والناشر، المؤلفين الأفراد والجماعيين، DOI وPMID وPMCID وOpenAlex وLens ID، عدد الاستشهادات، الوصول المفتوح، السحب، الإسناد وprovenance.
يحافظ الموصل على collective_name للمؤلفين الجماعيين حتى لا تضيع مجموعات البحث والكونسورتيوم.
10. حالات الخطأ
not_configured: لم يصل اعتماد Lens بعد.rate_limited: استُنفدت حصة Lens الحالية.provider_unavailable: Lens أو حارس الحصة غير متاح.
جميع هذه الحالات معزولة على مستوى المزود، ولا تسقط Europe PMC أو Crossref أو DataCite.
11. Caching وHTTP
الاستجابات العامة تستخدم cache قصير لتقليل الاستعلامات المتكررة. الاستجابات المرتبطة بمفتاح شريك تتحول إلى private, no-store وتستخدم Vary مناسبًا للاعتماد.
لا يتم وضع رمز Lens داخل cache key أو response metadata.
12. التفعيل الإنتاجي
- استلام Scholarly API credential المعتمد.
- تطبيق migration الخاصة بحصة Lens والتحقق منها.
- حفظ
LENS_SCHOLARLY_API_TOKENكسر خادمي فقط. - التحقق من صلاحيات RPC وSupabase security advisors.
- تشغيل جميع CI gates.
- اختبار Lens-only والبحث المختلط.
- التحقق من Lens ID والإسناد والمؤلفين الجماعيين.
- اختبار 429/503 والعزل بين المزودات.
- التأكد من عدم ظهور السر في السجلات أو الاستجابات.
- إرسال روابط التنفيذ الحي إلى فريق Lens، ثم ترتيب الـdemo.
13. المراجع التقنية
OpenAPI: https://healthrenewal.org/api/openapi.json
API discovery: https://healthrenewal.org/api/v1
Lens integration manifest: https://healthrenewal.org/api/v1/lens
توثيق المطورين العام: https://healthrenewal.org/developers