farahbrunache/travay-colony-vuejs-dapp

Define parameters in a task

Closed this issue · 6 comments

@iainbarclay and @bubblenote. Let's refine the project and choose what fields.

{
            "task": "Software Engineer",
            "id": "a2c65f85-f01c-4b23-8e0e-34106d1afb0b",
            "brief": "code web apps",
            "deliverable": "lorem ipsum",
            "due-date": "Sat Jun 09 2018 20:26:09 GMT-0400 (EDT)",
            "payouts": "",
            "domain": "enviroment",
            "skill": "bifurcated",
            "rate": "3",
            "roles": {
                "task-creator": "139SG7kWj8tDiZF5azZ6WGmZpN6PGnUXbK",
                "evaluator": "1LdwMsHme355qKHsxrEoXNGXX8CQzL7opT",
                "worker": "Sam Morgan"
            },
            "status": "active",
            "finalized": "Sat Jun 09 2018 20:26:09 GMT-0400 (EDT)",
            "pot-donation-contributed": "null",
            "full-time-job": "true",
            "short-term-job": "false",
            "mininum-reputation": "36",
            "one-time-payout": "$264.66",
            "full-time-salary": "150",
            "date-posted": "Sat Jun 09 2018 20:26:09 GMT-0400 (EDT)"
        },

A few thoughts...

  1. For "full-time-salary" - I think we need an additional field that states salary payout period, something like...

"full-time-salary" : "$150"
"salary-period" : "weekly" / "4weekly" / "monthly"

Its also not clear if the salary expressed above is the annual salary for the role, or the "per period" salary - so maybe we need to rename that field to make it clear. And if this is used to manage payment, probably need something like "last-salary-paid-date" or "next-salary-due-date"

  1. Evaluators - are you planning to have UI to set an evaluator for the task when the task is created? I may have missed it, but can the evaluator and the manager (task creator) be the same person (I don't think it can).

  2. Skill should be Skills and Domain should be Domains as both can be multiple

  3. What about "acceptance criteria" - or is that covered by deliverable already - ie. if brief is "pick up all the trash by the school hall", deliverable is "a trash free area", criteria is "a photo of the trash free area, and a photo of the trash in the dump" - or is it simply that deliverable is "a trash free area, proved by photo of the trash free area and a photo of the trash in the dump" - not sure if its easier and clearer to split out or not.

  4. For a "sponsored" task funded by some external donor - would we want to keep the tag/id of the sponsor, so we can collate all tasks by donor for reporting, etc. - I'm imagining that donor and task manager might be different - donor might be funding several tasks across domains, and task manager might just create tasks in a limited set of domains.

  1. Spot on. I will make some changes and post an update
  2. I saw in Gitter someone asked the same question. Looks like there is no built in mechanism to stop that. So I will try to incorporate it. If I don't get it in by the end of the hack. I'll add it after.
  3. Understood
  4. In the webapp when someone clicks to learn more the phrase used is "definition of done" which is equal to deliverable
  5. Great idea! Please include this in our write up/FAQ document. In the roadmap I will add metric reporting on external donors so people can see it and so can donors!

@iainbarclay, please see the update.

I think this is sufficient for an MVP.

I left domain as singular to begin with, because I want to make sure people curate some expertise rather than just tagging a lot of stuff to a job post. In the future the colony can vote on changing this.

There can be multiple sponsors for a task - but they must sponsor upfront a total amount to account for the life of that task. If they want to contribute more, they should submit a new proposal. The goal is to make sure people only commit a donation if they have the money. Ensuring workers are always paid.

{
  "jobs": [
    {
      "id": "1",
      "task": "Weekly Garabage Pick Up and Removal",
      "brief": "Solarbreeze",
      "deliverable": "lorem ipsum",
      "due-date": "Sat Jun 09 2018 20:26:09 GMT-0400 (EDT)",
      "payouts": {
        "manager": "1",
        "evaluator": "2",
        "worker": "3"
      },
      "domain": "enviroment",
      "skills": {
        "tag-1": "enviroment",
        "tag-2": "labor"
      },
      "role": {
        "0": "7849313",
        "1": "0933831",
        "2": "482439"
      },
      "salary": {
        "full-time-rate": "1000",
        "pay-frequency": {
          "weekly": "false",
          "bi-weekly": "false",
          "monthly": "true"
        },
        "term-of-employment": {
          "six-months": "false",
          "one-year": "true"
        }
      },
      "sponsor": {
        "id": "5i88qehjkfhadshf9",
        "proposal-id": "333",
        "sponsor-amount": "500"
      }
    }
  ]
}

Just realized that "due date" used within a task may cause some issues for us...

Just realized that "due date" used within a task may cause some issues for us...

Because we have to track it and act upon it? I think we can leave it out for now, if the job is urgent the requirement should say so and if its not done in a timely manner then the rating will reflect that.

I'm a bit confused about this... (below) - isn't it clearer to leave text values for the tags 'manager', etc.? (and I guess in real life we have uuids (wallet addresses?) instead of people's names?

"role": {
"0": "Dexter Morgan",
"1": "Kim K",
"2": "Tim Horton"
},

I am about to get to the part with interacting with colonyJS, for example here: https://docs.colony.io/colonyjs/docs-task-lifecycle/#modify. If I understand correctly this references creating the task.

I got the role numbers from here: https://docs.colony.io/colonynetwork/docs-tasks/#roles. And this references when I am calling the "metadata" of the task. And so the JSON above is to reflect what key values / metadata we currently care to track. So if someone wants to edit a contract they must have a role "0" and their wallet address needs to match role 0's.

I've update the role to numbers.