# DAMS **Repository Path**: jjfinal/dams ## Basic Information - **Project Name**: DAMS - **Description**: 面向数据中台 / 数据治理场景的一体化平台:覆盖数据资产登记、数据源接入、数据标准、血缘图谱、数据质量、脱敏、个人信息影响评估(PIA)、权限安全、实时数据质检、审批流、采集调度、全文搜索与概览大屏。 当前形态为模块化单体后端一个 Spring Boot 应用承载所有业务包,前端是一个 Vue 3 SPAH2 内存库 + 内存血缘图为默认演示形态可切换 MySQL profile 对接生产库。 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-08-10 - **Last Updated**: 2026-08-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DAMS — 数据资产管理平台(Data Asset Management System) > 面向数据中台 / 数据治理场景的一体化平台:覆盖数据资产登记、数据源接入、数据标准、血缘图谱、数据质量、脱敏、个人信息影响评估(PIA)、权限安全、实时数据质检、审批流、采集调度、全文搜索与概览大屏。 > > 当前形态为**模块化单体**(非微服务):后端一个 Spring Boot 应用承载所有业务包,前端是一个 Vue 3 SPA。H2 内存库 + 内存血缘图为默认演示形态,可切换 MySQL profile 对接生产库。 --- ## 目录 - [特性 Features](#特性-features) - [技术栈 Tech Stack](#技术栈-tech-stack) - [目录结构 Directory Structure](#目录结构-directory-structure) - [快速开始 Quick Start](#快速开始-quick-start) - [演示账号 Demo Accounts](#演示账号-demo-accounts) - [功能模块一览 Modules](#功能模块一览-modules) - [API 约定](#api-约定) - [配置说明 Configuration](#配置说明-configuration) - [路线图 Roadmap](#路线图-roadmap) - [常见问题 FAQ](#常见问题-faq) - [许可证与贡献](#许可证与贡献) --- ## 特性 Features - **资产编目与检索**:数据资产登记、元数据字段管理、关键词 + 筛选的全文检索。 - **多源接入与采集调度**:MySQL / Hive / Kafka / Airflow 等数据源接入配置与采集任务调度。 - **数据标准**:标准项 / 字典管理,支撑落标稽核。 - **数据血缘**:表级 / 字段级血缘图谱(基于 JGraphT 内存图计算)。 - **数据质量**:质检规则、质量工单、质量报告,支持批调度质检。 - **安全与脱敏**:RBAC 权限、敏感字段识别与分级联动、动态脱敏规则管理、操作审计。 - **合规(PIA)**:个人信息影响评估模板与评估、敏感数据地图、出境合规与最小必要校验。 - **实时数据**:实时流接入、实时质检规则、实时监控。 - **审批流**:资产 / 规则上线审批。 - **运营与价值**:概览大屏、API 市场(元数据 / 订阅 / 计量)、主数据、指标资产、价值评估与入表、资产退役、水印、多租户。 > 说明:部分 Phase 2/3 能力(脱敏、PIA、主数据、指标、价值、退役、实时、API 市场等)已建有前后端骨架,但部分仍为演示 / 存根实现,需按路线图逐步补全闭环(详见 [Roadmap](#路线图-roadmap))。 --- ## 技术栈 Tech Stack | 层 | 技术 | 版本 | |---|---|---| | 后端框架 | Spring Boot(模块化单体,单应用多包) | 3.2.5 | | 持久层 | MyBatis-Plus(starter for Spring Boot 3) | 3.5.7 | | 开发/演示库 | H2(内存,`MODE=MySQL`) | 随 Spring Boot | | 生产库 | MySQL(`mysql-connector-j`) | 8.x 兼容 | | 血缘计算 | JGraphT(内存图) | 1.5.2 | | 语言 | Java | 17 | | 安全 | Spring Security + JWT | — | | 前端框架 | Vue 3 + TypeScript | 3.4.x | | 构建工具 | Vite | 5.2.x | | UI 组件 | Element Plus | 2.7.x | | 图表 | ECharts | 5.5.x | | 状态/路由 | Pinia + Vue Router | 2.x / 4.x | | HTTP 客户端 | Axios | 1.7.x | --- ## 目录结构 Directory Structure (以下为真实目录,来自 `platform/`、`web/`、`docs/` 实际结构) ``` dams/ ├── platform/ # 后端 Spring Boot 工程(Maven) │ ├── pom.xml │ └── src/main/java/com/cjyl/dams/ │ ├── DamsApplication.java # 入口(@MapperScan / @EnableAsync / @EnableScheduling) │ ├── apimarket/ # API 市场(元数据/订阅/计量) │ ├── approval/ # 审批流 │ ├── asset/ # 数据资产(登记/编目/检索) │ ├── audit/ # 操作审计 │ ├── auth/ # 认证授权(登录/JWT/SecurityConfig) │ ├── collector/ # 采集调度/数据源接入(MySQL/Hive/Kafka/Airflow 适配器) │ ├── common/ # 公共(R/Result、PageResult、异常、ApiVersion、DemoDataSeeder) │ ├── compliance/ # 合规(PIA、敏感数据地图、出境/最小必要) │ ├── core/ # 核心(血缘解析 LineageCore 等) │ ├── dashboard/ # 概览大屏/运营看板 │ ├── decommission/ # 资产退役(影响分析) │ ├── gateway/ # 网关(当前为路由契约说明 GatewayInfoController) │ ├── lineage/ # 数据血缘(表级/字段级) │ ├── mdm/ # 主数据管理 │ ├── metric/ # 指标资产 │ ├── quality/ # 数据质量(规则/工单/报告) │ ├── realtime/ # 实时数据(流接入/实时质检/监控) │ ├── scheduler/ # 采集任务定时调度 │ ├── search/ # 全文检索 │ ├── security/ # 安全(RBAC、脱敏规则、敏感识别、审计标签) │ ├── standard/ # 数据标准(标准项/字典) │ ├── tenant/ # 多租户(tenant_id 透传) │ ├── value/ # 价值评估与入表 │ └── watermark/ # 水印(导出/截图隐写) │ └── src/main/resources/ │ ├── application.yml # server.port=8081,默认 h2 profile │ ├── schema.sql / data.sql # H2 初始化与种子数据 ├── web/ # 前端 Vue3 工程(Vite) │ ├── package.json # scripts: dev / build / preview / type-check │ ├── vite.config.ts # dev 端口 5173,proxy /api → http://localhost:8081 │ └── src/ │ ├── api/ # 接口封装(前缀 /api/v1) │ ├── router/ # 路由(router/index.ts) │ ├── views/ # 页面模块(见 Modules 一节) │ ├── layout/ components/ store/ types/ utils/ styles/ │ ├── App.vue / main.ts ├── docs/ # 立项与设计文档(PRD / 架构 / 路线图) │ ├── PRD.md │ ├── ARCHITECTURE.md │ ├── system_design.md │ ├── DAMS_ROADMAP_PRD.md # 后续开发路线图(去 demo 化四阶段) │ └── ...(各 Phase 架构/总结文档) └── sql/ # MySQL 初始化脚本(切 mysql profile 时使用) ├── init-db.sql / init-schema.sql / init-data.sql / init-fulltext.sql ``` --- ## 快速开始 Quick Start > 环境前提:本地已安装 **JDK 17** 与 **Node.js(含 npm)**。后端机器上 **`mvn` 未加入 PATH**,因此下方使用 Java 直启 Maven 启动器(`plexus-classworlds`),请按实际安装路径调整 `E:/software/...` 与 `C:/Users//.m2`。 > > ⚠️ 端口约定(避免踩坑):后端默认 **8081**;前端 dev 端口 **5173**,Vite 将 `/api` 代理到 `http://localhost:8081`。改代码后重启**必须带 `clean compile`**,否则运行的是旧 class。 ### 1. 启动后端(Spring Boot,默认 H2 演示库) 用 Git Bash / Bash 执行,**先 `cd` 进 `platform` 目录**: ```bash cd "/e/中金云链/dams/platform" && \ E:/software/jdk-17.0.9/bin/java \ -cp "E:/software/apache-maven-3.8.8-bin/apache-maven-3.8.8/boot/plexus-classworlds-2.6.0.jar" \ -Dclassworlds.conf="E:/software/apache-maven-3.8.8-bin/apache-maven-3.8.8/bin/m2.conf" \ -Dmaven.home="E:/software/apache-maven-3.8.8-bin/apache-maven-3.8.8" \ -Dmaven.repo.local="C:/Users/zoujinzhe/.m2/repository" \ -Dmaven.multiModuleProjectDirectory="E:/中金云链/dams/platform" \ org.codehaus.plexus.classworlds.launcher.Launcher \ clean compile spring-boot:run -Dspring-boot.run.arguments=--server.port=8081 ``` - 默认 `h2` profile:零外部依赖,H2 内存库 + 内存 JGraphT 血缘图,启动时自动加载 `schema.sql` / `data.sql` 种子数据。重启即清空(演示用途)。 - 切换 MySQL:追加参数 `--spring.profiles.active=mysql`(需自备库表,见 [配置说明](#配置说明-configuration))。 ### 2. 启动前端(Vue 3 + Vite) ```bash cd "/e/中金云链/dams/web" && npm install && npm run dev ``` ### 3. 打开浏览器 访问 **http://localhost:5173**,使用下方演示账号登录。 --- ## 演示账号 Demo Accounts 种子数据(`data.sql`)中的明文账号(**仅用于演示**,生产需迁移 BCrypt,见 Roadmap Stage 0): | 用户名 | 密码 | 角色 | |---|---|---| | `admin` | `admin123` | 系统管理员(超级管理员) | | `bizowner` | `owner123` | 业务负责人 | | `techowner` | `owner123` | 技术负责人 | | `analyst` | `owner123` | 取数分析师 | --- ## 功能模块一览 Modules ### 后端业务包(`platform/src/main/java/com/cjyl/dams/`) | 包 | 职责 | 关键实现 | |---|---|---| | `asset` | 数据资产登记 / 编目 / 检索 | 元数据与字段管理 | | `collector` | 数据源接入与采集(MySQL/Hive/Kafka/Airflow) | 各源适配器;`realConnect` 开关控制真实 JDBC 或合成数据兜底 | | `scheduler` | 采集任务定时调度 | 配合 `@EnableScheduling` | | `standard` | 数据标准项 / 字典 | 落标稽核基础 | | `lineage` | 表级 / 字段级血缘图谱 | 基于 JGraphT 内存图;`core/LineageCore` 负责 SQL 解析 | | `quality` | 质检规则 / 质量工单 / 质量报告 | 规则插件(如 AccuracyRulePlugin) | | `security` | 安全与脱敏 | RBAC、敏感识别 `SensitiveDetector`、脱敏规则 `DesensitizeRule` / `DesensitizeService`、审计标签 | | `compliance` | 合规(PIA 等) | `PiaTemplate` / `PiaAssessment`、敏感数据地图 `SensitiveMap`、出境 `CrossBorder`、最小必要 `Necessity` | | `approval` | 资产 / 规则上线审批流 | — | | `audit` | 操作审计 | 全链路审计留痕 | | `auth` | 认证授权 | 登录 / JWT / `SecurityConfig` | | `search` | 全文检索 | 默认 `search.store: mysql` | | `realtime` | 实时流接入 / 实时质检 / 监控 | `dams.rt.*` 配置(启用、间隔、保留时长) | | `dashboard` | 概览大屏 / 运营看板 | 统计聚合 | | `apimarket` | API 市场(元数据 / 订阅 / 计量) | 已有后端,无真实网关转发 | | `mdm` | 主数据管理 | 模型 / 查重 / 分发 | | `metric` | 指标资产 | 指标标准 / 口径 | | `value` | 价值评估与入表 | 成本 / 收益 / 台账 | | `decommission` | 资产退役 | `DecommissionImpactAnalyzer` 影响分析 | | `watermark` | 水印 | 导出文件 / 截图隐写 | | `tenant` | 多租户 | `tenant_id` 透传 | | `gateway` | 网关 | 当前为 `GatewayInfoController` 路由契约说明(无真实代理 / 限流) | | `core` | 核心服务 | 血缘解析等公共能力 | | `common` | 公共基础设施 | 响应信封 `R`/`Result`、分页 `PageResult`、异常、常量 `ApiVersion`、种子 `DemoDataSeeder` | ### 前端页面(`web/src/views/`) | 目录 | 对应能力 | |---|---| | `catalog` | 数据资产目录(对应后端 `asset`) | | `collect` | 采集 / 数据源接入(对应 `collector` / `scheduler`) | | `standard` | 数据标准 | | `lineage` | 数据血缘图谱 | | `quality` | 数据质量 | | `security` | 安全 / 脱敏 / 审计 | | `compliance` | 合规 / PIA / 敏感数据地图 | | `approval` | 审批 | | `search` | 全文检索 | | `realtime` | 实时数据 | | `dashboard` | 概览大屏 | | `apimarket` | API 市场 | | `mdm` | 主数据 | | `metric` | 指标 | | `value` | 价值评估 | | `decommission` | 资产退役 | | `watermark` | 水印 | | `portal` | 门户首页 | | `workbench` | 工作台 | | `admin` | 管理后台 | --- ## API 约定 - **接口前缀**:所有后端接口以 `/api/v1` 开头(由 `common/constant/ApiVersion.java` 统一约定,前端 Vite proxy 代理 `/api`)。 - **响应信封**:统一返回 `R`(继承 `Result`),线协议字段为: ```json { "code": 0, "message": "ok", "data": { }, "traceId": "...." } ``` - 成功:`code = 0`。 - 失败:`code` 为对应错误码,`message` 为错误信息。 - **分页**:分页接口返回 `PageResult`,字段为 `list` / `total` / `page` / `size`(默认 `page=1`、`size=20`)。 - **鉴权**:除登录等白名单路径外,需携带 JWT(由 `auth` 包签发,`SecurityConfig` 校验)。 --- ## 配置说明 Configuration ### 端口 - 后端:`application.yml` 中 `server.port: 8081`(默认)。 - 前端 dev:`vite.config.ts` 中 `server.port: 5173`,`proxy['/api'].target = http://localhost:8081`。 - ⚠️ **前端代理目标必须与后端实际端口一致**,否则会出现 500 / 接口不通。 ### Profile 切换(h2 ↔ mysql) `application.yml` 默认 `spring.profiles.active: h2`: | Profile | 存储 | 说明 | |---|---|---| | `h2`(默认) | H2 内存库(`jdbc:h2:mem:dams;MODE=MySQL`) | 零外部依赖,启动自动执行 `schema.sql` / `data.sql` 种子;**重启即清空**(演示用) | | `mysql` | MySQL(`jdbc:mysql://localhost:3306/dams`,账号 `root`/`root`) | `sql.init.mode: never`,需自行用 `sql/` 下的脚本建库建表后再启动 | 切换 MySQL 示例(在后端启动命令的 `--spring-boot.run.arguments` 后追加): ```bash ... org.codehaus.plexus.classworlds.launcher.Launcher \ clean compile spring-boot:run \ -Dspring-boot.run.arguments=--server.port=8081 --spring.profiles.active=mysql ``` 建库脚本参考 `sql/init-db.sql`、`sql/init-schema.sql`、`sql/init-data.sql`、`sql/init-fulltext.sql`。 ### 其他关键配置(`application.yml` 的 `dams.*`) - `dams.jwt.secret` / `expiration-seconds`:JWT 密钥与有效期(默认 86400 秒)。 - `dams.lineage.store`:血缘存储(`inmemory`,默认)。 - `dams.search.store`:检索存储(`mysql`,默认)。 - `dams.security.sensitive-tag-enabled`:敏感标签开关。 - `dams.rt.*`:实时模块开关、轮询间隔、初始延迟、保留时长。 - `dams.auth.ldap.*`:LDAP 接入(默认 `enabled: false`,`mock: true`)。 > 敏感配置(DB 密码 / JWT 密钥)当前写在 `application.yml` 或环境变量(`DAM_JWT_SECRET`)中;生产建议外部化(见 Roadmap Stage 0)。 --- ## 路线图 Roadmap 系统当前为**单机 H2 可演示形态 + 广覆盖但部分的 Phase 2/3 脚手架**。后续开发分四阶段「去 demo 化 → 夯实 → 闭环 → 运营」(详见 [`docs/DAMS_ROADMAP_PRD.md`](docs/DAMS_ROADMAP_PRD.md) 与 [`docs/system_design.md`](docs/system_design.md)): - **Stage 0 — 生产化地基(去 demo 化)**:Git/CI、MySQL 8 持久化 + Neo4j 血缘落库、BCrypt 口令、生产级血缘解析(JSqlParser/Calcite)、采集器去 mock(P0 共 5 项)。 - **Stage 1 — Phase 1 夯实与稳定化**:生产级检索、质量引擎调度化、RBAC 库/表/字段三级 + 行级 ABAC、前端联调、端到端测试与压测(P0 共 3 项)。 - **Stage 2 — 补全「信得过 / 管得住」能力闭环**:数据标准全生命周期、质量闭环、分类分级、动态脱敏中间件、合规增强(PIA/出境/最小必要)、血缘可视化升级、水印、API 网关管控台(P0 共 5 项)。 - **Stage 3 — 完成「算得清 / 用得好」对外运营与高级特性**:多租户管控、主数据、指标资产、价值评估与入表、API 集市运营等(P0 共 4 项)。 --- ## 常见问题 FAQ **Q1:前端能打开(5173),但接口报 500 / 一直不通?** A:大概率是**前端代理目标与后端端口不一致**。确认后端确实运行在 `8081`(看 `application.yml` 的 `server.port`),且 `web/vite.config.ts` 的 `proxy['/api'].target` 指向 `http://localhost:8081`。改了其中一边需同步另一边。 **Q2:我改了后端 Java 代码,重启后行为还是旧的?** A:启动命令**必须带 `clean compile` 前缀**。若只跑 `spring-boot:run`,Maven 不会重新编译,运行的是旧 class。完整模板见 [快速开始](#快速开始-quick-start)。 **Q3:为什么重启后端后之前录入的数据没了?** A:默认 `h2` profile 使用 **H2 内存库,重启即清空**,仅用于演示。需要持久化请切换到 `mysql` profile 并自备库表(见 [配置说明](#配置说明-configuration))。 **Q4:演示账号登录提示密码错误 / 想用真实数据库?** A:种子账号为明文(`admin123` / `owner123`),仅演示用;切到 `mysql` profile 后需用 `sql/` 脚本初始化库表,并按 Roadmap Stage 0 迁移 BCrypt 口令。 --- ## 许可证与贡献 - 本项目为**内部项目**,许可证暂未对外开源(TODO:明确 LICENSE)。 - 贡献规范、分支模型与 CI/CD 流程待 Stage 0 工程化时补充(见 [`docs/DAMS_ROADMAP_PRD.md`](docs/DAMS_ROADMAP_PRD.md) 的 S0-1)。 --- > 文档依据 `platform/`、`web/`、`docs/` 真实代码与配置编写(勘察日期见 git 历史;当前仓库无 `.git`,以文件实际内容为准)。如有出入,以代码为准。