数字档案馆档案大数据分析系统全栈落地教程

一、基础环境准备与数据库部署

本系统采用前后端分离架构,后端使用Python进行数据分析,前端使用Vue.js展示可视化大屏,数据存储采用MySQL。首先需要确保本地已安装Docker和Docker Compose,这是最快捷的环境部署方式。

1. 创建项目目录结构

在终端执行以下命令,创建项目根目录及必要的子目录:

```bash mkdir digital_archive_analysis cd digital_archive_analysis mkdir backend frontend mysql-data ```

2. 编写Docker Compose配置文件

在项目根目录下创建docker-compose.yml文件,用于一键启动MySQL服务。该配置文件定义了数据库服务、端口映射、初始化脚本以及数据持久化路径。

```yaml version: '3.8' services: mysql: image: mysql:8.0 container_name: archive_db environment: MYSQL_ROOT_PASSWORD: root123456 MYSQL_DATABASE: archive_db MYSQL_USER: archive_user MYSQL_PASSWORD: archive_pass ports: - "3306:3306" volumes: - ./mysql-data:/var/lib/mysql - ./init.sql:/docker-entrypoint-initdb.d/init.sql command: --default-authentication-plugin=mysql_native_password ```

3. 编写数据库初始化脚本

在项目根目录下创建init.sql文件。此脚本将在容器首次启动时自动执行,用于创建档案表并插入模拟数据,确保系统启动即有数据可分析。

```sql USE archive_db; CREATE TABLE IF NOT EXISTS archive_records ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL COMMENT '档案标题', category VARCHAR(50) NOT NULL COMMENT '档案分类:文书、科技、会计等', department VARCHAR(50) NOT NULL COMMENT '归档部门', retention_period VARCHAR(20) NOT NULL COMMENT '保管期限:永久、长期、短期', create_time DATETIME NOT NULL COMMENT '归档日期', file_size INT DEFAULT 0 COMMENT '文件大小(KB)', page_count INT DEFAULT 0 COMMENT '页数' ); -- 插入模拟数据 INSERT INTO archive_records (title, category, department, retention_period, create_time, file_size, page_count) VALUES ('2020年度财务决算报告', '会计档案', '财务部', '永久', '2021-03-15 10:00:00', 5200, 45), ('2021年研发项目技术图纸A组', '科技档案', '研发一部', '长期', '2022-01-20 14:30:00', 12500, 120), ('2022年公司章程修订版', '文书档案', '办公室', '永久', '2022-05-10 09:15:00', 300, 15), ('2021年员工劳动合同批量', '人事档案', '人力资源部', '长期', '2022-04-01 11:20:00', 8900, 300), ('2022年上半年采购合同汇总', '文书档案', '采购部', '长期', '2022-07-15 16:00:00', 4500, 60), ('2020年基建工程验收报告', '科技档案', '基建部', '永久', '2021-11-30 13:45:00', 7800, 85), ('2022年市场调研分析报告', '文书档案', '市场部', '短期', '2023-01-05 10:30:00', 2100, 25), ('2021年设备维护日志', '科技档案', '生产部', '短期', '2022-12-20 15:10:00', 1500, 12); ```

保存文件后,在终端执行docker-compose up -d启动数据库服务。等待约30秒,确保数据库初始化完成。

二、后端数据分析服务开发

后端采用Python的FastAPI框架,配合Pandas进行高效的数据统计处理。进入backend目录进行操作。

1. 安装Python依赖

首先创建虚拟环境并安装必要的库。创建requirements.txt

```text fastapi==0.104.1 uvicorn==0.24.0 pandas==2.1.3 sqlalchemy==2.0.23 pymysql==1.1.0 pydantic==2.5.0 ```

执行安装命令:

```bash cd backend python3 -m venv venv source venv/bin/activate Windows系统使用 venv\Scripts\activate pip install -r requirements.txt ```

2. 编写数据分析核心代码

创建main.py文件。该文件包含数据库连接、两个核心分析接口(档案年度趋势、档案类别分布)的完整逻辑。

```python from fastapi import FastAPI from sqlalchemy import create_engine, text import pandas as pd from pydantic import BaseModel from typing import List, Dict, Any app = FastAPI(title="数字档案馆大数据分析API") 数据库连接配置 注意:host需填写docker容器的IP或主机IP,本地测试通常用localhost或host.docker.internal DATABASE_URL = "mysql+pymysql://archive_user:archive_pass@localhost:3306/archive_db" engine = create_engine(DATABASE_URL) class AnalysisResponse(BaseModel): status: str data: List[Dict[str, Any]] @app.get("/") def read_root(): return {"message": "Archive Analysis System is Running"} @app.get("/api/trend/yearly", response_model=AnalysisResponse) def get_yearly_trend(): """ 统计各年度归档档案数量趋势 """ query = """ SELECT YEAR(create_time) as year, COUNT() as count FROM archive_records GROUP BY YEAR(create_time) ORDER BY year ASC """ try: df = pd.read_sql(query, engine) 将DataFrame转换为字典列表,方便前端JSON解析 data = df.to_dict(orient='records') return AnalysisResponse(status="success", data=data) except Exception as e: return AnalysisResponse(status="error", data=[{"error": str(e)}]) @app.get("/api/distribution/category", response_model=AnalysisResponse) def get_category_distribution(): """ 统计不同档案类别的占比情况 """ query = """ SELECT category, COUNT() as count FROM archive_records GROUP BY category """ try: df = pd.read_sql(query, engine) data = df.to_dict(orient='records') return AnalysisResponse(status="success", data=data) except Exception as e: return AnalysisResponse(status="error", data=[{"error": str(e)}]) if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8000) ```

3. 启动后端服务

数字档案馆档案大数据分析系统全栈落地教程

backend目录下执行以下命令启动API服务:

```bash python main.py ```

服务启动后,访问 http://localhost:8000/docs 可看到自动生成的API文档,测试接口确保返回JSON数据正常。

三、前端可视化大屏搭建

前端使用Vue 3和ECharts构建可视化界面。进入frontend目录进行操作。

1. 初始化Vue项目

使用Vite创建项目,并安装ECharts和Axios依赖:

```bash cd ../frontend npm create vite@latest archive-dashboard -- --template vue cd archive-dashboard npm install npm install echarts axios ```

2. 编写主页面组件

修改src/App.vue,删除默认内容,编写完整的可视化逻辑。页面包含两个图表:年度归档趋势柱状图和档案类别分布饼图。

```html ```

四、系统启动与效果验证

现在所有组件已开发完毕,按照以下步骤启动前端服务并查看最终效果。

1. 启动前端服务

确保后端服务和Docker数据库均在运行状态。在frontend/archive-dashboard目录下执行:

```bash npm run dev ```

2. 访问与验证

终端会输出本地访问地址,通常是 http://localhost:5173。使用浏览器访问该地址。

预期效果:

  • 页面顶部显示标题“数字档案馆档案大数据分析系统”。
  • 左侧展示柱状图,X轴为年份(如2020, 2021, 2022),Y轴为对应的档案数量,直观反映归档工作量变化。
  • 右侧展示饼图,显示文书档案、科技档案、会计档案等类别的占比,鼠标悬停可查看具体数值。

3. 常见问题排查

如果页面显示空白或图表不加载,请按以下步骤排查:

  • 跨域问题(CORS): 如果浏览器控制台报错CORS,需在后端main.py中添加from fastapi.middleware.cors import CORSMiddleware并配置允许跨域,或者确保前端请求地址正确。
  • 数据库连接失败: 确认Docker容器正在运行,且main.py中的DATABASE_URL用户名密码与docker-compose.yml中配置的一致。
AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

扫码咨询
安答联动微信公众号二维码

微信扫码关注安答联动

申请试用
热线电话
申请试用

安答联动档案管理系统