团队作业技术规格说明书

技术规格说明书


一、前言

由于本项目为增量开发项目,目前我们计划完善/增添的Feature包括:

  1. 增加新的物理实验内容:大二下学期综合实验、设计实验

  2. 完善用户管理界面:目前的用户管理部分仅有后端接口,前端完全没有实现或非常简陋。

  3. 增加物理实验数据统计系统:统计大家在同一个实验中上传的数据,进行一定分析并在前端可视化。

  4. 适配移动客户端:目前仅有WeCenter能够自动适配移动端,而物理实验处理等模块由于工具限制大多不支持手机端。

除此之外还包括一些重构的想法:

  1. 以Vue.js重构前端,以组件化的方式使前端更加清晰

  2. 以MathJax+HTML的方式代替目前的Latex&PDF方法生成报告,从而将报告完全转为HTML的形式,减轻服务端编译Latex生成PDF的压力。

  3. 以Django重构后端,代替目前的Laravel框架,尽量分离前后端。

  4. 以一个相对简约的论坛模块代替目前的WeCenter,例如 LBForum。或在仍采用Laravel框架的情况下尽量精简WeCenter中的无用代码。

(由于部分重构的难度较大,结合以前学长的经验,我们将在原有网站基础上开发作为主要任务,而重构仅在时间充裕的情况下考虑。)

扫描二维码关注公众号,回复: 5744597 查看本文章

因此,以下部分仅介绍我们计划进行增量开发部分的技术规格,而已有暂不变更的部分则沿用前三次的技术文档:Phylab技术规格说明书 v1.3

二、主要技术规格说明

1. 用户管理界面

用户管理界面在alpha阶段仍采用bootstrap框架构造,主要的功能包括用户基本信息的显示与修改、头像的上传以及查看/下载已收藏的报告。

后端接口如下(修改了部分往年使用的接口约定)

/user GET 获取用户信息页面,包括名称、年级、性别等个人信息以及头像,以输入框的方式显示从而便于修改

  • 参数:无
  • 返回:用户名、学号、邮箱、性别、自我介绍、头像链接

/user/edit PUT 修改个人信息

  • 参数:用户名、学号、邮箱、性别、自我介绍、头像链接
  • 返回:成功/失败

/user/avatar POST 上传/更新用户头像

  • 参数:上传文件字段
  • 返回:成功/失败,头像文件路径

/user/star GET 获取用户所有收藏的报告

  • 参数:无
  • 返回:一个json list,其中每一项为用户收藏的报告id、链接、时间、报告名称

/user/star&id={id} GET 显示收藏夹中某一特定报告

  • 参数:id
  • 返回:报告链接(直接将报告显示或提供下载链接),报告名称、时间

/user/star&id={id} POST 收藏某一报告

  • 参数:id,报告链接
  • 返回:成功/失败

/user/star&id={id} DELETE 删除某一报告

  • 参数:id
  • 返回:成功/失败

/user/star/download&id={id} GET 下载某一特定报告

  • 参数:id
  • 返回:下载文件

2. 物理实验数据统计

物理实验数据统计系统是本次我们希望在后续阶段新增的一个功能,主要想法是统计同学们通过平台进行计算的数据,在后端定时进行数据分析并在网站上进行可视化,从而让同学们对实验数据分布情况有大体的了解。

这个功能的主要技术要点包括

  1. 数据采集:当用户点击生成报告时,前端除了将数据发送至后端生成报告的逻辑外,还将把原始数据拷贝给数据收集端口,收集端口对数据进行清洗后将数据存入数据库中。

  2. 数据计算:每隔一段时间,服务器将会对数据库中的数据进行一次统计,具体统计的值包括数据的平均数及计算结果的平均数等。

  3. 数据展示:在后端完成计算后将结果暴露给前端,前端通过d3.js这类可视化库对数据进行可视化

数据采集

数据库结构大体如下,每个实验部分存储实验相关的数据。

数据计算 && 数据展示

通过脚本,根据模式设置中的采集间隔,每隔一段时间在数据库中对数据进行计算(可以在凌晨时段进行以减小服务器的压力)。
数据计算的结果保存至服务器上的特点文件内,供前端进行读取

通过在前端增加相应的组件,以D3.js为基础,前端每次访问界面时都通过HTTP请求向后端请求保存统计结果的文件,读取期中数据在前端进行渲染。

3. 移动端适配

移动端适配主要通过重写前端部分代码,通过User-agent区分移动端和PC端,并单独构建移动端的页面。这部分内容遵循MVP原则,在前期可能仅以实现功能为主,不考虑美观,到后续阶段再对界面进行美化。

移动端的一大痛点是PC端的部分JS插件无法在手机浏览器上运行,例如PDF显示控件。对于这方面我们计划在移动端去除部分无法运行的模块,并以功能类似的模块替代。例如在移动端的显示PDF转为PDF的下载,从而用户点击按钮后可以弹出新的窗口浏览PDF文件。

三、一些需要注意的点

  • 耦合&封装:laravel框架作为PHP经典的MVC框架,其前后端分离程度较好,例如我们本次开发用户界面仅需要通过AJAX和后端接口进行对接,无需关心后端实现(当然还是要验证一下后端正确性)。

  • 数据安全:计划增加的数据统计模块需要对数据的合法性进行约束(例如数据不能太离谱),除此之外也需要对保存的用户提交数进行约束,否则可能出现恶意向服务器提交垃圾数据的情况。(这也是这一功能目前最令人担忧的地方)

猜你喜欢

转载自www.cnblogs.com/hardchoice/p/10640222.html