task-templates/guess-number

图片标注任务类型,发布者为每个作业上传图片,提出数个问题,由承接者对图片进行文字标注来回答。

任务和作业本身的多态性是建立在task.dataassignment.data这两个无schema的数据上的。

团片标注任务task.data主要包含了以下几个字段:

  • question {string} 问题
  • choiceAmount {number} 问题的选项数量
  • choices {string[]} 问题的各个选项
  • progress {number} 当前的委派进度,每创建一个作业加一
  • images {string[]} 解压后的数据的文件名,在dir下
  • submitMultipleTimes {boolean} 可选设置,是否允许一个人参与多次,默认false
  • signupMultipleTimes {boolean} 可选设置,是否允许一个人被拒后再次报名,默认false
  • noSignup {boolean} 可选设置,是否自动完成报名的步骤(即无需报名),默认false
  • submitAutoPass {boolean} 可选设置,是否自动审批任务(即任务提交即接受),默认false
  • dir {string} 内部使用,这是uploads目录下属于该工程的文件夹。
  • signedUsers {string[]} 内部使用,对于非noSignup,这是报名了的用户的列表
  • blockedUsers {string[]} 内部使用,对于非noSignup且非signupMultipleTimes,这是封禁用户的列表
  • exported {boolean} 内部使用,项目是否导出

assignment.data主要包含了以下几个字段,而assignment.valid对于非signup类任务,表示能否继续猜:

  • signup {boolean} 表示这是一个用于注册的任务
  • answer {string[]} 对于非signup类任务,这是对图片的标注结果(每张图可能有多个题目,故有多个标注答案)

Methods

(inner) assignmentDataToPlainObject(assignment, auth) → {object}

assignment.data转换为对象发送给对应可见性的人。这个函数会在createAssignment、 getAssignmentData或者getAssignmentData返回undefined的时候默认调用。 理论上,调用者是订阅者或者发布者。

对本任务而言,只有作业是一个非报名作业才返回数据,如下:

  • sequence {number} 题号
  • finished {boolean} 是否完成
  • answer {number} 答案
  • image {string} 图片名,在task.data.dir下
Source:
Parameters:
Name Type Description
assignment object
auth object
Returns:
Type:
object

(inner) assignmentDataToPlainObject(assignment, auth) → {object}

assignment.data转换为对象发送给对应可见性的人。这个函数会在createAssignment、 getAssignmentData或者getAssignmentData返回undefined的时候默认调用。 理论上,调用者是订阅者或者发布者。

对本任务而言,只有作业是一个非报名作业才返回数据,如下:

  • guessTimes {number} 猜测次数
  • finished {boolean} 是否完成
  • answer {boolean} 答案(完成之后才返回)
Source:
Parameters:
Name Type Description
assignment object
auth object
Returns:
Type:
object

(async, inner) assignmentStatusChanged(assignment, params, global) → {Promise.<void>}

这个函数是作业状态更改的钩子,确保作业的状态发生更改,可能的更改包括订阅者从编辑到提交,同时作业必须为valid, 以及发布者从提交到接受或拒绝。assignment会被保存。

本任务主要是处理自动pass和验证通过的逻辑的。

Source:
Parameters:
Name Type Description
assignment object
params
global
Returns:
Type:
Promise.<void>

(async, inner) assignmentStatusChanged(assignment, params, global) → {Promise.<void>}

这个函数是作业状态更改的钩子,确保作业的状态发生更改,可能的更改包括订阅者从编辑到提交,同时作业必须为valid, 以及发布者从提交到接受或拒绝。assignment会被保存。

本任务主要是处理自动pass和验证通过的逻辑的。

Source:
Parameters:
Name Type Description
assignment object
params
global
Returns:
Type:
Promise.<void>

(async, inner) createAssignment(task, assignment, params, global) → {Promise.<void>}

创建任务,这里已经确保提交者为订阅者,且任务处于PUBLISHED状态。原则上,这个过程结束后, 应当设置好validstatussummarydata的字段。如果该函数缺省,则会创建一个 不valid、编辑状态、无summarydata字段的任务。assignment会被保存。

如果这个函数没有返回值,则依据情况调用assignmentDataToPlainObject。 如果有返回值则会作为响应。

对于本任务而言,主要确认创建的是一个报名作业还是图片标注作业。

Source:
Parameters:
Name Type Description
task object

任务对象

assignment object

作业对象

params object

请求的数据

  • query 请求的query
    • populate {boolean} 是否返回
    • data {boolean} 是否返回数据
  • data 请求的data
    • task {string} 任务
    • data {object} 额外的数据
      • signup {boolean} 是否是报名任务
global object
Returns:
Type:
Promise.<void>

(async, inner) createAssignment(task, assignment, params, global) → {Promise.<void>}

创建任务,这里已经确保提交者为订阅者,且任务处于PUBLISHED状态。原则上,这个过程结束后, 应当设置好validstatussummarydata的字段。如果该函数缺省,则会创建一个 不valid、编辑状态、无summarydata字段的任务。assignment会被保存。

如果这个函数没有返回值,则依据情况调用assignmentDataToPlainObject。 如果有返回值则会作为响应。

对于本任务而言,主要确认创建的是一个报名作业还是真正的猜数字作业。

Source:
Parameters:
Name Type Description
task object

任务对象

assignment object

作业对象

params object

请求的数据

  • query 请求的query
    • populate {boolean} 是否返回
    • data {boolean} 是否返回数据
  • data 请求的data
    • task {string} 任务
    • data {object} 额外的数据
      • signup {boolean} 是否是报名任务
global object
Returns:
Type:
Promise.<void>

(async, inner) getAssignmentData(assignment, params, global) → {Promise.<void>}

获取作业的数据。这里已经确保要么提交者为作业的订阅者或发布者。如果这个函数没有返回值, 则会依据情况调用assignmentDataToPlainObject。如果有返回值则会作为响应。

对于本任务,就采用默认的assignmentDataToPlainObject。

Source:
Parameters:
Name Type Description
assignment object

任务对象

params object
global object
Returns:
Type:
Promise.<void>

(async, inner) getAssignmentData(assignment, params, global) → {Promise.<void>}

获取作业的数据。这里已经确保要么提交者为作业的订阅者或发布者。如果这个函数没有返回值, 则会依据情况调用assignmentDataToPlainObject。如果有返回值则会作为响应。

对于本任务,就采用默认的assignmentDataToPlainObject。

Source:
Parameters:
Name Type Description
assignment object

任务对象

params object
global object
Returns:
Type:
Promise.<void>

(async, inner) getTaskData(task, params, global) → {Promise.<(object|void)>}

获取任务的数据。这里已经确保要么提交者为任务的发布者,要么提交者为订阅者且任务处于PUBLISHED状态 如果这个函数没有返回值,则会依据情况调用postTaskDataSchema。如果有返回值则会作为响应。

对于本任务,如果不是发布者,就采用默认的调用taskDataToPlainObject。如果是订阅者且PUBLISHED, 还会返回在userStatus内返回以下几个字段:

  • signed:用户是否已经注册,对于noSignup的任务而言,这永远为真
  • blocked:用户是否被拒绝参加改任务,对于noSignup或signupMultipleTimes的任务而言,这永远为假
  • signing:对于非signed用户而言,这个属性表示用户是否正在报名
  • created:对于任务非submitMultipleTimes且用户signed,表示是否已经创建了一个作业
Source:
Parameters:
Name Type Description
task object

任务对象

params object
global object
Returns:
Type:
Promise.<(object|void)>

(async, inner) getTaskData(task, params, global) → {Promise.<(object|void)>}

获取任务的数据。这里已经确保要么提交者为任务的发布者,要么提交者为订阅者且任务处于PUBLISHED状态 如果这个函数没有返回值,则会依据情况调用postTaskDataSchema。如果有返回值则会作为响应。

对于本任务,如果不是发布者,就采用默认的调用taskDataToPlainObject。如果是订阅者且PUBLISHED, 还会返回在userStatus内返回以下几个字段:

  • signed:用户是否已经注册,对于noSignup的任务而言,这永远为真
  • blocked:用户是否被拒绝参加改任务,对于noSignup或signupMultipleTimes的任务而言,这永远为假
  • signing:对于非signed用户而言,这个属性表示用户是否正在报名
  • created:对于任务非submitMultipleTimes且用户signed,表示是否已经创建了一个作业
Source:
Parameters:
Name Type Description
task object

任务对象

params object
global object
Returns:
Type:
Promise.<(object|void)>

(async, inner) postAssignmentData(assignment, params, global) → {Promise.<object>}

提交作业的数据,这里已经确保提交者为作业的订阅者,且作业处于EDITING状态。但该作业可能已经 提交过数据,因而应当清除以前的数据。原则上,这个过程结束后,应当重置作业的summaryvaliddata状态。原则上,该过程如果没有返回错误码,valid应当为true。

如果这个函数没有返回值,则会依据情况调用assignmentDataToPlainObject。如果有返回值则会作为响应。

对于本任务的作业而言,情况略有不同,这是有状态的,不可逆的故而不清除数据。主要上传的数据是猜的答案。

Source:
Parameters:
Name Type Description
assignment object

任务对象

params object

请求的数据

  • query 请求的query
    • data {boolean} 是否返回数据
  • data 请求的data
    • answer {number} 必须,介于1到选项数量
global object
Returns:
Type:
Promise.<object>

(async, inner) postAssignmentData(assignment, params, global) → {Promise.<object>}

提交作业的数据,这里已经确保提交者为作业的订阅者,且作业处于EDITING状态。但该作业可能已经 提交过数据,因而应当清除以前的数据。原则上,这个过程结束后,应当重置作业的summaryvaliddata状态。原则上,该过程如果没有返回错误码,valid应当为true。

如果这个函数没有返回值,则会依据情况调用assignmentDataToPlainObject。如果有返回值则会作为响应。

对于本任务的作业而言,情况略有不同,这是有状态的,不可逆的故而不清除数据。主要上传的数据是猜的答案。 返回的数据还会包含一个额外的字段:

  • compare {number} -1:偏小,0:猜对,1:偏大
Source:
Parameters:
Name Type Description
assignment object

任务对象

params object

请求的数据

  • query 请求的query
    • data {boolean} 是否返回数据
  • data 请求的data
    • guess {number} 必须
global object
Returns:
Type:
Promise.<object>

(async, inner) postAssignmentDataMiddleware(ctx, next) → {Promise.<void>}

这是postAssignmentData AJAX请求执行之前的中间件。通常这里用以处理文件上传的multipart请求。 缺省情况下直接调用postAssignmentData。

对于本任务的作业而言,没有文件上传。不做任何处理。

Source:
Parameters:
Name Type Description
ctx object
next function
Returns:
Type:
Promise.<void>

(async, inner) postAssignmentDataMiddleware(ctx, next) → {Promise.<void>}

这是postAssignmentData AJAX请求执行之前的中间件。通常这里用以处理文件上传的multipart请求。 缺省情况下直接调用postAssignmentData。

对于本任务的作业而言,没有文件上传。不做任何处理。

Source:
Parameters:
Name Type Description
ctx object
next function
Returns:
Type:
Promise.<void>

(async, inner) postTaskData(task, params, global) → {Promise.<void>}

提交任务的数据,这里已经确保提交者为任务的发布者,且任务处于EDITING状态。但该任务可能已经 提交过数据,因而应当清除以前的数据。原则上,这个过程结束后,应当重置任务的totalremainvaliddata状态。原则上,该过程如果没有返回错误码,valid应当为true。

如果这个函数没有返回值,则会依据情况调用taskDataToPlainObject。如果有返回值则会作为响应。

对于本任务而言,主要上传的数据是一些设置选项以及图片。

Source:
Parameters:
Name Type Description
task object

任务对象

params object

请求的数据

  • query 请求的query
    • data {boolean} 是否返回数据
  • data 请求的data
    • total {number} 必须,全部的任务(图片)数目,1到100
    • question {string} 必须,问题
    • choiceAmount {number} 必须,选项数量,大于0
    • choices {string[]} 必须,数量须与choiceAmount吻合
    • submitMultipleTimes {boolean} 可选设置,是否允许一个人参与多次,默认false
    • signupMultipleTimes {boolean} 可选设置,是否允许一个人被拒后再次报名,默认false
    • noSignup {boolean} 可选设置,是否无需报名,默认false
    • submitAutoPass {boolean} 可选设置,是否自动审批任务(即任务提交即接受),默认false
global object
Returns:
Type:
Promise.<void>

(async, inner) postTaskData(task, params, global) → {Promise.<void>}

提交任务的数据,这里已经确保提交者为任务的发布者,且任务处于EDITING状态。但该任务可能已经 提交过数据,因而应当清除以前的数据。原则上,这个过程结束后,应当重置任务的totalremainvaliddata状态。原则上,该过程如果没有返回错误码,valid应当为true。

如果这个函数没有返回值,则会依据情况调用taskDataToPlainObject。如果有返回值则会作为响应。

对于本任务而言,主要上传的数据是一些设置选项。

Source:
Parameters:
Name Type Description
task object

任务对象

params object

请求的数据

  • query 请求的query
    • data {boolean} 是否返回数据
  • data 请求的data
    • min {number} 必须,最小的数值,0到100
    • max {number} 必须,最大的数值,0到100且min<max
    • total {number} 可选设置,全部的任务数目,大于0,默认无穷
    • maxGuessTimes {number} 可选设置,默认无穷
    • submitMultipleTimes {boolean} 可选设置,是否允许一个人参与多次,默认false
    • signupMultipleTimes {boolean} 可选设置,是否允许一个人被拒后再次报名,默认false
    • noSignup {boolean} 可选设置,是否无需报名,默认false
    • submitAutoPass {boolean} 可选设置,是否自动审批任务(即任务提交即接受),默认false
global object
Returns:
Type:
Promise.<void>

(async, inner) postTaskDataMiddleware(ctx, next) → {Promise.<void>}

这是postTaskData AJAX请求执行之前的中间件。通常这里用以处理文件上传的multipart请求。缺省 情况下直接调用postTaskData。

对于本任务而言,没有文件上传。不做任何处理。

Source:
Parameters:
Name Type Description
ctx object
next function
Returns:
Type:
Promise.<void>

(async, inner) postTaskDataMiddleware(ctx, next) → {Promise.<void>}

这是postTaskData AJAX请求执行之前的中间件。通常这里用以处理文件上传的multipart请求。缺省 情况下直接调用postTaskData。 此任务中将上传的压缩包解压至该项目文件夹下。

Source:
Parameters:
Name Type Description
ctx object
next function
Returns:
Type:
Promise.<void>

(inner) taskDataToPlainObject(task, auth) → {object}

task.data转换为对象发送给对应可见性的人。这个函数会在postTaskData或者getTaskData返回 undefined的时候默认调用。理论上,调用者要么是任务发布者,要么是订阅者

对本任务而言,而exportedResult只有任务拥有者能获得。

Source:
Parameters:
Name Type Description
task object
auth object
Returns:
Type:
object

(inner) taskDataToPlainObject(task, auth) → {object}

task.data转换为对象发送给对应可见性的人。这个函数会在postTaskData或者getTaskData返回 undefined的时候默认调用。理论上,调用者要么是任务发布者,要么是订阅者

对本任务而言,而exportedResult只有任务拥有者能获得。

Source:
Parameters:
Name Type Description
task object
auth object
Returns:
Type:
object

一个用于比较逗逼的测试任务类型,可以众筹大家在知道整数范围时,猜测出整数需要次数的分布。这里用户 猜测完毕之后可以得到偏大、偏小或者等于。

任务和作业本身的多态性是建立在task.dataassignment.data这两个无schema的数据上的。

就这个猜数字项目task.data主要包含了以下几个字段:

  • min {number} 最小的数值
  • max {number} 最大的数值
  • maxGuessTimes {number} 可选设置,默认无穷
  • submitMultipleTimes {boolean} 可选设置,是否允许一个人参与多次,默认false
  • signupMultipleTimes {boolean} 可选设置,是否允许一个人被拒后再次报名,默认false
  • noSignup {boolean} 可选设置,是否自动完成报名的步骤(即无需报名),默认false
  • submitAutoPass {boolean} 可选设置,是否自动审批任务(即任务提交即接受),默认false
  • dir {string} 内部使用,这是uploads目录下属于该工程的文件夹。
  • signedUsers {string[]} 内部使用,对于非noSignup,这是报名了的用户的列表
  • blockedUsers {string[]} 内部使用,对于非noSignup且非signupMultipleTimes,这是封禁用户的列表
  • exported {boolean} 内部使用,项目是否导出

assignment.data主要包含了以下几个字段,而assignment.valid对于非signup类任务,表示能否继续猜:

  • signup {boolean} 表示这是一个用于注册的任务
  • answer {boolean} 对于非signup类任务,这是真正的答案
  • guesses {number} 对于非signup类任务,这是猜测的次数

Methods

(inner) assignmentDataToPlainObject(assignment, auth) → {object}

assignment.data转换为对象发送给对应可见性的人。这个函数会在createAssignment、 getAssignmentData或者getAssignmentData返回undefined的时候默认调用。 理论上,调用者是订阅者或者发布者。

对本任务而言,只有作业是一个非报名作业才返回数据,如下:

  • sequence {number} 题号
  • finished {boolean} 是否完成
  • answer {number} 答案
  • image {string} 图片名,在task.data.dir下
Source:
Parameters:
Name Type Description
assignment object
auth object
Returns:
Type:
object

(inner) assignmentDataToPlainObject(assignment, auth) → {object}

assignment.data转换为对象发送给对应可见性的人。这个函数会在createAssignment、 getAssignmentData或者getAssignmentData返回undefined的时候默认调用。 理论上,调用者是订阅者或者发布者。

对本任务而言,只有作业是一个非报名作业才返回数据,如下:

  • guessTimes {number} 猜测次数
  • finished {boolean} 是否完成
  • answer {boolean} 答案(完成之后才返回)
Source:
Parameters:
Name Type Description
assignment object
auth object
Returns:
Type:
object

(async, inner) assignmentStatusChanged(assignment, params, global) → {Promise.<void>}

这个函数是作业状态更改的钩子,确保作业的状态发生更改,可能的更改包括订阅者从编辑到提交,同时作业必须为valid, 以及发布者从提交到接受或拒绝。assignment会被保存。

本任务主要是处理自动pass和验证通过的逻辑的。

Source:
Parameters:
Name Type Description
assignment object
params
global
Returns:
Type:
Promise.<void>

(async, inner) assignmentStatusChanged(assignment, params, global) → {Promise.<void>}

这个函数是作业状态更改的钩子,确保作业的状态发生更改,可能的更改包括订阅者从编辑到提交,同时作业必须为valid, 以及发布者从提交到接受或拒绝。assignment会被保存。

本任务主要是处理自动pass和验证通过的逻辑的。

Source:
Parameters:
Name Type Description
assignment object
params
global
Returns:
Type:
Promise.<void>

(async, inner) createAssignment(task, assignment, params, global) → {Promise.<void>}

创建任务,这里已经确保提交者为订阅者,且任务处于PUBLISHED状态。原则上,这个过程结束后, 应当设置好validstatussummarydata的字段。如果该函数缺省,则会创建一个 不valid、编辑状态、无summarydata字段的任务。assignment会被保存。

如果这个函数没有返回值,则依据情况调用assignmentDataToPlainObject。 如果有返回值则会作为响应。

对于本任务而言,主要确认创建的是一个报名作业还是图片标注作业。

Source:
Parameters:
Name Type Description
task object

任务对象

assignment object

作业对象

params object

请求的数据

  • query 请求的query
    • populate {boolean} 是否返回
    • data {boolean} 是否返回数据
  • data 请求的data
    • task {string} 任务
    • data {object} 额外的数据
      • signup {boolean} 是否是报名任务
global object
Returns:
Type:
Promise.<void>

(async, inner) createAssignment(task, assignment, params, global) → {Promise.<void>}

创建任务,这里已经确保提交者为订阅者,且任务处于PUBLISHED状态。原则上,这个过程结束后, 应当设置好validstatussummarydata的字段。如果该函数缺省,则会创建一个 不valid、编辑状态、无summarydata字段的任务。assignment会被保存。

如果这个函数没有返回值,则依据情况调用assignmentDataToPlainObject。 如果有返回值则会作为响应。

对于本任务而言,主要确认创建的是一个报名作业还是真正的猜数字作业。

Source:
Parameters:
Name Type Description
task object

任务对象

assignment object

作业对象

params object

请求的数据

  • query 请求的query
    • populate {boolean} 是否返回
    • data {boolean} 是否返回数据
  • data 请求的data
    • task {string} 任务
    • data {object} 额外的数据
      • signup {boolean} 是否是报名任务
global object
Returns:
Type:
Promise.<void>

(async, inner) getAssignmentData(assignment, params, global) → {Promise.<void>}

获取作业的数据。这里已经确保要么提交者为作业的订阅者或发布者。如果这个函数没有返回值, 则会依据情况调用assignmentDataToPlainObject。如果有返回值则会作为响应。

对于本任务,就采用默认的assignmentDataToPlainObject。

Source:
Parameters:
Name Type Description
assignment object

任务对象

params object
global object
Returns:
Type:
Promise.<void>

(async, inner) getAssignmentData(assignment, params, global) → {Promise.<void>}

获取作业的数据。这里已经确保要么提交者为作业的订阅者或发布者。如果这个函数没有返回值, 则会依据情况调用assignmentDataToPlainObject。如果有返回值则会作为响应。

对于本任务,就采用默认的assignmentDataToPlainObject。

Source:
Parameters:
Name Type Description
assignment object

任务对象

params object
global object
Returns:
Type:
Promise.<void>

(async, inner) getTaskData(task, params, global) → {Promise.<(object|void)>}

获取任务的数据。这里已经确保要么提交者为任务的发布者,要么提交者为订阅者且任务处于PUBLISHED状态 如果这个函数没有返回值,则会依据情况调用postTaskDataSchema。如果有返回值则会作为响应。

对于本任务,如果不是发布者,就采用默认的调用taskDataToPlainObject。如果是订阅者且PUBLISHED, 还会返回在userStatus内返回以下几个字段:

  • signed:用户是否已经注册,对于noSignup的任务而言,这永远为真
  • blocked:用户是否被拒绝参加改任务,对于noSignup或signupMultipleTimes的任务而言,这永远为假
  • signing:对于非signed用户而言,这个属性表示用户是否正在报名
  • created:对于任务非submitMultipleTimes且用户signed,表示是否已经创建了一个作业
Source:
Parameters:
Name Type Description
task object

任务对象

params object
global object
Returns:
Type:
Promise.<(object|void)>

(async, inner) getTaskData(task, params, global) → {Promise.<(object|void)>}

获取任务的数据。这里已经确保要么提交者为任务的发布者,要么提交者为订阅者且任务处于PUBLISHED状态 如果这个函数没有返回值,则会依据情况调用postTaskDataSchema。如果有返回值则会作为响应。

对于本任务,如果不是发布者,就采用默认的调用taskDataToPlainObject。如果是订阅者且PUBLISHED, 还会返回在userStatus内返回以下几个字段:

  • signed:用户是否已经注册,对于noSignup的任务而言,这永远为真
  • blocked:用户是否被拒绝参加改任务,对于noSignup或signupMultipleTimes的任务而言,这永远为假
  • signing:对于非signed用户而言,这个属性表示用户是否正在报名
  • created:对于任务非submitMultipleTimes且用户signed,表示是否已经创建了一个作业
Source:
Parameters:
Name Type Description
task object

任务对象

params object
global object
Returns:
Type:
Promise.<(object|void)>

(async, inner) postAssignmentData(assignment, params, global) → {Promise.<object>}

提交作业的数据,这里已经确保提交者为作业的订阅者,且作业处于EDITING状态。但该作业可能已经 提交过数据,因而应当清除以前的数据。原则上,这个过程结束后,应当重置作业的summaryvaliddata状态。原则上,该过程如果没有返回错误码,valid应当为true。

如果这个函数没有返回值,则会依据情况调用assignmentDataToPlainObject。如果有返回值则会作为响应。

对于本任务的作业而言,情况略有不同,这是有状态的,不可逆的故而不清除数据。主要上传的数据是猜的答案。

Source:
Parameters:
Name Type Description
assignment object

任务对象

params object

请求的数据

  • query 请求的query
    • data {boolean} 是否返回数据
  • data 请求的data
    • answer {number} 必须,介于1到选项数量
global object
Returns:
Type:
Promise.<object>

(async, inner) postAssignmentData(assignment, params, global) → {Promise.<object>}

提交作业的数据,这里已经确保提交者为作业的订阅者,且作业处于EDITING状态。但该作业可能已经 提交过数据,因而应当清除以前的数据。原则上,这个过程结束后,应当重置作业的summaryvaliddata状态。原则上,该过程如果没有返回错误码,valid应当为true。

如果这个函数没有返回值,则会依据情况调用assignmentDataToPlainObject。如果有返回值则会作为响应。

对于本任务的作业而言,情况略有不同,这是有状态的,不可逆的故而不清除数据。主要上传的数据是猜的答案。 返回的数据还会包含一个额外的字段:

  • compare {number} -1:偏小,0:猜对,1:偏大
Source:
Parameters:
Name Type Description
assignment object

任务对象

params object

请求的数据

  • query 请求的query
    • data {boolean} 是否返回数据
  • data 请求的data
    • guess {number} 必须
global object
Returns:
Type:
Promise.<object>

(async, inner) postAssignmentDataMiddleware(ctx, next) → {Promise.<void>}

这是postAssignmentData AJAX请求执行之前的中间件。通常这里用以处理文件上传的multipart请求。 缺省情况下直接调用postAssignmentData。

对于本任务的作业而言,没有文件上传。不做任何处理。

Source:
Parameters:
Name Type Description
ctx object
next function
Returns:
Type:
Promise.<void>

(async, inner) postAssignmentDataMiddleware(ctx, next) → {Promise.<void>}

这是postAssignmentData AJAX请求执行之前的中间件。通常这里用以处理文件上传的multipart请求。 缺省情况下直接调用postAssignmentData。

对于本任务的作业而言,没有文件上传。不做任何处理。

Source:
Parameters:
Name Type Description
ctx object
next function
Returns:
Type:
Promise.<void>

(async, inner) postTaskData(task, params, global) → {Promise.<void>}

提交任务的数据,这里已经确保提交者为任务的发布者,且任务处于EDITING状态。但该任务可能已经 提交过数据,因而应当清除以前的数据。原则上,这个过程结束后,应当重置任务的totalremainvaliddata状态。原则上,该过程如果没有返回错误码,valid应当为true。

如果这个函数没有返回值,则会依据情况调用taskDataToPlainObject。如果有返回值则会作为响应。

对于本任务而言,主要上传的数据是一些设置选项以及图片。

Source:
Parameters:
Name Type Description
task object

任务对象

params object

请求的数据

  • query 请求的query
    • data {boolean} 是否返回数据
  • data 请求的data
    • total {number} 必须,全部的任务(图片)数目,1到100
    • question {string} 必须,问题
    • choiceAmount {number} 必须,选项数量,大于0
    • choices {string[]} 必须,数量须与choiceAmount吻合
    • submitMultipleTimes {boolean} 可选设置,是否允许一个人参与多次,默认false
    • signupMultipleTimes {boolean} 可选设置,是否允许一个人被拒后再次报名,默认false
    • noSignup {boolean} 可选设置,是否无需报名,默认false
    • submitAutoPass {boolean} 可选设置,是否自动审批任务(即任务提交即接受),默认false
global object
Returns:
Type:
Promise.<void>

(async, inner) postTaskData(task, params, global) → {Promise.<void>}

提交任务的数据,这里已经确保提交者为任务的发布者,且任务处于EDITING状态。但该任务可能已经 提交过数据,因而应当清除以前的数据。原则上,这个过程结束后,应当重置任务的totalremainvaliddata状态。原则上,该过程如果没有返回错误码,valid应当为true。

如果这个函数没有返回值,则会依据情况调用taskDataToPlainObject。如果有返回值则会作为响应。

对于本任务而言,主要上传的数据是一些设置选项。

Source:
Parameters:
Name Type Description
task object

任务对象

params object

请求的数据

  • query 请求的query
    • data {boolean} 是否返回数据
  • data 请求的data
    • min {number} 必须,最小的数值,0到100
    • max {number} 必须,最大的数值,0到100且min<max
    • total {number} 可选设置,全部的任务数目,大于0,默认无穷
    • maxGuessTimes {number} 可选设置,默认无穷
    • submitMultipleTimes {boolean} 可选设置,是否允许一个人参与多次,默认false
    • signupMultipleTimes {boolean} 可选设置,是否允许一个人被拒后再次报名,默认false
    • noSignup {boolean} 可选设置,是否无需报名,默认false
    • submitAutoPass {boolean} 可选设置,是否自动审批任务(即任务提交即接受),默认false
global object
Returns:
Type:
Promise.<void>

(async, inner) postTaskDataMiddleware(ctx, next) → {Promise.<void>}

这是postTaskData AJAX请求执行之前的中间件。通常这里用以处理文件上传的multipart请求。缺省 情况下直接调用postTaskData。

对于本任务而言,没有文件上传。不做任何处理。

Source:
Parameters:
Name Type Description
ctx object
next function
Returns:
Type:
Promise.<void>

(async, inner) postTaskDataMiddleware(ctx, next) → {Promise.<void>}

这是postTaskData AJAX请求执行之前的中间件。通常这里用以处理文件上传的multipart请求。缺省 情况下直接调用postTaskData。 此任务中将上传的压缩包解压至该项目文件夹下。

Source:
Parameters:
Name Type Description
ctx object
next function
Returns:
Type:
Promise.<void>

(inner) taskDataToPlainObject(task, auth) → {object}

task.data转换为对象发送给对应可见性的人。这个函数会在postTaskData或者getTaskData返回 undefined的时候默认调用。理论上,调用者要么是任务发布者,要么是订阅者

对本任务而言,而exportedResult只有任务拥有者能获得。

Source:
Parameters:
Name Type Description
task object
auth object
Returns:
Type:
object

(inner) taskDataToPlainObject(task, auth) → {object}

task.data转换为对象发送给对应可见性的人。这个函数会在postTaskData或者getTaskData返回 undefined的时候默认调用。理论上,调用者要么是任务发布者,要么是订阅者

对本任务而言,而exportedResult只有任务拥有者能获得。

Source:
Parameters:
Name Type Description
task object
auth object
Returns:
Type:
object