当前位置: 首页 > 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.xdnf.cn/news/1127845.html

相关文章:

  • 【转】Rust: PhantomData,#may_dangle和Drop Check 真真假假
  • 【字节跳动】数据挖掘面试题0019:带货直播间推荐:现在有一个带货的直播间,怎么把它精准地推送给有需要的用户
  • 【C++】神奇的AVL树
  • WebView JSBridge 无响应问题排查实录 全流程定位桥接调用失效
  • 无人机故障响应模块运行与技术难点
  • Ubuntu24 辅助系统-屏幕键盘的back按键在网页文本框删除不正常的问题解决方法
  • RTL编程中常用的几种语言对比
  • 【C#地图显示教程:实现鼠标绘制图形操作】
  • 厂区车辆导航系统:基于 GPS+AI 动态路径规划的技术实现与实践
  • 春秋云镜 initial
  • 2025开放原子开源生态大会 | openKylin的技术跃迁和全球协作
  • 2025开放原子开源生态大会 | 开源欧拉的AI原生实践与全球协作
  • GaussDB 数据库架构师修炼(三) 集群管理概览
  • 李宏毅《生成式人工智能导论》 | 第11讲-第14讲:大型语言模型的可解释性、能力评估、安全性
  • React源码5 三大核心模块之一:render,renderRoot
  • docker-compose 配置启动2个MongoDB
  • 【Docker基础】Dockerfile构建与运行流程完全指南:从原理到实践优化
  • PostgreSQL 超详细安装与使用教程:从入门到实战
  • Axios 和Express 区别对比
  • 使用LNMP一键安装包安装PHP、Nginx、Redis、Swoole、OPcache
  • Linux系统调优和工具
  • 理解 HTTP POST 请求中的 json 和 data 参数
  • 【目标追踪】MUTR3D: A Multi-camera Tracking Framework via 3D-to-2D Queries
  • 快速了解 HTTPS
  • 【BUG处理】构建APK时遇到错误:‘flutter‘ 命令未被识别。这通常表示您的系统中未安装Flutter SDK或环境变量配置不正确。
  • 【亲测有效】ubuntu20.04服务器新建用户+vnc配置教程
  • 基于按键开源MultiButton框架深入理解代码框架(二)(指针的深入理解与应用)
  • 【橘子分布式】Thrift RPC(编程篇)
  • OMPL安装问题:CMake报错找不到ompl依赖
  • Linux探秘坊-------14.信号