我正在开发一款Android应用程序,用于管理家庭中的任务,例如清洁厨房,真空清洁......
我实现了一个基于Json的API来检索和存储来自中央数据库的数据。
每个家庭都可以有一个或多个居民。它也可以有任何计数任务。
任务处理是我的问题所在。任务的截止日期应平均分配给每个住户,并且每个居民都应该能够查看和完成他们的任务。
在我目前的设计中,它具有以下属性:Id(int),Label(String), Description(String),Start_date(date),Start_resident_id(int),household_id(int),week_interval(int),weekdays(int)
start_date:创建任务的日期(需要计算到期日期)
week_interval:此任务应在X周内完成(每周1次,每月4次,......)
工作日:应该完成任务的工作日(例如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 =已完成任务的居民的外键
计算每项任务和居民的截止日期的最佳方法是什么?
这是一个很好的设计,有这些task_status条目将任务标记为已完成?
答案 0 :(得分:0)
这个模型对我来说基本上是正确的。您有一个重复任务的定义,并且您有此任务的实例,表示特定的执行。
截止日期对我来说有点不清楚。你想用它表达什么?我可以想到任务可以达到的两种方式:
您还可以考虑从存储的数据中删除截止日期。由于您有开始日期和间隔,因此您始终可以动态计算到期日期。当然,如果您更改任务定义,旧的执行实例可能会变得毫无意义。
因此,第一个到期日计算是针对任务本身的。取最后一个(按日期)完成任务的执行并计算当时和现在之间的时间间隔。如果这大于定义的间隔,则该任务将再次启动。第二次计算用于任务的特定执行。执行任务的未完成执行并将其开始日期和当前日期比较为必须完成它的预定义时间量或下一次执行的预测开始日期。这实际上取决于您如何创建实例以及如何指定“到期”。
如果您希望灵活安排任务,可能会变得更加复杂:如果任务是在预定日期之前或之后启动的,该怎么办?如果您在安排新的执行前一天完成清洁厨房怎么办?连续两天清理厨房是否有意义?