0

我正在开发一个 Android 应用程序来管理家庭中的任务,例如打扫厨房、吸尘......

我实现了一个基于 Json 的 API 来从中央数据库检索和存储数据。

每个家庭可以有一个或多个居民。它也可以有任意数量的任务。

任务处理与我的问题有关。任务的截止日期应平均分配给家庭中的每个居民,并且每个居民都应该能够查看和完成他们的任务。

在我目前的设计中,它具有以下属性:Id(int)、Label(String)、Description(String)、Start_date(date)、Start_resident_id(int)、home_id(int)、week_interval(int)、weekdays(int)

start_date:任务创建的日期(需要计算截止日期)

week_interval:这个任务应该在 X 周内完成(每周 1 次,每月 4 次,...)

weekdays:应该完成任务的工作日(例如 14 表示 MON、THU,1357 表示 MON、WED、FRI、SUN)

还有一个 task_status 模型,一旦居民将任务标记为已完成,就会创建该模型。

task_status:id(Int),task_id(Int),status(int),resident_id(int),due_date(date),comment(string)

状态:1 = 完成,2 = 跳过

resident_id = 完成任务的居民的外键

  1. 计算每个任务和居民的截止日期的最佳方法是什么?

  2. 这是具有这些 task_status 条目以将任务标记为已完成的好设计吗?

4

1 回答 1

0

这个模型对我来说基本上是正确的。你有一个重复任务的定义,你有这个任务的实例,代表特定的执行。

截止日期对我来说有点不清楚。你想用它表达什么?我可以想到两种方式来完成一项任务:

  1. 任务已经启动,尚未完成,任务的下一次迭代即将开始。但是什么时候应该执行死刑?下一次迭代的确切时间是什么时候开始?也许您想将其包含在任务定义中,例如任务必须在预定开始后 x 天完成。
  2. 一段时间以来,没有人开始这项任务。因此,任务本身将再次启动。但也许您在每次迭代时自动创建任务实例,那么这将是多余的。

您还可以考虑从存储的数据中删除到期日期。由于您有开始日期和时间间隔,因此您始终可以动态计算截止日期。当然,如果您更改任务定义,旧的执行实例可能变得毫无意义。

所以第一个到期日计算是针对任务本身的。取最后一次(按日期)完成的任务执行,并计算从那时到现在的时间间隔。如果这大于定义的时间间隔,则该任务将再次启动。第二次计算用于任务的特定执行。以未完成的任务执行为例,将其开始日期和当前日期与完成该任务的预定义时间量或下一次执行的预计开始日期进行比较。这实际上取决于您如何创建实例以及如何指定“到期”。

如果您想要灵活地安排任务,它可能会变得更加复杂:如果任务在预定日期之前或之后开始怎么办?如果您在安排新执行计划的前一天完成了厨房的清洁工作怎么办?连续两天打扫厨房有意义吗?

于 2013-06-01T09:28:00.160 回答