The idea of tasks and completed tasks will subsume the idea of logs and shifts in the Q3 2021 release. Logs will become tasks and shifts will become completed Tasks. Notifications will tie together the assignment of tasks and the transition from tasks to completed tasks to create a holistic “task management system”.
...
What type of task needs to be done (e.g. seeding, scouting, etc.)?
When does the task need to happen?
Where will the task take place?
Does the task impact a crop?
What task-type specific instructions would you like to provide (e.g. which fertilizer to use for a fertilizing task, or seed spacing and depth for a planting task, etc.)?
(Optional) Who is going to do the task?
...
Additionally, in some cases the system will automatically create a task. Below is an example of the “manual” and “automatic” routes to task creation.
Task | User or system created | How was the task initiated? | Additional notes |
---|---|---|---|
“Maintenance” task | User | Farm Owner, upon seeing a section of damaged fence, creates a task describing the maintenance task and manually assigns it to a farm worker. | |
“Planting” task | System | Farm manager creates a crop management plan for a varietal and indicates it needs to be planted from seed. | The system generates a “planting” task based on the planting date supplied by the user. The system automatically populates the task with necessary crop specific information such as planting method, seed spacing, seeding depth, and others. |
How does a user edit a task?
...
This table is starter list of generic attributes every task will have. It is NOT a complete list. In fact, each Task types will likely have their own type-specific attributes.
Attribute | Data type | Entered / modified at… | Required? | Example data | Notes |
---|---|---|---|---|---|
Type | Enum | Creation | Yes | Planting | See above. Also needs to support custom task types |
Status | Enum | Creation, daemon, completion, abandonment | Yes | Planned, Late, For review, Completed, Abandoned | Assigned via actions rather than being editable via the UI |
Owner | Ref: User_id | Creation | Yes | Jane Smith | Assigned at creation time |
Assignee | Ref: User_id | Creation, edit | No | Joe Smith | |
Due date | Date | Creation, edit | Yes | January 5 2022 | |
Location | List<Locations> | Creation, edit | Yes* | Field 4 | Either location or coordinates are required |
|
|
|
|
| |
Crops | List<crop_management_plans> | Creation, edit | No | Peas, Carrots, and Strawberries | |
Task notes | Text | Creation, edit | No | “Don’t forget to bring the broccoli harvesting knife from the greenhouse.” | |
Duration | Completion | Yes | 1 hour 15 minutes | Displayed in 15 minute intervals | |
Happiness rating | Integer | Completion | Yes | 3 | Likert scale: 1 - 5; also needs to have a value for “Prefer not to say”. A response is required, but “Prefer not to say” is acceptable. |
Completion notes | Text | Completion | No | “Based on last years harvest, I’d expect about 55kg” | Entered by the creator when creating the task |
Reason for abandonment | List<String> | Abandonment | Yes | ||
Task abandonment notes | Text | Abandonment | No | “Lots of half-eaten strawberries due to what I’d guess are rabbits. Harvest is probably closer to 40kg rather than the expected 55.” | Entered by the assignee when marking a task as complete or abandoned |
Notifications
Notifications will not be part of the Q3 2021 release.
Notifications serve as the communication layer for ensuring things get done on a farm. Notifications are system generated messages that are sent to users to bring something to a users' attention and to request updates that can be shared with the rest of the farm staff. Regarding Tasks and completed tasks, notifications serve a few important functions:
Use case | Example | Who is Notified? | Notes |
---|---|---|---|
Upcoming unassigned task (under Basic or Advanced Labour Tracking)) | A system generated seeding task should take place this week (based on the date of the task) | The user that initially assigned the crop to that field (the task creator) | A notification asking the original creator of the task to assign the unassigned task to a user or modify when it should take place. |
Upcoming unassigned task (under None Labour Tracking) | A system generated seeding task should take place this week (based on the date of the task) | The user that initially assigned the crop to that field (the task owner) | A notification reminding the original creator of the task to do the task or modify when it should take place. |
Upcoming assigned task | A user created “Repair” task should take place today. | The user whom the task is assigned to (the assignee) | The notification serves as a reminder to perform the task and also a quick way to mark the task as “Finished”. |
Task marked as complete under Basic Labour Tracking | A farm manager has assigned a repair task to a farm worker. Once the farm worker marks the task as Done, the farm manager receives a notification informing them the task has been completed. | The owner of the task. | The notification serves as an opportunity for the owner of the task to verify the task has been completed by the assignee to the correct standard of work. |
Task marked as complete under Advanced Labour Tracking | A farm manager has assigned a repair task to a farm worker. Once the farm worker marks the task as Done, the task enters “For review” status and the farm manager receives a notification asking them to review the work and accept it or not. | The owner of the task. | The notification serves as an opportunity for the owner of the task to verify the task has been completed by the assignee to the correct standard of work. |
You can read more about notifications in general here: https://lite-farm.atlassian.net/wiki/pages/resumedraft.action?draftId=1167753219
Migration process. From logs and shifts to tasks
...
Shifts are a collection of tasks that were (or are going to be) performed in a given day by a given person (assignee). The shifts have a 1→n relationship with the shiftTask table, for every shiftTask row associated with a shift, there is a task with an associated location or management plan. The attributes which are to be migrated from shift and shiftTasks are :
shift attribute | transformation | task attribute to map to |
---|---|---|
mood | from string to integer in Likert scale in which 1 represents very sad and 5 represents very happy. 0 would be a null answer. …. “very sad” → 1 “no answer” → 0 | happiness |
created_by_user_id | owner | |
user_id | assignee | |
task_id | if task_id = 1 (bed preparation before migration) | type |
shift_date | due_date | |
duration | duration | |
wage_at_moment | wage_at_moment | |
farm_id | NO MAP a farm_id reference is not needed, since a task will always have a relationship either with at least 1 location | |
For each shiftTask we will also create a row in the task child table that matches the task type, as well as a row for the location OR management plans. Example :
...