慧心医问——项目实训第五周实录

78 阅读8分钟

一、本周工作总结

本周我们主要的工作内容有以下两个方面

1. 完成后台数据展示的后端

2. 对接系统后台中动态数据展示和后端的接口

下面将对这些工作进行简单介绍

 

二、完成后台数据展示的后端

2.1 首先我们选择flask框架进行后端开发

image.png 1.Flask框架概述

Flask是基于Werkzeug和Jinja2库构建的,它遵循了MVC(模型-视图-控制器)的设计模式。Flask的核心思想是保持简洁和易用,它提供了一些核心功能,但也允许开发者通过扩展来添加更多功能。

 

2.Flask的特点

简单易学:Flask的API设计简洁明了,学习和上手容易。开发者无需学习复杂的框架概念,只需了解几个核心概念即可开始开发。

轻量级灵活:Flask没有过多的依赖,它的核心功能非常精简。开发者可以根据需要选择适合自己项目的扩展,使得框架更加灵活。

易于扩展:Flask提供了丰富的扩展库,可以轻松集成常用的功能,如数据库访问、表单验证、身份认证等。开发者可以根据需求选择适合自己项目的扩展,快速实现功能。

模板引擎支持:Flask集成了Jinja2模板引擎,使得前后端分离更加方便。开发者可以通过模板引擎将逻辑和界面分离,提高代码的可维护性和可读性。

多种数据库支持:Flask支持多种数据库,如SQLite、MySQL、PostgreSQL等。开发者可以根据项目需求选择适合的数据库,进行数据的存储和操作。

自动化测试:Flask提供了测试客户端和测试工具,方便开发者进行自动化测试,保证代码的质量和可靠性。

 

1. 实践引入

image.png 2.2 重要代码展示

1.统计一周登录人次

8.上一周人次数目

@app.route('/back/record/get_last_week_dates/', methods=['GET'])

def get_last_week_login_count():

    # 获取上一周的起始和结束日期

    last_week_start, last_week_end = get_last_week_dates()

    db_conn = get_db_conn()  # 假设你有这个函数来获取数据库连接

 

    # 编写SQL查询

    query = """  

    SELECT COUNT(DISTINCT user_id) AS total_logins  

    FROM user_login  

    WHERE DATE(login_time) BETWEEN %s AND %s;  

    """

 

    # 准备并执行查询

    params = (last_week_start, last_week_end)

 

    result = db_conn.get_one(query, params)

    total_logins = result[0] if result else 0

 

 

return jsonify(total_logins), 200

 

 

2. 统计一周常用时段

    # 7.一周常用时段

@app.route('/back/record/getAverageLogin/', methods=['GET'])

def get_average_logins_per_two_hours1():

    # 示例使用

    now = datetime.now()

    yesterday_start = now - timedelta(days=2)

    yesterday_start = yesterday_start.replace(hour=0, minute=0, second=0, microsecond=0)

    yesterday_end = yesterday_start + timedelta(days=1)

 

    db_conn = get_db_conn()  # 假设你有这个函数来获取数据库连接

    re = get_full_logindata_index(db_conn, yesterday_start, yesterday_end)

    re = re * 2

    if re is None:

        return msg(201)

return jsonify(re), 200

 

 

 

3. 统计一日常用时段

7.一日常用时段

@app.route('/back/record/getAverageLogin/', methods=['GET'])

def get_average_logins_per_two_hours():

    # 示例使用

    now = datetime.now()

    yesterday_start = now - timedelta(days=1)

    yesterday_start = yesterday_start.replace(hour=0, minute=0, second=0, microsecond=0)

    yesterday_end = yesterday_start + timedelta(days=1)

 

    db_conn = get_db_conn()  # 假设你有这个函数来获取数据库连接

    re = get_full_logindata_index(db_conn, yesterday_start, yesterday_end)

    re = re * 2

    if re is None:

        return msg(201)

return jsonify(re), 200

 

 

2.3 Postman测试

1.接口总览

image.png 2. 测试例子

image.png

image.png

一、对接接口

2.1 接口文档编写

1. 问答部分

1.查询用户问答信息

传参:搜索类型+内容(按用户名搜索+用户账号或按问题关键词搜索+关键词)

接收参数:

搜索结果(filteredQAList):返回的过滤后的问答信息列表(包括用户名,用户账号,问题,回答)

 

2.显示用户问答信息

接收参数:所有用户问答信息

3.删除用户信息

传参:用户id

接收:新的用户列表

 

修改:这里返回值是删除的行数,你在前端重新执行一遍搜索所有用户即可,无需后端返回所有用户信息,具体参考我之前的前端代码

 

注:下面内容可以显示,但是只能看到昨天的,因为今天还没能完全到24小时

4.时段柱状图

传参:

接收参数:Logindata2:每两小时(0点到2点、2点到四点...)登录人次数目的数组(例如:[100, 50, 20, 250, 300, 450, 540, 50, 10, 250, 100, 350])

5.时段饼状图

传参:

接收参数:Logindata6:每六小时(0点到6点、6点到12点...)登录人次数目的数组

 

6.常用时段

传参:

接收参数:daytime:登录人次最多时段(上一日)(返回一个两小时的时段,比如:0:00-2:00)

7.常用日

传参:

接收参数:time:登录人次最多的一天(上一周)(返回一天,比如:周一.)

8.登录人次

接收参数:Amount:登录总人次(上一日)

weekamount登录总人次(上一周)

2. 用户部分

用户管理界面

1.查询用户信息

传参:用户名,id

接收参数:

 

2.显示用户信息

接收参数:用户信息

3.编辑用户信息

传参:用户id,修改的用户字段信息

接收参数:修改完成的用户信息

4.删除用户信息

传参:用户id

接收:新的用户列表

5.重置密码

传参:用户id

接收:默认用户密码

6.实时在线人数显示

传参:

接收参数:当前时间用户在线人数

7.十日用户活跃度

传参:

接收参数:十日用户活跃数量

8.用户年龄分布

传参:

接收参数:每10岁一个年龄段,统计人数

9.地区分布热力图

传参:

接收参数:地区统计人数

 

10.用户反馈管理界面

1.显示信息

传参:

接收参数:反馈信息列表

2.查询

传参:反馈信息类型,关键词

接收参数:反馈信息

3.修改

传参:反馈信息已读

接收参数:更新后的数据

4.绘制树状矩形图

传参:

接收参数:反馈信息各类别数量统计  

二、总结

本周,我们团队的工作主要集中在后台数据展示及其与后端接口的对接上。以下是关于这两项工作的具体总结:

一、后台数据展示的后端开发

本周,我们成功完成了后台数据展示的后端开发工作。这项工作的关键在于确保后端能够准确、高效地处理数据请求,并将数据以适当的格式返回给前端进行展示。我们主要做了以下几个方面的工作: 

l 数据模型设计:首先,我们根据业务需求,设计了合理的数据模型,确保数据的完整性和准确性。

l 接口开发:基于设计好的数据模型,我们开发了相应的后端接口,用于处理前端发送的数据请求。这些接口能够接收前端发送的参数,根据参数从数据库中检索数据,并将数据以JSON或其他前端友好的格式返回。

l 性能优化:为了提高系统的响应速度和用户体验,我们对后端接口进行了性能优化。通过优化数据库查询、减少网络传输量等方式,我们显著提高了接口的响应速度。

二、对接系统后台中动态数据展示和后端的接口

在完成了后台数据展示的后端开发后,我们进一步与系统后台进行了对接,实现了动态数据展示与后端接口的顺畅通信。这项工作的关键在于确保前后端能够准确、快速地交换数据,实现数据的实时更新和展示。我们主要做了以下几个方面的工作:

l 接口对接:我们与前端团队紧密合作,确保前端发送的数据请求与后端接口的定义保持一致。同时,我们也对前端返回的数据进行了处理,以满足前端展示的需求。

l 数据同步:为了实现数据的实时更新和展示,我们采用了轮询、WebSocket等多种方式来实现前后端的数据同步。这些技术能够确保当后端数据发生变化时,前端能够实时获取到最新的数据并进行展示。

l 错误处理:在对接过程中,我们遇到了各种问题和错误。我们通过详细的日志记录和错误分析,及时解决了这些问题,并优化了代码以减少未来的错误发生。 总结

本周,我们团队在后台数据展示和后端接口对接方面取得了显著的进展。同时,我们也积累了丰富的开发经验和知识,为未来的工作打下了坚实的基础。我们将继续努力,不断优化和完善系统,为用户提供更好的服务。