#P1552
POST /personnel/shift
Route Info
| Method |
Endpoint |
Controller |
Middleware |
Purpose |
| POST |
/personnel/shift |
OfficialController@shiftWorkStore |
authWithJwt |
ایجاد و ثبت شیفت کاری جدید برای پرسنل |
منطق عملکرد تابع
تابع shiftWorkStore مسئول درج رکورد جدید شیفت در پایگاهداده است. پس از اعتبارسنجی مقادیر ورودی و بررسی تداخل زمانی با شیفتهای قبلی، اطلاعات ثبت و پاسخ JSON بازگردانده میشود.
- بررسی صحت احراز هویت JWT و نقش کاربر (Admin یا HR).
- اعتبارسنجی وجود پارامترهای ضروری (عنوان، زمان شروع، زمان پایان).
- اطمینان از نبود تداخل زمانی با سایر شیفتها.
- ایجاد رکورد جدید در جدول
shift_works با وضعیت فعال.
- برگرداندن پاسخ شامل شناسه و جزئیات شیفت تازهثبتشده.
پارامترهای ورودی
| نام |
محل |
نوع |
الزامی |
توضیح |
| title |
Body |
string |
بله |
عنوان شیفت (مثلاً "شیفت صبح") |
| start |
Body |
string |
بله |
ساعت شروع کار (در قالب HH:mm) |
| end |
Body |
string |
بله |
ساعت پایان کار (در قالب HH:mm) |
| status |
Body |
integer |
خیر |
۱ برای فعال، ۰ برای غیرفعال |
| description |
Body |
string |
خیر |
توضیح اختیاری درباره شیفت |
ساختار خروجی
{
"status": true,
"time": 1732369602,
"data": {
"id": 24,
"title": "شیفت عصر سیستم فروش",
"start": "15:00",
"end": "23:00",
"status": 1,
"description": "شیفت عصر اینترنال تیم فروش",
"created_at": "1404/08/03 14:05:21"
}
}
نکات امنیتی
- دسترسی تنها برای کاربران با سطح HR یا Admin مجاز است.
- تلاش برای تعریف شیفت تکراری در همان ساعت باید با خطای Validation رد شود.
عملکرد
- عملیات درج کمتر از ۳۰ms زمان دارد (در دادههای لوکال).
- ایندکس بر فیلدهای
start و end جهت اجتناب از تداخل زمانی پیشنهاد میشود.
Dependencies
- Illuminate\Support\Facades\DB
- Carbon\Carbon
کدهای خطا
| کد |
شرح |
منبع |
| 400 |
پارامتر ورودی ناقص یا نامعتبر |
Validation |
| 409 |
تداخل زمانی با شیفت دیگر |
Business Logic |
| 500 |
خطای عمومی سرور |
Exception Handler |
پیشنهادهای امنیتی
- ثبت لاگ ایجاد شیفت با نام مدیر و IP درخواستدهنده.
- ضبط تاریخچه تغییر در جدول
shift_logs.
پیشنهادهای توسعهای
- افزودن پشتیبانی از بازههای چندروزه (شیفتهای بلند).
- تعیین رنگ یا برچسب مشخص برای هر شیفت جهت نمایش در UI.
ممیزی و ثبت وقایع
- همه عملیات در جدول
system_audit ثبت میشود (action: 'shift:add').
جمعبندی
shiftWorkStore هسته فرآیند ایجاد شیفت کاری است. این مسیر توسط تیم منابع انسانی برای تعریف ساختار کاری واحدها استفاده میشود و جزئیات ضروری هر شیفت را ذخیره میکند.