3 هفته قبل / 61 بازدید / 10 دقیقه
در بسیاری از کسبوکارها، بهویژه شرکتهای عمرانی، خدماتی و پروژهمحور، نظارت بر حضور و موقعیت مکانی کارمندان در محل پروژه از اهمیت بالایی برخوردار است. فرض کنید صاحب کسبوکاری هستید که همزمان روی چندین پروژه در نقاط مختلف شهر فعالیت میکنید. نیروهای اجرایی با نقشهای متنوع، روزانه در محل پروژهها حضور پیدا میکنند. در چنین شرایطی، از چه روشی برای کنترل ورود و خروج کارکنان در هر پروژه استفاده میکنید؟ اگر بخشی از کارکنان، بر اساس ساعات حضورشان در محل کار حقوق دریافت میکنند، چه راهحلی برای ثبت دقیق این اطلاعات در نظر دارید؟ و اگر کارکنان نیاز داشته باشند موقعیت همکاران خود را برای هماهنگی بهتر بدانند، تماس تلفنی گزینهی مناسبی است؟ در این مقاله با طرح یک دامنهی فرضی (سناریو فرضی)، تلاش میکنم با استفاده از یک بات تلگرام، قابلیت اشتراکگذاری موقعیت مکانی و توسعهی یک مینیاپلیکیشن Node.js ، راهحلی ساده، سریع و کمهزینه برای این چالش ارائه دهم.
فرض کنید یک شرکت برای مدیریت بهینه کارکنان میدانی خود، تصمیم دارد راهکاری نرمافزاری پیادهسازی کند و از شما بهعنوان توسعهدهنده میخواهد این پروژه را اجرا کنید. این شرکت هر روز در ساعت مشخصی فعالیت پروژههای خود را آغاز میکند. هر پروژه شامل گروهی از نیروی کار و یک یا چند سرپرست میباشد. سرپرستها علاوه بر نظارت بر روند اجرا، مسئول تأمین نیازهای پروژه مانند ابزار، مصالح و تجهیزات نیز هستند. در حال حاضر، تمام کارکنان زمان ورود و خروج خود را بهصورت خوداظهاری به دفتر مرکزی اعلام میکنند و کارمندان دفتری در پایان هر ماه، محاسبهی ساعات کاری افراد را انجام میدهند. از سوی دیگر، سرپرستها در طول روز گاهی نیاز دارند بین پروژهها جابجا شوند یا از حضور و موقعیت سایر سرپرستها مطلع باشند تا هماهنگی بهتری داشته باشند. مجموعهای از این نیازها، ضرورت یک راهکار دقیق، سریع و منعطف برای ثبت و نظارت بر حضور و موقعیت افراد را بهخوبی نشان میدهد.
با در نظر گرفتن نیازهای این سیستم، راهحلی که ما برای پیادهسازی پیشنهاد میکنیم، استفاده از بات تلگرامی است. این انتخاب بر پایهی چندین عامل کلیدی انجام شده است: نخست، تلگرام ابزاری رایج و آشنا برای بسیاری از کارکنان است و در اکثر گوشیهای هوشمند، حتی با سطح سواد دیجیتال پایین نیز قابل استفاده است. دوم، توسعهی یک اپلیکیشن نیتیو برای اندروید و iOS هم پرهزینه و هم زمانبر است؛ در حالی که بات تلگرام بدون نیاز به نصب اپلیکیشن اضافی، قابلیت تعامل مستقیم با کاربران را فراهم میکند. علاوه بر این، تلگرام بهصورت رایگان در دسترس است و قابلیتهایی مانند اشتراکگذاری موقعیت مکانی زنده (Live Location)، درخواست شماره تماس کاربر (Contact Request) و ساخت کیبوردهای سفارشی برای تعامل بهتر با کاربران را ارائه میدهد — ویژگیهایی که ما را قادر میسازد تا بدون نیاز به توسعهی یک اپلیکیشن مستقل، بسیاری از نیازهای سیستم را برطرف کنیم. در این سیستم، ما از قبل پایگاه دادهای شامل اطلاعات کارکنان و شماره تلفن آنها در اختیار داریم. بنابراین، برای جلوگیری از دسترسی کاربران ناشناس، بات تلگرام در مرحلهی اول، از کاربر میخواهد تا شماره تماس خود را با بات به اشتراک بگذارد. در صورتی که شماره ارسالشده در پایگاه داده موجود باشد، کاربر احراز هویت شده و اجازهی ادامهی استفاده از خدمات را خواهد داشت. پس از احراز هویت، کاربر میتواند در زمان آغاز کار، با استفاده از گزینهی "ثبت ورود"، موقعیت مکانی زندهی خود را برای بات ارسال کند. این اطلاعات در سرور ذخیره شده و بهصورت دورهای بررسی میشود. در پایان روز کاری نیز، کاربر موظف است از طریق گزینهی "ثبت خروج"، فرآیند را به پایان برساند. در صورتی که این کار انجام نشود، سیستم میتواند هشدار لازم را صادر کرده یا دسترسی کاربر را برای روزهای آینده محدود نماید. این روش، علاوه بر سادگی و سهولت استفاده، از نظر هزینه، سرعت توسعه، و میزان پذیرش از سوی کارکنان، گزینهای کاملاً منطقی و قابلاتکا به شمار میرود.
برای ساخت بات در تلگرام، نیازی به هیچ دانش فنی اولیه ندارید. فقط کافیست وارد اکانت رسمی Telegram به نام @BotFather شوید. BotFather ابزار رسمی تلگرام برای ایجاد و مدیریت باتهاست. پس از اجرای دستور /newbot، از شما یک نام و یک نام کاربری (username) برای بات خواسته میشود و سپس توکنی منحصربهفرد برای شما تولید میکند. این توکن دسترسی اصلی شما به بات است و باید با دقت نگهداری شود. این توکن در ادامه در اپلیکیشن ما استفاده میشود تا بتوانیم پیامها و دستورات کاربران را دریافت و پاسخدهی کنیم.
برای توسعه این سیستم، گزینههای مختلفی وجود داشت؛ از جمله استفاده از .NE. اما در نهایت، Node.js را به دلایل زیر انتخاب کردیم:
در Node.js برای تعامل با بات تلگرام از کتابخانه محبوب node-telegram-bot-api استفاده کردیم. این کتابخانه ارتباط با API تلگرام را ساده کرده و امکاناتی مثل:
const TelegramBot = require("node-telegram-bot-api"); const bot = new TelegramBot(TOKEN, { polling: true }); bot.on("message", (msg) => { bot.sendMessage(msg.chat.id, "سلام! پیامت رو دریافت کردم."); });
برای ذخیره اطلاعات کاربران، زمانهای ورود و خروج، و موقعیتهای مکانی از دیتابیس MongoDB استفاده کردیم. دلایل این انتخاب عبارتاند از:
برای مثال، مدل مربوط به اطلاعات حضور یک کارمند میتواند چیزی شبیه به این باشد:
const attendanceSchema = new mongoose.Schema({ userId: mongoose.ObjectId, checkinTime: Date, checkoutTime: Date, checkinLocation: { latitude: Number, longitude: Number, }, });
برای پیادهسازی این سیستم، یک معماری ساده اما کاربردی در نظر گرفته شده است. کاربران که اغلب کارمندان میدانی هستند، از طریق بات تلگرامی با سیستم در ارتباطاند. در اولین تعامل، کاربر شماره تلفن خود را با بات به اشتراک میگذارد تا احراز هویت شود. پس از تأیید، میتواند در ابتدای روز کاری با انتخاب گزینهی «ثبت ورود» و ارسال موقعیت مکانی، حضور خود را ثبت کند. در پایان روز نیز با گزینهی «ثبت خروج»، فرآیند کاری را تکمیل میکند. این اطلاعات توسط API توسعهیافته با Node.js پردازش و در پایگاه داده MongoDB ذخیره میشود. در صورت عدم ثبت خروج تا پایان زمان کاری، سیستم میتواند هشدار ارسال کرده یا دسترسی کاربر را محدود کند. کل سیستم بدون نیاز به اپلیکیشن مستقل، با استفاده از ابزارهای آشنا و کمهزینه پیادهسازی شده و امکان توسعههای بعدی مانند گزارشگیری و مانیتورینگ زنده را نیز فراهم میکند.
در این مقاله یک راهحل ساده، منعطف و کمهزینه برای نظارت بر حضور و موقعیت مکانی کارمندان پروژهای معرفی شد. بهجای توسعهی یک اپلیکیشن موبایل پیچیده، با استفاده از تلگرام بهعنوان یک بستر آشنا برای کاربران و Node.js بهعنوان بستر اصلی توسعهAPI، میتوانیم سیستمی مؤثر و سریع توسعه دهیم. این سامانه امکان کنترل ورود و خروج کارکنان، دریافت موقعیت مکانی زنده، هشدار در صورت عدم خروج، و حتی امکان توسعه آتی برای گزارشگیری و داشبورد مدیریتی را فراهم میکند.