问题定义
个人资源管理平台
需求分析
需要一个软件平台来管理自己日益复杂和丰富的资源。包括但不限于个人文档、积累的电子书、下载的音乐、下载的视频教程,一些常用的功能。日记、笔记等。一些相关的人工智能的资源整合。如车标识别、orc等常用的接口。未来可能要接入物联网的相关设备、由于腾讯云的服务器的存储资源有限,未来需要将自己本地的文件外挂到该平台,即可以减小服务器的开销,还可以保护文档的私密性。服务器只做数据中转,而不是数据存储。服务器算力也有限,需要将算力分到本地外挂的设备。
一、文件管理需求
- 该平台需要能够存储文件,解决U盘的不便携性。一些小的文档可以上传至该平台。当需要的时候可以上传和下载。大文件管理,由于设备原因,不可能将所有的文件上传到远端的服务器。所以需要一个功能,能够在该平台管理自己的本地的文件。包括,添加、删除、读取等常用功能。
- 该平台的界面应该是非常友好的
二、图片管理需求
宅男喜欢二次元、现在积累了几个G的图片文件。但是很杂,该平台提供相册、分类的功能
- 相册功能 将图片分类到相册中
- 添加、删除、修改相册。
- 查看图片和编辑分开。
三、音乐管理需求
音乐很多,想要有自己的音乐播放器,类似于网易云音乐那种。
- 曲库 全部的音乐,可以搜索。一首歌可以放入很多的歌单中。
- 歌单 将音乐分类,在管理界面可以添加、编辑、删除歌单
- 上传音乐 上传的音乐会出现在曲库中,上传音乐的时候会添加相应的歌曲数据。
四、视频管理需求
视频很多、非常多。需要有效的管理
1、能够看视频(宽带问题,无法流畅的看视频)
2、用户能够根据名字搜索视频
3、用户能够创建自己的栏目,并且往里面添加视频(类似于blibli的收藏夹功能)
4、用户能够删除视频
五、日记和笔记的需求
笔记有很多成熟的产品,但是数据不可控。自己不想把数据放在他们的服务器上。所以需要一个支持多端编写的文档的功能。数据放在自己的数据库中。支持富文本和markdown格式的语法。
- 文档的导入和导出 可以将数据库的中笔记文档导出pdf格式,保存备份在磁盘中。
- 定期生成备份文件,后期可以调用多个网盘的api多端备份。
六、常用工具的需求
学习工作中有很多工具的需求,图片转文字、开发中json格式化、还有很多的开发手册。这些都是用得到的,并且自己已经实现了车标的识别并且建立了模型。可以将该功能整合
到平台中
1、二维码工具。能够根据字符串生成二维码,也能识别二维码为字符串。
2、车标识别工具。能够根据上传的图片识别相应的车标。
3、
七、物联网设备管理需求
未来自己会将家里的物联网的设备挂在该平台中,并且能够在该平台进行管理。空调、冰箱、台灯、电视机。自己梦想中的家。需要一个同一的管理平台,而不是各自为政。
添加设备,每个设备都有自己的id码,并且有相应的命令。
八、计划跟踪平台
用来记录自己的计划和执行情况,主要借鉴TODO List的功能
添加计划,一个计划会有开始时间、截止时间、完成时间(用户完成),具体内容,轻重缓急。
编辑、删除计划,只有未开始的计划才能编辑和删除
生成报表,可以按周、按月生成报表。记录计划的预计完成时间和实际完成时间,计算完成工作计划的轻重缓急的比例。
概要设计
详细设计
数据库设计
笔记管理
笔记本:t_notebook
字段 | 属性 | 说明 |
---|---|---|
id | bigint | 主键 |
notebook_name | varchar | 笔记本名 |
notebook_description | varchar | 笔记本描述 |
create_id | bigint | 创建者id |
created_time | timestamp | 创建时间戳 |
modify_time | timestamp | 修改时间戳 |
del | tinyint | 删除标记 |
笔记条目:t_notebook_item
字段 | 属性 | 说明 |
---|---|---|
id | bigint | 主键 |
notebook_id | bigint | 主键 |
notebook_item_title | varchar | 笔记条目标题 |
notebook_item_content | text | 笔记条目内容 |
create_time | timestamp | 创建时间 |
modify_time | timestamp | 修改时间 |
del | tinyint | 删除标记 |
平台原型
后端实现进度
鉴权模块
- shiro鉴权
….
用户模块
- 用户登录接口
Request URL: 127.0.0.1:8080/Api/User/Login
Request Method:post
Request Body:
1 | { |
Response Body:
1 | { |
- 用户登出接口
Request URL: 127.0.0.1:8080/Api/User/Logout
Request Method: post
Request Body: null
Response Body:
1 | { |
- 获得用户信息
Request URL: 127.0.0.1:8080/Api/User/UserInfo?token=usertoken-token
Request Method: get
Response Body:
1 | { |
- 用户管理
- 权限角色管理
….
文件模块
- 文件上传
- 查询文件列表
- 删除文件
- 文件分类
图片模块
- 创建相册
- 更新相册
- 添加图片至相册
- 删除某个相册下的图片
- 删除相册
音乐模块
- 获得曲库列表
- 获得歌单列表
- 获得歌单对应的曲目
- 添加新的歌曲
- 修改歌曲
- 删除歌曲
- 添加新的歌单
- 更新歌单
- 删除歌单
在线笔记模块
- 获得笔记列表
- 获得特定笔记的内容
- 添加新的笔记本
- 为某个笔记本添加新的条目
- 更新笔记本
- 更新笔记本特定条目
- 删除笔记本
- 删除笔记本特定条目
- 前端支持Markdown语法渲染
小说模块-转码
- 添加新的解析模块
- 变更解析模块
- 删除解析模块
TODO模块
人工智能接口
- 车标识别接口
- 车标检测接口
- 文字识别接口[待训练模型]
- 人脸检测接口[待训练模型]
物联网设备
- 查询所有设备状态
- 添加新的设备
- 删除设备
- 控制特定的设备
前端流程设计
登录流程设计
1 | sequenceDiagram |
请求接口
- Api/User/Login
- Api/User/GetInfo
- Api/User/Logout
物联网相关
测试用例
数据流设计
大数据量数据传输TCP的有序也不能自己分割数据组
数据分割协议:
1 | 数据总长度(4bit) + 数据流 |
使用一个缓冲区先存数据,看是否已经可以拿回数据了。