当前位置: 首页 > news >正文

三十二、【核心功能改造】数据驱动:重构仪表盘与关键指标可视化

三十二、【核心功能改造】数据驱动:重构仪表盘与关键指标可视化

    • 前言
      • 准备工作
      • 第一部分:后端实现 - 统计 API
        • 1. 创建 `DashboardStatsView`
        • 2. 注册统计 API 路由
        • 3. 后端初步测试
      • 第二部分:前端实现 - 重构仪表盘页面
        • 1. 创建 `api/dashboard.ts` API 服务
        • 2. 重构 `HomeView.vue` (仪表盘页面)
      • 第三部分:全面测试与验证
    • 总结

前言

仪表盘是用户进入系统后最先看到的页面,它应该能直观地展示系统的核心状态和关键指标。一个设计良好的仪表盘能帮助团队快速把握项目进度、测试覆盖情况和质量趋势。

在这里插入图片描述

本文目标:

重构仪表盘页面,展示以下关键信息:

  • 概览卡片: 项目总数、功能用例总数、接口用例总数。
  • 图表统计:
    • 用例类型分布: 通过饼图展示功能用例和接口用例的占比。
    • 按项目统计接口用例数: 通过柱状图展示每个项目的接口用例数量。
    • 按用户统计用例创建数: 通过柱状图展示不同用户创建的测试用例数量,了解团队成员的贡献度。

准备工作

  1. 前端项目就绪: test-platform/frontend 项目可以正常运行 (npm run dev)。
  2. 后端 API 运行中: Django 后端服务运行。
  3. Element Plus 集成完毕。
  4. vue-echarts 图表库已安装: 在前端项目根目录运行 npm install echarts vue-echarts --save
  5. 拥有一些测试数据: 创建多个项目、不同类型的测试用例(功能/接口),并由不同用户创建,以便统计图表能展示出多样化的数据。

第一部分:后端实现 - 统计 API

新建一个 API 来提供仪表盘所需的所有统计数据,以避免前端多次请求。

1. 创建 DashboardStatsView

打开 test-platform/api/views.py,添加一个新的 APIView
在这里插入图片描述
在这里插入图片描述

# test-platform/api/views.py
from django.db.models import Count # 导入 Count
from rest_framework import viewsets, filters, generics, permissions, filters, pagination, status as http_status# ... (其他 ViewSet) ...class DashboardStatsView(APIView):"""提供仪表盘所需的统计数据GET /api/dashboard/stats/"""permission_classes = [permissions.IsAuthenticated] # 只有登录用户才能查看def get(self, request, *args, **kwargs):# 1. 概览统计project_count = Project.objects.count()# 2. 按用例类型统计case_type_stats = TestCase.objects.values('case_type').annotate(count=Count('id'))# 3. 按项目统计接口用例数 (只统计接口用例)project_case_stats = TestCase.objects.filter(case_type='api') \.values('module__project__name') \.annotate(count=Count('id')) \.order_by('-count')# 4. 按用户创建用例统计 (按 maintainer 字段)# 注意: maintainer 是 CharField,如果想按 User 对象统计,TestCase 模型需添加 creator 字段user_case_stats = TestCase.objects.exclude(maintainer__isnull=True).exclude(maintainer__exact='') \.values('maintainer') \.annotate(count=Count('id')) \.order_by('-count'
http://www.lryc.cn/news/588717.html

相关文章:

  • 数学金融与金融工程:学科差异与选择指南
  • uniapp 微信小程序Vue3项目使用内置组件movable-area封装悬浮可拖拽按钮(拖拽结束时自动吸附到最近的屏幕边缘)
  • Springboot儿童认知图文辅助系统6yhkv(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • LED 照明应用提供高性价比方案?会是你的首选吗?
  • Unity音游开发全指南:模板与免费资源高效构建节奏游戏
  • labview关于OOP
  • CG--类比推理
  • java截取视频帧
  • 视频HDR技术全解析:从原理到应用的深度探索
  • 音视频学习(三十九):IDR帧和I帧
  • React.FC与React.Component
  • PyCharm 高效入门指南:从安装到效率倍增
  • docker拉取nacos镜像失败
  • lanch4j将jar转成exe
  • 开通保存图片权限
  • iOS高级开发工程师面试——Swift
  • 语言模型玩转3D生成:LLaMA-Mesh开源项目
  • 无人机故障响应模块运行与技术难点
  • 全面安装指南:在Linux、Windows和macOS上部署Apache Cassandra
  • 网络劫持对用户隐私安全的影响:一场无形的数据窃取危机
  • 算法在前端框架中的集成
  • 021_自然语言处理应用
  • 量子比特的稳定性革命:破解量子计算“脆弱密码”的最新突破
  • 读取ubuntu的磁盘分区表与超级块
  • 【高等数学】第三章 微分中值定理与导数的应用——第一节 不定积分的概念与性质
  • 面向医疗AI场景的H20显卡算力组网方案
  • Vue 中 effectScope() 的全面解析与实战应用
  • WPF,Winform,HTML5网页,哪个UI开发速度最快?
  • 板凳-------Mysql cookbook学习 (十一--------11)
  • 使用 Java 获取 PDF 页面信息(页数、尺寸、旋转角度、方向、标签与边框)