magfest / ubersystem

MAGFest's Ubersystem - handles ticketing, staffing, analytics, volunteers, and tons more
http://magfest.org
GNU Affero General Public License v3.0
48 stars 55 forks source link

As a department head, I'd like to log staffers starting and ending their shifts #2336

Open kitsuta opened 7 years ago

kitsuta commented 7 years ago

As a department head, I may have a lot of staffers to keep track of and/or a lot of other stuff to do. If I mark them as having worked their shift when they first come up to me, they may leave early without me knowing. If I mark them as having worked their shift when they're done, I may erroneously think they didn't work their shift if they don't check with me before they leave (e.g., if they ask one of my managers for permission to leave and that doesn't get back to me). I'd like:

  1. The ability to mark volunteers as clocking in when they start their shift, then clocking out at the end of their shift.
  2. The system to automatically adjust the hours worked if I clock them in late or clock them out early, with a checkbox option to 'use shift time' for either (in cases where I'M late but they're not).
  3. The system to assume that any volunteers who were not checked out within 6 hours of the end of their shift worked their full shift (but no more).
  4. The system to send me a report (rate/specifics TBD but at least once a day) of volunteers that haven't been checked in or checked out (including volunteers who were 'automatically' checked out). This email should go both to the person who checked them in (if applicable) and the department heads for that department.
rscullin commented 7 years ago

+1'ing this issue -- this is something TechOps discussed building internally, and would be very useful to have built into RAMS.

dylwhich commented 7 years ago

+1, and it would also be very useful to have a "Who's On Shift" dashboard, that shows:

md1024 commented 7 years ago

@kitsuta In order to log shifts by check-ins, the Shifts model would need to be modified to store checked_in/out timestamps as well as the restricted functions necessary to update them before/afterhand. Weighted hours calculation would also have to be based on attendee's shifts rather than assigned jobs + weight. Does MagModel already have a historical log that lists who updated which fields at what time?

@dylwhich how do you determine someone is working but not assigned to a shift? I recall there were some standby volunteers but I'm not sure how they were allocated.

I can make a 4th view in the jobs section that displays an event calendar specific to a location/department. Each event will represent a registered shift or a job with open shifts.

Automated emails tend to get a little crazy in practice no matter how well they are designed in development but I'd go with the following guidelines

md1024 commented 7 years ago

Apologies for the lack of updates. Basic functionality is progressing well. There is a concern we may need this to be logged a little more active so that people can see whose shifts are actually worked or not. check_in_out_feature

rscullin commented 7 years ago

When this is in a testable state (or a state when you want feedback), I'll gladly run though it to offer feedback/comments.

kitsuta commented 7 years ago

Oh no @md1024, I'm so sorry I didn't respond earlier! The original notification must have gotten lost in my email. This issue is a huge undertaking, so I didn't expect anyone to tackle it right away (or solo!).

We do actually have robust tracking. Every action performed on any model, even actions performed by attendees or database manipulations done directly by a sysadmin, gets logged in our Tracking table. Nevertheless, the check-in/out system is gonna be a heck of a design project on the back-end because our shifts system is pretty complex. It will probably require at least one new DB table, if not more.

I would actually suggest that we split out dylwhich's suggestions into a new issue that's not dependent on this one. That's still a super useful report even without the check-in/out stuff being included, and we can always update the report as part of adding the check-in/out functionality later. Better to break work down into small chunks if possible.

I can also answer this question though: "how do you determine someone is working but not assigned to a shift? I recall there were some standby volunteers but I'm not sure how they were allocated."

We have a department called "Staff Support" that works like any normal department, except they send people out to help other departments as their 'staff support' shift. What dylwhich was likely referring to is the real-world phenomenon of a regular staffer coming in and saying "hey I'm available, where can I help?" There's currently no good way to just tell the system "hey, this person is currently working in my department but I don't want to assign them to a shift." We have 'non-shift' hours for tracking hours worked after the fact, but no real current-time stuff. So that would again need some changes on the backend, though I'd say that's a small enough chunk of work that it could be considered 'in-scope' for the report.

md1024 commented 7 years ago

based on the feedback from @kitsuta I think the best way to go about this is to split the work across multiple issues. In this issue, I'll just be adding the ability to log check in/out volunteers per shift in this branch.

check_in_out_feature_c check_in_out_feature_b check_in_out_feature