টিচার QR উপস্থিতি + POS/USB স্ক্যানার মোড + SMS গেটওয়ে — ব্যবহারের নিয়ম
=====================================================================
বসানোর নিয়ম: জিপের ফাইলগুলো প্রজেক্টের একই পথে বদলে দিন/যোগ করুন (step7-এর পরে)। ডাটাবেজে হাতে কিছু করতে হবে না
(টিচারের আসা/যাওয়ার সময়ের কলাম প্রথমবার চালালে নিজে তৈরি হবে)।

১) টিচারের QR উপস্থিতি
   * টিচারের আইডি কার্ডেও QR আছে। অ্যাডমিন/অফিস স্টাফ ফোনের ক্যামেরা (অ্যাডমিন ▸ QR এটেন্ডেন্স স্ক্যান) বা POS/USB স্ক্যানার
     (অ্যাডমিন ▸ গেট / POS স্ক্যানার মোড) দিয়ে টিচারের কার্ড স্ক্যান করলে "চেক-ইন" হয় — সময়সহ।
   * "স্কুলে আসার সময়" ঠিক করা থাকলে (অ্যাডমিন ▸ QR এটেন্ডেন্স ▸ সেটিংস ▸ টিচারদের QR উপস্থিতি) তার পরে এলে নিজে "দেরি" হয়
     (সহনশীলতা মিনিট দেওয়া যায়)। সময় ফাঁকা থাকলে কাউকে দেরি ধরা হয় না।
   * আসার ১ ঘণ্টা পরে আবার স্ক্যান করলে "চেক-আউট" (যাওয়ার সময়) সেভ হয় — সেটিংসে বন্ধ করা যায়।
   * আগে হাতে "উপস্থিত/অনুপস্থিত" দেওয়া থাকলেও, পরে কার্ড স্ক্যান করলে সঠিক আসার সময় বসে।
   * টিচার নিজে নিজের কার্ড ফোনে স্ক্যান করে উপস্থিতি দিতে পারেন না — ইচ্ছা করেই; বাড়ি থেকে ভুয়া উপস্থিতি ঠেকাতে স্কুলের গেটে অন্য কেউ স্ক্যান করবেন।
   * অ্যাডমিন ▸ টিচার এটেন্ডেন্স পেজে এখন "ইন / আউট" সময় দেখায়।
   * নতুন রিপোর্ট: অ্যাডমিন ▸ টিচার উপস্থিতি রিপোর্ট (মাসিক ও বার্ষিক — উপস্থিত/দেরি/অনুপস্থিত/ছুটি/%)।
   * টিচারের নিজের পেজ: টিচার প্যানেল ▸ আমার উপস্থিতি (এই মাসে/এ বছরে কত দিন, প্রতিদিনের সময়সহ)।

২) POS / USB / ব্লুটুথ স্ক্যানার মোড
   * অ্যাডমিন ▸ গেট / POS স্ক্যানার মোড (শিক্ষকের প্যানেলেও "USB/POS স্ক্যানার মোড" আছে)।
   * দোকানের POS-এর মতো হ্যান্ডহেল্ড বারকোড/QR স্ক্যানার কম্পিউটারে (USB) বা ফোন/কম্পিউটারে (ব্লুটুথ) লাগান — স্ক্যানার কীবোর্ডের মতো কাজ করে।
   * পেজে ঢুকে শুধু কার্ডে স্ক্যানার ধরুন; পেজ নিজে ইনপুটে ফোকাস ধরে রাখে। স্ক্যান হলে বড় করে ছবি, নাম, ক্লাস/রোল, "উপস্থিত ✔" ও বিপ — স্টুডেন্ট ও টিচার দুজনেরই।
   * "পূর্ণ স্ক্রিন" বাটনে গেটের কম্পিউটারে কিওস্কের মতো চালানো যায়।
   * স্ক্যানারে "Enter" সাফিক্স চালু থাকতে হবে (প্রায় সব স্ক্যানারে ডিফল্ট চালু)।

৩) অভিভাবকের SMS — কীভাবে যায়, কোথায় API বসাবেন
   * সিস্টেম আছে: অ্যাডমিন ▸ SMS সেটিংস। সফটওয়্যার নিজে SMS পাঠায় না; আপনার বাল্ক-SMS প্রোভাইডারের (BulkSMSBD, SMS.NET.BD ইত্যাদি) API-তে পাঠায়।
   * আপনাকে প্রোভাইডারের অ্যাকাউন্ট নিয়ে ব্যালান্স রিচার্জ করে API Key ও Sender ID এখানে বসাতে হবে।
   * আগের ভুলগুলো ঠিক হয়েছে: (ক) আগে শুধু একটা নির্দিষ্ট প্যারামিটার-ধরন চলত, এখন প্রোভাইডার বেছে নিলে (বা নিজে URL টেমপ্লেট লিখলে) যেকোনো গেটওয়ে চলে;
     (খ) আগে গেটওয়ে ভুল key বা ব্যালান্স-শেষ জানালেও "পাঠানো হয়েছে" দেখাত — এখন গেটওয়ের উত্তর পড়ে সফল/ব্যর্থ ঠিক করে ও কারণ লগে রাখে;
     (গ) নম্বর 01XXXXXXXXX বা 8801XXXXXXXXX যে ধরনে গেটওয়ে চায় সেভাবে নিজে বদলে পাঠায়;
     (ঘ) টেস্ট SMS-এ গেটওয়ের নিজের উত্তর দেখানো হয়।
   * ⚠ BulkSMSBD ও SMS.NET.BD-র প্রিসেট আমার জানা তথ্য থেকে দেওয়া; আসল প্রোভাইডারের ডকুমেন্টের সাথে মিলিয়ে নিন। নিজের প্রোভাইডার অন্য হলে "নিজে URL টেমপ্লেট লিখব" বেছে নিন।
   * বাংলা SMS-এর জন্য গেটওয়ে ইউনিকোড সাপোর্ট করতে হবে; বাংলা ভাঙা এলে URL-এ প্রোভাইডারের ইউনিকোড অপশন দিন।
   * আমি আসল কোনো গেটওয়েতে পরীক্ষা করতে পারিনি — প্রথমে টেস্ট SMS পাঠিয়ে নিশ্চিত হয়ে নিন।

৪) নিজের সিম থেকে SMS (বাংলালিংক / গ্রামীণ / এয়ারটেল / রবি — যেকোনো সিম)
   * কীভাবে: একটা Android ফোনে আপনার সিম লাগান + ফোনে ফ্রি "SMS Gateway" অ্যাপ (যেমন "SMS Gateway for Android" বা "Traccar SMS Gateway") চালান।
     সফটওয়্যার অ্যাপকে অনুরোধ পাঠায়, অ্যাপ ফোনের সিম দিয়ে SMS পাঠায় — অভিভাবক আপনার নম্বর থেকেই SMS পাবেন।
   * সেটআপ: অ্যাডমিন ▸ SMS সেটিংস ▸ প্রোভাইডার: "নিজের সিম — Android ফোন …" → অ্যাপের দেখানো URL, ইউজারনেম/পাসওয়ার্ড (বা টোকেন) বসান → টেস্ট SMS।
     সফটওয়্যার হোস্টিংয়ে থাকলে অ্যাপের "ক্লাউড" মোড নিন (ফোন-সার্ভার একই নেটওয়ার্কে না থাকলেও চলে)।
   * ⚠ প্রিসেটের URL/বডি আমার জানা তথ্য থেকে — অ্যাপের নিজের ডকুমেন্টের সাথে মিলিয়ে নিন (ঘরগুলো বদলানো যায়)। আমি আসল ফোন/অ্যাপে পরীক্ষা করিনি।
   * সীমা: ফোন সবসময় চালু, ইন্টারনেটে যুক্ত ও চার্জে রাখতে হবে; আইফোন চলে না; বড় পরিমাণ (দিনে কয়েকশ) SMS-এ অপারেটর সিম আটকাতে পারে ও Android সতর্কতা দিতে পারে
     — অ্যাপে SMS-এর মাঝে কয়েক সেকেন্ড বিরতি দিন; অটো-SMS-এর জন্য আলাদা সিম নেওয়াই ভালো; প্রতিটা SMS সিমের ব্যালান্স/প্যাক থেকে কাটবে।
