Изграждането на график е планиращият слой на модул Персонал в Ordering.Tools. Отворете го и видите всички смени на екипа за седмицата на един drag-and-drop grid: кой работи кога, каква роля покрива, коя секция от пода е негова. Кликнете празна клетка за добавяне на смяна за 5 секунди; кликнете запълнена клетка за размяна, редактиране или отмяна. Grid-ът е keyboard-навигируем, mobile-friendly на таблет и записва всяка промяна с audit trail.
Повечето мениджъри не мислят в „шаблони“ — те мислят „копирай миналата седмица, нагласи петък“. Затова Изграждането на график е без шаблони по дизайн. Натиснете „Копирай от миналата седмица“ и grid-ът дублира SCHEDULED + CONFIRMED смени към следващата, прескачайки конфликти с (служител, дата, начален час) уникалния ключ. Нагласете промените, натиснете „Публикувай“, готово. Заявки за отпуск се появяват в кутията с засегнатите смени в линия — одобрете и сблъскващите се смени се отменят атомно.
Най-бързият начин да планирате следващата седмица е да я планирате като миналата. Един бутон материализира пълно дублиране; няколко плъзгания нагласят за отпуски и новото покритие на терасата; публикуване за под 4 минути за заведение с 30 души.
Заявките не седят в отделна кутия, която забравяте да отворите. Те изплуват на rota grid-а за датите, които покриват, с одобрение с един клик и автоматична отмяна на сблъскващи смени в същата транзакция.
Анна се обажда болна в 17:00. Постнете слота като свободна смяна, задайте кой може да я види (всички / по роля / по покана) и първият служител, който клейм-не печели — SQL-level guard прави двойно claim-ване невъзможно.
Всяка промяна се излъчва до всяко свързано устройство. Mobile екранът „Моите смени“ на екипа отразява новия график в момента, в който публикувате — без Slack съобщение, без обаждания „видя ли новия график?“.
Всеки ред е служител, всяка колона е ден от седмицата. Празните клетки са свободни слотове; запълнените показват роля, време и цвят на секция. Grid-ът зарежда за под 1.5 секунди за прозорец 4 седмици × 30 служители.
Издърпва SCHEDULED и CONFIRMED смени от предишния понеделник-неделя в същите дни от седмицата, която гледате. Резултатният toast показва колко смени са копирани и колко пропуснати поради конфликти.
Плъзнете смяна от петък към събота. Кликнете празна клетка за добавяне на нов слот. Десен клик на смяна за изтриване или размяна. Всяка промяна записва в StaffAuditLog с актьора и before/after снимка.
PENDING заявки за отпуск се появяват най-горе на rota-та със засегнатите смени откроени. Одобрете заявка — сблъскващите се смени се отменят в същата транзакция и заявителят получава имейл + push известие.
Grid-ът е графикът — без отделен template editor. Всяка смяна е реален, насрочен StaffShiftAssignment ред, не „планиран“ статус, който да публикувате после. Плъзгане за местене, клик за редактиране, десен клик за изтриване.
Един бутон дублира публикувания график от предишната седмица в следващата, прескачайки конфликти. Опционален userIds филтър, така че да копирате модела само на един екип, без да притеснявате другите. Всяко дублиране записва StaffAuditLog ред с copied/skipped броя.
Заявките за отпуск носят тип (отпуск / болничен / личен / неплатен / родителски), диапазон от дати, опционален частично-дневен прозорец и опционален URL към сканиран болничен. Одобрението е с един клик; сблъскващите се смени се отменят в същата $transaction.
Постнете слот, когато имате нужда от покритие; персоналът клейм-ва от телефона; вие одобрявате един. OpenShift status guard на SQL ниво прави race-а невъзможен за загуба: само едно одобрение успява, другите виждат 409 веднага.
Отворете grid-а в понеделник сутрин. Натиснете „Копирай от миналата седмица“. Нагласете 6 клетки за кетъринг събитието в петък и отпуска на Анна. Публикувайте. Общо време: 3:42. Предишният spreadsheet workflow отнемаше 90 минути.
Отменете смяната ѝ в rota grid-а (един клик), постнете OpenShift с изтичане 17:30. Трима сервитьори я виждат, двама claim-ват за 4 минути, одобрявате тази с по-голям стаж. Готово за под 5 минути — без скрембъл в групов чат.
Мария подава 7-дневна VACATION заявка от телефона. Изплува във вашата кутия с 5-те засегнати смени откроени. Одобрявате — сблъскващите се смени се отменят и изплуват като пропуски в rota grid-а за вас да попълните чрез OpenShift постове.
Петър (сервитьор) и Иван (хост) решават да си разменят смените. Мениджърът отваря rota grid-а, избира двете смени, натиска Swap — и двата оригинала се отменят, и двата нови SWAP-source реда се създават с пълна линия, без двойно резервиране някога.
Превключете заведения от AdminShell venue picker; същият rota интерфейс се появява за новото заведение със собствения си персонал, секции и смени. Без ментален context switch — всяко заведение използва същия grid, същите потоци.
Сервитьорите отварят „Моите смени“ на телефона си (под /admin/profile/shifts), виждат предстоящите 60 дни на пръв поглед, claim-ват свободни смени, които съответстват на тяхната достъпност, и подават заявки за отпуск за периодите, в които им е нужен — без никога да звънят на мениджъра.
Повечето rota инструменти ви натрапват абстракция първо: построете шаблон, запазете го, приложете го към следващата седмица, редактирайте overrides, публикувайте. Това са три стъпки за проблем, който има една форма — повечето седмици са 90% като миналата седмица. Изграждането на график напълно прескача шаблона. Графикът Е данните; копирането на графика Е шаблонът; нагласяне и публикуване е един непрекъснат жест вместо три отделни.
Типична смяна на смяна е 3 плъзгания с мишката: Анна разменя с Мария в петък; Петър взима свободния слот в събота; новият човек се присъединява към обедния пик. Формите ви карат да препишете роля, дата и време за всяка промяна. Drag-and-drop променя времевия компонент (плъзнете колона) и компонента за персонал (плъзнете ред) едновременно — един жест, две промени, sub-second feedback. През седмица редакции, спестеното време се натрупва: формите отнемат 90 минути, drag-and-drop отнема 4.
Повечето платформи доставят отпуски като отделна кутия, скрита зад таб. Мениджърите забравят да я проверят; чакащи заявки се натрупват; сблъскващи смени отиват към персонал, който вече е във ваканция. Изграждането на график показва всяка PENDING заявка на същия екран със смените, които биха се отменили. Виждате компромиса в реално време: одобрете и сблъскващите смени изчезват; откажете и служителят получава отказ-имейл и rota-та остава непроменена. Един workflow, един екран, без пропуснати заявки.
Покритието на болничен ден е моментът с най-голямо триене в планирането в ресторант. Изграждането на график прави пропастта видима в grid-а (отменената смяна става дупка) и ви позволява да постнете OpenShift с 4 клика; персоналът claim-ва от телефона; одобрявате. Race-condition handling е на SQL ниво — `prisma.openShift.updateMany({ where: { id, status: 'OPEN' }, data: { status: 'CLAIMED' } })` — така че дори с трима претенденти, натискащи бутона едновременно, точно един печели. Това е същият атомен guard pattern, който използваме за Bill table-occupancy invariant.