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

## अवलोकन Hospital-Recruit-QA-Bot एक QA-केंद्रित ऑटोमेशन पाइपलाइन है जो प्रतिदिन सुबह दक्षिण कोरिया के 42 प्रमुख अस्पतालों के भर्ती विज्ञापनों को स्वचालित रूप से एकत्र करती है और एकत्र किए गए डेटा की अखंडता को सत्यापित करती है। यह केवल साधारण क्रॉलिंग तक सीमित नहीं है, बल्कि एक सत्यापन गेटवे के माध्यम से यह सुनिश्चित करता है कि केवल विश्वसनीय डेटा ही अंतिम परिणाम में शामिल हो। ## मुख्य विशेषताएं ### 1. RaiT सत्यापन गेटवे - एकत्र किए गए रॉ डेटा के लुप्त मानों (missing values) और प्रारूप त्रुटियों को RaiT (Responsible AI Testing) फ्रेमवर्क के आधार पर वास्तविक समय में सत्यापित किया जाता है। - केवल वही विज्ञापन अंतिम परिणाम में शामिल किए जाते हैं जो सत्यापन (PASS) पास करते हैं और `seen_posts` में पंजीकृत होते हैं, जिससे अनुपयुक्त डेटा को परिणाम में मिलने से रोका जाता है। ### 2. CI/CD पाइपलाइन (GitHub Actions) - यह प्रतिदिन सुबह 9 बजे (KST) Ubuntu वर्चुअल वातावरण में स्वचालित रूप से निष्पादित होता है। - क्रॉलिंग के बाद, बॉट स्वयं अपडेट किए गए `seen_posts.csv` को कमिट/पुश करता है ताकि निरंतर डुप्लिकेट संग्रह को रोका जा सके। ### 3. डुप्लिकेट डेटा फ़िल्टरिंग - स्थानीय और क्लाउड वातावरण एक ही इतिहास DB (`seen_posts.csv`) साझा करते हैं, जिससे पहले से जाँचे गए विज्ञापनों को छोड़कर केवल नए विज्ञापनों को चुनकर रिपोर्ट किया जाता है। ## QA सत्यापन परिदृश्य README में व्यवस्थित टेस्ट केस निम्नलिखित हैं: | ID | टेस्ट आइटम | अपेक्षित परिणाम | स्थिति | |---|---|---|---| | TC-01 | RaiT डेटा वैधता सत्यापन | `verify_rait_compliance` लॉजिक के माध्यम से लुप्त मानों और प्रारूप त्रुटियों का स्वचालित निर्धारण | Pass | | TC-02 | डेटा अखंडता गार्ड | केवल PASS निर्णय प्राप्त नया डेटा डुप्लिकेट रोकथाम सूची में प्रतिबिंबित होता है | Pass | | TC-03 | एकीकृत रिपोर्ट शाखा भंडारण | कुल/नया/RaiT_FAIL डेटा को अलग-अलग शीट में विभाजित करके एक्सेल बनाना | Pass | | TC-04 | 42 अस्पतालों का लक्षित एक्सेस | सुरक्षा अवरुद्ध साइटों को छोड़कर, लक्षित साइटों का सामान्य एक्सेस और डेटा पार्सिंग सत्यापन | Pass | ## वर्कफ़्लो 1. **ट्रिगर:** प्रतिदिन सुबह 9 बजे (KST) GitHub Actions शेड्यूलर का स्वचालित निष्पादन 2. **संग्रह:** Selenium के आधार पर अस्पताल-विशिष्ट भर्ती पृष्ठों से गतिशील डेटा संग्रह 3. **QA सत्यापन:** RaiT लॉजिक के माध्यम से डेटा अखंडता की जांच 4. **डुप्लिकेट हटाना:** `seen_posts.csv` के मिलान के माध्यम से डुप्लिकेट विज्ञापनों की फ़िल्टरिंग 5. **स्वचालित अपडेट:** सत्यापित नए डेटा को रिपॉजिटरी में स्वचालित रूप से कमिट और पुश करना 6. **रिपोर्ट:** अंतिम एक्सेल परिणाम और त्रुटि लॉग को GitHub Artifacts के रूप में संग्रहीत करना ## तकनीकी स्टैक - **भाषा:** Python 3.10 - **लाइब्रेरी:** Selenium, Pandas, Openpyxl, Webdriver-manager - **ऑटोमेशन:** GitHub Actions (CI/CD) - **भंडारण:** CSV (`seen_posts.csv`) और Excel आउटपुट ## प्रोजेक्ट संरचना ```text .github/workflows/ # CI/CD पाइपलाइन कॉन्फ़िगरेशन (crawler.yml) top-hospitals/ ├── qa/ # अस्पताल-विशिष्ट क्रॉलिंग लॉजिक और RaiT सत्यापन मॉड्यूल ├── main.py # मुख्य निष्पादन इंजन (QA गेटवे और डेटा हैंडलिंग) └── seen_posts.csv # डुप्लिकेट रोकथाम के लिए इतिहास DB (स्वचालित अपडेट) ``` ## समस्या समाधान रिकॉर्ड - **वातावरण के बीच पथ पोर्टेबिलिटी:** स्थानीय और GitHub Actions वर्चुअल सर्वर के पथ अंतर के कारण निष्पादन त्रुटियां आईं, जिन्हें `os.path` आधारित सापेक्ष पथों के गतिशील निर्माण के माध्यम से हल किया गया ताकि वातावरण-स्वतंत्र निष्पादन संरचना बनाई जा सके। - **डेटा स्थिरता और डुप्लिकेट प्रबंधन:** बार-बार संग्रह के दौरान डुप्लिकेट समस्या को `seen_posts.csv` इतिहास प्रबंधन और GitHub Actions स्वचालित कमिट एकीकरण के माध्यम से हल किया गया। - **वातावरण अलगाव:** `.gitignore` को परिष्कृत करके सोर्स कोड और डेटा आउटपुट को अलग किया गया। ## ज्ञात सीमाएं - Samsung Changwon Hospital की सख्त सुरक्षा नीतियों के कारण GitHub Actions (Ubuntu/विदेशी IP) वातावरण से एक्सेस अवरुद्ध है। यदि उस अस्पताल के डेटा की आवश्यकता है, तो स्थानीय वातावरण में सीधे चलाने की सलाह दी जाती है, और स्थिरता के लिए CI/CD पाइपलाइन में उस लक्ष्य को स्वचालित रूप से स्किप करने के लिए सेट किया गया है। ## भविष्य की योजनाएं - Pytest के माध्यम से यूनिट/इंटीग्रेशन टेस्ट ऑटोमेशन लागू करना - प्रासंगिक त्रुटियों और टेक्स्ट स्थिरता को निर्धारित करने वाले बहु-आयामी सत्यापन लॉजिक को उन्नत करना - Slack/Email सूचना एकीकरण के माध्यम से परिणामों और RaiT FAIL रिपोर्ट को स्वचालित रूप से भेजना ## लाइसेंस और सावधानियां यह MIT लाइसेंस का पालन करता है। README यह स्पष्ट करता है कि यह प्रोजेक्ट व्यक्तिगत तकनीकी क्षमता बढ़ाने और पोर्टफोलियो उद्देश्यों के लिए है, और एकत्र की गई जानकारी के व्यावसायिक उपयोग की मनाही है। भर्ती जानकारी का कॉपीराइट संबंधित अस्पतालों के पास है, और मूल कॉपीराइट धारक के अनुरोध पर रिपॉजिटरी को निजी में बदला जा सकता है। सर्वर लोड को कम करने के लिए विलंब समय (delay time) लागू करने और RaiT गेटवे के माध्यम से हानिकारक डेटा को रोकने का उल्लेख किया गया है।