تخطَّ إلى المحتوى

التقويم والجدولة

يتصل Control Center بـ Google Calendar حتى يظهر يومك إلى جانب أسطولك. يزامن أحداثك، ويعرضها في عروض الشهر والأسبوع واليوم وجدول الأعمال، وينبّهك قبل بدء الاجتماع، ويحوّل أي حدث إلى اجتماع مُسجَّل ومُلخَّص.

لا شيء تقريبًا. يسحب التكامل الأحداث ويعرضها. لا ينشئ دعوات ولا يحرّرها ولا يحذفها ولا يردّ عليها. كل اتصال بمنح رمز الجهاز، سواء كان العميل مضمّنًا أو جلبته أنت، يطلب calendar.readonly بالإضافة إلى openid email.

تُزامَن الأحداث في قاعدة مساحة العمل نفسها على الخادم (<dataDir>/<workspaceId>/workspace.db)، ويعرضها كل عميل عبر RPC. لا يحتفظ أي عميل ببيانات اعتماد Google.

حسابات التقويم نطاقها مساحة العمل، كسائر ما في Control Center. تربط كل مساحة عمل حساب Google الخاص بها (أو عدة حسابات)، ولا تظهر أحداث مساحة ولا رموزها من مساحة أخرى. تبديل مساحة العمل يبدّل التقويمات التي تراها.

تستطيع مساحة العمل ربط عدة حسابات Google، كحساب العمل وحساب شخصي، وتُدمَج أحداثها في العروض نفسها.

لماذا تسجيل الدخول برمز جهاز

قسم بعنوان “لماذا تسجيل الدخول برمز جهاز”

cc_server بلا واجهة، ولا متصفح لديه يلتقط إعادة توجيه OAuth، فلا يستخدمها. التفويض يتم بـمنح رمز الجهاز (RFC 8628). يعرض الخادم رمز مستخدم قصيرًا ورابط Google، وتوافق على أي جهاز فيه متصفح، ويواصل الخادم الاستطلاع حتى توافق. ولهذا تحديدًا يستطيع التثبيت بلا واجهة ربط حساب: لا نقطة نهاية لإعادة التوجيه يلزم استضافتها.

ما يلزم معرفته قبل جلب بيانات الاعتماد بنفسك: يجب أن يكون نوع العميل «TV and Limited Input devices» لدى Google. لا تمنح Google هذا النوع إلا مجموعة نطاقات مدرجة في قائمة السماح، وإذا لم يُسمح بـ Google Calendar لهذا النوع في المشروع يفشل التدفق مع invalid_scope — وتحتاج عندئذٍ إلى عميل loopback أو عميل ويب.

لا تغادر الرموز الخادم. تُكتب في secrets.json الخاص بالخادم داخل دليل بياناته، بمفتاح google_google:<workspaceId>:<email>، إلى جانب قواعد البيانات وضمن حد الثقة نفسه لنظام ملفات المضيف. يجدّد الخادم الوصول تلقائيًا، وحين يُبطل Google حسابًا إبطالًا دائمًا (جلسة مُلغاة أو منتهية منذ وقت طويل) ينشر CalendarAuthExpired ويُظهر شريط إعادة الاتصال بدل أن يفشل بصمت.

البناء من المصدر بلا أي بيانات اعتماد Google — توفّر معرّف العميل وسرّه بنفسك. تُضمِّن بناءات الإصدار الرسمية عميلًا غير سري لمنح رمز الجهاز حتى يعمل مسار الربط من غير إعداد إضافي، ولا يخزّن الخادم إلا علامة تشير إليه، لا نسخة منه أبدًا. يتقدّم GOOGLE_OAUTH_CLIENT_ID (وسرّه) في البيئة دائمًا على الزوج المضمَّن. وعمدًا لا يوجد علم --google-client-id: الأعلام غير المعروفة تُتجاهل، والسر على سطر الأوامر يُقرأ عبر ps.

لتشغيل مشروع Google الخاص بك، انظر ربط Google Calendar.

يسحب الخادم نافذة متحركة من أحداث كل حساب متصل — كل تقويم في الحساب، لا التقويم الأساسي وحده — كل دقيقتين، وكذلك عند الطلب (البدء، والربط، والتحديث اليدوي). الإيقاع القصير قليل الكلفة لأن المسح تزايدي: يحمل كل تقويم رمز مزامنة خاصًا به، فالتقويم الذي لم يتغيّر يكلّف استجابة واحدة شبه فارغة بدل إعادة جلب نافذة من خمسة أشهر.

تُوسَّع الأحداث المتكررة على جهة الخادم، فلا يحلّل أي عميل قاعدة تكرار. الانتقال إلى شهر خارج النافذة الحالية يحمّل ذلك النطاق عند الحاجة. الأحداث المحذوفة، أو التي خرجت من النطاق، تُزال بالمطابقة في المزامنة التالية.

العرض ما يعرضه
شهر شبكة شهر كامل (مدعومة بحزمة kalender)
أسبوع أحداث الأسبوع ذات الوقت المحدد في شبكة زمنية
يوم أحداث يوم واحد ذات الوقت المحدد في شبكة زمنية
جدول الأعمال قائمة قابلة للتمرير للأحداث القادمة

افتح التقويم على /calendar؛ واختيار حدث يفتح تفاصيله على /calendar/:eventId. العرض الذي تختاره يُخزَّن في تفضيلات ذلك العميل، فلا يتبعك إلى جهاز آخر.

يفحص مُجدول يعمل كل دقيقة الأحداث التي تبدأ ضمن نافذة تنبيه مسبقة قابلة للضبط، ويُطلق إشعار «اجتماع يبدأ قريبًا» (MeetingStartingSoon، وهو حدث نطاق). يحمل الإشعار رابط الانضمام إن وُجد، والنقر عليه يفتح تفاصيل الحدث. تُلغى التنبيهات المكررة بالاستناد إلى alertedAt على الحدث، فلا يُنبَّه الاجتماع نفسه مرتين حتى بعد إعادة التشغيل، ولا يُعاد تنبيه حدث مضى وقت بدئه والتطبيق مغلق.

حدّان يسهل الوقوع فيهما. يعمل المُجدول على جهة العميل في الحاسوب، ولمساحة العمل المفتوحة حاليًا فقط — مساحة لست فيها لا ترفع تنبيهًا. ونسخة الويب بلا مسار إشعارات لنظام التشغيل أصلًا، فلا ترفع تنبيهًا هي أيضًا.

من حدث في التقويم تستطيع بدء تسجيل اجتماع بعنوان الحدث. يخزّن Control Center ارتباطًا واحدًا لواحد بين التسجيل والحدث، فتبقى ملاحظات الاجتماع مربوطة بقيد التقويم، من غير أن تعتمد إحدى الميزتين على الأخرى.

بدء التسجيل والربط على الحاسوب فقط. في عميل الويب يُبلّغ الإجراء أن التسجيل غير متاح — مع أن مسار التسجيل في شاشة الاجتماعات نفسها يعمل في المتصفح.