2026-07-16_codebase_full_analysis_and_iteration_baseline.md 55 KB

DataOps Platform 代码库完整解析与迭代升级基线

基线日期:2026-07-16 产品决策复核:2026-07-16 分析对象:当前 master 工作树中的主源码、前端、数据库脚本、部署包、测试与现有技术文档 目标:为下一轮迭代提供可追溯的架构、代码逻辑、页面—接口—存储映射和风险优先级基线

1. 结论摘要

DataOps Platform 当前是一个“单仓库、多运行时、混合存储、部分能力外置”的数据运营平台:Vue 2 前端通过 /api 调用 Flask 后端;PostgreSQL 保存订单、产品、审核、用户和任务记录;Neo4j 保存元数据、业务域、数据源、数据流程及其关系;MinIO 保存上传文件;n8n 承担工作流管理和执行;LLM 用于翻译、DDL 解析、订单实体提取和加工逻辑生成。

代码规模约为:

范围 规模
Flask 主后端 66 个 Python 文件,21,578 行
前端 289 个 Vue 文件、65 个 JS 文件,56,903 行
后端路由 9 个 Blueprint、107 个路由
前端 API 调用定义 430 个有效调用
可与本仓库 Flask 路由精确匹配 82 个(约 19.1%)
外部服务、历史网关或本仓库未实现 348 个(约 80.9%)
PostgreSQL DDL 20 个 SQL 文件

最重要的判断如下:

  1. 当前不是一个完全自包含的前后端系统。 活跃页面中既有本仓库闭环功能,也有依赖 /authentication/vanna/dataFactory/digitizationData 等历史服务的功能。经产品确认,这 348 个未匹配调用基本属于后端服务已经下线后的前端遗留,后续默认按删除和瘦身处理,而不是补建同名后端。
  2. 主源码与生产发布源码发生反向漂移。 app/deployment/app/ 有 12 个文件不同,且部署副本包含较新的 DeepSeek、运行时环境加载、日志和生产端口修复。此时执行 deployment/sync_release.sh 会用较旧的 app/ 覆盖部署副本,存在生产回退风险。
  3. 认证链路在契约上不闭环。 前端登录后读取 data.token,后端登录接口只返回用户信息;前端之后发送 Authorization: Bearer undefined。同时绝大多数后端路由没有认证装饰器,所以“前端路由守卫”并没有形成后端安全边界。
  4. 仓库存在必须优先处理的凭据风险。 Git 跟踪了 SSH 私钥 cursorssh-143,主配置中还包含 LLM、n8n、MinIO、Neo4j、PostgreSQL 等硬编码凭据或回退值。
  5. 数据订单是当前最完整的端到端业务链路。 它跨 PostgreSQL、Neo4j、LLM、任务表、生成脚本/n8n 工作流和数据产品注册,但缺少跨存储事务、幂等和补偿机制,容易产生“订单失败但图节点/产品/任务已部分创建”的状态。
  6. DataFlow 只保留定义、关系和查询能力。 执行、状态和日志接口当前是 TODO/mock,产品已确认不再在本代码库实现,应删除对应后端路由、前端 API 和操作入口,不再规划新的调度器来补齐它们。n8n 中的 Workflow 是执行编排实体,不应重命名为 DataFlow。
  7. 现有文档不能作为唯一事实来源。 docs/CODE_DOCUMENTATION.md 对技术栈、LLM 和部分模块的描述已落后于部署副本,且没有覆盖真实前端页面、外部 API 和源码漂移。

1.1 已确认的产品决策

以下内容已由产品侧于 2026-07-16 确认,可直接作为代码瘦身依据:

  • 348 个前端未匹配调用基本属于已下线后端服务的遗留调用;默认动作是删除不可达页面、API 定义和关联组件,不为这些旧路径恢复后端。
  • DataFlow 的执行、执行状态和执行日志不再由本代码库提供;保留 DataFlow 定义、CRUD、关系、脚本元信息和血缘用途。
  • Vanna 已停止使用;dataChartmodelSystemapi/dataChart.js 等依赖 Vanna 的页面和调用进入删除范围。
  • Airflow 已停止使用;主配置、部署配置、环境变量模板和文档中的 Airflow 配置进入删除范围。
  • n8n 继续保留,覆盖工作流管理、执行记录、订单生成工作流和 onboard 回调;n8n 与 DataFlow mock 运行接口是两条不同链路,清理时不得误删 n8n 适配层。
  • 统一术语:DataFlow 表示平台内的数据流程定义、输入输出关系、脚本元信息和血缘节点;n8n Workflow 表示 n8n 的执行编排对象。代码和 API 中继续使用 n8n 原生 workflow 命名,前端统一展示为“n8n 工作流”或“执行编排”,不将其改名为 dataflow。一个 DataFlow 可以关联多个有明确版本标识的 Workflow,同一环境只允许一个当前生效版本。
  • 原“产品知识库”更名为“数据治理知识库”。知识来源包括数据业务域定义、数据流程定义、元数据定义以及后续纳入的数据治理资产,目标能力为统一入库、检索和问答;采用“治理对象变更后增量同步 + 每日全量一致性巡检”,不复用已下线的 Vanna/RAG 历史接口。
  • 工作台继续保留,支持按用户保存布局;第一阶段提供待审核数、订单状态、数据产品统计、数据源健康和 n8n 执行状态等有限标准组件,并重建本仓库内的持久化接口。
  • 暂不开放自助注册;建立管理员、编辑者、查看者三级 RBAC。部署初始化时创建首个管理员,后续用户只能由管理员创建。
  • app/ 是唯一后端源码。先将 deployment/app/ 中仍有效的修复合并回 app/,再将部署目录改为单向生成产物。
  • DeepSeek 是当前唯一默认生成式 LLM 和问答模型;数据治理知识库允许使用 Qwen Embedding 模型。删除 Qwen 对话/生成回退,只保留用途隔离的 Embedding 客户端与配置;Vanna 和 Airflow 配置进入清理范围。
  • 数据资源、数据模型、数据指标须经可达性核验后删除;本报告第 6.2 节已完成静态核验。数据安全保留前端入口,第一阶段作为明确的待建设占位功能。
  • 旧数据工厂非 n8n 模块整体移除,只保留 n8n 适配、订单生成 n8n 工作流、执行记录和回调链路。
  • mcp-servers/task-manager/ 已确认不再使用,进入整体删除范围;HOPMS 数据导入脚本、测试、源文档和 docs/generated/*.json 验收样例保留。
  • 本轮只从代码和初始化 DDL 中清理已确认的历史表;生产数据库真实表须在只读核查、备份和依赖确认后单独下线。
  • 本轮完成历史代码瘦身和 Node LTS 升级;Vue 3 迁移放到下一阶段,不与业务边界收敛同时实施。
  • 问卷薪酬、图表定制、旧系统管理、名片解析和数据资产原型已确认整体移除。旧系统管理删除时保留通用 404 页面;名片解析删除时保留当前数据治理中的 dataGovernance/dataSource 能力。

2. 仓库层级与源码归属

DataOps-platform/
├── app/                         # 主后端源码;开发迭代应以此为唯一源代码入口
│   ├── api/                     # Flask Blueprint 路由层
│   ├── core/                    # 业务逻辑、图谱、LLM、n8n、数据处理
│   ├── models/                  # SQLAlchemy 模型与统一响应
│   ├── services/                # Neo4j 驱动、DB 健康检查、历史公共函数
│   ├── config/                  # 运行配置与 CORS
│   └── scripts/                 # PostgreSQL 初始化/迁移辅助脚本
├── frontend/                    # Vue 2 单页应用
│   ├── src/router/routes.js     # 静态菜单与页面路由事实来源
│   ├── src/api/                 # 前端 API 客户端
│   ├── src/views/               # 页面与业务组件
│   ├── src/store/               # Vuex 状态
│   └── src/utils/request.js     # Axios 封装与响应契约
├── database/                    # 手工 PostgreSQL DDL/迁移脚本
├── datafactory/                 # DataMeta Agent/n8n 工作流资源
├── mcp-servers/task-manager/    # 独立 Node.js MCP 服务;已确认整体删除
├── deployment/                  # 可独立上传的生产发布包;当前含有与 app/ 不一致的源码副本
├── scripts/                     # 本地/部署运维与数据导入脚本
├── tests/                       # 后端单元测试,当前无前端测试
└── docs/                        # API、部署和专题文档

源码归属建议:

  • app/frontend/src/database/ 应是唯一可编辑源。
  • deployment/app/deployment/database/ 应由 CI 或单向同步脚本生成,不能继续作为另一份可人工修改源码。
  • docs/generated/ 是导入结果,不应被当作业务代码。
  • mcp-servers/task-manager/ 是独立子系统:不在 Flask Blueprint、前端路由或主部署链中注册,已确认不再使用并整体删除。

3. 运行架构与层级关系

flowchart TD
    U["浏览器用户"] --> V["Vue 2 SPA :18183"]
    V -->|"/api/*"| N["Nginx / API 网关"]
    N --> F["Gunicorn + Flask"]
    F --> A["Blueprint API 层"]
    A --> C["Core 业务层"]
    C --> P[("PostgreSQL")]
    C --> G[("Neo4j")]
    C --> M[("MinIO")]
    C --> W["n8n API / Webhook"]
    C --> L["DeepSeek / OpenAI-compatible LLM"]
    C --> FS["本地生成脚本与 workflow JSON"]
    W -->|"订单 onboard 回调"| A

3.1 后端调用层级

HTTP 请求
  -> app/api/<domain>/routes.py          参数解析、响应包装、异常转译
  -> app/core/<domain>/*.py              业务规则、状态机、图查询、外部调用
  -> app/models/*.py                     PostgreSQL ORM 模型
  -> app/services/*.py                   Neo4j/数据库基础设施
  -> PostgreSQL / Neo4j / MinIO / n8n / LLM

实际代码没有完全遵守该分层:部分路由直接写 Cypher,core/system/auth.py 直接使用 psycopg2 连接池,core/data_flow/dataflows.pycore/data_service/data_product_service.py 直接执行 SQL,导致事务、测试和复用边界不统一。

3.2 前端调用层级

routes.js
  -> defaultRoute.js 动态 import 页面
  -> views/**/*.vue
  -> api/*.js
  -> utils/request.js (Axios, baseURL=/api)
  -> 本仓库 Flask 或外部网关服务

前端当前使用静态路由。store/modules/menu.js 的远程菜单调用已注释,权限信息直接取自 routes.js;因此路由上的 roles 字段并未形成真正的动态授权。

4. 后端模块与核心代码逻辑

4.1 应用初始化与通用响应

  • app/__init__.py 创建 Flask 应用、初始化 SQLAlchemy/CORS、注册 9 个 Blueprint、配置日志和全局异常处理。
  • API 正常返回主要使用 app/models/result.py{code, message, data} 结构。
  • 多数业务错误只改变 JSON 内的 code,HTTP 状态仍为 200;前端依赖响应体 code 判断成功。这不利于网关、监控、重试和标准客户端处理。
  • 全局异常处理会把原始异常文本返回给前端,可能泄露内部结构和连接信息。

4.2 元数据 meta_data

主要职责:

  • DataMeta 节点列表、详情、图谱、创建、更新、删除和搜索。
  • 新增/更新时进行冗余检测,必要时在 PostgreSQL 创建 metadata_review_records
  • 上传、预览、下载结构化/非结构化文件到 MinIO。
  • 解析文本并创建 DataMeta/Tag 图节点。
  • 审核处理支持合并、创建、忽略等动作,并写入 metadata_version_history

主要存储:Neo4j DataMetaDataLabelTagmaster_data;PostgreSQL 审核与版本表;MinIO 文件对象。

4.3 业务域 business_domain

主要职责:

  • BusinessDomain 列表、详情、保存、更新、删除和图谱展示。
  • 通过 INCLUDES 连接 DataMeta,通过 LABEL 连接 DataLabel,通过 COME_FROM 连接 DataSource
  • 上传 DDL/Excel/Word/PDF,调用 DDLParser 解析表和字段。
  • 组合多个元数据或业务域,复用/创建元数据并建立关系。
  • 新元数据与候选元数据按名称、类型和标签匹配,生成审核记录。

该模块是最大的图谱写入入口之一,business_domain.py 约 1,979 行,已混合查询、规则、序列化、审核、创建与更新逻辑,建议拆分为 Repository、MatchingPolicy、ReviewService 和 DomainService。

4.4 数据接口 data_interface

主要职责:

  • data_standard 节点的新增、详情、更新、列表、代码生成和图谱。
  • DataLabel 节点的新增、详情、列表、动态识别、图谱和删除。
  • 聚合业务域、数据流、元数据之间的全图关系。

需要注意:数据标准标签使用小写 data_standard,其他主要标签使用 PascalCase;图模型命名不一致会增加查询和迁移成本。

4.5 数据源 data_source

主要职责:

  • 将连接配置保存为 Neo4j DataSource 节点。
  • 列表、删除、连接串解析、LLM 校验和 SQLAlchemy 连接测试。
  • /graph 路由仍为 TODO,当前没有实际实现。

连接测试可接受用户提供的主机、端口和凭据;在后端无认证的情况下,它相当于一个可访问内网数据库的探测入口,必须纳入 P0 安全治理。

4.6 数据流程 data_flow

主要职责:

  • DataFlow 图节点 CRUD。
  • 维护业务域/数据源与数据流程的 INPUTOUTPUTLABELchild 关系。
  • 根据业务域元数据生成源表和目标表 DDL。
  • 创建 public.task_list 任务记录并关联脚本路径。
  • 获取关联脚本内容。

已确认删除的运行时部分:

  • execute_dataflow/execute-dataflow/{id}
  • get_dataflow_status/get-dataflow-status/{id}
  • get_dataflow_logs/get-dataflow-logs/{id}
  • 前端 runDataFlow/getDataFlowExecute/getDataFlowLog 和页面“运行”操作。

删除后,DataFlow 继续作为图谱中的加工过程定义和血缘节点存在,但不再表达本系统可直接执行该流程。此处不再引入 Airflow 或新的统一调度服务。

DataFlow 与 n8n Workflow 的命名边界

两者不应合并为同一个术语:

对象 平台语义 代码/接口命名 用户界面名称
DataFlow 数据流程定义、输入输出关系、加工要求、脚本元信息和血缘 /api/dataflow/*、Neo4j DataFlow 数据流程
n8n Workflow n8n 中可启停、查看执行记录和触发的执行编排对象 /api/datafactory/workflows/*workflow_id n8n 工作流 / 执行编排

保留 workflow 命名的原因是它与 n8n 公共 API 和对象模型一致,也能避免把“治理定义”误解为“本平台直接执行的任务”。映射规则已确认:一个 DataFlow 可以关联多个有明确版本标识的 n8n Workflow;按环境区分部署状态,每个 DataFlow 在同一环境只能有一个当前生效版本。建议持久化 dataflow_idenvironmentn8n_workflow_idversionis_active、部署状态和最近一次执行状态,并对 (dataflow_id, environment) 的生效记录建立唯一约束。当前代码只生成本地 workflow JSON,没有持久化 n8n Workflow ID,链路仍不完整。

4.7 数据工厂 data_factory

这是对 n8n 公共 API 的适配层:

  • N8nClient 负责 URL、鉴权、HTTP 请求和异常封装。
  • N8nService 将 n8n 的 workflow/execution 结构转为前端格式。
  • API 支持工作流列表、详情、状态、启停、执行记录、Webhook 触发和健康检查。

它不负责前端 dataFactory.js 中旧版生产线、接入、加工、集成、日志等约 98 个接口;这些非 n8n 旧数据工厂页面和调用已确认整体删除。保留范围仅包括 n8n 客户端、适配服务、/api/datafactory/workflows*、执行记录、健康检查、订单生成 n8n workflow JSON 和 onboard 回调。

4.8 数据产品与数据订单 data_service

数据产品

  • PostgreSQL data_products 保存产品元信息和目标物理表定位。
  • 预览接口查询 information_schema,再动态读取目标表并合并 Neo4j 字段标签。
  • 支持 Excel 下载、浏览标记、统计刷新、注册和删除。
  • 血缘可视化沿 DataFlow -> BusinessDomain -> DataMeta/DataSource 追踪生产链。

风险:目标 schema/table 来自产品注册参数,随后拼接进动态 SQL。虽然使用双引号,但没有白名单校验,仍应按 SQL 标识符注入风险治理。

数据订单状态机

stateDiagram-v2
    [*] --> pending: 创建订单
    pending --> analyzing: 开始 LLM 分析
    analyzing --> need_supplement: 提取失败
    analyzing --> manual_review: 无匹配域或不可连通
    analyzing --> pending_approval: 图谱可连通
    need_supplement --> pending: 修改订单
    manual_review --> pending: 修改订单
    pending_approval --> processing: 审批并生成资源
    manual_review --> processing: 人工审批
    processing --> onboard: n8n/数据工厂回调
    onboard --> completed: 用户确认完成
    pending_approval --> rejected: 驳回
    manual_review --> rejected: 驳回

审批通过后会依次:

  1. 用 LLM 提取输出业务域、字段和处理逻辑。
  2. 在 Neo4j 创建输出 BusinessDomainDataMetaDataFlow 以及 INPUT/OUTPUT/INCLUDES/LABEL 关系。
  3. 在 PostgreSQL 注册 data_products
  4. 在 PostgreSQL 写入 task_list
  5. 在本地生成 n8n workflow JSON。
  6. 将订单置为 processing,等待 /orders/{id}/onboard 回调。

这条链路跨越多个不可共同提交的存储,没有 Saga/Outbox、幂等键或补偿清理。任何中途失败都可能留下孤立图节点、重复产品或无效任务。

4.9 系统、认证和图操作

  • system 提供健康、配置、系统信息、配置校验、注册、登录、用户查询和翻译。
  • 用户密码只是 Base64 编码,不是安全密码哈希。
  • require_auth 比较整个 Authorization 头与 SECRET_KEY,但当前业务路由没有普遍使用该装饰器。
  • /api/graph/query 可执行任意 Cypher;在无认证状态下风险极高。
  • Neo4j 关系普遍使用内部 id(node) 作为跨表引用。Neo4j 内部 ID 不适合作为稳定业务主键,应逐步迁移为 UUID/业务 ID。

4.10 数据清洗、校验与 LLM

  • DataCleaner 支持空值、重复、类型转换和离群值处理。
  • DataValidator 提供必填、类型、正则、邮箱、电话和自定义规则。
  • 这两个模块目前更像工具库,未形成明确的 API 或数据流程执行闭环。
  • DDLParser 支持 SQL/Excel/Word/PDF,优先本地 SQL 解析,再调用 LLM。
  • 主源码仍有 Qwen/DashScope 生成式回退配置,部署副本已转向 DeepSeek。产品已确认 DeepSeek 为唯一默认生成式 LLM 和知识库问答模型,同时允许 Qwen Embedding 用于语义向量化。应将部署副本中的有效 DeepSeek 修复合并回 app/,删除 Qwen 对话/生成回退和硬编码配置;Qwen Embedding 使用独立客户端、独立模型配置和独立用途凭据,不能重新演变为通用 LLM 回退。

5. 后端 API 完整清单

共 107 个路由。以下路径均含 /api 前缀。

5.1 system:8 个

方法 路径 逻辑/存储
GET /system/health PostgreSQL、Neo4j 和系统健康
GET /system/config 脱敏配置视图
GET /system/info 进程/系统信息
GET /system/config/validate 配置完整性检查
POST /system/auth/register PostgreSQL users
POST /system/auth/login PostgreSQL users
GET /system/auth/user/{username} PostgreSQL users
POST /system/translate LLM/本地回退翻译

5.2 meta:22 个

方法 路径
POST /meta/node/list/meta/node/graph/meta/node/delete/meta/node/edit/meta/node/add/meta/node/update
GET /meta/check/meta/search/meta/config
POST /meta/full/text/query/meta/unstructure/text/query/meta/text/graph/meta/unstructured/process
POST /meta/resource/upload/meta/resource/display/meta/resource/translate/meta/resource/node
GET /meta/resource/download
POST /meta/review/list/meta/review/create/meta/review/resolve
GET /meta/review/detail

5.3 bd:12 个

方法 路径
POST /bd/list/bd/detail/bd/delete/bd/save/bd/update
POST /bd/upload/bd/graphall/bd/ddlparse/bd/search/bd/compose/bd/labellist
GET /bd/download

5.4 interface:15 个

方法 路径
POST /interface/data/standard/adddetailcodeupdatelistgraph/all
POST /interface/data/label/adddetaillistdynamic/identifygraph/alldelete
POST /interface/labellist/interface/graphall/interface/metric/label/standard/delete

5.5 datasource:7 个

全部为 POST:/datasource/savelistdeleteparsevalidconntestgraph

5.6 dataflow:10 个

方法 路径
GET /dataflow/get-dataflows-list/get-dataflow/{id}/get-dataflow-status/{id}/get-dataflow-logs/{id}/get-BD-list/get-script/{id}
POST /dataflow/add-dataflow/execute-dataflow/{id}
PUT /dataflow/update-dataflow/{id}
DELETE /dataflow/delete-dataflow/{id}

5.7 datafactory:10 个

方法 路径
GET /datafactory/workflows/workflows/{id}/workflows/{id}/status/workflows/{id}/executions/executions/executions/{id}/health
POST /datafactory/workflows/{id}/activatedeactivateexecute

5.8 dataservice:19 个

方法 路径
GET /dataservice/products/products/{id}/products/{id}/preview/products/{id}/download/orderlist/orders/{id}/detail
POST /dataservice/products/products/{id}/lineage-visualization/products/{id}/viewed/products/{id}/refresh
DELETE /dataservice/products/{id}
POST /dataservice/neworder/orders/{id}/analyzeapproverejectonboardcomplete
PUT /dataservice/orders/{id}/update/orders/{id}/delete

5.9 graph:4 个

全部为 POST:/graph/query/graph/node/create/graph/relationship/create/graph/subgraph

6. 前端页面—接口—后端—存储映射

6.1 活跃路由映射

页面路由 页面组件 主要 API 后端/存储 闭环状态
/home/home/edit views/home /authentication/user/menu/* 历史菜单服务已下线 保留;重建按用户布局持久化,首期有限标准组件
/knowledge-base-product(历史路由名) knowledgeBaseProduct/index /text/product/list 历史知识库服务已下线 更名并重建为数据治理知识库,支持治理定义检索和问答
/data-chart dataChart /vanna/v0/* 已停用 Vanna 已确认删除
/data-governance/metadata dataGovernance/metadata /meta/node/*/meta/review/create/interface/labellist/system/translate Neo4j、PostgreSQL 审核表、LLM 本仓库闭环
/data-governance/business-domain dataGovernance/businessDomain /bd/*/meta/node/list/interface/labellist/datasource/list Neo4j、MinIO、PostgreSQL 审核表、LLM 本仓库闭环
/data-governance/data-standard dataGovernance/dataStandard /interface/data/standard/*;删除调用 /metric/label/standard/delete Neo4j 列表/新增/详情闭环;删除路径少 /interface 前缀
/data-governance/data-process dataGovernance/dataProcess /dataflow/*/interface/labellist Neo4j、PostgreSQL task_list、脚本文件 保留定义/CRUD;删除运行、状态、日志
/data-governance/data-Label dataGovernance/dataLabel /interface/data/label/* Neo4j DataLabel 本仓库闭环
/data-governance/data-source dataGovernance/dataSource /datasource/list/save/delete/parse/valid/conntest Neo4j、外部目标数据库、LLM 除 graph 外闭环
/data-book/data-metadata及详情 dataBook/dataMetaData /meta/node/list/edit/graph/interface/graphall Neo4j 本仓库闭环
/data-book/business-domain及详情 dataBook/businessDomain /bd/list/detail/search/interface/graphall Neo4j 本仓库闭环
/data-book/data-standard及详情 dataBook/dataStandard /interface/data/standard/list/detail/interface/graphall Neo4j 本仓库闭环
/data-book/data-process及详情 dataBook/dataProcess /dataflow/get-*/interface/graphall Neo4j、脚本文件 查询闭环
/data-book/data-label及详情 dataBook/dataLabel /interface/data/label/list/detail/interface/graphall Neo4j 本仓库闭环
数据工厂“生产线管理” 外部 URL VUE_APP_N8N_URL 直接跳转 n8n n8n 外部系统
/dataFactory/workflow dataFactory/workflow /datafactory/workflows*executions*health n8n API 保留;术语固定为 n8n 工作流/执行编排
/dataService/dataOrder dataService/dataOrder /dataservice/order* PostgreSQL、Neo4j、LLM、n8n/文件 核心链路闭环,但跨存储一致性不足
/dataService/dataProduct dataService/dataProduct /dataservice/products* PostgreSQL、目标物理表、Neo4j 本仓库闭环
/dataReview dataReview /meta/review/list/detail/resolve/dataflow/get-BD-list PostgreSQL 审核/历史表、Neo4j 本仓库闭环
/data-asset及详情 dataAsset 无真实 API 页面内硬编码一条示例数据 已确认删除
/model-system/* modelSystem/* /vanna/v0/* 已停用 Vanna 已确认删除

6.2 已注释但仍保留代码的页面

以下功能在 routes.js 中已注释或隐藏,但源码仍存在,会继续增加维护成本:数据资源、数据模型、数据指标、数据安全、RDBMS/非结构化数据来源、旧数据工厂接入/加工/集成、系统管理、问卷、图表定制等。

数据资源、数据模型、数据指标静态可达性复核

模块 路由状态 API/后端状态 残余引用 结论
数据资源 治理页和数据地图页全部注释 前端依赖 /resource/*;本仓库没有对应 Blueprint 旧数据工厂 dispatch 页面和数据地图共享组件旧默认 API 当前无可达业务入口;随旧数据工厂删除,并清理共享组件默认值后可删除
数据模型 治理页和数据地图页全部注释 前端依赖 /model/*;本仓库没有对应 Blueprint 引用集中在 dataGovernance/dataModulesdataBook/dataModel 当前无可达业务入口,可以删除
数据指标 治理页和数据地图页全部注释 前端依赖 /metric/*;本仓库没有指标 CRUD Blueprint 引用集中在 dataGovernance/dataIndicatordataBook/indicator 当前无可达业务入口,可以删除;/interface/metric/label/standard/delete 是数据标准删除接口,不代表指标模块仍可用

该结论来自静态路由、动态组件路径、前端 API 引用和 Flask Blueprint 的交叉核验。当前 store/modules/menu.js 的远端 getMenu2 调用已注释,运行时直接使用 router/routes.js,不存在后端动态菜单重新激活这三个模块的代码路径。真正删除时仍执行三道保护:先移除共享组件中的旧默认 API,再执行前端构建,最后回归元数据、业务域、数据标准、数据标签、数据流程、数据产品和数据审核页面。本次未实时核对线上静态包,部署前仍需确认线上包与当前源码版本一致。

数据安全与上述三项不同:当前 dataGovernance/dataSecurity/index.vue 是未调用后端的占位页面,created() 中的初始化已注释。产品已确认保留并恢复“数据安全”前端入口,首期页面应明确展示“规划中/待建设”,避免用空表伪装为已实现功能,后续再补权限策略、脱敏、审计或分级分类等正式能力。

已确认整体删除:Vanna/DataChart/ModelSystem、Airflow 配置、DataFlow mock 运行时、问卷薪酬、图表定制、旧系统管理、名片解析、数据资产原型、数据资源、数据模型、数据指标、旧数据工厂非 n8n 页面和 mcp-servers/task-manager/。保留项是 n8n、数据治理知识库、工作台、数据安全入口、HOPMS 导入工具,以及当前已经闭环的数据治理/地图/服务/审核能力。

6.3 前端 API 依赖分布

前端 API 模块 调用数 本仓库匹配 外部/未实现
dataGovernance.js 91 43 48
dataFactory.js 108 10 98
dataService.js 9 9 0
dataOrder.js 9 9 0
dataOrigin.js 11 6 5
dataReview.js 3 3 0
dataBook.js 52 0 52
dataChart.js 40 0 40
menu.js 29 0 29
system.js 39 0 39
user.js 9 1 8
其他 4 个模块 30 1 29

未匹配接口按一级路径聚合,主要为:dataFactory 141、authentication 57、vanna 43、digitizationData 33、op_maintenance 14、resource 12、model 11、metric 11,其余为 dags/parse/pipeline/text/rag/graph 等。

产品侧已确认这些未匹配调用大部分来自已下线后端。实施删除前仍需对活跃路由和仍被 import 的组件做一次可达性复核;只有产品明确要求保留的少量模块才进入重新实现或外部服务映射。

7. 数据库与图模型对应

7.1 PostgreSQL 表

代码模型/入口 页面/API 状态
public.users core/system/auth.py 直接 psycopg2 登录、注册、用户查询 运行时建表;Base64 密码;无正式迁移
public.data_products models/DataProduct 数据产品列表、预览、下载、统计、血缘 活跃核心表
public.data_orders models/DataOrder 数据订单创建、分析、审批、回调、完成 活跃核心表;data_source 依赖单独迁移
public.metadata_review_records MetadataReviewRecord /dataReview、元数据/业务域冗余审核 活跃核心表
public.metadata_version_history MetadataVersionHistory 审核解决时记录前后快照 活跃核心表
public.task_list dataflow/order 服务直接 SQL 订单审批生成任务、数据流程 活跃;无 ORM 模型
public.calendar_info SQL 脚本 当前 Flask 路由无直接使用 遗留/外部功能
public.calendar_records SQL/脚本 当前 Flask 路由无直接使用 遗留/外部功能
public.wechat_users SQL/迁移脚本 当前 Flask 路由无直接使用 外部微信登录能力
business_cards / duplicate_business_cards SQL 脚本 前端 /parse/*,本仓库无后端路由 外部/遗留能力
hotel_group_brands SQL 脚本 问卷/薪酬外部接口 参考数据;DDL 注释引用不存在的 sequence_no
hotel_positions SQL 脚本 问卷/薪酬外部接口 参考数据

本轮数据库清理边界已经确认:对随历史模块下线的表,只清理代码引用和初始化 DDL,不在本轮直接执行生产 DROP TABLE。生产真实表下线必须独立完成只读 schema/数据量/最近写入/依赖核查、备份、审批和可恢复删除方案。

数据库治理问题:

  • requirements.txt 包含 Alembic/Flask-Migrate,但仓库没有可追溯的 Alembic revision 链。
  • DDL、增量 ALTER、回滚脚本混在同一目录,没有版本顺序和已执行状态。
  • ORM、DDL 和生产库可能漂移,例如 data_orders.data_source 依赖额外脚本。
  • result_product_idresult_dataflow_id 等跨 PostgreSQL/Neo4j 引用没有数据库外键,也没有应用级一致性审计。
  • users 同时绕过 SQLAlchemy,自建 psycopg2 池,连接与事务管理不统一。

7.2 Neo4j 图模型

核心节点:

节点标签 含义 主要入口
DataMeta 字段/元数据 元数据、业务域、订单生成
BusinessDomain 业务表/业务域/输出数据产品域 业务域、数据订单
DataSource 数据库连接与来源 数据源、业务域
DataFlow 加工流程 数据流程、数据订单
DataLabel 标签 数据标签、元数据、业务域、流程
data_standard 数据标准 数据标准
DataResourceDataModel 旧版资源/模型 路由已关闭或依赖外部接口
Tagmaster_data 非结构化标签/主数据 元数据扩展能力

核心关系:

flowchart LR
    DS["DataSource"] -->|"COME_FROM 反向语义:BD 来源于 DS"| BD["BusinessDomain"]
    BD -->|"INCLUDES"| DM["DataMeta"]
    DM -->|"LABEL"| DL["DataLabel"]
    DM -->|"ALIAS"| DM2["DataMeta"]
    BD -->|"INPUT"| DF["DataFlow"]
    DF -->|"OUTPUT"| OUT["BusinessDomain"]
    DF -->|"LABEL"| DL

代码中同时出现 BusinessDomain-[:INPUT]->DataFlow 和部分查询注释/旧逻辑中的其他方向假设,下一轮应建立唯一图模型约束、关系方向和索引定义。

7.3 MinIO、文件系统与外部存储

  • MinIO 保存业务域上传文件和元数据资源文件。
  • 数据产品实际数据不存于 data_products,而是由 target_schema + target_table 指向 PostgreSQL 物理表。
  • 订单审批会在本地 datafactory/workflows/ 生成 n8n Workflow JSON,在 datafactory/scripts/ 约定任务脚本路径。
  • Vanna、相关 Redis/PgVector 管理页面和 Airflow 配置已确认不再使用,应从当前系统架构和部署要求中移除。
  • HOPMS 导入工具暂时保留,包括 scripts/import_hopms_dataset.py、对应测试和源 DOCX;docs/generated/*.json 作为验收样例一并保留,不随本轮历史模块删除。

8. 关键业务链路

8.1 DDL 到业务域

前端上传文件
-> /bd/ddlparse
-> DDLParser 本地解析或 LLM
-> 前端确认表/字段
-> /bd/save 或 /bd/update
-> Neo4j BusinessDomain + DataMeta + LABEL/INCLUDES/COME_FROM
-> 命中重复规则时写 metadata_review_records
-> /dataReview 人工处理
-> metadata_version_history + Neo4j 合并/新建

8.2 数据订单到数据产品

创建 data_orders
-> LLM 提取业务域/字段/用途/标签
-> Neo4j 匹配和连通性分析
-> 人工审批
-> 创建输出 BusinessDomain/DataMeta/DataFlow
-> 注册 data_products
-> 创建 task_list
-> 生成 n8n workflow JSON
-> n8n 执行脚本
-> onboard 回调
-> 用户确认 completed

8.3 数据产品预览与血缘

data_products 定位 schema/table
-> information_schema 读取列
-> 动态 SELECT 读取样例/统计
-> Neo4j 根据 source_dataflow_id 查目标业务域和字段标签
-> 前端表格/血缘图展示

8.4 数据治理知识库(下一轮目标链路)

现有 /knowledge-base-product 页面仍使用产品资料字段和已下线的 /text/product/list、历史 RAG 对比组件,不能直接作为新功能后端契约。建议保留页面入口但重构名称、数据模型和交互:

业务域 / DataFlow / DataMeta / 数据标准 / 数据标签等治理定义
-> 按实体类型、业务域、版本、责任人和权限抽取标准知识文档
-> 治理对象变更后增量同步,并每日执行一次全量一致性巡检
-> 保存来源实体 ID、版本、内容哈希和更新时间
-> 使用 Qwen Embedding 建立语义索引,同时保留关键词检索
-> 检索结果携带来源、实体类型和版本引用
-> DeepSeek 基于检索上下文回答
-> 用户可回跳原始治理对象核验答案

首期至少需要:变更增量同步、每日一致性巡检、统一搜索、问答、来源引用、权限过滤和索引状态;不得直接复用 Vanna、旧 /rag/*/text/product/* 契约。知识库应以现有治理实体为事实源,不维护另一套无法追溯的手工副本。DeepSeek 负责生成式问答,Qwen Embedding 只负责向量化,两类模型配置和调用适配必须解耦。

8.5 工作台(下一轮目标链路)

现有 /home/edit 调用已下线的 /authentication/user/menu/*,且标准组件清单基本被注释。首期标准组件确认为:待审核数、订单状态、数据产品统计、数据源健康和 n8n 执行状态。后端按用户保存组件 ID、布局、尺寸和必要配置;组件能力由三级 RBAC 过滤,不开放任意前端组件路径或脚本配置。

9. 风险与技术债优先级

P0:迭代开始前必须处理

  1. 撤销并轮换仓库中的真实凭据。 删除 Git 跟踪的 SSH 私钥,轮换 SSH、LLM、n8n、MinIO、Neo4j、PostgreSQL 凭据;必要时清理 Git 历史。
  2. 落实唯一源码。 app/ 已确认为唯一后端源码;将 deployment/ 改为生成产物,先逐项审查并把部署副本中仍有效的修复合并回 app/,再执行单向同步,禁止当前脚本直接覆盖。
  3. 修复认证闭环。 使用 Argon2/bcrypt 密码哈希、签发有时效的 JWT/session、后端统一鉴权和管理员/编辑者/查看者三级 RBAC;首期不提供自助注册,禁止只依赖前端路由守卫。
  4. 关闭危险匿名能力。 优先保护任意 Cypher、数据源连接测试、文件上传下载、订单审批和系统配置接口。
  5. 建立前端删除清单。 以路由可达性、组件 import 和 API 引用为依据清理 348 个历史调用;默认删除,只有产品明确保留的模块才重新设计后端契约。
  6. 对生产数据库做只读 schema 快照。 对比 SQLAlchemy 模型、SQL 文件和实际表结构,再生成正式迁移基线。

P1:架构稳定化

  1. 统一 HTTP 状态码和响应结构,建立 OpenAPI 契约。
  2. 引入 Alembic 正式 revision,停止手工无序 SQL 发布。
  3. 将 Neo4j 查询、PostgreSQL ORM/SQL、MinIO 和 n8n 抽为 Repository/Adapter。
  4. 为订单审批引入 Saga/Outbox、幂等键、补偿清理和可恢复步骤状态。
  5. 用业务 UUID 替代 Neo4j 内部 id()
  6. 校验动态 schema/table 标识符;限制数据源连接测试的协议、网段和账号权限。
  7. 删除 DataFlow 的 mock 执行、状态和日志接口,同时保留 DataFlow 作为定义和血缘节点的语义。

P2:前端与功能收敛

  1. 为活跃路由建立明确 API ownership;优先保证数据研发、数据地图、数据服务和审核闭环。
  2. 修复数据标准删除路径缺少 /interface 前缀的问题。
  3. 删除硬编码的数据资产原型页面和路由。
  4. 删除 Vanna/DataChart/ModelSystem、Airflow 配置、DataFlow 运行时操作、问卷薪酬、图表定制、旧系统管理、名片解析、数据资源、数据模型、数据指标、旧数据工厂非 n8n 页面和 task-manager MCP 服务;保留数据安全入口。
  5. 前端升级到受支持 Node LTS;本轮保持 Vue 2,Vue 3 渐进迁移明确放到下一阶段。
  6. 移除生产环境全局禁用 console.error,接入统一前端错误上报。
  7. 将原产品知识库重构为数据治理知识库,围绕业务域、数据流程、元数据等治理定义设计采集、索引、检索和问答契约;工作台重建按用户保存布局的后端契约,首期仅提供有限标准组件。两者均不复用已经下线的历史接口。

P3:工程化与可观测性

  1. 后端单元、API 契约、PostgreSQL/Neo4j 集成、订单 Saga 和前端 E2E 测试。
  2. CI 中执行 lint、type check、test、依赖/密钥扫描和部署包一致性检查。
  3. 统一结构化日志、request ID、审计日志、指标和告警。
  4. 前后端构建产物版本化,部署后自动进行健康、登录和关键页面烟测。

10. 建议的下一轮开发计划

Sprint 0:基线与安全收口(1–2 周)

  • 凭据轮换和 Git 安全清理。
  • 合并 app/deployment/app/,建立一致性 CI。
  • 导出生产 API 路由、网关配置、PostgreSQL schema 和 Neo4j schema。
  • 定义核心域负责人:元数据、业务域、DataFlow 定义/血缘、n8n 执行编排、订单/产品、数据治理知识库。
  • 产出 OpenAPI v1 和历史代码删除清单。

退出条件: 可以明确回答每个活跃页面调用哪个服务、部署哪份代码、读写哪些数据。

Sprint 1:认证、契约与迁移(2–3 周)

  • 新认证机制和管理员/编辑者/查看者三级 RBAC;部署初始化创建首个管理员,关闭自助注册,后续用户由管理员创建,并为危险接口加权限。
  • 统一错误码、HTTP 状态和请求校验。
  • 建立 Alembic 基线与生产 schema 差异报告。
  • 修复活跃页面已知接口错配和登录 token 契约。

退出条件: 未登录无法访问业务 API;数据库变更可版本化、可回滚。

Sprint 2:订单可靠性与 DataFlow 语义收口(3–4 周)

  • 将订单审批拆为可恢复步骤,加入幂等、Outbox 和补偿。
  • 删除 DataFlow 运行、状态和日志的 mock 链路,统一其“定义与血缘节点”定位。
  • 保留 n8n 订单工作流链路及 workflow 原生命名,前端统一显示“n8n 工作流/执行编排”;实现一个 DataFlow 对多个有版本标识的 Workflow,并保证同一环境只有一个当前生效版本,同时升级部署、执行追踪、失败重试和 onboard 回调可靠性。
  • 建立订单—任务—流程—产品一致性巡检。

退出条件: 任一步骤失败可重试或补偿,不留下不可解释的半成品。

Sprint 3:前端与外部能力收敛(3–5 周)

  • 按页面清理 348 个未匹配调用,删除 Vanna、Airflow、问卷薪酬、图表定制、旧系统管理、名片解析、数据资产原型、数据资源、数据模型、数据指标、旧数据工厂非 n8n 页面、task-manager MCP 服务和其他不可达历史页面;恢复并保留数据安全占位入口。
  • 外部服务客户端分域,环境配置显式化。
  • 建立数据治理知识库的增量同步、每日全量一致性巡检、Qwen Embedding 检索和 DeepSeek 问答能力;建立工作台按用户保存布局能力,首期组件为待审核数、订单状态、数据产品统计、数据源健康和 n8n 执行状态。
  • 升级 Node LTS 和前端依赖,保持 Vue 2,补齐关键页面 E2E;Vue 3 迁移进入下一阶段计划。

退出条件: 活跃菜单中不再出现静态演示页或无所有者接口。

Sprint 4:可观测性与发布(2–3 周)

  • 全链路 request/trace ID、结构化日志、审计日志和告警。
  • CI/CD、数据库迁移门禁、部署包校验和回滚演练。
  • 性能基线:大图查询、DDL 解析、产品预览、订单分析。

11. 验收指标建议

领域 指标
API 闭环 活跃页面 API 100% 有明确服务 owner;无 owner 调用为 0
安全 仓库密钥扫描为 0;危险接口认证覆盖 100%
数据库 ORM/DDL/生产 schema 差异为 0;所有变更有 migration revision
可靠性 订单跨存储步骤可重试、可补偿;重复审批不产生重复资源
测试 核心后端服务、API 契约和活跃页面 E2E 纳入 CI
发布 app/ 与发布包一致性自动校验;部署可回滚
可观测性 订单、任务、流程、n8n 执行可用同一关联 ID 查询

12. 本次验证边界

已完成:

  • 全仓库文件、路由、前端 API、页面导入、ORM、SQL、Cypher、部署脚本和配置的静态解析。
  • 147 个 Python 文件语法解析,语法错误为 0。
  • 主源码与部署副本差异检查。
  • 当前工作树检查;仅保留用户已有的 frontend/src/router/routes.js 菜单隐藏修改,未覆盖该改动。

未完成且需要后续环境支持:

  • 当前本机 Python 环境没有 Flask、SQLAlchemy、Neo4j、MinIO、OpenAI、psycopg2、pandas、numpy 和 pytest,现有 18 个后端测试函数无法执行。
  • frontend/node_modules 不存在,未执行前端构建或浏览器 E2E。
  • 本次没有连接生产 PostgreSQL、Neo4j、MinIO、n8n 或线上网关,因此“外部/未实现”表示本仓库未找到对应实现,不等于线上一定不可用。
  • 未对线上静态包和服务器当前部署副本做实时校验。

13. 建议立即补充的架构产物

  1. OPENAPI.yaml:本仓库 107 个路由的正式契约。
  2. FRONTEND_REMOVAL_INVENTORY.md:348 个历史调用对应的页面、组件、API 定义、删除批次和少量保留例外。
  3. DATA_MODEL.md:PostgreSQL ER 图、Neo4j 标签/关系约束、跨存储 ID 规则。
  4. DEPLOYMENT_SOURCE_OF_TRUTH.md:源码到发布包、前端静态包、Nginx/Gunicorn 的唯一发布链。
  5. ADR-001-authentication.mdADR-002-workflow-engine.mdADR-003-cross-store-consistency.md

完成以上基线后,再排具体功能需求,能显著降低下一轮迭代在认证、接口归属、数据库迁移和部署回退上的返工。

14. 详细设计决策补充

以下边界已由产品侧确认,后续设计和开发计划直接以此为准:

  1. 数据治理知识库采用“治理对象变更后增量同步 + 每日全量一致性巡检”。增量同步负责时效性,每日巡检负责发现漏同步、版本漂移和孤立索引。
  2. DeepSeek 负责知识库最终问答;语义检索允许使用 Qwen Embedding 模型。Qwen Embedding 是专用向量化依赖,不恢复 Qwen 作为生成式 LLM 的回退路径。具体 Embedding 型号、向量维度和索引存储属于技术选型,不再构成产品边界问题。
  3. 一个 DataFlow 可以对应多个有明确版本标识的 n8n Workflow;不同环境分别管理生效状态,同一个 DataFlow 在同一环境只允许一个当前生效版本。
  4. 工作台首期标准组件包括待审核数、订单状态、数据产品统计、数据源健康和 n8n 执行状态,支持按用户保存布局。
  5. 部署初始化时创建第一个管理员;系统不开放自助注册,后续新用户由管理员创建,并赋予管理员、编辑者或查看者角色。
  6. HOPMS 的 docs/generated/*.json 作为验收样例保留,同时保留源 DOCX、导入脚本和自动化测试。

附录 A:107 个后端路由逐项索引

本附录记录瘦身实施前的当前代码基线,由 app/api/*/routes.py 的 Blueprint 前缀和路由装饰器逐项核对。已确认删除的 DataFlow 运行时路由仍列在这里,便于后续通过路由数量变化验证清理结果。

A.1 business_domain

POST   /api/bd/list
POST   /api/bd/detail
POST   /api/bd/delete
POST   /api/bd/save
POST   /api/bd/update
POST   /api/bd/upload
GET    /api/bd/download
POST   /api/bd/graphall
POST   /api/bd/ddlparse
POST   /api/bd/search
POST   /api/bd/compose
POST   /api/bd/labellist

A.2 data_factory

GET    /api/datafactory/workflows
GET    /api/datafactory/workflows/{workflow_id}
GET    /api/datafactory/workflows/{workflow_id}/status
POST   /api/datafactory/workflows/{workflow_id}/activate
POST   /api/datafactory/workflows/{workflow_id}/deactivate
GET    /api/datafactory/workflows/{workflow_id}/executions
GET    /api/datafactory/executions
GET    /api/datafactory/executions/{execution_id}
POST   /api/datafactory/workflows/{workflow_id}/execute
GET    /api/datafactory/health

A.3 data_flow

GET    /api/dataflow/get-dataflows-list
GET    /api/dataflow/get-dataflow/{dataflow_id}
POST   /api/dataflow/add-dataflow
PUT    /api/dataflow/update-dataflow/{dataflow_id}
DELETE /api/dataflow/delete-dataflow/{dataflow_id}
POST   /api/dataflow/execute-dataflow/{dataflow_id}
GET    /api/dataflow/get-dataflow-status/{dataflow_id}
GET    /api/dataflow/get-dataflow-logs/{dataflow_id}
GET    /api/dataflow/get-BD-list
GET    /api/dataflow/get-script/{dataflow_id}

A.4 data_interface

POST   /api/interface/data/standard/add
POST   /api/interface/data/standard/detail
POST   /api/interface/data/standard/code
POST   /api/interface/data/standard/update
POST   /api/interface/data/standard/list
POST   /api/interface/data/standard/graph/all
POST   /api/interface/data/label/add
POST   /api/interface/data/label/detail
POST   /api/interface/data/label/list
POST   /api/interface/labellist
POST   /api/interface/graphall
POST   /api/interface/data/label/dynamic/identify
POST   /api/interface/data/label/graph/all
POST   /api/interface/metric/label/standard/delete
POST   /api/interface/data/label/delete

A.5 data_service

GET    /api/dataservice/products
GET    /api/dataservice/products/{product_id}
GET    /api/dataservice/products/{product_id}/preview
POST   /api/dataservice/products/{product_id}/lineage-visualization
GET    /api/dataservice/products/{product_id}/download
POST   /api/dataservice/products/{product_id}/viewed
POST   /api/dataservice/products/{product_id}/refresh
DELETE /api/dataservice/products/{product_id}
POST   /api/dataservice/products
GET    /api/dataservice/orderlist
GET    /api/dataservice/orders/{order_id}/detail
POST   /api/dataservice/neworder
PUT    /api/dataservice/orders/{order_id}/update
POST   /api/dataservice/orders/{order_id}/analyze
POST   /api/dataservice/orders/{order_id}/approve
POST   /api/dataservice/orders/{order_id}/reject
POST   /api/dataservice/orders/{order_id}/onboard
POST   /api/dataservice/orders/{order_id}/complete
PUT    /api/dataservice/orders/{order_id}/delete

A.6 data_source

POST   /api/datasource/save
POST   /api/datasource/list
POST   /api/datasource/delete
POST   /api/datasource/parse
POST   /api/datasource/valid
POST   /api/datasource/conntest
POST   /api/datasource/graph

A.7 graph

POST   /api/graph/query
POST   /api/graph/node/create
POST   /api/graph/relationship/create
POST   /api/graph/subgraph

A.8 meta_data

POST   /api/meta/node/list
POST   /api/meta/node/graph
POST   /api/meta/node/delete
POST   /api/meta/node/edit
GET    /api/meta/check
POST   /api/meta/node/add
GET    /api/meta/search
POST   /api/meta/full/text/query
POST   /api/meta/unstructure/text/query
POST   /api/meta/resource/upload
POST   /api/meta/resource/display
GET    /api/meta/resource/download
POST   /api/meta/resource/translate
POST   /api/meta/resource/node
POST   /api/meta/unstructured/process
POST   /api/meta/text/graph
GET    /api/meta/config
POST   /api/meta/node/update
POST   /api/meta/review/list
POST   /api/meta/review/create
GET    /api/meta/review/detail
POST   /api/meta/review/resolve

A.9 system

GET    /api/system/health
GET    /api/system/config
GET    /api/system/info
GET    /api/system/config/validate
POST   /api/system/auth/register
POST   /api/system/auth/login
GET    /api/system/auth/user/{username}
POST   /api/system/translate

附录 B:2026-07-16 历史代码清理实施回填

本附录记录依据本报告和产品确认结论完成的第一轮代码瘦身。附录 A 仍保留清理前的 107 路由基线,便于追溯对比。

B.1 恢复点

  • 清理前完整归档:/Users/maxiaolong/Documents/Codex/2026-07-06/g-i/DataOps-platform-backup-before-cleanup-20260716-170321.tar.gz
  • 归档大小:11 MB。
  • SHA-256:866c6c4aff127f88497a5ddf39ac8d8da93008cc784ae6f276f80a7cd17d4ef0
  • 归档包含 .git/app/frontend/database/deployment/、分析报告及清理前未提交工作树,可直接用于逐文件恢复。

B.2 已完成清理

  • 删除 216 个已跟踪历史文件,净删除约 3.5 万行;包含 Vanna/DataChart、ModelSystem、数据资产原型、问卷薪酬、图表定制、数据资源/模型/指标、旧数据来源、旧系统管理、旧数据工厂非 n8n 页面、不可达工作台动态图表组件和 mcp-servers/task-manager/
  • 前端 API 定义由清理前 430 个调用收敛为 79 个实际 HTTP 调用,删除 351 个(81.6%);dataFactory.js 仅保留 10 个 n8n 适配调用。
  • DataFlow 后端删除执行、状态、日志 3 条 mock 路由和对应服务方法;后端路由由 107 条降为 103 条,额外删除了与产品权限边界冲突的公开自助注册路由。
  • 数据安全保留可见占位入口;数据治理知识库入口改正名称并明确增量同步、每日一致性巡检、Qwen Embedding 与 DeepSeek 问答的后续边界。
  • 工作台收敛为待处理审核、数据订单状态、数据产品统计、数据源健康度、n8n 执行状态 5 个标准组件,支持按当前用户名保存显示和排序。
  • 删除日历、微信用户、名片、酒店品牌和酒店职位相关 Python 迁移代码及 14 个初始化/迁移 SQL;保留订单、产品、审核、版本和任务 6 个核心 SQL。本轮未执行任何生产表删除。
  • deployment/app/ 中 12 处有效的 DeepSeek、DDL 解析、环境加载、日志、时区和健康检查修复回并到 app/,删除 Airflow 与 Qwen 生成式配置,再通过 deployment/sync_release.sh 单向刷新部署副本;app/database/ 与部署副本当前无差异。
  • 前端运行时从固定 Node 14.7.0 升级为 Node 24 LTS 范围 >=24 <25,增加 .nvmrc 并更新锁文件;Vue 2 保持不变。

B.3 验证结果

  • 清理契约:8 项通过,覆盖保留入口、删除目录、API 收敛、DataFlow/n8n 边界、HOPMS 样例、Node LTS 和历史 SQL。
  • Python:compileall 通过;最终隔离环境执行 pytest 共 38 项通过。
  • 前端:Node v24.14.0、npm 10.9.8 下依赖安装成功,生产构建成功,无缺失模块或 ESLint 错误。
  • 部署一致性:diff -qr app deployment/appdiff -qr database deployment/database 均为空。
  • 仍需后续处理的已知技术债:Vue 2 及部分前端依赖已停止维护,安装审计报告 72 个依赖漏洞,构建仍有 console、CSS 顺序和大包体警告;这些应与 Vue 3 迁移和依赖治理一并规划,不在本轮业务边界清理中升级。

B.4 下一轮明确待实现项

  • 正式的管理员、编辑者、查看者三级 RBAC;初始化首个管理员,并仅允许管理员创建用户。本轮已经关闭前后端自助注册入口,但未新增用户管理功能。
  • DataFlow 与 n8n Workflow 多版本映射:一个 DataFlow 可关联多个 Workflow 版本,同一环境仅一个当前生效版本。
  • 数据治理知识库的数据模型、增量同步、每日全量一致性巡检、Qwen Embedding 检索和 DeepSeek 问答。
  • 工作台 5 个标准组件的真实业务数据接口与服务端用户布局持久化。目前布局按用户保存在浏览器本地,适合作为第一阶段交互基线。

B.5 本地隔离环境与架构产物回填

  • 已在 deploy/docker/ 建立全本地隔离测试栈,包含 PostgreSQL 16、Neo4j 5、MinIO、n8n、Flask 后端和 Vue/Nginx 前端,使用独立网络、命名卷与本地端口。
  • 后端配置已移除提交在代码中的生产 n8n 回退地址和 Token;前端 n8n、助手、MinIO 预览和 DataFlow 默认数据源也改为显式环境配置或本地安全默认值。缺少配置时失败关闭,不再静默连接线上环境。
  • 2026-07-16 冒烟验证结果:6 个常驻服务均 healthy,MinIO 初始化容器退出码 0;前端、后端健康和 n8n 健康接口均返回 200;PostgreSQL、Neo4j 和 MinIO 数据初始化验证通过。
  • 架构产物已补充到 docs/architecture/:总览、103 路由 OpenAPI、前端删除清单、数据模型、部署源真相、认证 ADR、工作流引擎 ADR、跨存储一致性 ADR 和下一轮路线图。
  • 下一轮待实现项已拆为 5 份逐任务计划:平台契约/一致性基线、RBAC、DataFlow–n8n Workflow 版本、工作台持久化、数据治理知识库。