इस प्रोजेक्ट के बारे में

## यह क्या है quick-cita-cr कोस्टा रिका के Educación Vial पोर्टल पर अपॉइंटमेंट खुलने की निगरानी के लिए एक व्यक्तिगत टूल है। यह आपके अपने अकाउंट क्रेडेंशियल्स के साथ साइन इन करता है, आपके द्वारा कॉन्फ़िगर की गई practical-test शाखाओं की जांच करता है, पहले से देखी गई जानकारी का स्थानीय रिकॉर्ड रखता है, और नई या पहले की तारीखें दिखने पर आपको सूचित करता है। README के अनुसार, इस प्रोजेक्ट को लाइव पोर्टल के विरुद्ध स्थानीय रूप से मान्य किया गया है। इसमें एक ज्ञात सीमा का भी उल्लेख है: सत्यापन के दौरान, शुद्ध headless मोड में Cloudflare चुनौतियां विश्वसनीय रूप से हल नहीं हुईं, इसलिए बिना निगरानी वाले डिप्लॉयमेंट के लिए headed मोड, वर्चुअल डिस्प्ले, या वार्म्ड पर्सिस्टेंट प्रोफाइल की सिफारिश की जाती है। ## रिपोर्ट की गई क्षमताएं README में इन विशेषताओं की सूची दी गई है: - शाखा-दर-शाखा अपॉइंटमेंट मॉनिटरिंग। - नई तारीखों, पहले की सर्वोत्तम तारीख, और दिनों की एक कॉन्फ़िगर करने योग्य "quick window" के लिए अलर्ट। - SQLite स्टेट ताकि बार-बार चलने पर केवल सार्थक बदलावों पर ही अलर्ट मिले। - ऐप पासवर्ड का उपयोग करके Gmail SMTP नोटिफिकेशन। - कुकीज़ और सेशन स्टेट को बनाए रखने के लिए एक पर्सिस्टेंट Chrome प्रोफाइल। - इंसानों जैसी टाइपिंग, क्लिक, देरी और स्क्रॉलिंग। - `undetected_chromedriver` के माध्यम से Chrome एंटी-डिटेक्शन फ्लैग। - टेस्ट, लिंटिंग और टाइप चेक के साथ एक `uv`-आधारित Python प्रोजेक्ट। - Linux / Oracle Cloud के लिए systemd यूजर टाइमर टेम्पलेट्स। README के स्टेटस सेक्शन के अनुसार, headed मोड में Cloudflare चुनौती हल हो गई, पर्सिस्टेंट प्रोफाइल के साथ लॉगिन काम किया, practical-test फ्लो शाखा उपलब्धता तक पहुंच गया, अपॉइंटमेंट तारीखें निकाली गईं और SQLite स्टेट के साथ तुलना की गई, और ईमेल नोटिफिकेशन फॉर्मेटिंग काम कर गई। ## आवश्यकताएं - Python 3.12 या 3.13 - `uv` - Chrome या Chrome for Testing - एक Educación Vial अकाउंट - practical-test फ्लो के लिए एक रसीद संख्या (receipt number) - वैकल्पिक रूप से, ईमेल नोटिफिकेशन के लिए एक 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 (होस्ट, पोर्ट, प्रेषक पता, प्राप्तकर्ता सूची) के माध्यम से ईमेल का समर्थन करते हैं। आईडी प्रकार, पहचान संख्या, पासवर्ड, रसीद संख्या और ईमेल क्रेडेंशियल्स जैसे सीक्रेट्स पर्यावरण चर (environment variables) या सीक्रेट्स फ़ाइल से पढ़े जाते हैं। ## बिना sudo के Chrome उन मशीनों के लिए जिनमें सिस्टम-इंस्टॉल Linux Chrome नहीं है और `sudo` नहीं है, README `~/.local/share/quick-cita-cr/chrome-for-testing` में Chrome for Testing डाउनलोड करने, एक छोटे Python स्निपेट के साथ इसे अनज़िप करने, और बाइनरी और क्रैशपैड हैंडलर को एक्जीक्यूटेबल मार्क करने का क्रम प्रदान करता है। कॉन्फ़िगरेशन में `executable_path` फिर उस एक्सट्रैक्टेड बाइनरी की ओर इशारा करता है। ## विकास और लेआउट डेवलपमेंट कमांड्स में `uv sync --all-groups`, `ruff format`, `ruff check`, `src/quick_cita_cr` पर `mypy`, और `pytest` शामिल हैं। सोर्स ट्री ब्राउज़र ऑटोमेशन (ड्राइवर, Cloudflare सॉल्वर, ह्यूमन बिहेवियर हेल्पर्स), नोटिफिकेशन बैकएंड, एक Typer CLI, कॉन्फ़िगर और सीक्रेट मॉडल, पोर्टल क्लाइंट, अपॉइंटमेंट-डेट पार्सर, SQLite स्टोरेज, और वॉचर (जो स्नैपशॉट्स की तुलना करता है और इवेंट्स का पता लगाता है) को ग्रुप करता है। टेस्ट, GitHub Actions CI, systemd डिप्लॉयमेंट टेम्पलेट्स और डिप्लॉयमेंट/सिक्योरिटी दस्तावेज़ भी साथ में हैं। ## सुरक्षा नोट README क्रेडेंशियल्स, `.env` फ़ाइलों, SQLite स्टेट, ब्राउज़र प्रोफाइल, कुकीज़, स्क्रीनशॉट, लॉग या ऑथेंटिकेटेड HTML को कमिट करने के विरुद्ध चेतावनी देता है, और `docs/security.md` की ओर इशारा करता है। ## लाइसेंस MIT.