一、项目进度
今天想了一下生成计划功能的实现思路
二、生成计划功能的实现思路
创建计划表需要任务的什么信息呢?
1. 任务的截止时间(截止时间越早的越快安排)
2. 任务的重要程度(重要程度越高的越快安排)
3. 任务的花费时间
那么,如何创建计划表呢?
1. 安排计划表需要先知道用户的可支配时间,所以需要有一个页面来获取用户的空闲时间(计划设计成时钟样式,一开始时钟各个时段是灰色的,用户点击变成绿色,代表该段时间可支配,默认把全天24小时分成24个时间段,每一小时为一个时间段,另外设计一个用户“自定义时段”的链接,方便用户自己定义每个时段的起止时间)
2. 知道了用户的空闲时间,接下来要把任务列表中的任务安排到计划表上,需要先遍历任务列表,找出截止时间最近、重要程度最高的任务,查看该任务的花费时间,先放在第一个空闲时间段,如果该任务花费时间比第一个时间段的时间要长(第一个时间段装不下),则把剩余花费时间继续装在第二个时间段,以此类推,直到装下该任务(但是需要增加一个判断条件,如果时间段超出了任务的截止时间,则不再继续往下装)
0. 在任务分配的过程中,会出现一个问题,那就是如果上一个任务占用了过多的时间段,导致下一个任务没有在截止时间以前的时间段可以安排,那该怎么办?
0. 目前的想法是把这两个任务的时间换算成百分制的占比,比如第一个任务用时70分钟,第二个任务用时30分钟,而在截止时间前的可利用时间只有50分钟,在安排第一个任务的时候就会提示“可利用时间不足,比原计划时间少20分钟”,并把第一个任务安排在这50分钟的时间段,不再继续占用截止时间后的时间段;而安排第二个任务的时候,由于第一个任务把截止时间前的50分钟全部占用了,那么它和第一个任务就需要换算百分比,第一个任务占50分钟的70%也就是35分钟,第二个任务占50分钟的30%也就是15分钟,并分别提醒“比原计划时间少35分钟/比原计划时间少15分钟”
0. 这样的做法一是可以确保所有截止时间前的任务都可以顺利安排到计划表上,二是不占用后续的时间段,避免时间不够的情况重复出现
0. 针对生成计划表前已经超过截止时间的任务,会在主页面对应任务处显示“已过期”,并且不再安排到计划表里
3. 等到任务安排表完成后,计算还剩多少可支配时间,这里只有2种情况,0或者大于0(经过上面的方法,剩余可支配时间小于0,即有任务安排不下的情况将不会出现),如果剩余可支配时间为0,这一步不再操作;如果大于0,应该把这些时间平均分成(任务个数-1)份,安插在各个任务之间,作为过渡休息时间(前提是安排了过渡时间后,对应任务不会超出截止时间,如果安排过渡时间后任务超出了截止时间,那么该任务就不安排过渡时间,把该任务的过渡时间集中放到末尾)
4. 至此计划表算是正式排完了,接下来要把计划表展示给用户,如果展示一张一周的计划表,那么内容会非常拥挤,所以打算一个屏幕中心只展示一天的计划表,对该计划表右滑可以显示第二天的计划表,以此类推,同时也可以在下拉列表选择具体几号的计划表
5. 如果说用户可以对排完后的计划表进行修改,把一些任务拖动到用户认为更合理的时间段,那么用户体验会更好,但是这个实现起来有些难度,就先放着
6. 生成的计划表要添加进历史计划中
三、明天的计划
先把获取用户可支配时间的时钟页面设计出来