状态基线:2026-07-18。本文只描述当前可验证事实和已确认的下一阶段目标,不把占位入口描述为已完成功能。
DataOps Platform 面向数据治理人员、数据编辑者和数据消费者,负责数据源登记、业务域/元数据/数据流治理、数据产品与订单管理,并通过 n8n 承载流程编排和执行。当前唯一后端源码是 app/,前端为 Vue 2;Vue 3 迁移安排在业务能力稳定后的独立阶段。
flowchart LR
U["管理员 / 编辑者 / 查看者"] --> FE["Vue 前端"]
FE --> API["Flask API / app/"]
API --> PG["PostgreSQL\n交易、审核、布局、映射"]
API --> DSP["外部数据源连接池\nPostgreSQL / MySQL"]
API --> NEO["Neo4j\n治理对象与血缘图"]
API --> OBJ["MinIO\n非结构化原件与附件"]
API --> N8N["n8n\nWorkflow 定义与执行"]
API --> DS["DeepSeek\n生成与问答"]
API --> QW["Qwen Embedding\n向量化"]
外部模型调用是唯一可选的非本地依赖。没有配置密钥时,本地基础设施、登录和非模型功能仍可验证,且代码不得回退到任何生产地址。
flowchart TB
subgraph Browser["浏览器"]
UI["frontend/src"]
end
subgraph Runtime["应用运行时"]
NGINX["Nginx 静态资源与 /api 代理"]
ROUTES["app/api 蓝图路由"]
CORE["app/core 领域逻辑"]
SERVICES["app/services 基础服务"]
CONFIG["app/config 环境配置"]
end
subgraph Stores["本地隔离数据服务"]
POSTGRES["平台 PostgreSQL 16\n控制面与凭据密文"]
SOURCEPG["外部 PostgreSQL\n业务数据"]
SOURCEMY["外部 MySQL\n业务数据"]
NEO4J["Neo4j 5"]
MINIO["MinIO"]
N8NLOCAL["n8n 1.100.1"]
end
UI --> NGINX --> ROUTES
ROUTES --> CORE
CORE --> SERVICES
SERVICES --> CONFIG
SERVICES --> POSTGRES
CORE --> SOURCEPG
CORE --> SOURCEMY
SERVICES --> NEO4J
SERVICES --> MINIO
SERVICES --> N8NLOCAL
职责规则:
app/api/ 只负责协议转换、参数校验、鉴权和响应封装。app/core/ 承载领域用例;app/core/data_source/ 负责外部数据源凭据、
驱动白名单、连接池、熔断和生命周期编排。app/services/ 提供 PostgreSQL、Neo4j、MinIO、n8n 和模型客户端。database/ 是基础建库脚本源;migrations/ 是已启用的 Alembic 增量迁移链。deployment/app/ 与 deployment/database/ 是发布镜像,不是编辑源。| 能力 | 前端入口 | 后端前缀 | 主要存储 | 当前状态 |
|---|---|---|---|---|
| 数据源 | 数据治理/数据源 | /api/datasource |
Neo4j 安全定义、PostgreSQL 凭据密文、Worker 本地连接池 | PostgreSQL/MySQL 可用 |
| 业务域 | 数据治理/业务域 | /api/bd |
Neo4j、PostgreSQL 审核表 | 可用 |
| 元数据 | 元数据详情与审核 | /api/meta |
Neo4j、PostgreSQL 审核/历史 | 可用 |
| 数据标准与标签 | 数据治理相关页面 | /api/interface |
Neo4j | 可用 |
| DataFlow 定义 | 数据流程 | /api/dataflow |
Neo4j | 可用;版本映射待实现 |
| n8n Workflow | n8n 适配页面 | /api/datafactory |
n8n | 代理可用;首次需本地 API Key |
| 数据产品/订单 | 数据服务 | /api/dataservice |
PostgreSQL、Neo4j | 可用 |
| 数据安全 | 保留入口 | 无完整接口 | 无 | 占位,不宣称实现 |
| 数据治理知识库 | 保留入口 | 待实现 | PostgreSQL/pgvector、Neo4j | 下一阶段 |
| 工作台 | 首页 | 待完善 | PostgreSQL | 验收样例;下一阶段持久化 |
当前 Flask 路由的机器可读清单和实际数量见 OPENAPI.yaml, 该文件由路由源码自动生成并由契约测试校验。
flowchart LR
ROUTE["数据源 API"] --> SERVICE["DataSourceService"]
SERVICE --> GRAPH["Neo4j\n无密钥连接定义"]
SERVICE --> CREDS["平台 PostgreSQL\nAES-256-GCM 凭据版本"]
USE["元数据 / 质量 / DataFlow"] --> MANAGER["Worker 本地 ConnectionManager"]
MANAGER --> REGISTRY["惰性 PoolRegistry\n2 + 3 / 数据源 / Worker"]
REGISTRY --> PGADAPTER["postgresql+psycopg2"]
REGISTRY --> MYADAPTER["mysql+pymysql"]
PGADAPTER --> EXTPG["外部 PostgreSQL"]
MYADAPTER --> EXTMYSQL["外部 MySQL"]
数据源 UID + 凭据版本 + 配置指纹 隔离;一个后端 Worker
对一个键最多创建一个 Engine。当前单实例使用 2 个 Gunicorn Worker,因此
总连接预算必须按“单池上限 × Worker 数 × 活跃数据源数”核算。connect_args 或自由连接串。flowchart LR
CHANGE["治理对象变更"] --> OUTBOX["PostgreSQL Outbox"]
OUTBOX --> INDEXER["知识库增量同步"]
INDEXER --> EMB["Qwen Embedding"]
EMB --> VECTOR["pgvector"]
VECTOR --> QA["DeepSeek 问答"]
AUDIT["每日全量一致性巡检"] --> INDEXER
DF["DataFlow 治理定义"] --> MAP["版本映射"]
MAP --> WF1["n8n Workflow v1"]
MAP --> WF2["n8n Workflow v2"]
MAP --> ACTIVE["环境级唯一生效版本"]
实施顺序、依赖和验收口径见 NEXT_ITERATION_ROADMAP.md。