عن المشروع

ما هي الأداة quick-cita-cr هي أداة مراقبة شخصية لفتحات المواعيد على بوابة Educación Vial لكوستاريكا. تقوم بتسجيل الدخول باستخدام بيانات حسابك، وتتحقق من فروع الاختبار العملي التي تحددها، وتحفظ سجلًا محليًّا لما رأته مسبقًا، وتنبّهك عند ظهور تواريخ جديدة أو أسبق. يذكر ملف README أن المشروع تم التحقق منه محليًّا مقابل البوابة الحية. كما يشير إلى قيد معروف واحد: خلال التحقق، لم تُحل تحديات Cloudflare بشكل موثوق في الوضع headless البحت، لذا يُوصى باستخدام الوضع headed، أو عرض افتراضي، أو ملف تعريف دائم مُحمّى للنشر دون مراقبة. المواصفات المذكورة يذكر ملف README هذه الميزات: - مراقبة مواعيد الفرع الواحد تلو الآخر. - تنبيهات للتواريخ الجديدة، وأفضل تواريخ أسبق، ونافذة "سريعة" قابلة للتكوين بعدد الأيام. - حالة SQLite بحيث تُرسل التنبيهات فقط عند حدوث تغييرات ذات معنى في التشغيل المتكرر. - إشعارات عبر Gmail SMTP باستخدام كلمات مرور التطبيقات. - ملف تعريف Chrome دائم للحفاظ على ملفات تعريف الارتباط وحالة الجلسة. - كتابة ونقرات وتأخيرات وتمرير شبيهة بالإنسان. - أعلام مكافحة الكشف لـ Chrome عبر undetected_chromedriver. - مشروع Python مبني على uv مع اختبارات وفحص الأخطاء والتحقق من الأنواع. - قوالب مؤقتة لـ systemd للمستخدم لنظامي Linux / Oracle Cloud. يذكر قسم الحالة في ملف README أن تحديات Cloudflare حُلّت في الوضع headed، ونجح تسجيل الدخول باستخدام ملف تعريف دائم، ووصل تدفق الاختبار العملي إلى توفر الفروع، واستُخرجت تواريخ المواعيد وقُورنت مع حالة SQLite، وعمل تنسيق إشعارات البريد الإلكتروني. المتطلبات - Python 3.12 أو 3.13 - uv - Chrome أو Chrome for Testing - حساب على بوابة Educación Vial - رقم إيصال لتدفق الاختبار العملي - اختياريًا، كلمة مرور تطبيق Gmail لإشعارات البريد الإلكتروني البدء قم بنسخ المستودع، ثم شغّل uv sync، يليه uv run quick-cita init. توجد الأسرار في ~/.config/quick-cita-cr/secrets.env (يقترح ملف README استخدام chmod 600)، وفروع الإعدادات بالإضافة إلى إعدادات المتصفح موجودة في ~/.config/quick-cita-cr/config.yaml. تتوفر التشخيصات عبر uv run quick-cita doctor. يمكن تشغيل فحص مرئي واحد باستخدام uv run quick-cita check --headed، والرصد المستمر عبر uv run quick-cita watch --headed. يوجد أيضًا أمر demo الذي يفتح متصفحًا مرئيًا، ويستخدم ملف التعريف الدائم، ويتحقق من الفروع المُعدة، ويطبع ملخص المواعيد حتى عند عدم وجود أحداث تنبيه جديدة. مناطق التكوين يغطي ملف YAML التكوين ثلاث مجموعات: - **appointment** — فئة الرخصة، قائمة الفروع، quick_window_days، ومفاتيح للتنبيهات في التشغيل الأول، والتواريخ الجديدة، وأفضل تواريخ أسبق، والداخلة في النافذة. - **schedule** — الفاصل الزمني بالدقائق، نسبة التذبذب، أقصى عدد للفشل قبل الإيقاف المؤقت، ومدة الإيقاف بعد الفشل. - **browser** — علم headless، مسار تنفيذ Chrome، دليل الملف الشخصي، والمهلة الزمنية. تُدعم الإشعارات حاليًّا عبر البريد الإلكتروني باستخدام Gmail SMTP (المضيف، المنفذ، عنوان المرسل، قائمة المستلمين). تُقرأ الأسرار مثل نوع الهوية، ورقم التعريف، وكلمة المرور، ورقم الإيصال، وبيانات اعتماد البريد الإلكتروني من متغيرات البيئة أو ملف الأسرار. Chrome بدون sudo للأجهزة التي لا تحتوي على Chrome مثبت بنظام Linux ولا تملك sudo، يوفر ملف README تسلسلًا لتنزيل Chrome for Testing إلى ~/.local/share/quick-cita-cr/chrome-for-testing، واستخراجه ببرنامج نصي Python قصير، وتمكين صلاحيات التنفيذ للملف التنفيذي ومعالج crashpad. ثم يشير executable_path في التكوين إلى هذا الملف التنفيذي المستخرج. التطوير والهيكل تشمل أوامر التطوير uv sync --all-groups، ruff format، ruff check، mypy على src/quick_cita_cr، وpytest. تُنظم شجرة المصدر أتمتة المتصفح (السائق، وحل تحديات Cloudflare، ومساعدي السلوك البشري)، وواجهات إرسال الإشعارات، وواجهة سطر أوامر Typer، ونماذج التكوين والأسرار، وعميل البوابة، ومحول تواريخ المواعيد، وتخزين SQLite، والراصد الذي يقارن اللقطات ويكتشف الأحداث. توجد الاختبارات، و GitHub Actions CI، وقوالب النشر لـ systemd، ووثائق النشر/الأمان بجانبها. ملاحظة أمان يحذر ملف README من إدخال بيانات الاعتماد، وملفات .env، وحالة SQLite، وملفات تعريف المتصفح، وملفات تعريف الارتباط، ولقطات الشاشة، والسجلات، أو HTML موثوق بها في نظام التحكم بالإصدار، ويحيل إلى docs/security.md. الرخصة MIT.