প্রদত্ত SolveShiftSchedulingRequest
থেকে একটি স্থির শিফট শিডিউলিং সমস্যা সমাধান করে যাতে কর্মচারীদের শিফ্টগুলিতে নিয়োগ করা হয় যাতে কর্মচারীদের সময়সূচী পছন্দগুলি সর্বাধিক করা হয় এবং সময়সূচী সীমাবদ্ধতা লঙ্ঘন কম করা হয়।
HTTP অনুরোধ
POST https://optimization.googleapis.com/v1/scheduling:solveShiftScheduling
URL gRPC ট্রান্সকোডিং সিনট্যাক্স ব্যবহার করে।
শরীরের অনুরোধ
অনুরোধের অংশে নিম্নলিখিত কাঠামো সহ ডেটা রয়েছে:
JSON প্রতিনিধিত্ব |
---|
{ "requestId": string, "solveParameters": { object ( |
ক্ষেত্র | |
---|---|
requestId | সমস্যা বা অনুরোধ আইডি. |
solveParameters | সমস্যার একটি একক সমাধান নিয়ন্ত্রণ করার পরামিতি। |
employees[] | সমস্ত উপলব্ধ কর্মচারী নির্ধারিত হবে. |
shifts[] | সময়সূচী গঠনের জন্য সমস্ত পরিবর্তন। |
coverageRequirements[] | সমগ্র পরিকল্পনা দিগন্তের জন্য কভারেজ প্রয়োজনীয়তা. এগুলি নির্দিষ্ট করে যে কর্মচারীদের প্রতিটি ভূমিকা পালন করতে হবে, বা একটি দক্ষতা থাকতে হবে, হয় একটি টাইম উইন্ডো বা শিফট আইডিগুলির একটি তালিকার সময়৷ সমস্ত কভারেজ প্রয়োজনীয়তা অবশ্যই টাইম উইন্ডো বা শিফট আইডিগুলির একটি তালিকার সাথে নির্দিষ্ট করতে হবে (কিন্তু উভয়ই নয়)৷ কভারেজ প্রয়োজনীয়তার জন্য সময় উইন্ডো (যদি দেওয়া হয়) প্রতিটি প্রদত্ত অবস্থানের জন্য ওভারল্যাপ করতে পারে না। এই প্রতিটি সীমাবদ্ধতার জন্য ডিফল্ট অগ্রাধিকার স্তর হল ভূমিকার প্রয়োজনীয়তার জন্য |
roleIds[] | কর্মশক্তি জুড়ে সম্ভাব্য সমস্ত ভূমিকার তালিকা। প্রতিটি কর্মচারীর কমপক্ষে একটি ভূমিকা থাকতে হবে যা তাদের একটি শিফটের জন্য নিযুক্ত করা যেতে পারে। একটি ভূমিকা একটি শিফটের সময় একটি নির্দিষ্ট কাজের অ্যাসাইনমেন্টকে বোঝায় (যেমন নিবন্ধিত নার্স, এক্সিকিউটিভ শেফ, ওয়েটার, ইত্যাদি)। যখন একজন কর্মচারীকে একটি শিফটে নিযুক্ত করা হয়, তখন তাদের একটি একক নির্দিষ্ট ভূমিকাতেও বরাদ্দ করা হয়। |
skillIds[] | কর্মশক্তি জুড়ে সমস্ত সম্ভাব্য দক্ষতার তালিকা। একটি দক্ষতা বলতে একজন কর্মচারীর যে কোন অতিরিক্ত যোগ্যতা থাকতে পারে যা একটি নির্দিষ্ট নিয়োগযোগ্য কাজের সাথে সম্পর্কিত নয় (যেমন সার্টিফিকেশন, কথ্য ভাষা, ইত্যাদি)। এই তালিকা খালি হতে পারে. যখন একজন কর্মচারীকে একটি শিফটে নিয়োগ করা হয়, তখন তাদের অবশ্যই সেই শিফটের জন্য প্রয়োজনীয় সমস্ত দক্ষতা পূরণ করতে হবে। |
locationIds[] | সময়সূচীতে পরিবর্তনের সেটের জন্য সম্ভাব্য সমস্ত অবস্থানের তালিকা। এই তালিকা খালি হতে পারে. বিভিন্ন অবস্থান নির্দিষ্ট করা উপযোগী হতে পারে যখন, উদাহরণস্বরূপ, একজন নার্স ম্যানেজার একটি হাসপাতালে বিভিন্ন ইউনিট জুড়ে অনেক নার্সের সময়সূচী করতে চান বা, অন্য একটি উদাহরণের জন্য, একজন হোটেল ম্যানেজার একাধিক হোটেলে কর্মচারীদের সময়সূচী করতে চান। |
budgetRequirements[] | সময়সূচী সমস্যার জন্য বাজেট স্পেসিফিকেশন। এই প্রতিটি প্রয়োজনীয়তার জন্য ডিফল্ট অগ্রাধিকার স্তর হল |
assignmentsHint[] | সময়সূচী সমস্যায় একটি অস্থায়ী সমাধান (ওরফে সমাধান ইঙ্গিত) হিসাবে ব্যবহার করার জন্য অ্যাসাইনমেন্টগুলি স্থানান্তর করুন। অ্যাসাইনমেন্টের ইঙ্গিতগুলি উপেক্ষা করা হয় যদি অ্যাসাইনমেন্টটি অ-অর্পণযোগ্য স্থানান্তর বা সময়সূচীর অনুরোধের বিরোধিতা করে। |
প্রতিক্রিয়া শরীর
কর্মশক্তি সময়সূচী API-এর জন্য প্রতিক্রিয়া। প্রতিটি প্রতিক্রিয়ার জন্য, shiftAssignments
খালি থাকবে যদি ফেরত দেওয়া solutionStatus
NOT_SOLVED_DEADLINE_EXCEEDED
বা INFEASIBLE
হয়। যদি রিটার্ন করা solutionStatus
OPTIMAL
বা FEASIBLE
, তাহলে একটি বৈধ শিফট অ্যাসাইনমেন্ট shiftAssignments
এ ফেরত দেওয়া হয়। একটি বৈধ শিফট অ্যাসাইনমেন্টের জন্য, নিম্নলিখিত বৈশিষ্ট্যগুলি ধারণ করে:
- অনুরোধে প্রদত্ত কর্মচারীদের সেটে প্রতিটি কর্মচারী আইডি থাকে।
- কর্মচারীকে বরাদ্দ করা প্রতিটি রোল আইডি প্রদত্ত কর্মচারীর জন্য রোল আইডিগুলির সেটে থাকে৷
- অনুরোধে প্রদত্ত শিফটের সেটে প্রতিটি শিফট আইডি থাকে।
- প্রতিটি শিফট আইডি প্রদত্ত কর্মচারীর জন্য অনির্ধারণযোগ্য শিফট আইডিগুলির একটি নয়৷
- একজন কর্মচারীকে কখনই দুটি ওভারল্যাপিং শিফটে নিয়োগ করা হবে না।
- প্রদত্ত সময়সূচীর জন্য, অগ্রাধিকার স্তরের
PRIORITY_MANDATORY
সহ কোনও বাধা বা অনুরোধ লঙ্ঘন করা হয়নি৷
সফল হলে, প্রতিক্রিয়া বডিতে নিম্নলিখিত কাঠামো সহ ডেটা থাকে:
JSON প্রতিনিধিত্ব |
---|
{ "requestId": string, "solutionStatus": enum ( |
ক্ষেত্র | |
---|---|
requestId | অনুরোধের আইডি যেটির সাথে এই প্রতিক্রিয়া যুক্ত। |
solutionStatus | ফিরে আসা সমাধানের অবস্থা। যদি সমাধানটি সম্ভাব্য বা অনুকূল না হয় তবে এই প্রোটোর অন্যান্য ক্ষেত্রগুলি খালি হতে পারে৷ যদি স্ট্যাটাসটি NOT_SOLVED_DEADLINE_EXCEEDED হয়, তাহলে একটি সম্ভাব্য সমাধান খুঁজে না পেয়ে বা একটি সম্ভাব্য সমাধান বিদ্যমান আছে কিনা তা নির্ধারণ না করেই সময়সীমা পৌঁছে গেছে। যদি অগ্রাধিকার স্তরের বাধ্যতামূলক সীমাবদ্ধতাগুলি সমস্ত সন্তুষ্ট না করা যায় তবে অনুরোধগুলি অকার্যকর হতে পারে৷ |
shiftAssignments[] | সমস্ত অ্যাসাইনমেন্টের তালিকা। প্রতিটি |
statusMessage | যদি |
সমাধান প্যারামিটার
পরামিতি যা শিফট শিডিউলিং সমস্যার একটি একক সমাধান নিয়ন্ত্রণ করে।
JSON প্রতিনিধিত্ব |
---|
{ "timeLimit": string } |
ক্ষেত্র | |
---|---|
timeLimit | সমস্যার সমাধানকারীর সর্বোচ্চ সময় ব্যয় করা উচিত। সেট না থাকলে, ডিফল্ট 1 মিনিট। এই মানটি একটি কঠিন সীমা নয় এবং এটি যোগাযোগের ওভারহেডের জন্য অ্যাকাউন্ট করে না। সমস্যা সমাধানের প্রত্যাশিত বিলম্ব এই মানটিকে সামান্য অতিক্রম করতে পারে। নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা সহ সেকেন্ডে একটি সময়কাল, ' |
কর্মচারী
কর্মশক্তি থেকে একজন কর্মচারীকে নির্ধারিত করা হবে।
JSON প্রতিনিধিত্ব |
---|
{ "id": string, "roleIds": [ string ], "skillIds": [ string ], "shiftPreferences": [ { object ( |
ক্ষেত্র | |
---|---|
id | এই কর্মচারীকে অনন্য আইডি বরাদ্দ করা হয়েছে। |
roleIds[] | ভূমিকা আইডি যা এই কর্মচারী সম্পাদন করতে পারেন। অন্তত একটি ভূমিকা নির্দিষ্ট করা আবশ্যক. যখন একজন কর্মচারীকে একটি শিফটে নিয়োগ করা হয়, তখন তাদের এই তালিকা থেকে একটি একক ভূমিকাতেও বরাদ্দ করা হয়। শিডিউলিং উইন্ডোর সময় কর্মচারীকে বিভিন্ন ভূমিকাতে নিয়োগ করা হতে পারে। |
skillIds[] | এই কর্মচারীর স্কিল আইডি আছে। এই তালিকা খালি হতে পারে. যখন একজন কর্মচারীকে একটি শিফটে নিযুক্ত করা হয়, তখন তারা নির্ধারিত শিফটের সময়কাল জুড়ে দক্ষতার প্রয়োজনীয়তাগুলি কভার করার জন্য এখানে তালিকাভুক্ত দক্ষতার যেকোনো উপসেট ব্যবহার করে। |
shiftPreferences[] | এই কর্মচারীর পছন্দ পরিবর্তন করুন। এখানে নির্দিষ্ট করা শিফটগুলি সেই শিফটগুলিকে প্রতিনিধিত্ব করে যা কর্মচারী শিডিউলিং উইন্ডোর সময় বরাদ্দ করা পছন্দ করবে৷ |
schedulingConstraints[] | এই কর্মচারীর জন্য সময় নির্ধারণের সীমাবদ্ধতার তালিকা। এই সীমাবদ্ধতার প্রতিটির জন্য ডিফল্ট অগ্রাধিকার স্তর হল |
resourceConstraints[] | |
shiftRequests[] | কর্মচারীর জন্য শিফট অনুরোধের তালিকা। অনুরোধটি হতে পারে একজন কর্মচারীকে নিয়োগের জন্য বা নির্দিষ্ট শিফটে বরাদ্দ না করার জন্য। কর্মচারীর জন্য যে কোনো নির্দিষ্ট সময়সূচী নিয়োগ অগ্রাধিকার |
hourlyContract | চুক্তি যা কর্মচারীর জন্য নিয়মিত এবং ওভারটাইম ঘন্টার হার নির্দিষ্ট করে। |
শিফট পছন্দ
একটি নির্দিষ্ট শিফট আইডির জন্য একটি সংখ্যাগত পছন্দ।
JSON প্রতিনিধিত্ব |
---|
{ "shiftId": string, "preference": integer } |
ক্ষেত্র | |
---|---|
shiftId | শিফট আইডি যার জন্য পছন্দ নির্দিষ্ট করা আছে। |
preference | পছন্দের বৃহত্তর মানগুলি আরও পছন্দসই পরিবর্তনকে নির্দেশ করে৷ |
সময়সূচী সীমাবদ্ধতা
একটি নির্দিষ্ট কর্মীর জন্য নির্দিষ্ট সময় নির্ধারণের সীমাবদ্ধতা। নির্দিষ্ট করা সীমাবদ্ধতা শুধুমাত্র প্রদত্ত ব্যবধানে প্রয়োগ করা হয় [startDateTime, endDateTime)
JSON প্রতিনিধিত্ব |
---|
{ "priority": enum ( |
ক্ষেত্র | |
---|---|
priority | এই সময়সূচী সীমাবদ্ধতার জন্য অগ্রাধিকার স্তর। সমস্ত সময় নির্ধারণের সীমাবদ্ধতার জন্য ডিফল্ট অগ্রাধিকার হল |
startDateTime | যখন এই সময়সূচী সীমাবদ্ধতা প্রযোজ্য হবে তার জন্য শুরুর সময় (অন্তর্ভুক্ত)। |
endDateTime | যখন এই সময়সূচী সীমাবদ্ধতা প্রযোজ্য হবে তার শেষ সময় (একচেটিয়া)। |
ইউনিয়ন ক্ষেত্রের type । সীমাবদ্ধতার ধরন নির্দিষ্ট করা হচ্ছে। প্রতিটি সীমাবদ্ধতা শুধুমাত্র উপরে নির্দিষ্ট সময় উইন্ডোর মধ্যে প্রয়োগ করা হয়। type নিম্নলিখিতগুলির মধ্যে একটি হতে পারে: | |
minimumMinutes | কর্মচারী কাজ করতে পারে এমন ন্যূনতম সংখ্যক মিনিট। যদি কর্মচারীকে এমন একটি শিফটে নিযুক্ত করা হয় যা টাইম উইন্ডোকে (সম্পূর্ণ বা আংশিকভাবে) ওভারল্যাপ করে, তাহলে শিফটটি টাইম উইন্ডোকে ওভারল্যাপ করে এমন মিনিটের সংখ্যা এই গণনায় অন্তর্ভুক্ত করা হয়। |
maximumMinutes | টাইম উইন্ডোতে কর্মচারী সর্বোচ্চ কত মিনিট কাজ করতে পারে। যদি কর্মচারীকে এমন একটি শিফটে নিযুক্ত করা হয় যা টাইম উইন্ডোকে (সম্পূর্ণ বা আংশিকভাবে) ওভারল্যাপ করে, তাহলে শিফটটি টাইম উইন্ডোকে ওভারল্যাপ করে এমন মিনিটের সংখ্যা এই গণনায় অন্তর্ভুক্ত করা হয়। |
minimumConsecutiveWorkDays | কর্মচারী ন্যূনতম সংখ্যক পরপর দিন কাজ করতে পারে। একজন কর্মচারী একটি নির্দিষ্ট দিনে কাজ করেন যদি তাদের সেই দিন শুরু হওয়া একটি শিফটে নিয়োগ করা হয়। যে কোনো শিফট যা কর্মচারীকে নিযুক্ত করা হয় যা সময় উইন্ডোতে শুরু হয় তা এই গণনার অন্তর্ভুক্ত। |
maximumConsecutiveWorkDays | কর্মচারী সর্বোচ্চ সংখ্যক পরপর দিন কাজ করতে পারেন। একজন কর্মচারী একটি নির্দিষ্ট দিনে কাজ করেন যদি তাদের সেই দিন শুরু হওয়া একটি শিফটে নিয়োগ করা হয়। যে কোনো শিফট যা কর্মচারীকে নিযুক্ত করা হয় যা সময় উইন্ডোতে শুরু হয় তা এই গণনার অন্তর্ভুক্ত। |
minimumShiftCount | কর্মচারী কাজ করতে পারে এমন ন্যূনতম সংখ্যক শিফট। যে কোনও শিফট যা কর্মচারীকে নিয়োগ করা হয় যা টাইম উইন্ডোর সাথে সম্পূর্ণভাবে ওভারল্যাপ হয় তা এই গণনার অন্তর্ভুক্ত। |
maximumShiftCount | কর্মচারী সর্বোচ্চ সংখ্যক শিফটে কাজ করতে পারে। যে কোনও শিফট যা কর্মচারীকে নিয়োগ করা হয় যা টাইম উইন্ডোর সাথে সম্পূর্ণভাবে ওভারল্যাপ হয় তা এই গণনার অন্তর্ভুক্ত। |
minimumRestMinutes | ন্যূনতম সংখ্যক মিনিট কর্মচারীকে অন্য শিফটে বরাদ্দ করার আগে একটি শিফট শেষ হওয়ার পরে বিশ্রাম নিতে হবে। এই সীমাবদ্ধতা প্রতিটি জোড়া শিফটের ক্ষেত্রে প্রযোজ্য যা সম্পূর্ণরূপে [ |
অগ্রাধিকার
একজন কর্মচারীর সময়সূচী বা কভারেজ প্রয়োজনীয়তার উপর কোন বাধার জন্য অগ্রাধিকার স্তর। এর মধ্যে রয়েছে SchedulingConstraint
, ResourceConstraint
, ShiftRequest
, এবং CoverageRequirement
। যেহেতু পরস্পরবিরোধী সীমাবদ্ধতা থাকতে পারে, তাই প্রতিটি সীমাবদ্ধতা পূরণ করা সবসময় সম্ভব হয় না। যেমন, প্রতিটি ধরনের সীমাবদ্ধতার একটি অগ্রাধিকার রয়েছে (ব্যবহারকারী বা ডিফল্ট দ্বারা প্রদত্ত) যা সমাধানকারীকে একটি সম্পূর্ণ সময়সূচীতে দেওয়া সমস্ত সীমাবদ্ধতার আপেক্ষিক গুরুত্ব সম্পর্কে অবহিত করে।
Enums | |
---|---|
PRIORITY_UNSPECIFIED | অজানা অগ্রাধিকার স্তর। |
PRIORITY_LOW | সর্বনিম্ন অগ্রাধিকার স্তর। এই অগ্রাধিকারের সাথে সীমাবদ্ধতাগুলি অন্যান্য সীমাবদ্ধতার চেয়ে কম গুরুত্বপূর্ণ। একটি সম্ভাব্য সমাধান খুঁজে না পাওয়া গেলে তারাই প্রথম লঙ্ঘনের জন্য বিবেচিত হবে। |
PRIORITY_MEDIUM | অগ্রাধিকার স্তরের মাধ্যম। এই অগ্রাধিকারের সীমাবদ্ধতাগুলি PRIORITY_LOW অগ্রাধিকারের সীমাবদ্ধতার চেয়ে বেশি গুরুত্বপূর্ণ কিন্তু PRIORITY_HIGH অগ্রাধিকারের সীমাবদ্ধতার চেয়ে কম গুরুত্বপূর্ণ৷ PRIORITY_LOW অগ্রাধিকার সহ সমস্ত সীমাবদ্ধতা শিথিল করার পরে যদি একটি সম্ভাব্য সমাধান খুঁজে না পাওয়া যায়, তাহলে লঙ্ঘনের জন্য পরবর্তী PRIORITY_MEDIUM অগ্রাধিকারের সীমাবদ্ধতাগুলি বিবেচনা করা হয়৷ |
PRIORITY_HIGH | সর্বোচ্চ অগ্রাধিকার স্তর। এই অগ্রাধিকার স্তরের সাথে সীমাবদ্ধতাগুলি সবচেয়ে গুরুত্বপূর্ণ। নিম্ন অগ্রাধিকার স্তরের সীমাবদ্ধতাগুলি শিথিল করার পরে যদি একটি সম্ভাব্য সমাধান খুঁজে না পাওয়া যায় তবে তারা লঙ্ঘনের জন্য সর্বশেষ বিবেচনা করা হবে। |
PRIORITY_MANDATORY | অগ্রাধিকার স্তর যা এমন কিছুর প্রতিনিধিত্ব করে যা সমাধানকারী দ্বারা লঙ্ঘন করা যায় না। যদি সমাধানকারী SolutionStatus.INFEASIBLE ফেরত দেয়, তবে এটি অনেক বেশি PRIORITY_MANDATORY সীমাবদ্ধতার কারণে হতে পারে৷ |
সম্পদের সীমাবদ্ধতা
একটি সাধারণ সীমাবদ্ধতা যা একজন কর্মচারী দ্বারা ব্যবহৃত একটি নির্দিষ্ট "সম্পদ" এর পরিমাণকে সীমিত করে। এটি আরও নির্দিষ্ট SchedulingConstraint
একটি বিমূর্ত সংস্করণ যা ব্যবহারকারীর জন্য আরও নমনীয়। অনেক সময়সূচী সীমাবদ্ধতা যা SchedulingConstraint.type
এ নির্দিষ্ট করা যায় না এই বার্তাটি ব্যবহার করে নির্দিষ্ট করা যেতে পারে।
JSON প্রতিনিধিত্ব |
---|
{
"priority": enum ( |
ক্ষেত্র | |
---|---|
priority | এই সম্পদ সীমাবদ্ধতা অগ্রাধিকার স্তর. সমস্ত সংস্থান সীমাবদ্ধতার জন্য ডিফল্ট অগ্রাধিকার হল |
resourceUsages | শিফট দ্বারা ব্যবহৃত সম্পদের পরিমাণ। উদাহরণস্বরূপ, যদি এই সীমাবদ্ধতাটি একটি নির্দিষ্ট সপ্তাহে একজন কর্মচারীর দ্বারা কাজ করা সর্বনিম্ন এবং সর্বাধিক ঘন্টার ক্ষেত্রে প্রযোজ্য হয়, তাহলে এই মানচিত্রে সেই সপ্তাহে হওয়া শিফট এবং ঘন্টায় প্রতিটি শিফটের দৈর্ঘ্য থাকবে। |
minimumResourceUsage | একটি সম্পদ সীমাবদ্ধতা সন্তুষ্ট করার জন্য ন্যূনতম সম্পদ ব্যবহার। |
maximumResourceUsage | একটি সম্পদ সীমাবদ্ধতা সন্তুষ্ট করার জন্য সর্বাধিক সম্পদ ব্যবহার। |
ShiftRequest
নির্দিষ্ট শিফটে বরাদ্দ করা বা না করার জন্য একজন কর্মচারীর অনুরোধ।
JSON প্রতিনিধিত্ব |
---|
{ "priority": enum ( |
ক্ষেত্র | |
---|---|
priority | এই সময়সূচী অনুরোধের অগ্রাধিকার স্তর. সমস্ত সময় নির্ধারণের অনুরোধের জন্য ডিফল্ট অগ্রাধিকার হল |
shiftIds[] | সময়সূচী অনুরোধের শিফট আইডি। |
type | অনুরোধের ধরন, যেমন, শিফটের সেটে অনুরোধটি বরাদ্দ করা হবে বা না করা হবে। |
কাজের স্থিতি
একজন কর্মচারী কাজ করছে কি না।
Enums | |
---|---|
WORK_STATUS_UNSPECIFIED | অজানা কাজের অবস্থা। |
STATUS_WORK | কর্মরত কর্মচারীর প্রতিনিধিত্বকারী অবস্থা। |
STATUS_NOT_WORK | একজন অ-কর্মরত কর্মচারীর প্রতিনিধিত্বকারী অবস্থা। |
আওয়ারলি কন্ট্রাক্ট
একজন কর্মচারীর জন্য ক্ষতিপূরণ নির্ধারণ করতে একটি বেস ঘন্টায় হার, হারের পার্থক্য এবং ওভারটাইম গুণক নির্দিষ্ট করে। বিভিন্ন জায়গায় নোট প্রবিধানের জন্য ওভারটাইম ক্ষতিপূরণের আলাদা গণনার প্রয়োজন হতে পারে। সমাধানকারী ওভারটাইম ক্ষতিপূরণ আনুমানিক হয় মোট খরচের একটি প্রক্সি কমাতে বা একটি বাজেট পূরণ করতে (দেখুন BudgetRequirement
)। বেতন গণনা করার একটি হাতিয়ার হিসেবে এটির উদ্দেশ্য নয়।
JSON প্রতিনিধিত্ব |
---|
{
"baseHourlyRate": number,
"hourlyRateShiftDifferentials": {
string: number,
...
},
"overtimePeriods": [
{
object ( |
ক্ষেত্র | |
---|---|
baseHourlyRate | ওভারটাইম ছাড়া এক ঘন্টা কাজ করার জন্য ক্ষতিপূরণ। যদি একাধিক হার কর্মচারীর জন্য প্রযোজ্য হয়, তাহলে এই বেস ঘন্টায় হারের তুলনায় হারের পার্থক্য প্রয়োগ করা হয়। উপরন্তু, যদি একাধিক হার থাকে, তাহলে বেস ঘন্টার হার এই হারগুলির সর্বনিম্ন হওয়া উচিত। |
hourlyRateShiftDifferentials | ঘণ্টার হারের পার্থক্য, |
overtimePeriods[] | যে সকল সময়ের জন্য ওভারটাইম গণনা করতে হয় তার একটি তালিকা। এই সময়সীমা ওভারল্যাপ করা উচিত নয়. |
ওভারটাইম পিরিয়ড
একটি নির্দিষ্ট এবং নিয়মিত পুনরাবৃত্ত সময়কাল (সাধারণত 168 ঘন্টা বা সাতটি পরপর 24-ঘন্টা সময়কাল) যা ওভারটাইম ক্ষতিপূরণের পরিমাণ নির্ধারণ করতে ব্যবহৃত হয়। প্রতিটি পিরিয়ডের একটি ওভারটাইম গুণক (যেমন, 1.5) baseHourlyRate
সাথে সম্পর্কিত এবং ঘন্টার সংখ্যার একটি সীমা থাকে যা নিয়মিত (অ-ওভারটাইম) কাজ বলে বিবেচিত হয়। startDateTime
(ইনক্লুসিভ) এবং endDateTime
(এক্সক্লুসিভ) টাইম উইন্ডোর সাথে ওভারল্যাপ করা যেকোন শিফট পিরিয়ডে কাজ করা মোট ঘন্টার জন্য গণনা করা হয়। ওভারল্যাপ আংশিক হলে, শুধুমাত্র ওভারল্যাপ করার সময় গণনা করা হয়।
JSON প্রতিনিধিত্ব |
---|
{ "overtimeMultiplier": number, "startDateTime": { object ( |
ক্ষেত্র | |
---|---|
overtimeMultiplier | ওভারটাইম ঘন্টার হার গণনা করতে গুণক (1.0 এর বেশি বা সমান হতে হবে)। ওভারটাইম ঘন্টার হার সাধারণত |
startDateTime | ওভারটাইম সময়ের জন্য শুরু সময়। যদি এই সময় একটি শিফট ওভারল্যাপ হয়, তাহলে এই ধরনের শিফটের ঘন্টা |
endDateTime | ওভারটাইম সময়ের জন্য শেষ সময়। যদি এই সময় একটি শিফট ওভারল্যাপ হয়, তাহলে এই ধরনের শিফটের ঘন্টা |
maximumRegularHours | নিয়মিত (অ-ওভারটাইম) হারে প্রদান করা কর্মঘন্টার সর্বাধিক সংখ্যা। এই পরিমাণ ইতিবাচক হতে হবে। |
শিফট
একটি শিফট একটি নির্দিষ্ট সময় উইন্ডো নির্দিষ্ট করে যেখানে কর্মচারীরা কাজ করতে পারে।
JSON প্রতিনিধিত্ব |
---|
{ "id": string, "locationId": string, "startDateTime": { object ( |
ক্ষেত্র | |
---|---|
id | এই শিফটে অনন্য আইডি বরাদ্দ করা হয়েছে। |
locationId | লোকেশন আইডি যেখানে এই শিফটে কাজ করা হয়। এই খালি হতে পারে. |
startDateTime | শিফটের শুরুর সময় (অন্তর্ভুক্ত)। |
endDateTime | শিফটের শেষ সময় (এক্সক্লুসিভ)। বর্তমানে, সমাধানকারী শুধুমাত্র 24 ঘন্টার কম দৈর্ঘ্যের পরিবর্তনের জন্য অনুমতি দেয়। |
breakRules[] | শিফটের সময় ঘটে যাওয়া বিরতির নিয়মগুলির একটি তালিকা৷ এই শিফটে কর্মরত কর্মচারীদের প্রতি |
BreakRule
একটি নিয়ম যা নির্ধারণ করে কখন বিরতি একটি শিফট এবং এর সময়কালের মধ্যে শুরু হতে পারে। বিবেচিত সমস্ত সম্ভাব্য বিরতির তালিকা ruleIncrementMinutes
বৃদ্ধিতে নির্ধারিত হয়। উদাহরণস্বরূপ, যদি একটি বিরতির নিয়ম একটি 30-মিনিটের বিরতির মডেলিং হয় যা 10:00 থেকে 11:00 এর মধ্যে শুরু হতে পারে এবং নিয়ম বৃদ্ধি 20 মিনিটের হয়, তাহলে বিবেচিত বিরতির তালিকা হল: [10:00, 10 :30], [10:20, 10:50], [10:40, 11:10], [11:00, 11:30]।
JSON প্রতিনিধিত্ব |
---|
{ "earliestStartTime": { object ( |
ক্ষেত্র | |
---|---|
earliestStartTime | বিরতির প্রথম শুরুর সময় (অন্তর্ভুক্ত)। শুধুমাত্র |
latestStartTime | বিরতির সর্বশেষ শুরুর সময় (অন্তর্ভুক্ত)। শুধুমাত্র |
durationMinutes | মিনিটে বিরতির সময়কাল। |
ruleIncrementMinutes | [ঐচ্ছিক] এই বিরতির নিয়মে বিবেচনা করা যেতে পারে এমন সমস্ত বিরতির জন্য মিনিটে সময় বৃদ্ধি। যদি সেট না করা হয়, ডিফল্ট করে |
কভারেজের প্রয়োজনীয়তা
একটি কভারেজ প্রয়োজনীয়তা নির্দিষ্ট সময় উইন্ডোতে এবং একটি নির্দিষ্ট অবস্থানে ভূমিকা এবং/অথবা দক্ষতার সেটের জন্য প্রয়োজনীয় কর্মচারীর সংখ্যা নির্দিষ্ট করে। একটি নির্দিষ্ট স্থানে তারিখ সময়ের ব্যবধান ওভারল্যাপ করতে পারে না। বিকল্পভাবে, একটি সময় উইন্ডো এবং অবস্থানের পরিবর্তে শিফট আইডিগুলির একটি তালিকা প্রদান করা যেতে পারে। শুধুমাত্র যে কর্মচারীদের নির্দিষ্ট ভূমিকার জন্য নিযুক্ত করা যেতে পারে (বা নির্দিষ্ট দক্ষতার অধিকারী) তারা এই প্রয়োজনীয়তা পূরণ করতে পারে।
একটি প্রদত্ত ভূমিকা এবং/অথবা দক্ষতার জন্য, কভারেজের প্রয়োজনীয়তা পূরণ হয় যখন টাইম উইন্ডোতে (অথবা shiftIds
এর প্রতিটি শিফটের জন্য) অন্তত targetEmployeeCount
সংখ্যক কর্মী কাজ করছে। বিপরীতে, কভারেজের প্রয়োজনীয়তা লঙ্ঘন করা হয় যদি টাইম উইন্ডোতে (অথবা shiftIds
এর যে কোনও শিফটের জন্য), টাইম উইন্ডোর সময় কর্মরত কর্মীর targetEmployeeCount
সংখ্যার চেয়ে কম থাকে। targetEmployeeCount
এর চেয়ে বেশি কর্মরত কর্মচারী এখনও প্রয়োজনীয়তা পূরণ করে, কিন্তু অত্যধিক স্টাফিং সমাধানকারী দ্বারা ন্যূনতম করা হয়।
JSON প্রতিনিধিত্ব |
---|
{ "startDateTime": { object ( |
ক্ষেত্র | |
---|---|
startDateTime | কভারেজ প্রয়োজনীয়তার জন্য শুরুর সময় (অন্তর্ভুক্ত)। সেট করা থাকলে, |
endDateTime | কভারেজ প্রয়োজনীয়তার জন্য শেষ সময় (একচেটিয়া)। সেট করা থাকলে, |
locationId | যে অবস্থানে কর্মীদের প্রয়োজন। |
shiftIds[] | সেট করা থাকলে, এই তালিকার প্রতিটি শিফট আইডিতে ভূমিকা এবং দক্ষতার প্রয়োজনীয়তা পৃথকভাবে প্রয়োগ করা হয়। যদি shiftIds খালি না থাকে, তাহলে |
roleRequirements[] | টাইম উইন্ডোর সময় নির্দিষ্ট ভূমিকার জন্য প্রয়োজনীয় সংখ্যক কর্মচারী নিয়োগ করা হবে। প্রতিটি রোল আইডির জন্য সর্বাধিক একটি |
skillRequirements[] | নির্দিষ্ট দক্ষতা সহ প্রয়োজনীয় সংখ্যক কর্মচারী যা সময় উইন্ডোর সময় শিফটে বরাদ্দ করা হয়। প্রতিটি দক্ষতা আইডির জন্য সর্বাধিক একটি |
ভূমিকার প্রয়োজনীয়তা
টাইম উইন্ডোর সময় নির্দিষ্ট ভূমিকার জন্য প্রয়োজনীয় সংখ্যক কর্মচারী নিয়োগ করা হবে।
JSON প্রতিনিধিত্ব |
---|
{
"roleId": string,
"targetEmployeeCount": integer,
"priority": enum ( |
ক্ষেত্র | |
---|---|
roleId | প্রয়োজনের জন্য ভূমিকা আইডি। |
targetEmployeeCount | সময় উইন্ডোর সময় ভূমিকার জন্য নির্ধারিত সংখ্যক কর্মচারী। |
priority | এই প্রয়োজনীয়তা সীমাবদ্ধতার জন্য অগ্রাধিকার স্তর। সমস্ত সংস্থান সীমাবদ্ধতার জন্য ডিফল্ট অগ্রাধিকার হল |
দক্ষতার প্রয়োজনীয়তা
প্রয়োজনীয় সংখ্যক কর্মচারী যারা সময় উইন্ডোতে কাজ করছেন এবং নির্দিষ্ট দক্ষতার অধিকারী।
JSON প্রতিনিধিত্ব |
---|
{
"skillId": string,
"targetEmployeeCount": integer,
"priority": enum ( |
ক্ষেত্র | |
---|---|
skillId | প্রয়োজনের জন্য স্কিল আইডি। |
targetEmployeeCount | প্রদত্ত দক্ষতা সহ কাঙ্ক্ষিত সংখ্যক কর্মচারী যারা সময় উইন্ডোতে কাজ করছেন। |
priority | এই প্রয়োজনীয়তা সীমাবদ্ধতার জন্য অগ্রাধিকার স্তর। সমস্ত সংস্থান সীমাবদ্ধতার জন্য ডিফল্ট অগ্রাধিকার হল |
বাজেটের প্রয়োজনীয়তা
প্রদত্ত ব্যবধানের জন্য বাজেটের প্রয়োজনীয়তা।
JSON প্রতিনিধিত্ব |
---|
{ "totalBudget": number, "startDateTime": { object ( |
ক্ষেত্র | |
---|---|
totalBudget | প্রদত্ত ব্যবধানের জন্য মোট বাজেট। অগ্রাধিকার যদি |
startDateTime | এই বাজেট কখন প্রযোজ্য হবে তার জন্য শুরুর সময়। যদি একটি শুরুর সময় নির্দিষ্ট করা না থাকে, তবে এটি সমস্ত প্রদত্ত শিফটের প্রথম দিকের শুরুর সময় হিসাবে সেট করা হয়৷ |
endDateTime | এই বাজেট কখন প্রযোজ্য হবে তার শেষ সময়। যদি একটি শেষ সময় নির্দিষ্ট করা না থাকে, তবে এটি সমস্ত প্রদত্ত শিফটের সর্বশেষ শেষ সময় হিসাবে সেট করা হয়৷ |
priority | নির্দিষ্ট সময় উইন্ডোতে বাজেটের প্রয়োজনীয়তা পূরণের জন্য অগ্রাধিকার স্তর। ডিফল্ট অগ্রাধিকার হল মনে রাখবেন যে যদি এই অগ্রাধিকারটি অন্যান্য সীমাবদ্ধতার অগ্রাধিকারের চেয়ে বেশি হয় এবং যদি |
শিফট অ্যাসাইনমেন্ট
শিফট-রোল অ্যাসাইনমেন্টের জন্য একজন কর্মচারী।
JSON প্রতিনিধিত্ব |
---|
{
"employeeId": string,
"shiftId": string,
"roleId": string,
"breaks": [
{
object ( |
ক্ষেত্র | |
---|---|
employeeId | কর্মচারী আইডি বরাদ্দ করা হচ্ছে। |
shiftId | শিফট আইডি কর্মচারীকে বরাদ্দ করা হয়েছে। |
roleId | শিফটের জন্য কর্মচারীকে যে রোল আইডি দেওয়া হয়েছে। |
breaks[] | এই শিফট অ্যাসাইনমেন্টের জন্য বিরতির তালিকা। |
বিরতি
একটি সময়কাল যেখানে একজন কর্মচারী একটি শিফটের সময় তাদের কাজে বাধা দেয়।
JSON প্রতিনিধিত্ব |
---|
{
"startDateTime": {
object ( |
ক্ষেত্র | |
---|---|
startDateTime | বিরতির শুরুর সময়। |
durationMinutes | মিনিটে বিরতির সময়কাল। |
সমাধান অবস্থা
সমাধান (অর্থাৎ, একটি সময়সূচী) স্থিতি একটি সমাধানকারীর প্রতিক্রিয়ায় প্রদত্ত।
Enums | |
---|---|
SOLUTION_STATUS_UNSPECIFIED | প্রতিক্রিয়া জন্য অনির্দিষ্ট অবস্থা. |
FEASIBLE | প্রত্যাবর্তিত সময়সূচী সম্ভাব্য, কিন্তু সর্বোত্তম নাও হতে পারে। |
OPTIMAL | প্রত্যাবর্তিত সময়সূচী সর্বোত্তম. |
INFEASIBLE | প্রদত্ত সীমাবদ্ধতার জন্য কোন সম্ভাব্য সময়সূচী বিদ্যমান নেই। অগ্রাধিকার স্তর PRIORITY_MANDATORY সহ সীমাবদ্ধতার কোনো উপসেট সন্তুষ্ট না হলে সমাধানকারী এই মানটি ফেরত দিতে পারে৷ |
NOT_SOLVED | কোনো শিডিউল পাওয়া যায়নি। |
NOT_SOLVED_DEADLINE_EXCEEDED | প্রদত্ত সময়সীমার মধ্যে কোন সময়সূচী পাওয়া যায়নি। |