প্রকল্প সম্পর্কে

## ওভারভিউ Hospital-Recruit-QA-Bot হলো একটি QA-কেন্দ্রিক অটোমেশন পাইপলাইন যা প্রতিদিন সকালে দক্ষিণ কোরিয়ার ৪২টি প্রধান হাসপাতালের নিয়োগ বিজ্ঞপ্তি স্বয়ংক্রিয়ভাবে সংগ্রহ করে এবং সংগৃহীত ডেটার অখণ্ডতা যাচাই করে। এটি কেবল সাধারণ ক্রলিং নয়, বরং একটি ভেরিফিকেশন গেটওয়ে ব্যবহার করে যাতে শুধুমাত্র নির্ভরযোগ্য ডেটাই চূড়ান্ত ফলাফলে অন্তর্ভুক্ত হয়। ## মূল বৈশিষ্ট্য ### ১. RaiT ভেরিফিকেশন গেটওয়ে - সংগৃহীত র-ডেটার মিসিং ভ্যালু এবং ফরম্যাট ত্রুটি RaiT (Responsible AI Testing) ফ্রেমওয়ার্কের ভিত্তিতে রিয়েল-টাইমে যাচাই করা হয়। - শুধুমাত্র ভেরিফিকেশন পাস (PASS) করা বিজ্ঞপ্তিগুলো চূড়ান্ত ফলাফলে অন্তর্ভুক্ত করা হয় এবং `seen_posts`-এ নিবন্ধিত হয়, যাতে অনুপযুক্ত ডেটা ফলাফলে মিশে না যায়। ### ২. CI/CD পাইপলাইন (GitHub Actions) - প্রতিদিন সকাল ৯টায় (KST) Ubuntu ভার্চুয়াল এনভায়রনমেন্টে স্বয়ংক্রিয়ভাবে চলে। - ক্রলিংয়ের পর আপডেট করা `seen_posts.csv` ফাইলটি বট নিজেই কমিট/পুশ করে, যা ক্রমাগত ডুপ্লিকেট সংগ্রহ প্রতিরোধ করে। ### ৩. ডুপ্লিকেট ডেটা ফিল্টারিং - লোকাল এবং ক্লাউড এনভায়রনমেন্ট একই হিস্ট্রি 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 | ৪২টি হাসপাতালের টার্গেট অ্যাক্সেস | সিকিউরিটি ব্লক করা সাইট বাদে, টার্গেট সাইটে স্বাভাবিক অ্যাক্সেস এবং ডেটা পার্সিং নিশ্চিত করা | Pass | ## ওয়ার্কফ্লো ১. **ট্রিগার:** প্রতিদিন সকাল ৯টায় (KST) GitHub Actions শিডিউলার স্বয়ংক্রিয়ভাবে চালু হয়। ২. **সংগ্রহ:** Selenium-এর মাধ্যমে প্রতিটি হাসপাতালের নিয়োগ পেজ থেকে ডাইনামিক ডেটা সংগ্রহ করা হয়। ৩. **QA ভেরিফিকেশন:** RaiT লজিকের মাধ্যমে ডেটার অখণ্ডতা পরীক্ষা করা হয়। ৪. **ডুপ্লিকেট রিমুভাল:** `seen_posts.csv`-এর সাথে তুলনা করে ডুপ্লিকেট বিজ্ঞপ্তি ফিল্টার করা হয়। ৫. **স্বয়ংক্রিয় আপডেট:** যাচাইকৃত নতুন ডেটা রিপোজিটরিতে স্বয়ংক্রিয়ভাবে কমিট এবং পুশ করা হয়। ৬. **রিপোর্ট:** চূড়ান্ত এক্সেল আউটপুট এবং এরর লগ 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 License অনুসরণ করে। README-তে উল্লেখ করা হয়েছে যে এই প্রজেক্টটি ব্যক্তিগত দক্ষতা বৃদ্ধি এবং পোর্টফোলিও উদ্দেশ্যে তৈরি, এবং সংগৃহীত তথ্যের বাণিজ্যিক ব্যবহার নিষিদ্ধ। নিয়োগ তথ্যের কপিরাইট সংশ্লিষ্ট হাসপাতালের এবং মূল মালিকের অনুরোধে রিপোজিটরি প্রাইভেট করা হতে পারে। সার্ভার লোড কমাতে ডিলে টাইম প্রয়োগ এবং RaiT গেটওয়ের মাধ্যমে ক্ষতিকারক ডেটা ব্লক করার কথা উল্লেখ করা হয়েছে।