Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

健康云数据资产管理系统

一个完整的企业级数据资产管理平台,涵盖元数据管理、数据标准管理、数据质量管理、数据服务管理和系统管理五大核心模块。产品镜像和容器名称均为 healthcloud-data-assets

功能概览

系统管理

  • 用户管理 — 用户 CRUD、状态启用/禁用、部门归属、多角色分配
  • 角色管理 — 角色定义、菜单权限分配、数据权限控制
  • 菜单管理 — 目录/菜单/按钮三级结构,支持图标和排序
  • 部门管理 — 组织架构树形管理
  • 操作日志 — 全量操作记录,支持按用户/模块/时间查询

元数据管理

  • 数据源管理 — 多类型数据源接入(SQLite / MySQL / PostgreSQL),连接测试、密码 AES-256 加密
  • 元数据采集 — 自动采集库/表/字段元数据,增量更新,变更对比
  • 目录浏览 — 按数据源→库→表层级浏览,字段详情查看
  • 血缘关系 — 表级血缘可视化(ReactFlow 图谱),手动添加/编辑关系
  • 变更历史 — 采集前后的表/字段变更记录追踪

数据标准管理

  • 标准文件 — PDF 标准文件上传、预览、分类和元信息维护
  • 标准数据元 — 数据元编号、名称、类型、长度、精度、版本和状态维护
  • 标准代码 — 标准代码及代码值维护(如:性别、证件类型、地区)
  • 标准映射 — 将数据元与物理表字段建立映射关系

数据质量管理

  • 规则引擎 — 6 种内置模板(非空/唯一/正则/范围/枚举/行数),支持自定义 SQL 规则
  • 质检任务 — 绑定规则和数据源,支持 Cron 定时调度
  • 质检结果 — 执行记录、通过率统计、失败样本详情、问题工单创建
  • 质量看板 — ECharts 可视化图表(通过率趋势、问题分布、规则排行)
  • 报告导出 — 一键导出 Excel 质检报告

数据服务管理

  • 服务发布 — 版本管理、上下线控制
  • 应用授权 — AppKey 分发、QPS 限制、日调用量上限、到期时间
  • 网关调用POST /ds/:serviceCode + X-App-Key 鉴权
  • 监控日志 — 调用量统计、响应时间、成功率监控

技术架构

┌─────────────────────────────────────────────────────────────┐
│                    前端 (React 18 + Vite)                     │
│  Ant Design 5 · ECharts · ReactFlow · TanStack Query         │
│  Zustand · Axios · Tailwind CSS · Day.js                     │
└─────────────────────────┬───────────────────────────────────┘
                          │ HTTP /api/*
                          ▼
┌─────────────────────────────────────────────────────────────┐
│                  后端 (Node.js + Express)                     │
│  JWT 鉴权 · RBAC 权限 · Zod 校验 · Pino 日志                  │
│  ExcelJS 报告 · node-cron 调度 · AES-256 加密                  │
└─────────────────────────┬───────────────────────────────────┘
                          │ Prisma ORM
                          ▼
┌─────────────────────────────────────────────────────────────┐
│                      数据库                                   │
│  当前: SQLite  │  可迁移: MySQL / PostgreSQL                   │
└─────────────────────────────────────────────────────────────┘

目录结构

data-assets/
├── docs/                           # 项目文档
│   ├── PRD.md                      # 产品需求文档
│   ├── TECH_ARCHITECTURE.md        # 技术架构文档
│   └── DATABASE_DESIGN.md          # 数据库设计文档
├── backend/                        # 后端服务
│   ├── prisma/
│   │   ├── schema.prisma           # 数据模型定义(47 个模型)
│   │   └── seed.ts                 # 初始数据(admin/菜单/角色/标准代码)
│   └── src/
│       ├── config/                 # 环境变量、Prisma、日志配置
│       ├── middleware/             # 鉴权、操作日志、校验、错误处理
│       ├── modules/
│       │   ├── auth/               # 登录鉴权模块
│       │   ├── system/             # 系统管理(用户/角色/菜单/部门/日志)
│       │   ├── metadata/           # 元数据管理(数据源/目录/血缘/变更历史)
│       │   ├── standard/           # 数据标准管理(文件/数据元/代码/映射)
│       │   ├── quality/            # 数据质量管理(规则/任务/看板/报告/工单)
│       │   └── service/            # 数据服务管理(服务/授权/网关/监控)
│       ├── utils/                  # JWT、密码、加密、数据源、响应封装
│       └── app.ts                  # Express 应用入口
├── frontend/                       # 前端应用
│   └── src/
│       ├── api/                    # 6 个模块的 API 封装
│       ├── components/             # 权限组件、路由守卫、通用组件
│       ├── layouts/                # 主布局(侧边栏+顶栏)
│       ├── pages/                  # 22 个业务页面
│       │   ├── login/              # 登录页
│       │   ├── dashboard/          # 仪表盘
│       │   ├── system/             # 用户/角色/菜单/部门/日志
│       │   ├── metadata/           # 数据源/浏览/血缘/变更
│       │   ├── standard/           # 文件/数据元/代码/映射
│       │   ├── quality/            # 规则/任务/结果/看板/报告
│       │   └── service/            # 目录/发布/授权/监控
│       ├── router/                 # 前端路由配置
│       ├── store/                  # Zustand 状态管理
│       └── types/                  # TypeScript 类型定义
└── README.md

环境要求

环境 版本要求
Node.js >= 18.0.0
pnpm >= 8.0.0(推荐)或 npm >= 9.0.0
数据库 SQLite(默认)/ MySQL 8.0+ / PostgreSQL 14+

运行端口说明

本地开发与 Docker 部署使用不同的访问方式:

运行方式 前端页面 后端 API 说明
本地开发 http://localhost:5173 http://localhost:3000/api Vite 提供前端开发服务,并将 /api 请求代理到 Express
Docker 部署 http://localhost:3000 http://localhost:3000/api 前端先构建为静态文件,再由 Express 在同一端口统一提供页面和 API

因此,5173 只用于本地前端开发;使用 Docker 启动后,应通过 http://localhost:3000 访问系统。

本地开发

1. 克隆项目

git clone https://github.com/wikithink/data-assets.git
cd data-assets

2. 启动后端

cd backend

# 安装依赖
pnpm install

# 配置环境变量
cp .env.example .env
# 如需修改 JWT 密钥等配置,编辑 .env 文件

# 生成 Prisma Client
npx prisma generate

# 创建数据库表结构(SQLite 自动创建 dev.db 文件)
npx prisma db push

# 写入初始数据(管理员账号、菜单、角色、标准代码)
npx tsx prisma/seed.ts

# 启动开发服务器
pnpm dev

后端 API 运行在 http://localhost:3000/api

3. 启动前端

# 新开终端窗口
cd frontend

# 安装依赖
pnpm install

# 启动开发服务器
pnpm dev

前端开发服务器运行在 http://localhost:5173,并通过 Vite 代理访问后端 API。

4. 登录系统

本地开发模式下,打开浏览器访问 http://localhost:5173

账号 密码
admin admin123

切换到 MySQL / PostgreSQL

系统使用 Prisma ORM,切换数据库只需两步:

MySQL 示例:

# 1. 修改 backend/.env
DATABASE_URL="mysql://用户名:密码@localhost:3306/data_asset"

# 2. 修改 backend/prisma/schema.prisma 第 4 行
provider = "mysql"

# 3. 重新推送表结构
npx prisma db push
npx tsx prisma/seed.ts

PostgreSQL 同理,只需将 provider 改为 "postgresql" 并修改 DATABASE_URL 格式。

默认角色与权限

角色 权限范围
超级管理员 全部模块、全部操作
系统管理员 系统管理 + 日志查看
数据管理员 元数据 + 标准 + 质量管理
数据开发 数据服务管理 + 数据集管理
普通用户 仅仪表盘查看

环境变量说明

变量 说明 默认值
DATABASE_URL Prisma 数据库连接串 file:./dev.db
JWT_SECRET JWT 签名密钥 生产环境务必修改
JWT_EXPIRES_IN Token 过期时间 2h
DATASOURCE_ENC_KEY 数据源密码加密密钥(32字符) 生产环境务必修改
CORS_ORIGIN 跨域允许来源 *
LOG_LEVEL 日志级别 info

生产构建

Docker 部署(推荐)

项目已提供开箱即用的 Docker 配置。Docker 镜像会构建前端静态文件,并由后端 Express 在 3000 端口同时提供前端页面和 API;配置通过挂卷加载,SQLite 数据持久化保存。

cd data-assets/docker

# 1. 根据需要修改环境变量(JWT 密钥等)
vim .env.docker

# 2. 构建并启动
docker compose up -d

# 3. 查看日志
docker compose logs -f

# 4. 停止
docker compose down

不使用 Docker Compose 时,可通过产品启动脚本运行同一镜像:

cd data-assets/docker
chmod +x startup.sh
./startup.sh

startup.sh 内部使用 docker run,默认配置如下:

配置 默认值 覆盖方式
镜像 healthcloud-data-assets:latest IMAGE_NAME=... ./startup.sh
容器 healthcloud-data-assets CONTAINER_NAME=... ./startup.sh
宿主机端口 3000 HOST_PORT=... ./startup.sh
SQLite 数据 docker/data/ 自动挂载到 /app/data
上传文件 docker/uploads/ 自动挂载到 /app/backend/uploads
环境配置 docker/.env.docker 只读挂载到 /etc/app/.env

Docker 模式不再启动 Vite 的 5173 端口。访问 http://localhost:3000,默认账号 admin / admin123

Docker 部署说明:

项目 说明
端口 3000(同时服务 API 和前端页面)
数据持久化 SQLite 文件存储在 ./data/ 目录,容器删除不丢失
环境变量 修改 ./.env.dockerdocker compose restart 即可生效
自动初始化 首次启动自动建表 + 写入种子数据

手动构建

# 前端构建
cd frontend
pnpm build          # 产出 dist/ 目录

# 后端编译
cd backend
pnpm build          # 产出 dist/ 目录
pnpm start          # 运行编译后的代码

文档

About

企业级数据资产管理平台

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages