這裏有一種獨特的問題,但我認爲如果有人從經驗中獲得一些洞見,我會看到這種問題。根據每週時間表確定可用性
需要在Web應用程序中存儲呼叫中心員工的每週時間表。 Web應用程序有三個實體:
員工 - 屬於組
員工羣體 - 包含員工,有補充,應用到新員工的基礎時間表組
管理員 - 負責維護的員工羣體。爲了舉例,管理員也可以是員工。
要求
管理員可以改變基時間表的員工組
管理員可以選擇允許員工從 時間表偏離,由管理員控制
管理員可以進一步選擇允許員工偏離計劃 自己
管理員使用UI小部件來確定員工組的計劃。附表進來三種,由一般horribleness ASC
- 1型分類 - 24/7可用性(表示此爲上議事日程的簡單標誌標線VS全星期一至日可用性)
- 2型 - 設定的開始/結束時間或所選日期的開始/結束時間組。 (實例9a-11a,1p-4p,週一至週五)
- 類型3-開始/結束時間的可變組,按天變化(實例9a-12p,Mon,1p-4p,5p-9p,星期二,等等)
管理員通過UI隨時可以變更計劃類型
員工被允許偏離隨時通過用戶界面也可以更改計劃類型
查找必須要快,因爲我們必須進入單獨的數據庫以獲取更多有關可用員工的信息
爲了更好的衡量,可用性需要根據呼叫者時區進行計算。所以有機會的話,在EST一組2型計劃實際上可能沒有用,具體情況取決於呼叫者進行
我沒有談下來,發出呼叫到讓我們剛剛吹滅根據用戶界面要求,原始時間表無法輕鬆轉換爲新時間表的情況下的時間表條目。最好的例子是Type 3 - > Type 2.
但是,昨天(截止日期截止前3個工作日)還有一項額外要求,對於Type 3,用戶必須能夠指定跨越午夜的時間範圍。例如:
Start [Monday] at [9:00pm] until [Tuesday] at [3:00am] [Add new time block]
Start [Tuesday] at [8:00am] until [Tuesday] at [5:00pm] [Add new time block]
還需要在通過Type 3 UI進行更改時自動合併它們時檢測日程重疊和鄰接關係。
示例模式應有助於給出一個時間快速查找,星期幾,和GROUP_ID
employee_schedule
_________________
id (int) auto-inc // PK
employee_id (int) // FK
employee_group_id (int) // FK
start_day (int) // 0-6
start_time (time)
end_day (int) // 0-6
end_time (time)
但是用戶界面 - 第3類至少 - 使得添加/編輯/於單調乏味更新的鍛鍊,因爲你不能相信用戶輸入。
有沒有人遇到過類似的問題?我試圖弄清楚是否應該執行一系列前端驗證來檢測重疊/鄰接關係,並在將它們發送到服務器之前合併它們,或者如果PHP更適合。或者如果對整個事情有一個堅定的論點,哈哈。任何洞察力將不勝感激。