hotosm / tasking-manager

Tasking Manager - The tool to team up for mapping in OpenStreetMap
https://wiki.openstreetmap.org/wiki/Tasking_Manager
BSD 2-Clause "Simplified" License
507 stars 275 forks source link

Task Assignment #1575

Open zlavergne opened 5 years ago

zlavergne commented 5 years ago

I have implemented task assignment internally for FB. Related issue: #1309

Implementation:

pantierra commented 5 years ago

This is very nice! I would like to get this into the Tasking Manager. Perhaps not the usual volunteer workflow, but seems to be a relevant functionality for very organized mapping teams.

zlavergne commented 5 years ago

@xamanu There's another feature we have internally that enforces random task selection. Internally, it's paired with task assignment but I can take it out if you don't see a need for it.

Enforcing Random Task Selection just disables the ability to manually select tasks for mapping (except pm/admins). It forces them to use the "Select Random Task" button.

The motivation for it is to prevent editors (primarily for organized teams) from selecting "easy" tasks. This may become useful however when the task complexity work comes through. Company teams probably won't want their editors just mapping the "easy" tasks ;).

Would you want that included in the PR?

russdeffner commented 5 years ago

@xamanu @zlavergne - From my perspective, it would be good to be able to Enforce Random Selection for public projects as well. But only if it is coupled with the random selection reflecting priority areas and/or tasks. I could see wanting to use it for disaster activation in a similar manner where I don't want people spending time on the 'easy' (often the coast or edge of project where there's very little to map), but focusing on the priority areas where data needs are most critical.

abalosc1 commented 5 years ago

The task assignment workflow could also be good for making sure tasks get assigned to a validator.

It would also be cool to be able to select multiple tasks to assign (like how you can draw a polygon over tasks to validate).

And to be able to see what tasks a selected user has been assigned (so you don't end up giving that user too many tasks). Here was our TM2 implementation that had the selected user's tasks highlighted in green and tasks assigned to other users highlighted in gray. The assignments on each task could be seen on hover. assigned to user

@zlavergne What do the green and gray person icons mean in your screenshots?

pantierra commented 5 years ago

@zlavergne, I think the enforce random selection feature is very valuable, especially if combined with priority areas, as @russdeffner suggested. However I would separate the enforce random selection from this issue. @zlavergne, do you think this is possible without too much overhead?

zlavergne commented 5 years ago

Per @xamanu's suggestion, I move the random task selection conversation to #1583

zlavergne commented 5 years ago

@abalosc1 I agree it would be great to be able to select multiple (my API is built to handle multiple tasks). Maybe a shift+click would be nice too to allow for some specific assignments. Or do you think a polygon would be better?

What do the green and gray person icons mean in your screenshots?

green => assigned to you (current user) grey => assigned to someone else

abalosc1 commented 5 years ago

Maybe a shift+click would be nice too to allow for some specific assignments. Or do you think a polygon would be better?

Yes, I think clicking is more intuitive/easier than trying to draw a polygon around the tasks to select them

zlavergne commented 5 years ago

@russdeffner do you think your use cases would use task assignment? If "task assignment" is too aggressive it can also be thought of as "task ownership".

russdeffner commented 5 years ago

@zlavergne Yes, I could see use cases for HOT to use the task assignment. Internal teams I would think anyone utilizing organized mapping teams could benefit from the ability to assign tasks. Only thing I am unsure about, would it allow for assigning for each stage? i.e. I want to assign to mapper X, then validator Y?

abalosc1 commented 5 years ago

Only thing I am unsure about, would it allow for assigning for each stage? i.e. I want to assign to mapper X, then validator Y?

We've gotten requests from our users to unassign mappers once they've marked the task as done. Then the task is open to be assigned to someone else like a validator.

zlavergne commented 5 years ago

Only thing I am unsure about, would it allow for assigning for each stage? i.e. I want to assign to mapper X, then validator Y?

@russdeffner It's designed to do just that.

There's 3 possible ways for a task to be assigned:

  1. PM/Admin manually assigns tasks to a user
  2. Task is automatically assigned to a user when they lock the task
  3. When a task is marked invalid it is re-assigned to the user who marked it as mapped

And there's 2 ways for it to be unassigned:

  1. PM/Admin manually un-assigns tasks
  2. User marks task as complete

We've gotten requests from our users to unassign mappers once they've marked the task as done.

@abalosc1 In this version, tasks are automatically un-assigned when marked as done.