Amirali Yaghoutiمهندس ارشد نرم‌افزار

مطالعه موردی مهندسی

حضور و غیاب / اتوماسیون اداری

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

مسئله تجاری

سوابق حضور و سوابق عملیاتی هر دو وجود داشتند، ولی در فایل‌هایی با ساختارهای ناسازگار. قبل از هر سؤالی، یک نفر باید این‌ها را با هم تطبیق می‌داد. همین کار گزارش‌گیری روتین مدیریتی را آن‌قدر گران کرد که دیگر کم و نامنظم انجام می‌شد و تصمیم‌ها روی حس و برداشت گرفته می‌شدند.

آنچه تحویل دادم

  • یک جریان اتوماسیون که داده‌ی حضور و داده‌ی عملیاتی را جمع می‌کند و بدون مرحله‌ی تطبیق دستی گزارش می‌سازد.
  • نرمال‌سازی ورودی‌ها، تا فایل‌هایی که با ساختارهای متفاوت از منابع مختلف می‌رسند به یک مجموعه‌داده‌ی یکدست تبدیل شوند.
  • خروجی‌ای که برای خواننده‌ی کسب‌وکار ساخته شده، نه برای توسعه‌دهنده؛ کل هدف این بوده که مدیریت مستقیم ازش استفاده کند.
  • اجراهای تکرارپذیر همراه با لاگ، تا هر عدد در گزارش به اجرایی که آن را ساخته برگردانده شود.

رویکرد فنی

  • نرمال‌سازی یک مرحله‌ی جدا و صریح است. سختی واقعی این نوع کار در قالب ورودی‌هاست، و قاطی‌کردنش با تحلیل، تغییر هر دو را دشوار می‌کند.
  • خروجی برای کسی طراحی شده که قرار است بخواندش؛ که معمولاً یعنی یک اسپردشیت، نه یک داشبورد.
  • هر اجرا لاگ می‌شود تا رقم مورد اختلاف را بشود بررسی کرد، نه اینکه سرش بحث شود.
  • دامنه روی همان سؤال‌هایی ماند که واقعاً پرسیده می‌شدند، به‌جای ساختن یک زیرساخت گزارش‌گیری عمومی که خودش نگهداری می‌خواست.

نتیجه و شواهد

گزارش مدیریتی حضور و عملیات به یک خروجی روتین تبدیل شد، نه کاری که باید به کسی سپرده شود.

اهمیت برای کارفرما

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

خلاصه-اجرایی-پروژه

خلاصه اجرایی خوانا

خلاصه_اجرایی {
  پروژه: "Attendance / Office Automation"
  پشته: "جریان داده‌ی پایتون"
  مراحل: "جمع‌آوری ← نرمال‌سازی ← گزارش، جداشده"
  خروجی: "برای خواننده‌ی کسب‌وکار، نه توسعه‌دهنده"
  ردیابی: "اجراها لاگ می‌شوند؛ هر رقم قابل ردیابی است"
  دامنه: "پرسش‌هایی که واقعاً پرسیده می‌شوند، نه یک پلتفرم"
}

ارزش حرفه‌ای این پروژه

قضاوت مهمِ اینجا، محدودکردن دامنه به سؤال‌های واقعی بود. ساختن یک پلتفرم عمومی جذاب‌تر بود، ولی احتمال استفاده‌شدنش کمتر.

جدا بودن نرمال‌سازی از تحلیل همان چیزی است که وقتی سیستم مبدأ قالب خروجی‌اش را عوض می‌کند — و همیشه می‌کند — این جریان را سرپا نگه می‌دارد.