项目介绍
项目名称:DoItNow
项目介绍:实可以快捷交互的时间管理工具。(场景)随时随地在网页上打开进行交互,实时更新渲染,能够让人知道需要着手完成的任务的重要情况及时间安排,将每日日程了然与胸;(任务)核心功能:集成日程规划、计划管理、任务清单、备忘录、生活记录于一体,从而帮助时间紧张的群体更好的管理时间。
NABCD分析
-
Need:不管是管理层各种开会提醒、文档撰写,还是程序员学习框架与实现需求,都需要规划好明确的时间,并且有一种方式来提醒自己截止日期和完成情况,最好还有一种方式其知道自己完成的历史情况。
不少人在桌面上建立Todo list,设为手机或电脑桌面,但缺陷也非常明显,不能提供实时的交互与更新,也无法主动提醒各项任务,甚至即使是重要性不同,紧迫性不同的任务也占用了几乎相同的位置和注意力。
这样的情况极不利于日程规划的制定与执行,并且需要个体付出意志力去执行这样的“计划”。我曾今也制定计划,但是由于这种桌面上编辑非常不智能,放弃了制定计划,亟需一种可视化系统,利用多视觉通道,有效展现计划的关键信息。
-
Approach:设计一种全新的可交互可视化系统,采用“双对数时间线”,设计及实现流程如下:
- 调研
- 需求设计:包括概念设计/AR图,功能规格设计/原型设计,技术规格设计
- 前端:Vue(let react/vue do the MANIPULATION of DOM while let d3.js do the “DRAWING”),Echarts/D3(作为库,实现一些复杂的图表),Axios(作为接口请求后端推送的数据)
- 后端&数据库:SQLAlchemy(作为模型层控制mysql),Flask(实现业务逻辑和数据处理,为前端提供接口,相比Django更轻量)
- 测试及运维:数据库使用mysql容器提供服务,后端、前端放置在一个容器中,由Flask统一管理并提供服务。
-
Benefit:
- 日常规划及映射:使用可交互编辑的“圆环图”构建日常规划,并映射到“双对数时间线”上,形成一个linked-view
- 目标与任务清单:时间线上的任何一点均可作为截止时间,插入任务(默认不设定起始时间,迫近截止时间时逐渐加深),任务可设定百分重要性,距离中心越近的任务重要性和紧迫性越高,按照双重标准对任务进行排序。任务分为Life和Study两类,分别向时间线两侧展开。
- 生活记录&历史统计:在时间线上某些点处可在线编辑markdown文档并在hover时展示缩略图,点击时打开窗口渲染(能否集成Typora?)
- 任务提醒:任务接近ddl时告警,自动生成任务清单视图,按照重要性和紧迫性双因素排序。
- 用户登录:为了保证数据的唯一性,需要按照不同用户保存数据
-
Competitors:
- 备忘录
- 甘特图
- Todo List
-
Delivery:在博客、bilibili上写博文,做视频宣传网站。更多的是自用
需求设计
设计理念
- 未来比过去重要,离当下距离越近越重要
- 每个任务有一个明确的截止时间,其重要性随着到截止时间的距离增加而指数减少(如同遗忘曲线一样)。当任务重要性低于某一阈限,将不再计入任务安排中
- 目标、清单、任务、里程碑、日常的相互关系:
- *目标(WillDo)*是某个时间点需要进行的事物,在此之前的时间内需要围绕这一“目标”做准备
- *清单(Todo)*提醒自己目前开始需要完成怎样的任务,没有截止时间,以更好地规划时间,将大脑集中在当前应该完成的事项上。
- *任务(Todo)*是某一段时间内需要进行的事物,有一个明确的截止时间,随着距离截止时间的距离越近而越紧迫。
- 里程碑(Done)。对于过去的任务,时间线上在时间安排区会自动记录“里程碑”(任务的一种新形式表现),不再出现任务的方格。
- *日常(Routine)*指作息时间安排,好比乐曲中的节奏,在每个小结(每天)都是固定的,不断重复这一框架。但是一个形式上的框架,不一定要完全遵守这一规定。
- 任务按照重要性进行排序,采取颜色深度表示重要性,宽度使用非线性映射表示重要性的排序(不直接表示重要性,能够统一表示)
AR图
功能规格说明(原型设计)
From vika: https://vika.cn/workbench/dstshKJzBGFUpubhU6/viwK1ihPATrQW
接口设计
主视图函数
x表示横坐标,t表示相对时间(相对当前),T表示绝对时间,w表示宽度,y表示纵坐标,表示任务ddl到目前的距离,imp表示任务预设重要性,priority表示任务当前重要性,order表示任务重要性排序。
则存在函数:
- 正比于 w,但低于5%不计
固定化参数,减少随机性
对象
即数据库需要存储什么?定义逻辑上的功能,再推理物理上的实现
- RoutineManager 包含多种Routine,在不同天上使用不同Routine,持续24h
- [routine: Routine]
- Routine
- name: str
- description: str 包含Routine的规则,markdown文本便于渲染
- begin: Time
- end: Time
- (persist: TimeDiff) 依赖属性
- [routine]
- Time
- WillDo
- name: str
- description: str
- time: Time
- importance: int(0~100)
- ToDo 需要在begin和end中指定一个或多个(任务和清单不区分),完成后自动变为Done
- name: str
- decription: str
- begin: Time
- importance: int(0~100)
- beta: float(0~1)
- finished: bool
- end: Time 如果方框被勾选,自动结束,并以此刻为结束时间
- color: Color
评论区