Skip to main content
#P1555

PATCH /personnel/shift/reset

Route Info

Method Endpoint Controller Middleware Purpose
PATCH /personnel/shift/reset OfficialController@shiftWorkReset authWithJwt بازنشانی کلیه‌ی شیفت‌ها به وضعیت اولیه

منطق عملکرد تابع

تابع shiftWorkReset کلیه رکوردهای شیفت را از نظر وضعیت، زمان‌بندی و تخصیص‌ها بازنشانی می‌کند. معمولاً جهت پاکسازی داده‌های تستی یا آماده‌سازی دوره جدید کاری به‌کار می‌رود.

  1. احراز هویت JWT و بررسی نقش HR یا Admin.
  2. ثبت عملیات در جدول ممیزی (system_audit).
  3. به‌روزرسانی فیلدهای status، start، end و برگرداندن به مقادیر پیش‌فرض.
  4. در صورت وجود وابستگی (مانند حضور کارمندان)، ابتدا درج لاگ هشدار در audit.
  5. بازگرداندن نتیجه عملیات همراه با تعداد رکوردهای تغییر یافته.

پارامترهای ورودی

نام محل نوع الزامی توضیح
scope Body string خیر محدوده بازنشانی (مثلاً all یا current_month)
confirm Body boolean بله تأیید نهایی برای انجام بازنشانی (پیش‌فرض false)

ساختار خروجی

{
  "status": true,
  "time": 1732370189,
  "data": {
    "reset_scope": "all",
    "affected_rows": 46,
    "message": "شیفت‌ها با موفقیت به وضعیت اولیه بازگردانده شدند."
  }
}

نکات امنیتی

  • دسترسی فقط برای مدیران HR سطح بالا مجاز است.
  • در صورت عدم مقداردهی پارامتر confirm=true، هیچ تغییری اعمال نمی‌شود.
  • تمامی عملیات reset در لاگ ممیزی ثبت می‌شود.

عملکرد

  • بازنشانی حدود ۲۰۰ رکورد در کمتر از ۶۰ms انجام می‌شود.
  • transaction-level lock جهت جلوگیری از تداخل بین درخواست‌های هم‌زمان به‌کار می‌رود.

Dependencies

  • Illuminate\Support\Facades\DB
  • Carbon\Carbon
  • App\Models\ShiftWork

کدهای خطا

کد شرح منبع
400 پارامتر تأیید (`confirm`) ارسال نشده Validation
403 دسترسی غیرمجاز برای بازنشانی Middleware
500 خطای داخلی پایگاه داده Server Error

پیشنهادهای امنیتی

  • افزودن تأیید دو مرحله‌ای (مثلاً OTP مدیریتی پیش از اجرای reset).
  • محدودسازی درخواست به شبکه داخلی سازمانی.

پیشنهادهای توسعه‌ای

  • افزودن گزینه reset selective برای انتخاب بخشی از شیفت‌ها.
  • به‌کارگیری Job Queue برای بازنشانی حجیم در پس‌زمینه.

ممیزی و ثبت وقایع

  • ثبت کامل عملیات در system_audit با event='shift:reset'.
  • شامل: شناسه کاربر، بازه‌ی بازنشانی، IP، timestamp.

جمع‌بندی

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