پروژه ۰۲ — PKD

از تراشهٔ کنار ردیف
تا گزارش ساعات کار.

PKD سامانهٔ کارکنان یک مجموعهٔ تولید سبزیجات است: ثبت ساعات کار با تراشهٔ NFC یا کد QR کنار ردیف‌های گلخانه، حتی بدون اینترنت. از اسکن‌ها ساعات کار، نمای گردش کار و گزارش کارکرد به دست می‌آید. در کنار آن: گفت‌وگوی تیمی و تماس صوتی، ویدیوهای آموزشی به زبان مادری هر نفر، شمارندهٔ بسته‌های محصول با دوربین و هوش مصنوعی، و گوشی‌های سازمانی در حالت کیوسک. سرور، برنامهٔ وب، اندروید و iOS، همه به دست یک نفر.

نویسنده: عباس حسینی· وب، اندروید، iOS· نرم‌افزار اختصاصی

یک مجموعهٔ تولید سبزیجات با نیروهای فصلی و ثابت از چند گروه زبانی. پیش از این، کار هر ردیف روی فرم‌های کاغذی ثبت می‌شد؛ نرم‌افزار حقوق و دستمزد رابط قابل‌استفاده‌ای برای اتصال ندارد و وای‌فای به همه‌جا نمی‌رسد. PKD با اسکن تراشهٔ هر ردیف، ثبت کاغذی را کنار می‌گذارد و اطلاعات موردنیاز دفتر و مدیریت را فراهم می‌کند: ساعات کار، گزارش کارکرد و تصویری از روز کاری.

بخش مدیریت PKD روی رایانه: نمودار گردش کار یک روز، اشخاص در یک سو، فعالیت‌ها در میانه، بخش‌ها در سوی دیگر، با نوارهای رنگی به هم وصل شده‌اند
تصویر ۱ — روز کاری به شکل نمودارکارکنان ← زمان کار ← گردش کار

هر نوار نمایانگر یک نفر است، هر گره یک فعالیت و پهنای نوار نشان‌دهندهٔ دقیقه‌های ثبت‌شده. معلوم می‌شود چه کسی، کجا، چه کاری کرده، چقدر طول کشیده و چه چیزی هنوز نیاز به بررسی دارد.

نمودار گردش کار در نمای ردیف‌ها: اشخاص، فعالیت‌ها و ردیف‌های یک بخش با دقیقه‌ها و ساعت‌های هر ردیف
تصویر ۲ — تا سطح ردیفیک بخش، نمای «ردیف‌ها»

برای هر ردیف، دقیقه‌ها، بازه‌های زمانی و تعداد دفعات کار در آن روز دیده می‌شود. نمودار بر اساس اولین اسکن مرتب شده و از بالا به پایین، به ترتیب رویدادهای روز خوانده می‌شود.

برنامهٔ PKD روی گوشی، صفحهٔ «اکنون»: ورود ثبت شده، فعالیت در جریان با بخش و ردیف
برنامهٔ PKD، صفحهٔ «امروز»: زمان کار روز و فهرست اسکن‌ها با ساعت، فعالیت، ردیف و مدت
برنامهٔ PKD، بخش «آموزش»: ویدیوهای کوتاه دربارهٔ رسیدن به محل کار، روز کاری، تعویض ردیف و استراحت
تصویر ۳ — برنامهٔ کارکناناکنون · امروز · آموزش

سه پرسش: آیا حضورم ثبت شده؟ الان مشغول چه کاری هستم؟ امروز چه کرده‌ام؟ گفت‌وگو، عکس‌ها و ویدیوهای آموزشی در نوار پایین قرار دارند.

برنامهٔ PKD به زبان اوکراینی: صفحهٔ «اکنون» با وضعیت حضور و آخرین فعالیت
برنامهٔ PKD به زبان لهستانی: بخش «آموزش» با قدم‌های اول
برنامهٔ PKD به زبان اوکراینی: صفحهٔ «امروز» با زمان کار و اسکن‌ها
تصویر ۴ — به زبان مادریآلمانی، لهستانی، اوکراینی، رومانیایی

زبان به حساب کاربری وابسته است، نه به گوشی: رابط کاربری، ویدیوهای آموزشی و پیام‌ها.

امکانات سامانه

ثبت، بررسی، گفت‌وگو.

ثبت زمان با تراشه
ورود، خروج و هر فعالیت با تراشهٔ NFC روی ردیف یا با کد QR. زمان را سرور تعیین می‌کند. بدون اینترنت، اسکن روی گوشی منتظر می‌ماند.
گردش کار، پیگیری فعالیت‌ها، وضعیت امروز
روز کاری در نموداری بر اساس بخش‌ها یا ردیف‌ها دیده می‌شود؛ چند روز را می‌توان کنار هم گذاشت و جابه‌جایی فعالیت‌ها را از دیروز تا امروز پی گرفت. نمای زنده نشان می‌دهد چه کسانی حاضرند و چه کاری در جریان است.
گزارش ساعات و حقوق
برای هر نفر یک برگهٔ ماهانه با همهٔ روزهای تقویم. هر تغییری به توضیح نیاز دارد. تأیید ماه، PDF، اکسل و تطبیق با نرم‌افزار حقوق و دستمزد.
گفت‌وگوی تیمی و تماس
گفت‌وگوی دونفره و گروهی، پیام صوتی، فایل، تماس اینترنتی. مخاطبان اصلی بالای فهرست‌اند: رئیس، سرپرست تیم، پشتیبانی.
آموزش به زبان مادری
ویدیوهای کوتاه دربارهٔ قدم‌های اول و نکات مهم، به همهٔ زبان‌های برنامه.
شمارندهٔ بسته‌های محصول با دوربین
دوربینی بالای نوار نقاله بسته‌های محصول را می‌شمارد، با هوش مصنوعی بر اساس اندازه دسته‌بندی می‌کند و بسته‌های معیوب را مشخص می‌کند. نتیجه به‌صورت زنده، در روند زمانی و در گزارش‌های تصویری دیده می‌شود.
مکان‌ها و تراشه‌ها
بخش‌ها و ردیف‌ها به شکل نقشه. هر ردیف یک کارت با تراشه دارد؛ تراشه‌ها از بخش مدیریت نوشته می‌شوند.
گوشی‌های سازمانی و زیرساخت
گوشی‌های سازمانی در حالت کیوسک، به‌روزرسانی مرحله‌ای، هر گوشی یک حساب. پشت صحنه: یک سرور با پشتیبان‌گیری روزانه و یک نسخهٔ دیگر نزد ارائه‌دهندهٔ دوم.
تصویر ۵ — شمارندهٔ بسته‌های محصولضبط صفحه، بدون صدا

دوربین نوار را می‌بیند، یک رایانهٔ کوچک کنارش می‌شمارد و دسته‌بندی می‌کند، سرور جمع‌آوری می‌کند. هر عکس به‌عنوان سند در آرشیو می‌ماند و بعداً می‌توان دوباره دسته‌بندی‌اش کرد.

روند یک‌ماههٔ شمارندهٔ بسته‌های محصول: شاخص‌ها، نمودار میله‌ای روزانه و جدول تعداد کل، بزرگ، کوچک و معیوب
نقشهٔ محل: ردیف‌های گلخانه به شکل نقشه با بخش‌ها و فیلتر بر اساس نوع نقطهٔ اسکن
تصویر ۶ — روند شمارش و نقشهتعداد بسته‌های محصول در هر روز · نقشهٔ مکان‌ها با تراشهٔ هر ردیف
گزارش ساعات یک ماه برای یک نفر: برای هر روز تقویم وضعیت، ورود، خروج، حضور، زمان کار، فعالیت‌ها، نکات و توضیحات
تصویر ۷ — برگهٔ کارکرد ماهانهکارکنان ← زمان کار ← ساعات

هر روز تقویم یک سطر است. فقط چیزی علامت می‌خورد که باید روشن شود: خروج ثبت‌نشده، اسکنی خارج از روال، ثبت بعد از موعد. آخر هفته خطا نیست.

جزئیات فنی

سامانه چطور ساخته شده

یک سرور به‌عنوان مرجع داده‌ها. برنامه‌های سبک روی گوشی و رایانه. و مدل داده‌ای که معنای اسکن‌های ثبت‌شده را بعداً تغییر نمی‌دهد.

۱. یک سرور، دستگاه‌های زیاد

Hub سرویسی به زبان Go است که از PostgreSQL استفاده می‌کند. پروکسی Caddy رابط برنامه‌نویسی و برنامهٔ وب را زیر یک دامنه ارائه می‌دهد. دسترسی بیرونی فقط از طریق تونل برقرار می‌شود.

دستگاه‌ها
اندروید، iOS، کیوسک، مرورگر، رایانهٔ دوربین
  • یک برنامهٔ وب برای گوشی و مدیریت
  • پوستهٔ بومی: NFC، اعلان، تماس، به‌روزرسانی
  • برنامهٔ کیوسک روی گوشی‌های سازمانی
⇄HTTPS
یک دامنه
Hub · Go
رابط برنامه‌نویسی، محاسبات، اعلان، ایمیل، کارهای پس‌زمینه
  • دسترسی‌ها بر اساس شخص و بخش
  • محاسبهٔ زمان کار، گردش کار، گزارش ساعات
  • اعلان، ایمیل، گزارش‌ها، تطبیق با حقوق و دستمزد
⇄SQL
PostgreSQL
یک پایگاه داده، یک مرجع معتبر
  • همهٔ ماژول‌ها در یک پایگاه داده
  • پشتیبان روزانه، نسخه‌ای نزد ارائه‌دهندهٔ دوم

بخش مدیریت و برنامهٔ گوشی از یک برنامهٔ وب استفاده می‌کنند. پوستهٔ بومی فقط قابلیت‌هایی را اضافه می‌کند که مرورگر ندارد، مانند خواندن تراشه. یک‌بار انتشار برای همهٔ پلتفرم‌ها.

۲. مدل اسکن

یک تراشه هیچ معنایی در خود ندارد، فقط یک شناسه: اسلات. معنای آن در یک تعریف با تاریخ شروع اعتبار ثبت شده است. هر اسکن یک رویداد تغییرناپذیر است.

  1. گوشی اسلات، شناسهٔ رویداد و ساعت خودش را می‌فرستد. زمان معتبر را سرور تعیین می‌کند.
  2. Hub رویداد را با شخص، اسلات، تعریف، زمان و منبع ثبت می‌کند.
  3. مدت زمان فقط هنگام خواندن محاسبه می‌شود. اگر کاربری یک ردیف عوض شود، رویدادهای قدیمی همچنان درست می‌مانند.
  4. اگر یک اسکن دو بار برسد، یک بار حساب می‌شود.

۳. بدون شبکه

صف انتظارهر اسکن اول روی گوشی ذخیره می‌شود و همان لحظه انجام‌شده به حساب می‌آید. ارسال بعداً و به ترتیب اسکن‌ها انجام می‌شود.
زمان‌هاسرور ساعت گوشی را بررسی می‌کند، زمان‌های نامعقول را به محدودهٔ مجاز برمی‌گرداند و برای بازبینی علامت می‌زند.
راه‌اندازی بدون شبکهبرنامه حتی بعد از چند روز بدون اینترنت بالا می‌آید و اسکن می‌کند. یک آزمون خودکار این را در هر تغییر بررسی می‌کند.
داده‌های پایهفعالیت‌ها، مکان‌ها و ترجمه‌ها روی گوشی ذخیره‌اند. مدیریت وضعیت این داده‌ها و تعداد اسکن‌های در انتظار را برای هر گوشی می‌بیند.

۴. تحلیل و گزارش‌ها

همهٔ محاسبات را Hub انجام می‌دهد. گردش کار، روند، گزارش ساعات و گزارش‌های ایمیلی از توابع یکسان استفاده می‌کنند.

گردش کارنمودار سانکی ارتباط کارکنان، فعالیت‌ها و بخش‌ها یا ردیف‌ها را نشان می‌دهد. جزئیات روی هر گره دیده می‌شود. چند روز کنار هم قرار می‌گیرند، اما در یک نمودار ادغام نمی‌شوند.
پیگیری فعالیتنشان می‌دهد یک فعالیت در کدام ردیف پایان یافته یا نیمه‌کاره مانده و آیا بعداً همان‌جا ادامه پیدا کرده است. ادامه یعنی همان ردیف و همان فعالیت.
گزارش کارکردروزهای کاری بر پایهٔ دورهٔ اشتغال یا مقررات مجموعه تعیین می‌شوند و تعطیلات رسمی از یک جدول می‌آیند. هر اصلاحی به توضیح نیاز دارد و قابل مشاهده می‌ماند.
نرم‌افزار حقوق و دستمزدرابط قابل استفاده‌ای ندارد. یک رایانهٔ کوچک در شبکهٔ مجموعه پایگاه دادهٔ آن را می‌خواند و دستورهای نوشتن Hub را اجرا می‌کند.

۵. گفت‌وگو، تماس، آموزش

گفت‌وگوگفت‌وگوی دونفره و گروهی، تأیید خوانده‌شدن، پیام صوتی و فایل. پیوست‌ها در فضای ذخیره‌سازی داده نگه‌داری و از نظر ویروس بررسی می‌شوند.
تماستماس صوتی با WebRTC، رمزگذاری‌شده بین دستگاه‌ها. اگر اتصال مستقیم برقرار نشود، یک رلهٔ TURN اختصاصی واسطه می‌شود.
اعلاناعلان‌ها گوشی را برای تماس‌ها و پیام‌های مهم بیدار می‌کنند. اگر اعلان نرسد، برنامه با بررسی دوره‌ای همچنان تماس ورودی را نشان می‌دهد.
آموزشویدیوهای توضیحی کوتاه، با صداگذاری خودکار برای هر زبان.
پیام‌هااصلاحات ساعات کار به زبان خود فرد ارسال می‌شوند و پاسخ او ترجمه‌شده برمی‌گردد. دستیار هوش مصنوعی هم می‌تواند تماس بگیرد و پرسش‌های تکمیلی کوتاه بپرسد.

۶. دستگاه‌ها

حالت کیوسکیک برنامهٔ کیوسک اختصاصی به‌عنوان مدیر دستگاه: فقط PKD و برنامه‌های مجاز، پایش باتری و صدا، به‌روزرسانی مرحله‌ای.
هر گوشی یک حسابانتقال حساب به گوشی دیگر با کد QR انجام می‌شود و از گوشی قبلی خارج می‌شود. برگه‌های یدکیِ کد QR هم آماده‌اند.
کلید دستگاههر دستگاه یک بار جفت می‌شود و کلید مخصوص خودش را می‌گیرد. مدیریت هر زمان می‌تواند آن را مسدود کند.

۷. اجرا و نگهداری

کانتینرهاHub، پایگاه داده، پروکسی، فضای ذخیره‌سازی، ویروس‌یاب، رلهٔ TURN، تونل و پشتیبان‌گیری در یک پشتهٔ Docker Compose.
پشتیبان‌گیریروزانه یک نسخهٔ کامل از پایگاه داده روی سرور و یک نسخهٔ رمزگذاری‌شده نزد ارائه‌دهندهٔ دوم.
جابه‌جایی سروریک اعلان امضاشده زمان تغییر نشانی سرور را به برنامه‌ها خبر می‌دهد. دستگاه‌ها به‌طور خودکار به نشانی تازه متصل می‌شوند.

۸. مشخصات پروژه

نقشطراحی مفهومی، معماری، پیاده‌سازی، اجرا و پشتیبانی
کاربراننیروهای فصلی و ثابت، سرکارگران، دفتر، مدیریت؛ آلمانی، لهستانی، اوکراینی، رومانیایی
سرورGo, PostgreSQL, Caddy, Docker Compose، تونل، فضای ذخیره‌سازی، ویروس‌یاب، رلهٔ TURN
فرانت‌اندAstro, TypeScript, Service Worker, d3-sankey، خروجی PDF و اکسل
برنامه‌هااندروید و iOS در پوستهٔ بومی، برنامهٔ کیوسک اختصاصی؛ تراشه‌های NFC روی ردیف‌ها، کدهای QR به‌عنوان جایگزین
ماژول‌هاثبت زمان، گردش کار، پیگیری فعالیت‌ها، گزارش کارکرد، تطبیق حقوق، گفت‌وگو و تماس، آموزش، شمارندهٔ بسته‌های محصول، مکان‌ها، کنترل کیفیت، گلخانه، اطلاعیه‌ها، صندوق پیام‌ها، مرورگر فایل
کداختصاصی، غیرعمومی