#P1555
PATCH /personnel/shift/reset
Route Info
| Method |
Endpoint |
Controller |
Middleware |
Purpose |
| PATCH |
/personnel/shift/reset |
OfficialController@shiftWorkReset |
authWithJwt |
بازنشانی کلیهی شیفتها به وضعیت اولیه |
منطق عملکرد تابع
تابع shiftWorkReset کلیه رکوردهای شیفت را از نظر وضعیت، زمانبندی و تخصیصها بازنشانی میکند. معمولاً جهت پاکسازی دادههای تستی یا آمادهسازی دوره جدید کاری بهکار میرود.
- احراز هویت JWT و بررسی نقش HR یا Admin.
- ثبت عملیات در جدول ممیزی (system_audit).
- بهروزرسانی فیلدهای
status، start، end و برگرداندن به مقادیر پیشفرض.
- در صورت وجود وابستگی (مانند حضور کارمندان)، ابتدا درج لاگ هشدار در audit.
- بازگرداندن نتیجه عملیات همراه با تعداد رکوردهای تغییر یافته.
پارامترهای ورودی
| نام |
محل |
نوع |
الزامی |
توضیح |
| 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 آخرین مسیر از مجموعه شیفتهاست و هدفش بازگرداندن دادهها به حالت پایهای و جلوگیری از انباشت خطای انسانی در تنظیمات زمانبندی است. این مسیر با اطمینان بالا، کنترل دسترسی دقیق و پشتیبانی کامل لاگ حسابرسی پیادهسازی شده است.