الغرف الجماعية
أدر جلسات توحيد المعايير والمعايرة الحية داخل Potato. تصويت أعمى، ثم كشف من المضيف، ثم نقاش، مع مقياس Krippendorff's α لحظي يبيّن ما أضافته الجلسة فعلاً.
جديد في الإصدار v2.7.0
تحوّل الغرف الجماعية (Multiplayer Rooms) التعليق التوضيحي من مهمة فردية إلى جلسة حية مشتركة. تعمل مجموعة من المعلّقين على العنصر نفسه في الوقت نفسه، مع قياس الديناميكيات الاجتماعية بدل الاكتفاء بإتاحتها. بلا LLM، وبلا خدمات خارجية، وبلا تبعيات جديدة.

ثلاثة أنواع من الغرف:
| النوع | ما يحدث فيها |
|---|---|
| Norming (توحيد المعايير) | يصوّت الجميع بشكل أعمى، ثم يكشف المضيف، وتناقش المجموعة، ولأي عضو أن يغيّر تصويته. ويعرض مقياس اتفاق حي قيمة α قبل الكشف مقابل α بعد النقاش. |
| Huddle (لقاء البتّ) | يمرّ على العناصر التي يختلف عليها فريقك حالياً، مع عرض تعليقات الجميع الأصلية كسياق. جلسة بتّ حية. |
| Shadow (المتابعة) | ينضم المتدربون كمراقبين ويشاهدون المضيف وهو يعلّق لحظياً، بما في ذلك الجزء الذي يظلّله من النص. |
لماذا غرف توحيد المعايير
تعقد فرق التعليق التوضيحي اجتماعات توحيد معايير عبر مشاركة الشاشة أصلاً، وتنتهي النتائج في ملاحظات أحدهم. تجعل الغرف الجلسة جزءاً من الأداة وتقيسها.
- الأعمى أولاً. قبل الكشف، يرى الأعضاء من صوّت لكن لا يرون بماذا صوّت. وهذا مفروض على جانب الخادم، فتكون الانطباعات الأولى مستقلة فعلاً.
- الكشف عملية قياس. تصبح الأصوات العمياء غير قابلة للتغيير بمجرد كشفها. ويُسجَّل كل تغيير بعد الكشف مع ما تحوّل عنه العضو وما تحوّل إليه وما كانت الأغلبية في تلك اللحظة، مما يعطيك سجل مسايرة لكل عضو.
- مقياس α يجيب عن سؤال "هل كان ذلك يستحق؟" تُحسب Krippendorff's α مرتين على العناصر المكشوفة: على الأصوات العمياء، وعلى الأصوات الحالية. والفارق بينهما هو مكسب الجلسة من توحيد المعايير، معروضاً على الشاشة أثناء حدوثه.
التهيئة
rooms:
enabled: true
who_can_create: any # "any" logged-in user, or "admin" only
persist_votes: true # final votes write into members' annotation state
poll_interval_ms: 1500 # client sync cadence (500–30000)
max_members: 12 # per room (2–100)
schema: sarcasm # optional; defaults to the first radio/likert schemeتصوّت الغرف على مخطط واحد أحادي الاختيار (radio أو likert). وإن لم يُضبط schema، استُخدم أول مخطط من هذا النوع في annotation_schemes.
إدارة جلسة
- شغّل الخادم، وسجّل الدخول، وافتح
/rooms. - أنشئ غرفة (النوع وعدد العناصر). ستحصل على رمز من ستة أحرف مثل
MKT4QP. وتتجنب الرموز المحارف الملتبسة كي تتمكن من قراءتها بصوت مسموع. - ينضم الآخرون من قائمة الردهة، أو بفتح
/rooms/<CODE>. - صوّتوا، ثم يكشف المضيف، وناقشوا في الدردشة الجانبية، وغيّروا أصواتكم إن اقتنعتم، ثم يتقدّم المضيف. وبعد العنصر الأخير تُغلق الغرفة بملخص للجلسة، ويمكن للمضيف تنزيل سجل الأحداث الكامل.
لقاءات Huddle
يؤدي اختيار Huddle عند الإنشاء إلى تعبئة الغرفة بكل عنصر يختلف عليه المعلّقون حالياً في مخطط الغرفة، بحد أقصى 200 عنصر. وتظهر التعليقات الأصلية فوق لوحة التصويت كسياق. وتُحسب الاختلافات لحظياً من حالة التعليق التوضيحي، فلا حاجة إلى تفعيل نظام البتّ الفرعي.
جلسات Shadow
في غرفة Shadow، ينضم الجميع عدا المضيف كمراقبين. لا يستطيع المراقبون التصويت، لكنهم يرون أصوات المضيف وكشوفه وتحديداته للنص بتأخير نحو 1.5 ثانية. ويُظلَّل تحديد المضيف الحالي باللون الكهرماني على شاشات المراقبين.
الاستمرارية والتعافي من الأعطال
كل غرفة مبنية على مصدر الأحداث. ويُلحق كل تغيير (انضمام، تصويت، كشف، تبديل، رسالة، تقدّم، إغلاق) سطر JSON واحداً بالملف:
<output_annotation_dir>/rooms/room-<CODE>.jsonl
حالة الغرفة إعادة تشغيل خالصة لذلك السجل، فتنجو الغرف الحية من إعادة تشغيل الخادم. ويؤدي السجل أيضاً دور مسار التدقيق للجلسة: الأصوات العمياء، والطوابع الزمنية، والنقاش، وكل تغيير بعد الكشف مع سياق الأغلبية عنده. ويعيد GET /rooms/api/<CODE>/export (للمضيف أو المشرف) السجل مع المقاييس المحسوبة بصيغة JSON.
مع persist_votes: true (الافتراضي)، يُكتب تصويت كل عضو النهائي على عنصر مكشوف ضمن حالة تعليقه المعتادة عندما يتقدّم المضيف. فيُحتسب عمل الغرفة تعليقات توضيحية حقيقية ويتدفق إلى كل مسارات التصدير القائمة.
يتزامن العملاء باستقصاء /events دورياً مع مؤشر موضع. لا توجد WebSockets، فتعمل الغرف تحت خادم التطوير متعدد الخيوط وأي نشر WSGI على حد سواء.
ملخص واجهة برمجة التطبيقات
| نقطة النهاية | الطريقة | لمن |
|---|---|---|
/rooms، /rooms/<code> | GET | المستخدمون المسجّلون (صفحات) |
/rooms/api/list، /rooms/api/disagreements | GET | المستخدمون المسجّلون |
/rooms/api/create | POST | بحسب who_can_create |
/rooms/api/<code>/join، /leave، /vote، /message، /presence | POST | الأعضاء |
/rooms/api/<code>/state، /events?since=N | GET | الأعضاء |
/rooms/api/<code>/reveal، /advance، /close | POST | المضيف |
/rooms/api/<code>/export | GET | المضيف أو المشرف |
قراءات إضافية
- القياس النفسي — قدرة كل معلّق وصعوبة العناصر؛ والغرف هي المكان الذي تصلح فيه مشكلات دليل الترميز التي يشير إليها
- البتّ ومعالجة الاختلاف — النظير غير المتزامن للقاءات Huddle
- كتابة إرشادات التعليق التوضيحي
- الوثائق المصدرية