313-基于Python的保险行业数据可视化分析系统

313-基于Python的保险行业数据可视化分析系统

保险行业数据可视化分析系统 — 技术文档

1. 项目概述

1.1 基本信息

项目属性
项目编号313
项目名称保险行业数据可视化分析系统
项目类型分析型(无预测目标列)
技术栈Flask + Vue 3(前后端分离)
数据规模30,000 行 × 30 列
后端端口8000
前端端口5173
数据库MySQL 8.0(design_313_insurance)
管理员账号admin / admin123

1.2 系统功能

本系统是一个面向保险行业的全维度数据可视化分析平台,提供以下核心能力:

  • 13 个数据分析页面:覆盖客户画像、产品分析、地域分布、渠道分析、保费保额、理赔分析、时间趋势、关联分析、统计检验、回归分析、异常检测、同比环比
  • 地图下钻分析:基于 ECharts 的全国省份 → 城市级地图下钻,支持多指标切换
  • 聚类分析:K-Means / DBSCAN 算法,最优 K 值分析,聚类画像
  • 时间序列分析:季节性分解、ARIMA 预测
  • 关联规则挖掘:Apriori 算法,频繁项集与关联规则发现
  • 报告导出:Excel / PDF 自动生成与下载
  • 用户与权限:JWT 认证,user / admin 双角色体系
  • 数据管理:CRUD 操作 + CSV 批量导入

2. 技术架构

2.1 整体架构

┌─────────────────────────────────────────────────────────┐ │ 浏览器客户端 │ │ http://localhost:5173 │ └────────────────────────┬────────────────────────────────┘ │ Vite Dev Proxy /api/* → :8000 │ ┌────────────────────────▼────────────────────────────────┐ │ Flask API 后端 │ │ http://localhost:8000 │ │ │ │ ┌──────────┐ ┌──────────────┐ ┌──────────────────┐ │ │ │ 路由层 │→ │ 数据转换层 │→ │ shared 核心模块 │ │ │ │ (app.py) │ │ (结构适配) │ │ (纯 Python 计算) │ │ │ └──────────┘ └──────────────┘ └──────────────────┘ │ │ │ │ │ ▼ │ │ ┌──────────┐ ┌──────────┐ │ │ │ database │ │ CSV 文件 │ │ │ │ .py │ │ (pandas) │ │ │ └────┬─────┘ └──────────┘ │ └───────┼─────────────────────────────────────────────────┘ │ ┌─────▼─────┐ │ MySQL │ │ 用户/数据 │ └───────────┘ 

2.2 前端技术栈

技术版本用途
Vue 3^3.4.21前端框架(Composition API + <script setup>
Vue Router^4.3.0路由管理(History 模式)
Pinia^2.1.7状态管理
Element Plus^2.6.1UI 组件库
@element-plus/icons-vue^2.3.1图标库
ECharts^5.5.0数据可视化图表
Axios^1.6.7HTTP 请求
NProgress^0.2.0路由切换进度条
dayjs^1.11.10日期处理
Vite^5.1.6构建工具
TypeScript^5.4.2类型系统

2.3 后端技术栈

技术用途
FlaskWeb 框架(纯 JSON API)
Flask-CORS跨域支持
Flask-JWT-ExtendedJWT 认证
PyMySQLMySQL 数据库驱动
Passlib + bcrypt密码哈希
Pandas + NumPy数据处理与分析
SciPy统计检验(t检验、ANOVA、卡方、正态性)
scikit-learnK-Means、DBSCAN、Isolation Forest、标准化
statsmodels回归分析、时间序列分解、ARIMA
mlxtendApriori 关联规则挖掘
openpyxlExcel 报告生成
reportlabPDF 报告生成
PyYAML配置文件解析

2.4 项目演示

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述



在这里插入图片描述



在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述



在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述




在这里插入图片描述

3. 项目目录结构

313-基于Python的保险行业数据可视化分析系统/ ├── insurance_data.csv # 原始数据集 (30,000 行 × 30 列) └── code/ # 项目代码目录 ├── run.py # 启动脚本(启动 Flask 后端) │ ├── backend/ # ===== 后端 ===== │ ├── app.py # Flask 主应用(1,267 行,所有 API 路由) │ ├── database.py # 数据库操作层(422 行) │ ├── config.yaml # 项目配置文件 │ ├── requirements.txt # Python 依赖 │ ├── data/ │ │ └── insurance_data.csv # 数据集副本 │ └── shared/ # 核心分析模块(不可修改) │ ├── __init__.py │ ├── analysis_core.py # 基础分析(分布、相关性) │ ├── stats_core.py # 统计检验 │ ├── regression_core.py # 回归分析 │ ├── anomaly_core.py # 异常检测 │ ├── comparative_core.py # 同比环比 │ ├── clustering_core.py # 聚类分析 │ ├── timeseries_core.py # 时间序列 │ ├── association_core.py # 关联规则 │ └── report_core.py # 报告导出 │ ├── frontend/ # ===== 前端 ===== │ ├── package.json │ ├── vite.config.ts # Vite 配置(含 API 代理) │ ├── env.d.ts │ └── src/ │ ├── main.ts # 入口文件 │ ├── App.vue # 根组件 │ ├── assets/ │ │ └── theme.css # 全局主题样式(Element Plus 覆盖) │ ├── components/ │ │ └── Layout.vue # 应用布局(导航栏 + 内容区 + 页脚) │ ├── router/ │ │ └── index.ts # 路由定义 + 导航守卫 │ ├── stores/ │ │ ├── config.ts # 项目配置 Store │ │ └── user.ts # 用户认证 Store │ ├── utils/ │ │ └── request.ts # Axios 封装(拦截器 + JWT 注入) │ ├── api/ │ │ ├── auth.ts # 认证 API │ │ ├── config.ts # 配置 API │ │ ├── analytics.ts # 分析/聚类/时间序列/关联/报告/地图 API │ │ └── admin.ts # 管理员 API │ └── views/ │ ├── Home.vue # 首页(Hero + KPI 卡片 + 功能卡片) │ ├── Login.vue # 登录页(左右分栏布局) │ ├── Register.vue # 注册页 │ ├── Profile.vue # 个人中心 │ ├── Analytics.vue # 分析总览(统计卡片 + 模块入口) │ ├── AnalyticsPage.vue # 通用分析页(1,913 行,含所有分析类型) │ ├── MapDrilldown.vue # 地图下钻(全国 → 省 → 城市) │ ├── Clustering.vue # 聚类分析 │ ├── Timeseries.vue # 时间序列分析 │ ├── Association.vue # 关联规则挖掘 │ ├── Reports.vue # 报告导出 │ └── admin/ │ ├── Dashboard.vue # 管理后台首页 │ ├── Users.vue # 用户管理 │ └── Data.vue # 数据管理(CRUD + CSV 导入) │ └── docs/ # ===== 项目文档 ===== ├── 技术文档.md # 本文档 ├── api.md # API 接口文档 ├── design-system.md # 设计系统 ├── dev-rules.md # 开发规范 ├── acceptance-report.md # 验收报告 ├── backend-log.md # 后端开发日志 └── frontend-log.md # 前端开发日志 

3.1 代码量统计

模块文件数代码行数
后端 Python(app.py + database.py)21,688
后端 shared 核心模块92,243
前端 Vue 组件145,386
前端 TS 逻辑(路由/状态/API/工具)7374
前端 CSS 主题1143
配置文件3~420
总计36~10,254

4. 数据集说明

4.1 数据集概况

  • 文件名:insurance_data.csv
  • 编码:UTF-8
  • 数据量:30,000 行
  • 特征数:30 列(12 数值型 + 8 分类型 + 10 文本型)
  • 空值:仅 代理人编号 列有 25,095 个空值(线上渠道无代理人)

4.2 字段定义

客户信息(6 列)
字段名类型说明值域
保单号text唯一标识30,000 个唯一值
客户编号text客户 ID15,000 个唯一值(一客多保单)
客户姓名text客户姓名15,000 个唯一值
性别categorical性别男, 女
年龄numeric年龄18 ~ 80 岁
教育程度categorical学历高中及以下, 大专, 本科, 硕士, 博士
职业与收入(2 列)
字段名类型说明值域
职业categorical职业类别教师, 销售, 工程师, 自由职业, 学生, 个体经营, 退休人员, 医生, 企业职员, 公务员
收入水平categorical收入区间3000以下, 3000-5000, 5000-8000, 8000-12000, 12000-20000, 20000-50000, 50000以上
地域信息(2 列)
字段名类型说明值域
省份categorical省份北京, 上海, 广东, 浙江, 江苏, 山东, 福建, 湖北, 四川, 河南(10 省)
城市text城市/区50 个城市(每省 5 个)
保单信息(8 列)
字段名类型说明值域
保险类型categorical险种分类寿险, 健康险, 意外险, 车险, 财产险, 旅游险
产品名称text具体产品30 个唯一值
保险期限_年numeric保障期限1 ~ 30 年
起保日期text保单生效日期2020 ~ 2024 年
终保日期text保单到期日期-
销售渠道categorical销售来源代理人, 银行渠道, 线上直销, 电销, 经纪公司, 第三方平台
代理人编号text代理人 ID500 个唯一值(83.65% 空值)
缴费方式categorical缴费频次年交, 季交, 月交, 趸交
财务指标(4 列)
字段名类型说明值域
保费numeric保费金额44.17 ~ 38,992.45 元,均值 6,093.93
保额numeric保障金额23,299 ~ 19,123,333 元,均值 1,623,885
理赔金额numeric理赔支出0 ~ 11,766,697 元,均值 86,201
佣金numeric渠道佣金1.33 ~ 5,848.87 元,均值 537.13
保单状态(4 列)
字段名类型说明值域
保单状态categorical保单有效性有效, 退保, 满期, 理赔中, 失效
续保次数numeric续保轮数0 ~ 5 次
出险次数numeric出险频率0 ~ 3 次
理赔状态categorical理赔进度未出险, 已报案, 审核中, 已赔付, 拒赔
客户评价与时间(4 列)
字段名类型说明值域
客户满意度numeric评分3.5 ~ 5.0
投保年份numeric年份2020 ~ 2024
投保季度numeric季度1 ~ 4
投保月份numeric月份1 ~ 12

5. 数据库设计

5.1 数据库配置

host: localhost port:3306user: root password:'123456'database: design_313_insurance charset: utf8mb4 

5.2 数据表结构

系统仅使用 2 张数据表:

users 表(用户管理)
CREATETABLE users ( id INTPRIMARYKEYAUTO_INCREMENT, username VARCHAR(100)UNIQUENOTNULL,-- 用户名 email VARCHAR(200)UNIQUENOTNULL,-- 邮箱 password_hash VARCHAR(255)NOTNULL,-- bcrypt 哈希密码 role VARCHAR(20)DEFAULT'user',-- 角色: user / adminstatusVARCHAR(20)DEFAULT'active',-- 状态: active / disabled full_name VARCHAR(100)DEFAULT'',-- 姓名 phone VARCHAR(30)DEFAULT'',-- 电话 gender VARCHAR(20)DEFAULT'',-- 性别 age INTNULL,-- 年龄 department VARCHAR(100)DEFAULT'',-- 部门 title VARCHAR(100)DEFAULT'',-- 职位 bio TEXTNULL,-- 个人简介 last_login_at DATETIMENULL,-- 最近登录时间 created_at TIMESTAMPDEFAULTCURRENT_TIMESTAMP-- 注册时间)ENGINE=InnoDBDEFAULTCHARSET=utf8mb4;
dataset_data 表(业务数据)

根据 config.yaml 的 features 配置动态生成,30 个字段均映射为 SQL 列:

  • numeric 类型 → DOUBLE
  • categorical / text 类型 → VARCHAR(200)
  • binary 类型 → INT

5.3 数据来源说明

数据操作数据来源说明
分析可视化CSV 文件(pandas)所有分析功能直接读取 CSV,无需导入数据库
数据管理 CRUDMySQL dataset_data 表管理员在数据管理页面操作数据库
CSV 导入CSV → MySQL管理员可将 CSV 导入数据库
用户管理MySQL users 表注册、登录、权限管理

6. API 接口设计

6.1 接口总览

系统共 28 个 API 接口,统一返回格式:

{"code":0,// 0=成功, 1=失败"message":"success","data":{...}}

认证方式:JWT Bearer Token(Authorization: Bearer <token>),有效期 24 小时。

6.2 接口清单

公开接口(无需认证)
方法路径说明
GET/api/config获取项目配置(特征、分析页、模块)
POST/api/auth/login用户登录,返回 JWT token
POST/api/auth/register用户注册
认证接口(需登录)
方法路径说明
GET/api/auth/profile获取当前用户资料
PUT/api/auth/profile更新用户资料
POST/api/auth/change_password修改密码
分析接口(需登录)
方法路径说明
GET/api/analytics/overview数据概览(总记录数、数值统计摘要)
GET/api/analytics/<page_route>通用分析页(13 个分析路由共用)
GET/api/analytics/map_data地图下钻数据(省份/城市维度聚合)
聚类分析接口
方法路径说明
GET/api/clustering/optimal最优 K 值分析(Elbow + Silhouette)
POST/api/clustering/run执行聚类(K-Means / DBSCAN)
时间序列接口
方法路径说明
POST/api/timeseries/decompose时间序列分解(趋势 + 季节 + 残差)
POST/api/timeseries/forecastARIMA 预测
关联规则接口
方法路径说明
GET/api/association/prepare获取可用列与项集支持度
POST/api/association/mineApriori 挖掘(支持度/置信度/top_n)
报告导出接口
方法路径说明
GET/api/reports获取已生成报告列表
POST/api/reports/generate生成 Excel/PDF 报告
GET/api/reports/download/<filename>下载报告文件
数据管理接口
方法路径说明
GET/api/data分页查询数据
POST/api/data新增记录
GET/api/data/<id>查看单条记录
PUT/api/data/<id>更新记录
DELETE/api/data/<id>删除记录
POST/api/data/import_csvCSV 批量导入
管理员接口(需 admin 角色)
方法路径说明
GET/api/admin/stats系统统计(用户数、数据量、今日登录、7 天活跃)
GET/api/admin/users用户列表
POST/api/admin/users创建用户
PUT/api/admin/users/<id>/role修改角色
PUT/api/admin/users/<id>/status启用/禁用
POST/api/admin/users/<id>/reset_password重置密码(重置为 123456)
DELETE/api/admin/users/<id>删除用户

7. 前端页面设计

7.1 页面路由

路径页面权限说明
/Home.vue公开首页(Hero + 统计卡片)
/loginLogin.vue仅未登录登录(左品牌 + 右表单)
/registerRegister.vue仅未登录注册
/analyticsAnalytics.vue公开分析总览仪表盘
/analytics/:routeAnalyticsPage.vue公开13 个分析子页面
/mapMapDrilldown.vue需登录地图下钻分析
/clusteringClustering.vue需登录聚类分析
/timeseriesTimeseries.vue需登录时间序列分析
/associationAssociation.vue需登录关联规则挖掘
/reportsReports.vue需登录报告导出
/profileProfile.vue需登录个人中心
/adminadmin/Dashboard.vueadmin管理后台
/admin/usersadmin/Users.vueadmin用户管理
/admin/dataadmin/Data.vueadmin数据管理

7.2 分析页面类型

AnalyticsPage.vue 是一个 1,913 行的通用分析组件,通过 page_route 参数自动渲染对应类型的图表:

路由标题分析类型核心模块交叉分析
customer_profile客户画像分析通用分布analysis_core年龄×性别, 职业×收入, 教育×保险类型
product_analysis产品分析通用分布analysis_core保险类型×保费, 产品×保单状态, 险种×期限
region_distribution地域分布分析通用分布analysis_core省份保费排名, 省份×类型热力图, 城市TOP15
channel_analysis渠道分析通用分布analysis_core渠道×保费, 渠道×险种, 缴费×保费
premium_coverage保费保额分析通用分布analysis_core保费×保额散点, 保费分段分布, 佣金×保费
claims_analysis理赔分析通用分布analysis_core理赔状态×金额, 出险×理赔, 险种×理赔率
time_trend时间趋势分析通用分布analysis_core年度保费趋势, 月度分布, 险种×年度
correlation关联分析相关性analysis_core相关性热力图
stat_tests统计检验statisticalstats_core描述性统计, 正态性, t检验, ANOVA, 卡方
regression_analysis回归分析regressionregression_core线性回归, 残差图, 系数
anomaly异常值检测anomalyanomaly_coreIQR, Z-Score, Isolation Forest
period_compare同比环比comparativecomparative_core月度对比, 增长率, 移动平均

7.3 导航结构

首页 | 数据分析 ▼ | 地图下钻 | 聚类分析 | 时间序列 | 关联规则 | 报告导出 | 系统管理 ▼ ├── 分析总览 ├── 客户画像分析 (登录后显示) ├── 管理后台 ├── 产品分析 ├── 用户管理 ├── 地域分布分析 └── 数据管理 ├── 渠道分析 (仅 admin) ├── 保费保额分析 ├── 理赔分析 ├── 时间趋势分析 ├── 关联分析 ├── 统计检验分析 ├── 回归分析 ├── 异常值检测 └── 同比环比分析 

7.4 主题设计系统

设计变量说明
主色#1565C0专业蓝
成功色#2E7D32深绿
警告色#F57F17琥珀
危险色#C62828深红
正文色#303133深灰
辅助文字#909399中灰
背景色#f5f7fa浅灰蓝
卡片圆角12px现代感
阴影0 1px 3px rgba(0,0,0,0.05)轻量级
导航栏毛玻璃效果backdrop-filter: blur(12px)

ECharts 全局配色数组:

['#1565C0','#2E7D32','#F57F17','#C62828','#0277BD','#6A1B9A','#00838F','#AD1457','#283593','#558B2F']

8. 核心模块详解

8.1 shared 分析模块

所有 shared 模块为纯 Python 计算模块,不依赖 Flask,通过参数驱动,路由层负责数据结构转换。

analysis_core.py(246 行)

基础分析引擎,提供:

  • get_overview():数据集概览(行数、数值统计摘要)
  • get_distribution(columns):分类列频率分布 + 数值列直方图分箱
  • get_correlation(columns):数值特征间 Pearson 相关系数矩阵
  • get_category_stats(columns):分类列交叉统计
stats_core.py(249 行)

统计检验引擎:

  • descriptive_stats(columns):均值、中位数、标准差、偏度、峰度
  • normality_test(columns):Shapiro-Wilk / Kolmogorov-Smirnov 检验
  • t_test(col, group_col):独立样本 t 检验
  • anova_test(col, group_col):单因素 ANOVA 检验
  • chi_square_test(col1, col2):卡方独立性检验
regression_core.py(247 行)

回归分析引擎:

  • simple_regression(x, y):简单线性回归(斜率、截距、R²、p值)
  • multiple_regression(target, predictors):多元线性回归(系数、VIF、诊断)
  • 输出:系数表、残差图数据、预测值 vs 实际值散点
anomaly_core.py(228 行)

异常检测引擎:

  • iqr_detection(columns):四分位距法(1.5×IQR)
  • zscore_detection(columns, threshold=3):Z-Score 法
  • isolation_forest(columns):Isolation Forest 算法
  • 输出:异常点标记、异常比例、异常数据详情
comparative_core.py(233 行)

同比环比引擎:

  • period_comparison(date_col, value_cols, period):时段对比
  • growth_rate(date_col, value_cols):增长率计算
  • moving_average(date_col, value_col, window):移动平均线
clustering_core.py(245 行)

聚类分析引擎:

  • find_optimal_k(columns, max_k):Elbow 法 + Silhouette Score
  • kmeans_clustering(columns, k):K-Means 聚类
  • dbscan_clustering(columns, eps, min_samples):DBSCAN 密度聚类
  • get_cluster_profile(columns, labels):聚类画像(每簇均值对比)
timeseries_core.py(294 行)

时间序列引擎:

  • decompose(date_col, value_col):STL 分解(趋势 + 季节 + 残差)
  • arima_forecast(date_col, value_col, periods):ARIMA 预测
  • seasonal_pattern(date_col, value_col):季节性模式识别
association_core.py(195 行)

关联规则引擎:

  • prepare_transactions(columns):事务编码(One-Hot)
  • mine_rules(columns, min_support, min_confidence):Apriori 频繁项集
  • top_rules(columns, top_n, sort_by):Top-N 规则(按 lift 排序)
report_core.py(304 行)

报告导出引擎:

  • generate_excel():Excel 报告(多 Sheet,含统计图表)
  • generate_pdf():PDF 报告(中文排版,含统计摘要)

8.2 数据结构转换层

路由层(app.py)是 shared 模块与前端之间的桥梁,需要进行数据结构转换。主要转换类型:

转换类型示例说明
键名重命名f_p_valuef_pvalueshared 返回键名与前端期望不同
列表 → 字典coefficients: [{name, coef}]{name: coef}前端期望键值对形式
嵌套 → 扁平result.data.itemsresult.items减少前端嵌套访问
补算指标DBSCAN 的 silhouette_scoreshared 未返回但前端需要

8.3 地图下钻

ECharts 地图实现方案:

  • GeoJSON 来源:阿里云 DataV CDN(geo.datav.aliyun.com),按需加载
  • 全国级100000_full.json,10 省着色
  • 省级{adcode}_full.json,下钻到区/市
  • 指标切换:投保数量、保费/保额/理赔/佣金的总额与均值
  • 配色映射#E3F2FD → #0D47A1(蓝色渐变 6 级 visualMap)

省份 adcode 映射表:

省份adcode城市数
北京1100005 区
上海3100005 区
广东4400005 市
浙江3300005 市
江苏3200005 市
山东3700005 市
福建3500005 市
湖北4200005 市
四川5100005 市
河南4100005 市

9. 认证与权限

9.1 认证流程

用户提交用户名+密码 │ ▼ Flask 验证(bcrypt 比对) │ ▼ 生成 JWT Token(有效期 24h) │ ▼ 前端存入 localStorage │ ▼ 后续请求 Axios 拦截器自动注入 Authorization: Bearer <token> │ ▼ Flask @jwt_required() 校验 Token → 获取 user_id 

9.2 角色权限矩阵

功能游客useradmin
查看首页
查看分析页面
聚类/时间序列/关联/报告
地图下钻
个人中心
管理后台
用户管理
数据管理(CRUD + CSV 导入)

9.3 路由守卫

前端 Vue Router 守卫规则:

  • meta.guest: true:仅未登录可访问(登录页、注册页),已登录跳转 /
  • meta.auth: true:需要登录,未登录跳转 /login?redirect=当前路径
  • meta.role: 'admin':需要 admin 角色,非 admin 跳转 /

10. 部署与运行

10.1 环境要求

环境版本要求
Python3.8+
Node.js16+
MySQL5.7+ / 8.0
npm8+

10.2 数据库初始化

CREATEDATABASE design_313_insurance CHARACTERSET utf8mb4 COLLATE utf8mb4_unicode_ci;

数据库表会在首次启动后端时自动创建,默认管理员账号 admin / admin123 自动写入。

10.3 后端启动

cd code/backend # 安装 Python 依赖 pip install-r requirements.txt # 启动 Flask(方式一:直接运行) python -c"from app import app; app.run(host='localhost', port=8000, debug=True)"# 启动 Flask(方式二:使用启动脚本)cd code python run.py 

后端启动后监听 http://localhost:8000

10.4 前端启动

cd code/frontend # 安装 Node 依赖npminstall# 开发模式启动npm run dev 

前端启动后访问 http://localhost:5173,Vite 自动代理 /api/* 请求到后端 8000 端口。

10.5 生产构建

cd code/frontend # 构建生产版本npm run build 

产出 dist/ 目录,可部署到 Nginx。生产环境需配置 Nginx 反向代理:

server { listen 80; server_name your-domain.com; # 前端静态文件 location / { root /path/to/dist; try_files $uri $uri/ /index.html; } # API 代理 location /api/ { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } 

11. 配置说明

11.1 config.yaml 结构

project:# 项目基本信息id:'313'name: 保险行业数据可视化分析系统 stack: flask_vue db_name: design_313_insurance port:8000theme_color:'#1565C0'dataset:# 数据集配置file: insurance_data.csv features:[...]# 30 个特征定义(key, label, type, options, range)modules:# 功能模块开关auth:trueanalytics:truedata_manage:truestatistical_analysis:trueregression:trueanomaly_detection:truecomparative:trueclustering:truetimeseries:trueassociation_rules:truereport_export:trueanalysis_pages:[...]# 13 个分析页面配置clustering:# 聚类参数columns:[年龄, 保费, 保额,...]max_k:10timeseries:# 时间序列参数date_column: 起保日期 value_columns:[保费, 理赔金额]association:# 关联规则参数columns:[性别, 教育程度, 职业,...]

11.2 Vite 代理配置

// frontend/vite.config.ts server:{ host:'0.0.0.0', port:5173, proxy:{'/api':{ target: process.env.VITE_API_URL||'http://127.0.0.1:8000', changeOrigin:true,},},}

12. 关键设计决策

12.1 为什么分析数据读 CSV 而非数据库?

  • 数据集 30,000 行完全可以放入内存,pandas 处理速度极快
  • CSV 是原始数据来源,避免导入过程中的数据类型转换损失
  • shared 核心模块设计为纯 pandas 驱动,与数据库解耦
  • 数据库仅用于用户管理和 CRUD 操作

12.2 为什么使用单一 AnalyticsPage.vue?

  • 13 个分析页面共享相同的布局模式(页头 + 图表网格 + 表格)
  • 通过 page_route 参数动态切换分析类型和图表组合
  • 避免 13 个几乎相同的 Vue 文件导致的代码膨胀和维护负担
  • 不同分析类型(statistical、regression、anomaly、comparative)通过条件渲染分支处理

12.3 GeoJSON 按需加载策略

  • 全国地图 GeoJSON 约 500KB,10 个省份 GeoJSON 各 50~150KB
  • 首次加载全国 GeoJSON,点击省份时才加载对应省级 GeoJSON
  • 已加载的 GeoJSON 通过 echarts.registerMap() 缓存,不重复请求
  • 使用阿里云 DataV CDN,国内访问速度有保障

12.4 JWT 而非 Session 的选择

  • 前后端分离架构,API 无状态更适合 JWT
  • Token 存储在 localStorage,前端 Axios 拦截器自动注入
  • 24 小时过期策略平衡安全性与用户体验
  • Flask-JWT-Extended 提供成熟的 JWT 生命周期管理

Read more

C++测试与调试:确保代码质量与稳定性

C++测试与调试:确保代码质量与稳定性

C++测试与调试:确保代码质量与稳定性 一、学习目标与重点 本章将深入探讨C++测试与调试的核心知识,帮助你确保代码的质量与稳定性。通过学习,你将能够: 1. 理解测试与调试的基本概念,掌握测试方法和工具 2. 学会使用单元测试框架,如Google Test和Catch2 3. 理解集成测试的重要性,确保系统的功能正确性 4. 学会使用调试工具,如GDB和Visual Studio调试器 5. 培养测试与调试思维,设计高质量的代码 二、测试的基本概念 2.1 测试的分类 测试可以分为以下几类: * 单元测试:测试单个函数或类的功能 * 集成测试:测试多个模块的集成功能 * 系统测试:测试整个系统的功能 * 验收测试:测试系统是否满足用户需求 * 性能测试:测试系统的性能指标 2.2 测试原则 测试应该遵循以下原则: * 测试应该尽可能早地进行 * 测试应该覆盖所有可能的场景 * 测试应该是自动化的

By Ne0inhk
2026年 Java 面试八股文(20w字)_java面试八股文

2026年 Java 面试八股文(20w字)_java面试八股文

第一章-Java基础篇 1、你是怎样理解OOP面向对象 难度系数:⭐ 面向对象是利于语言对现实事物进行抽象。面向对象具有以下特征: 1. 继承**:**继承是从已有类得到继承信息创建新类的过程 2. 封装:封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口 3. 多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应 2、重载与重写区别 难度系数:⭐ 1. 重载发生在本类,重写发生在父类与子类之间 2. 重载的方法名必须相同,重写的方法名相同且返回值类型必须相同 3. 重载的参数列表不同,重写的参数列表必须相同 4. 重写的访问权限不能比父类中被重写的方法的访问权限更低 5. 构造方法不能被重写 3、接口与抽象类的区别 难度系数:⭐ 1. 抽象类要被子类继承,接口要被类实现 2. 接口可多继承接口,但类只能单继承 3. 抽象类可以有构造器、接口不能有构造器 4. 抽象类:除了不能实例化抽象类之外,它和普通Java类没有任何区别 5. 抽象类:

By Ne0inhk

JavaScript 基础知识点总结

文章目录 * 前言 * 一、基础核心语法(入门级) * 1. 变量相关 * 2. 数据类型 * 3. 运算符与基本运算 * 二、流程控制(基础) * 1.分支判断 * 2. 循环结构 * 三、内置对象与方法 * 1. Math 对象 * 2. Date 日期对象 * 3. 字符串操作 * 4. 数组操作 * 5. 对象 * 四、函数与页面交互 * 1. 函数 * 2. 页面交互(DOM ) * 总结 前言 JavaScript 作为前端开发的核心编程语言,自 1995 年诞生以来,从最初仅用于页面简单交互的脚本语言,逐步发展为覆盖前端、后端(Node.

By Ne0inhk
Log4j 详解:Java经典日志框架

Log4j 详解:Java经典日志框架

在 Java 开发中,日志是排查问题、监控程序运行状态的核心手段。相比于System.out.println,专业的日志框架能提供更灵活的配置、更优的性能和更丰富的功能。本文将全面讲解 Log4j 的核心概念、配置方式及实战技巧,帮助你快速掌握并落地到项目中。 一、日志框架概述 1.1 什么是日志 日志是程序运行过程中产生的事件记录,典型场景包括: * 业务流程节点:如 “用户 ID=123 提交订单,订单号 = 456”; * 异常详情:捕获异常时记录完整堆栈信息(替代e.printStackTrace()); * 关键参数 / 结果:如接口入参、返回值; * 系统状态:如 JVM 内存使用、数据库连接池状态。 1.2 为什么要打印日志? 调试器断点仅适用于开发阶段,且可能因断点导致多线程问题 “隐藏”;而日志能持久化记录程序运行轨迹,

By Ne0inhk