当前位置:首页>python>145-基于Python的鱼泡直聘蓝领岗位招聘数据可视化分析系统

145-基于Python的鱼泡直聘蓝领岗位招聘数据可视化分析系统

  • 2026-07-10 12:00:40
145-基于Python的鱼泡直聘蓝领岗位招聘数据可视化分析系统

鱼泡直聘蓝领岗位招聘数据可视化分析系统 - 技术文档

1. 项目概述

1.1 项目简介

本系统是基于 Python 的蓝领岗位招聘数据可视化分析平台,针对 2024 年 12 月鱼泡直聘网(鱼泡网)的蓝领招聘数据进行多维度分析。系统提供薪资分布、岗位类别、城市分布、福利待遇、结算方式等基础分析,以及统计检验、回归分析、异常检测、聚类分析、关联规则挖掘等高级数据挖掘功能。

1.2 技术栈

层级
技术
版本/说明
Web 框架
FastAPI
异步 ASGI 框架
模板引擎
Jinja2
FastAPI 内置
前端 UI
Bootstrap 5
响应式布局
图表库
ECharts 5
百度开源可视化库
图标库
Bootstrap Icons
矢量图标
数据库
MySQL 8.x
PyMySQL 驱动
数据处理
Pandas + NumPy
数据分析核心
机器学习
scikit-learn
聚类、异常检测
统计分析
SciPy
统计检验、回归
关联规则
mlxtend
Apriori 算法
密码加密
passlib + bcrypt
用户认证
会话管理
Starlette SessionMiddleware
Cookie Session
配置管理
PyYAML
config.yaml
服务器
Uvicorn
ASGI 服务器

1.3 项目结构

code/├── main.py                    # 主路由文件(所有 Web 路由定义)├── database.py                # 数据库操作层(MySQL CRUD)├── run.py                     # 启动脚本(依赖检查、数据转换、启动服务)├── config.yaml                # 项目配置(数据集、模块开关、分析参数)├── requirements.txt           # Python 依赖清单├── data/                      # 数据目录│   ├── 202412月鱼泡网招聘信息已处理.xlsx   # 原始 Excel 数据│   └── 202412月鱼泡网招聘信息已处理.csv    # 转换后的 CSV(供 shared 模块使用)├── reports/                   # 生成的报告文件目录├── shared/                    # 核心分析模块(纯 Python,无 Web 依赖)│   ├── __init__.py│   ├── analysis_core.py       # 通用数据分析(概览、相关性矩阵)│   ├── stats_core.py          # 统计检验(描述性统计、正态性检验、卡方检验)│   ├── regression_core.py     # 回归分析(简单/多元线性回归、诊断)│   ├── anomaly_core.py        # 异常检测(IQR、Z-Score、Isolation Forest)│   ├── clustering_core.py     # 聚类分析(K-Means、DBSCAN、最优K)│   ├── association_core.py    # 关联规则(Apriori 频繁项集、规则生成)│   └── report_core.py         # 报告导出(Excel、PDF)├── static/                    # 静态资源│   ├── css/│   │   ├── style.css          # 主样式文件(CSS 变量、组件样式)│   │   ├── bootstrap.min.css  # Bootstrap 5│   │   └── bootstrap-icons.css│   └── js/│       ├── echarts.min.js     # ECharts 图表库│       └── bootstrap.bundle.min.js└── templates/                 # Jinja2 模板    ├── base.html              # 基础模板(导航栏、页脚、全局脚本)    ├── index.html             # 首页 Dashboard    ├── login.html             # 登录页    ├── register.html          # 注册页    ├── profile.html           # 个人中心    ├── edit_profile.html      # 编辑资料    ├── change_password.html   # 修改密码    ├── analytics.html         # 数据概览    ├── salary_analysis.html   # 薪资分布分析    ├── job_category.html      # 岗位类别分析    ├── city_distribution.html # 城市分布分析    ├── benefits_analysis.html # 福利待遇分析    ├── payment_analysis.html  # 结算方式分析    ├── correlation.html       # 相关性分析    ├── stat_tests.html        # 统计检验分析    ├── regression.html        # 薪资回归分析    ├── anomaly.html           # 异常检测    ├── clustering.html        # 聚类分析    ├── association.html       # 关联规则分析    ├── geo_map.html           # 城市地图    ├── reports.html           # 报告导出    ├── data_manage.html       # 数据管理列表    ├── data_manage_edit.html  # 数据编辑/新增    ├── admin/    │   ├── dashboard.html     # 管理员仪表盘    │   └── users.html         # 用户管理    └── macros/                # Jinja2 可复用宏        ├── kpi.html           # KPI 指标卡片宏        ├── charts.html        # 图表容器宏        └── tables.html        # 数据表格、页面头宏

2. 系统架构

2.1 架构设计

系统采用经典的 MVC(Model-View-Controller)分层架构:

┌─────────────────────────────────────────────────────┐│                    浏览器 (Browser)                    ││         Bootstrap 5 + ECharts + JavaScript           │└──────────────────────┬──────────────────────────────┘                       │ HTTP┌──────────────────────▼──────────────────────────────┐│               Web 层 (main.py)                       ││         FastAPI 路由 + Jinja2 模板渲染                ││         职责:请求转发、数据组装、模板渲染             │├─────────────────────────────────────────────────────┤│               数据层 (database.py)                    ││         PyMySQL 数据库操作                            ││         职责:用户管理、数据集 CRUD                    │├─────────────────────────────────────────────────────┤│           分析核心层 (shared/*.py)                     ││    analysis_core    stats_core    regression_core     ││    anomaly_core    clustering_core    association_core ││    report_core                                        ││    职责:纯数据分析逻辑,无 Web 依赖                   │├─────────────────────────────────────────────────────┤│               数据源层                                ││    MySQL 数据库 + CSV/Excel 文件                      │└─────────────────────────────────────────────────────┘

2.2 核心设计原则

  1. 关注点分离
    shared/ 核心模块纯 Python 实现,不依赖 FastAPI/Jinja2,可独立测试和复用
  2. 配置驱动
    config.yaml 集中管理数据集定义、模块开关、分析参数,新增分析页面只需加配置
  3. 宏复用
    :Jinja2 宏(macros/)封装 KPI 卡片、图表容器、表格等重复 UI 组件
  4. CSS 变量主题
    :所有颜色、间距通过 CSS 自定义属性管理,支持一键换肤
  5. 懒加载
    :核心模块的 DataFrame 通过 @property 延迟加载,首次访问时读取 CSV

2.3 数据流

Excel 文件 → run.py 转换 → CSV 文件 → shared 模块读取 → 分析结果 (dict)                                         ↓MySQL 数据库 ← database.py 导入 ← CSV 文件                                         ↓main.py 路由 ← 调用 shared 模块 + database 操作         ↓Jinja2 模板渲染 → HTML + JSON 数据 → ECharts 渲染图表

3. 配置文件 (config.yaml)

3.1 项目配置

project:  id'145'  name: 鱼泡直聘蓝领岗位招聘数据可视化分析系统  name_en: recruitment  stack: fastapi_bootstrap  db_name: design_145_recruitment    # MySQL 数据库名  db_host: localhost  db_port: 3306  db_user: root  db_password: '123456'  port: 8000                         # Web 服务端口  theme_color: '#2563EB'             # 主题色

3.2 数据集配置

dataset:  file: 202412月鱼泡网招聘信息已处理.xlsx  target_column: ''                  # 目标列(本项目无预测目标)  encoding: utf-8  features:                          # 特征定义列表  - key: 岗位标题                    # 数据库列名 / CSV 列名    label: 岗位标题                  # 中文显示名    type: text                       # 类型: text / numeric / categorical / binary  - key: 薪资下限    label: 薪资下限    type: numeric    unit: 元/月                      # 单位(可选)    range: [180100000]             # 合理范围(可选)  - key: 结算方式    label: 结算方式    type: categorical    options: [月结, 日结, 未知, 周结, ...]  # 分类选项

特征类型说明

type
说明
MySQL 类型
用途
text
自由文本
TEXT
岗位标题、职位信息等
numeric
数值型
DOUBLE
薪资、年龄等
categorical
分类型
VARCHAR(200)
结算方式、城市等
binary
二值型
INT
是否包吃、是否包住

3.3 模块开关

modules:  auth: true                # 用户认证  roles: [user, admin]      # 角色定义  prediction: false         # 预测功能(未启用)  analytics: true           # 数据分析  data_manage: true         # 数据管理  dashboard: true           # 首页仪表盘  statistical_analysis: true # 统计检验  regression: true          # 回归分析  anomaly_detection: true   # 异常检测  clustering: true          # 聚类分析  association_rules: true   # 关联规则  report_export: true       # 报告导出  geo_map: true             # 地图可视化

3.4 分析页面配置

analysis_pages:- route: salary_analysis  title: 薪资分布分析  description: 薪资下限、上限、平均薪资的分布与交叉分析  columns: [薪资下限, 薪资上限, 平均薪资]  group: 薪资分析- route: regression  title: 薪资回归分析  type: regression  target: 薪资上限           # 回归目标变量  predictors: [薪资下限]     # 回归自变量- route: anomaly  title: 薪资异常检测  type: anomaly  columns: [薪资下限, 薪资上限, 平均薪资]

3.5 聚类与关联规则配置

clustering:  columns: [薪资下限, 薪资上限, 平均薪资]  # 聚类特征  max_k: 8                                  # 最大 K 值association:  columns: [结算方式, 是否包住, 是否包吃, 城市]  # 关联规则分析列

4. 数据库设计

4.1 数据库配置

  • 引擎
    : MySQL 8.x
  • 库名
    design_145_recruitment
  • 字符集
    : utf8mb4
  • 驱动
    : PyMySQL(DictCursor 模式,返回字典而非元组)

4.2 表结构

users 表(用户表)

字段
类型
说明
id
INT AUTO_INCREMENT
主键
username
VARCHAR(100) UNIQUE
用户名
email
VARCHAR(200) UNIQUE
邮箱
password_hash
VARCHAR(255)
bcrypt 加密密码
role
VARCHAR(20)
角色:user / admin
status
VARCHAR(20)
状态:active / disabled
full_name
VARCHAR(100)
姓名
phone
VARCHAR(30)
手机
gender
VARCHAR(20)
性别
age
INT
年龄
bio
TEXT
个人简介
last_login_at
DATETIME
最后登录时间
created_at
TIMESTAMP
注册时间

默认管理员账号: admin / admin123

dataset_data 表(数据集表)

列根据 config.yaml 的 features 动态生成:

字段
类型
对应特征
id
INT AUTO_INCREMENT
主键
岗位标题
TEXT
text 类型
薪资情况
TEXT
text 类型
薪资下限
DOUBLE
numeric 类型
薪资上限
DOUBLE
numeric 类型
平均薪资
DOUBLE
numeric 类型
结算方式
VARCHAR(200)
categorical 类型
职位信息
TEXT
text 类型
职位标签
TEXT
text 类型
岗位类别
TEXT
text 类型
福利待遇
TEXT
text 类型
是否包住
VARCHAR(200)
categorical 类型
是否包吃
VARCHAR(200)
categorical 类型
地点
TEXT
text 类型
城市
VARCHAR(200)
categorical 类型
区域
TEXT
text 类型
created_at
TIMESTAMP
记录创建时间

数据量: 500 条招聘记录,覆盖 20 个城市

4.3 数据库初始化流程

Database.__init__()    ├── CREATE TABLE users(如不存在)    ├── ALTER TABLE users ADD COLUMN(兼容旧表)    ├── 创建默认管理员(如无 admin 用户)    ├── CREATE TABLE dataset_data(列从 config.yaml 动态生成)    └── 如 dataset_data 为空 → 自动调用 import_csv() 导入数据

4.4 数据导入机制

import_csv() 方法支持 Excel 和 CSV 两种格式:

  1. 根据文件扩展名选择 pd.read_excel() 或 pd.read_csv()
  2. 列名自动匹配(大小写不敏感)
  3. 批量插入(每 500 条一批 executemany
  4. NaN 值转为 NULL

5. 核心分析模块 (shared/)

5.1 通用设计模式

所有核心模块遵循统一的接口模式:

class XxxCore:    def __init__(self, data_path: str, feature_config: List[Dict]):        self.data_path = data_path        self.feature_config = feature_config        self._df = None  # 懒加载    @property    def df(self) -> pd.DataFrame:        if self._df is None:            self._df = pd.read_csv(self.data_path)        return self._df    def reload(self):        self._df = None  # 强制重新加载

返回值规范:所有方法返回 dict 或 list,可直接 json.dumps() 序列化。

5.2 analysis_core.py - 通用数据分析

功能

  • overview()
    : 数据概览(行列数、列类型、缺失值统计、基本统计量)
  • demographics(columns)
    : 分类列分布统计
  • correlation_matrix(columns)
    : Pearson 相关系数矩阵

调用示例

analyzer = AnalysisCore(data_path="data/dataset.csv", target_column="", feature_config=[...])overview = analyzer.overview()corr = analyzer.correlation_matrix(["薪资下限""薪资上限""平均薪资"])# corr = {"columns": [...], "matrix": [[1.0, 0.98, 0.99], ...]}

5.3 stats_core.py - 统计检验

功能

  • descriptive_stats(columns)
    : 描述性统计(均值、中位数、标准差、偏度、峰度)
  • normality_test(column)
    : Shapiro-Wilk 正态性检验
  • summary(numeric_cols, categorical_cols)
    : 综合统计汇总

依赖: SciPy (scipy.stats)

5.4 regression_core.py - 回归分析

功能

  • linear_regression(x_col, y_col)
    : 一元线性回归
  • multiple_regression(target, predictors)
    : 多元线性回归
  • diagnostics(target, predictors)
    : 回归诊断(残差统计)

返回值结构(多元回归):

{    "target""薪资上限",    "predictors": ["薪资下限"],    "r_squared"0.9555,    "adj_r_squared"0.9554,    "f_statistic"10680.5,    "intercept"523.45,    "coefficients": [        {"name""薪资下限""coefficient"1.234"std_err"0.012"t_statistic"103.2"p_value"0.0"significant"True}    ],    "residual_stats": {"mean"0.0"std"1234.5"min": -5000"max"4500, ...}}

依赖: NumPy(矩阵运算 np.linalg.lstsq

5.5 anomaly_core.py - 异常检测

功能

  • iqr_detection(columns, multiplier=1.5)
    : IQR 四分位距法
  • zscore_detection(columns, threshold=3.0)
    : Z-Score 标准分数法
  • isolation_forest(columns, contamination=0.05)
    : Isolation Forest 孤立森林
  • summary(columns)
    : 综合异常检测汇总

IQR 返回值

{    "薪资下限": {        "q1": 5000.0, "q3": 9000.0, "iqr": 4000.0,        "lower_bound": -1000.0, "upper_bound": 15000.0,        "outlier_count": 23, "outlier_pct": 4.6,        "box_data": {"min": 180, "q1": 5000, "median": 7000, "q3": 9000, "max": 14500}    }}

依赖: scikit-learn(Isolation Forest)

5.6 clustering_core.py - 聚类分析

功能

  • find_optimal_k(columns, max_k=10)
    : 肘部法 + 轮廓系数确定最优 K
  • kmeans(columns, k=3)
    : K-Means 聚类
  • dbscan(columns, eps=0.5, min_samples=5)
    : DBSCAN 密度聚类

K-Means 返回值

{    "k": 3,    "total"500,    "cluster_sizes": {020011802120},    "centers": {"薪资下限": {0500018000212000}, ...},    "silhouette_score": 0.45,    "scatter_data": {"x": [...], "y": [...], "labels": [...]},    "profile": [{"cluster": 0"size"200"avg_薪资下限"5000, ...}, ...]}

依赖: scikit-learn(KMeans, DBSCAN, StandardScaler, silhouette_score)

5.7 association_core.py - 关联规则

功能

  • prepare_transactions(columns)
    : 独热编码准备事务数据
  • mine_rules(columns, min_support, min_confidence)
    : Apriori 挖掘关联规则
  • top_rules(columns, top_n, sort_by)
    : 获取 Top-N 规则

返回值

{    "rules": [        {"antecedents": ["是否包住=是"], "consequents": ["结算方式=月结"], "support": 0.15, "confidence": 0.72, "lift": 2.3}    ],    "frequent_itemsets": [        {"items": ["是否包住=是"], "support": 0.21}    ],    "total_rules": 741,    "total_frequent_itemsets": 294}

依赖: mlxtend(apriori, association_rules)

注意: mlxtend 0.23+ 的 association_rules() 需要 num_itemsets 参数。

5.8 report_core.py - 报告导出

功能

  • list_reports(output_dir)
    : 列出已生成的报告
  • generate_excel(output_dir, title)
    : 生成 Excel 报告
  • generate_pdf(output_dir, title)
    : 生成 PDF 报告

报告内容:数据概览、描述性统计、薪资分布、城市统计、岗位类别统计等。


6. Web 路由设计 (main.py)

6.1 路由总览

路由
方法
说明
权限
/
GET
首页 Dashboard
公开
/login
GET/POST
登录
公开
/register
GET/POST
注册
公开
/logout
GET
退出登录
公开
/profile
GET
个人中心
登录
/edit_profile
GET/POST
编辑资料
登录
/change_password
GET/POST
修改密码
登录
/analytics/overview
GET
数据概览
公开
/analytics/salary_analysis
GET
薪资分布分析
公开
/analytics/job_category
GET
岗位类别分析
公开
/analytics/city_distribution
GET
城市分布分析
公开
/analytics/benefits_analysis
GET
福利待遇分析
公开
/analytics/payment_analysis
GET
结算方式分析
公开
/analytics/correlation
GET
相关性分析
公开
/analytics/stat_tests
GET
统计检验分析
公开
/analytics/regression
GET
薪资回归分析
公开
/analytics/anomaly
GET
异常检测
公开
/clustering
GET
聚类分析页面
登录
/clustering/run
POST
执行聚类
登录
/association
GET
关联规则页面
登录
/association/mine
POST
挖掘关联规则
登录
/geo_map
GET
城市地图
公开
/reports
GET
报告导出页面
登录
/reports/generate
POST
生成报告
登录
/reports/download/{filename}
GET
下载报告
登录
/data_manage
GET
数据管理列表
管理员
/data_manage/add
GET/POST
新增数据
管理员
/data_manage/edit/{id}
GET/POST
编辑数据
管理员
/data_manage/delete/{id}
POST
删除数据
管理员
/data_manage/import_csv
POST
导入 CSV
管理员
/admin
GET
管理员仪表盘
管理员
/admin/users
GET
用户管理
管理员
/admin/users/create
POST
创建用户
管理员
/admin/users/{id}/role
POST
修改角色
管理员
/admin/users/{id}/status
POST
修改状态
管理员
/admin/users/{id}/reset_password
POST
重置密码
管理员
/admin/users/{id}/delete
POST
删除用户
管理员
/api/overview
GET
数据概览 API (JSON)
公开

6.2 认证与权限

系统使用 Starlette 的 SessionMiddleware 基于 Cookie 的会话管理:

app.add_middleware(SessionMiddleware, secret_key="dev-secret-change-me", same_site="lax")

权限函数

  • get_current_user(request)
    : 从 session 获取当前用户
  • require_login(request)
    : 要求登录,未登录返回 None
  • require_admin(request)
    : 要求管理员权限
  • is_admin(user)
    : 判断是否管理员

权限控制模式

@app.get("/protected")async def protected_page(request: Request):    user = require_login(request)    if not user:        return RedirectResponse(url="/login", status_code=302)    # ... 业务逻辑

6.3 数据分析路由模式

所有分析路由遵循统一模式:

@app.get("/analytics/xxx", response_class=HTMLResponse)async def analytics_xxx(request: Request):    user = get_current_user(request)          # 1. 获取用户    df = _load_dataframe()                     # 2. 加载数据    # 3. 数据处理(Pandas 操作)    result = df.groupby(...).agg(...)    # 4. 渲染模板    return templates.TemplateResponse("xxx.html", {        "request": request, "current_user": user,        "page_config": {"route""xxx""title""..."},        "field_mapping": FIELD_MAPPING,        "data": result,    })

6.4 辅助函数

def _load_dataframe() -> pd.DataFrame:    """加载数据集为 DataFrame(自动判断 Excel/CSV)"""def _get_numeric_cols() -> list:    """获取所有数值列名"""def _get_categorical_cols() -> list:    """获取所有分类列名"""def _cn(col: str) -> str:    """列名中文映射(Jinja2 全局函数)"""

7. 前端设计

7.1 模板继承体系

base.html├── 导航栏 (navbar)├── {% block content %}    ← 子模板填充├── 页脚 (footer)├── 全局 JavaScript│   ├── chartColors 配色方案│   ├── cn() 中文映射函数│   ├── initChart() ECharts 初始化│   ├── 导航高亮│   ├── 回到顶部按钮│   └── KPI 计数动画└── {% block extra_js %}   ← 子模板额外 JS

7.2 Jinja2 宏组件

KPI 卡片宏 (macros/kpi.html)

{{ kpi.kpi_card(value, labelicon, variant, suffix, prefix) }}
  • variant
    : primary / success / warning / info(决定配色)
  • 响应式:col-md-3 col-6(桌面 4 列,手机 2 列)
  • 支持计数动画(IntersectionObserver 触发)

图表容器宏 (macros/charts.html)

{{ charts.chart_card(chart_id, title, iconheight) }}      {# 半宽 #}{{ charts.chart_card_full(chart_id, title, iconheight) }}  {# 全宽 #}{{ charts.chart_card_md4(chart_id, title, iconheight) }}   {# 1/3 宽 #}
  • 内含 .chart-card 样式(圆角、阴影、hover 效果)
  • chart_id
     用于 ECharts initChart(chartId, option) 绑定

页面头宏 (macros/tables.html)

{{ tbl.page_header(title, subtitle, icon) }}
  • 白色卡片 + 顶部蓝色装饰线
  • 左侧图标 + 标题 + 副标题

7.3 ECharts 图表初始化模式

// 基础初始化var chart = initChart('chartDomId', {    color: chartColors,           // 全局配色方案    tooltip: { trigger'axis' },    grid: { left'10%', right'5%', top'10%', bottom'10%' },    xAxis: { type'category', data: [...] },    yAxis: { type'value' },    series: [{ type'bar', data: [...] }]});// 数据从 Jinja2 注入var data = {{ result | tojson }};

7.4 CSS 设计系统

CSS 变量

:root {    /* 主题色(蓝色系) */    --primary#2563EB;    --primary-dark#1D4ED8;    --primary-darker#1E40AF;    --primary-light#3B82F6;    --primary-lighter#60A5FA;    --primary-50#EFF6FF;    /* 背景色 */    --bg-white#FFFFFF;    --bg-body#F8FAFC;    /* 文字色 */    --text-primary#1E293B;    --text-secondary#64748B;    --text-muted#94A3B8;    /* 边框 */    --borderrgba(0000.08);    /* 玻璃态 */    --glass-bgrgba(2552552550.7);    /* 圆角 */    --radius-sm0.375rem;    --radius-md0.5rem;    --radius-lg0.75rem;    --radius-xl1rem;    --radius-2xl1.5rem;    --radius-full9999px;}

设计风格

  • 玻璃态 (Glassmorphism)
    : 导航栏、页脚使用 backdrop-filter: blur(20px)
  • 微渐变
    : 背景使用多层 radial-gradient 叠加
  • 柔和阴影
    : 卡片使用 0 1px 3px rgba(0,0,0,0.04) 等低透明度阴影
  • 同色系配色
    : 禁止蓝紫渐变,所有渐变使用单一色相的深浅变化
  • 入场动画
    .content-wrapper 使用 pageEnter 关键帧动画

7.5 响应式布局

基于 Bootstrap 5 的栅格系统:

  • 桌面
     (≥768px): 侧边导航、4 列 KPI、2 列图表
  • 手机
     (<768px): 折叠导航、2 列 KPI、1 列图表
  • 表格
    .table-responsive 水平滚动

8. 数据集说明

8.1 数据来源

  • 平台
    : 鱼泡直聘(鱼泡网)
  • 时间
    : 2024 年 12 月
  • 范围
    : 蓝领岗位招聘信息
  • 规模
    : 500 条记录,15 个字段

8.2 字段说明

字段
类型
说明
示例
岗位标题
text
招聘岗位名称
“工地小工”
薪资情况
text
薪资描述原文
“5000-8000元/月”
薪资下限
numeric
最低月薪(元)
5000
薪资上限
numeric
最高月薪(元)
8000
平均薪资
numeric
平均月薪(元)
6500
结算方式
categorical
工资结算周期
月结、日结、周结
职位信息
text
职位描述
“负责工地搬运…”
职位标签
text
岗位标签
“包吃,包住”
岗位类别
text
工种分类
“建筑工”、“搬运工”
福利待遇
text
福利描述
“五险一金”
是否包住
categorical
是否提供住宿
是、否、未知
是否包吃
categorical
是否提供餐饮
是、否、未知
地点
text
详细工作地点
“朝阳区某工地”
城市
categorical
所在城市
北京、上海、深圳等 20 城
区域
text
行政区域
“朝阳区”

8.3 覆盖城市(20 个)

北京、上海、天津、重庆、厦门、广州、深圳、佛山、郑州、武汉、长沙、南京、苏州、无锡、青岛、西安、成都、杭州、宁波、合肥


9. 功能模块详细说明

9.1 首页 Dashboard

路由GET /

展示内容

  • 4 个 KPI 卡片:总岗位数、平均薪资、覆盖城市数、岗位类别数
  • Top10 岗位类别柱状图(按数量排序)
  • 城市岗位分布柱状图
  • 薪资分布饼图(6 个区间)

数据处理

# 薪资分箱bins = [03000500080001200020000150000]labels = ['3k以下''3k-5k''5k-8k''8k-12k''12k-20k''20k以上']

9.2 薪资分布分析

路由GET /analytics/salary_analysis

图表

  • 薪资分布柱状图(平均薪资分箱)
  • 薪资下限/上限分布对比
  • 薪资箱线图(下限、平均、上限)
  • 薪资下限 vs 上限散点图(异常值标红)
  • 结算方式饼图
  • 包住分布饼图

9.3 岗位类别分析

路由GET /analytics/job_category

图表

  • Top15 岗位类别柱状图(数量 + 平均薪资双轴)
  • 类别 × 结算方式堆叠柱状图

9.4 城市分布分析

路由GET /analytics/city_distribution

图表

  • 城市岗位数量柱状图
  • 城市平均薪资柱状图
  • 城市 × 岗位类别堆叠柱状图

9.5 福利待遇分析

路由GET /analytics/benefits_analysis

图表

  • 包住/包吃饼图
  • 按岗位类别福利堆叠图(包住 + 包吃 4 系列)
  • 按城市福利对比柱状图

9.6 结算方式分析

路由GET /analytics/payment_analysis

图表

  • 结算方式分布饼图
  • 各结算方式薪资箱线图
  • 结算方式 × 岗位类别堆叠柱状图

9.7 相关性分析

路由GET /analytics/correlation

图表

  • Pearson 相关系数热力图
  • 相关性排名柱状图
  • 薪资变量散点矩阵

算法np.corrcoef() 计算 Pearson 相关系数

9.8 统计检验分析

路由GET /analytics/stat_tests

内容

  • 描述性统计表(均值、中位数、标准差、偏度、峰度)
  • 正态性检验(Shapiro-Wilk)
  • 薪资分布直方图 + 正态曲线
  • Q-Q 图

9.9 薪资回归分析

路由GET /analytics/regression

配置(config.yaml):

- route: regression  target: 薪资上限  predictors: [薪资下限]

图表

  • KPI:R²、调整 R²、F 统计量、拟合优度
  • 回归系数表(系数、标准误、t 统计量、p 值、显著性)
  • 实际值 vs 预测值散点图(含 y=x 参考线)
  • 回归系数重要性条形图
  • 残差 vs 预测值散点图

9.10 异常检测

路由GET /analytics/anomaly

三种方法

  1. IQR 法
    :Q1 - 1.5×IQR 以下或 Q3 + 1.5×IQR 以上为异常
  2. Z-Score 法
    :|Z| > 3.0 为异常
  3. Isolation Forest
    :contamination=0.05,sklearn 实现

图表

  • KPI:总数据量、IF 异常数、IF 异常占比、IQR 分析变量数
  • IQR 检测表 + 箱线图
  • Z-Score 检测表 + 均值/标准差柱状图
  • 各方法异常检测对比柱状图

9.11 聚类分析

路由POST /clustering/run

支持算法

  • K-Means
    :需指定 K 值
  • DBSCAN
    :需指定 eps 和 min_samples

功能

  • 肘部法 + 轮廓系数确定最优 K
  • 聚类散点图(前两维)
  • 聚类画像表(各簇的统计特征)
  • 各簇数量分布

9.12 关联规则分析

路由POST /association/mine

参数

  • min_support
    : 最小支持度(默认 0.01)
  • min_confidence
    : 最小置信度(默认 0.2)

图表

  • KPI:规则数、频繁项集数
  • 支持度-置信度-提升度气泡图
  • Top10 规则提升度排行
  • 频繁项集 Treemap
  • 关联规则表(前项、后项、支持度、置信度、提升度)
  • 频繁项集表

9.13 城市地图

路由GET /geo_map

实现

  • GeoJSON 来源:阿里 DataV 省级 GeoJSON
  • 城市→省份映射:通过 cityToProvince 对象转换
  • 双图层:省级色块(map)+ 城市散点标记(scatter on geo)
  • 柱状图备用方案(GeoJSON 加载失败时)

9.14 报告导出

路由GET /reportsPOST /reports/generate

格式

  • Excel
     (.xlsx):多 Sheet(概览、统计、分布等)
  • PDF
     (.pdf):格式化报告文档

文件命名report_YYYYMMDD_HHMMSS.xlsx/pdf

9.15 数据管理(管理员)

路由/data_manage/*

功能

  • 分页列表(每页 20 条,支持搜索)
  • 新增记录(表单根据 features 动态生成)
  • 编辑记录
  • 删除记录(确认弹窗)
  • 导入 CSV/Excel

9.16 用户管理(管理员)

路由/admin/users/*

功能

  • 用户列表(用户名、邮箱、角色、状态、时间)
  • 创建用户
  • 修改角色(下拉框即时提交)
  • 启用/禁用(下拉框即时提交)
  • 重置密码(重置为 123456)
  • 删除用户(不可删除自己)

10. 启动与部署

10.1 环境要求

  • Python 3.8+
  • MySQL 8.x
  • 操作系统:Windows / Linux / macOS

10.2 安装依赖

pip install -r requirements.txt

主要依赖:

fastapi>=0.100.0uvicorn>=0.23.0jinja2>=3.1.0python-multipart>=0.0.6itsdangerous>=2.1.0starlette>=0.27.0pandas>=2.0.0numpy>=1.24.0scipy>=1.10.0scikit-learn>=1.3.0mlxtend>=0.23.0pymysql>=1.1.0passlib>=1.7.4bcrypt>=4.0.0pyyaml>=6.0openpyxl>=3.1.0

10.3 启动方式

# 方式一:使用启动脚本(推荐)python run.py# 方式二:直接启动python main.py# 方式三:Uvicorn 命令行uvicorn main:app --host 127.0.0.1 --port 8000 --reload

10.4 启动流程 (run.py)

1. 加载 config.yaml2. 检查所有依赖是否安装3. 检查数据文件是否存在4. Excel → CSV 转换(如 CSV 不存在)5. 创建必要目录(reports/, static/, templates/)6. 启动 Uvicorn 服务器(reload=True 热重载)

10.5 访问地址

  • 首页: http://localhost:8000
  • 登录: http://localhost:8000/login
  • 默认管理员: admin / admin123

11. 开发规范

11.1 硬性规范

  1. 禁止蓝紫渐变配色
    :所有渐变使用单一色相深浅变化
  2. 禁止 N+1 查询
    :列表页必须 JOIN 或批量查询
  3. 代码复用
    :3 处以上相似代码必须重构为可复用单元

11.2 新增分析页面流程

  1. 在 config.yaml 的 analysis_pages 添加配置
  2. 在 main.py 添加路由函数
  3. 在 templates/ 创建模板文件
  4. 在 base.html 导航栏添加链接

11.3 核心模块调用规范

  • 所有业务逻辑调用 shared/ 中的核心模块
  • Web 层只做路由转发和模板渲染
  • 核心模块不要修改,直接调用

11.4 模板开发规范

  • 使用 {% macro %} 封装重复组件
  • 图表数据通过 {{ data | tojson }} 注入 JavaScript
  • 字段中文映射使用 cn() 全局函数
  • 响应式使用 Bootstrap 栅格类

12. 已知问题与注意事项

12.1 Bootstrap Icons 版本

项目使用的是捆绑的 bootstrap-icons.css,部分新版图标不可用。已知不可用的图标及替代:

不可用图标
替代图标
bi-building
bi-geo-alt
bi-bar-chart-stacked
bi-bar-chart
bi-123
bi-sort-numeric-down
bi-list-columns
bi-list-task
bi-circle
bi-scatter-chart
bi-person-gear
bi-person-fill
bi-unlink
bi-x-lg
bi-file-earmark-excel
bi-file-earmark-text
bi-file-earmark-pdf
bi-file-earmark-text

12.2 Jinja2 保留字冲突

字典的 .items() 方法会覆盖同名键的访问。对于包含 items 键的字典,必须使用方括号语法:

{# 错误 #}{{ item.items | join(', ') }}{# 正确 #}{{ item['items'] | join(', ') }}

12.3 mlxtend 版本兼容

mlxtend 0.23+ 的 association_rules() 新增了 num_itemsets 必需参数:

# 旧版rules = association_rules(freq_items, metric="confidence", min_threshold=0.5)# 新版 (0.23+)rules = association_rules(freq_items, num_itemsets=len(encoded), metric="confidence", min_threshold=0.5)

12.4 GeoJSON 地图限制

阿里 DataV 的 GeoJSON 是省级行政区划,城市名(如"深圳市")不在其中。系统通过 cityToProvince 映射将城市转为省份进行着色,同时用散点标记显示具体城市位置。

12.5 回归分析配置

回归目标和自变量不能有包含关系(如用"薪资下限+薪资上限"预测"平均薪资"会导致 R²=1 的数据泄露)。当前配置:

target: 薪资上限predictors: [薪资下限]

13. API 接口

13.1 JSON API

目前仅提供一个 JSON API 端点:

GET /api/overview

返回数据概览 JSON:

{    "total_rows"500,    "total_columns"15,    "columns": [...],    "dtypes": {...},    "missing": {...},    "numeric_stats": {...}}

14. 版本历史

版本
日期
说明
v1.0
2026-05
初始版本,完成全部基础分析和高级分析功能

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-10 22:03:20 HTTP/2.0 GET : https://f.mffb.com.cn/a/503893.html
  2. 运行时间 : 0.209984s [ 吞吐率:4.76req/s ] 内存消耗:4,798.59kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=3422c4fa457b9e9bf029292593819b52
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001103s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001488s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000674s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000647s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001145s ]
  6. SELECT * FROM `set` [ RunTime:0.000611s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001328s ]
  8. SELECT * FROM `article` WHERE `id` = 503893 LIMIT 1 [ RunTime:0.001291s ]
  9. UPDATE `article` SET `lasttime` = 1783692201 WHERE `id` = 503893 [ RunTime:0.035537s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000670s ]
  11. SELECT * FROM `article` WHERE `id` < 503893 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001005s ]
  12. SELECT * FROM `article` WHERE `id` > 503893 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001000s ]
  13. SELECT * FROM `article` WHERE `id` < 503893 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001832s ]
  14. SELECT * FROM `article` WHERE `id` < 503893 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001505s ]
  15. SELECT * FROM `article` WHERE `id` < 503893 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002679s ]
0.214094s