DATA_RESEARCH_GOVERNANCE_ONTOLOGY_OPTIMIZATION.md 29 KB

数据研发功能优化方案

任务标题:数据研发功能优化
文档状态:建议方案 / 待评审
适用范围:DataOps 平台“数据研发”模块
基线日期:2026-07-21

1. 方案摘要

本次升级建议把当前以“元数据、业务域、文件解析”为主的数据研发模块,升级为一个统一的数据知识生产与治理工作台:所有数据库结构、文件和图片先进入统一采集链路,形成带来源证据的候选数据元素;候选元素经过查重、映射、审核和版本管理后,进入业务域;多个业务域再共同服务于一个可版本化、可发布、可回滚的数据本体。

核心决策如下:

  1. 不推倒现有模块:复用现有数据源安全连接池、MinIO、Neo4j、元数据审核、版本历史、治理知识库和 RBAC。
  2. 统一所有信息来源:数据库直连、SQL/DDL、Excel、CSV、Word、PDF、扫描 PDF、图片都进入同一“采集任务—解析候选—证据—审核”流程。
  3. 分离四层对象:物理字段、数据元素、业务域、本体不能继续混为同一类元数据节点。
  4. 本体是独立治理对象:一个本体可关联多个业务域;业务域提供概念和数据元素,本体负责跨域语义、关系、约束和版本发布。
  5. 规则优先、AI 辅助:结构化来源先使用确定性解析;AI 只用于语义补全、同义词识别、概念/关系建议和低质量文档理解。AI 结果必须保留置信度和证据,不能直接发布。
  6. PostgreSQL 管控制面,Neo4j 管发布图:审核、任务、版本、发布状态和不可变快照以 PostgreSQL 为准;Neo4j 保存当前生效的语义图和查询投影;MinIO 保存原始文件及解析中间产物。

2. 当前能力与主要缺口

以下结论来自当前主源码 app/ 和 Vue 2 前端 frontend/src/,不把 deployment/app/ 发布副本重复计算为另一套实现。

能力 当前实现 结论
数据研发菜单 元数据、业务域、数据标准、数据流程、数据安全、数据标签、数据源 可保留导航体系,但缺少统一采集中心、本体中心和任务中心
文件采集 业务域支持上传 SQL、XLS/XLSX、DOC/DOCX、PDF、TXT 到 MinIO 文件存储可复用;上传和解析规则不一致
文件解析 /api/bd/ddlparse 支持 SQL、Excel、DOCX、文本型 PDF CSV、图片、扫描 PDF 未解析;.doc 虽在允许清单中,但解析时实际拒绝
DDL 解析 本地正则优先,复杂 DDL 回退 LLM 可作为兜底,但缺少方言级解析、约束/索引/血缘和证据位置
数据库直连 有安全凭据、连接池、只读 metadata_collection 用途 当前只支持 PostgreSQL/MySQL,尚无目录采集器和结构快照任务
数据元素 Neo4j DataMeta 节点,业务域通过 INCLUDES 关联 字段较少,物理字段与逻辑数据元素未分层
查重审核 PostgreSQL metadata_review_records 支持候选、处置和审核 可复用,但来源类型、证据、置信度和批次信息不足
版本历史 metadata_version_history 保存前后快照 可复用,但仍依赖 Neo4j 内部整数 ID;应全面切换稳定 UID
业务域 BusinessDomain 节点,可关联数据源、标签和 DataMeta 已具备跨对象图关系基础
图谱 Neo4j 已有通用节点、关系与图查询 当前 Entity 还不是完整本体模型,缺少类、属性、约束、版本和发布语义
治理知识库 PostgreSQL 文档/分块/向量和同步任务基础 可用于索引已发布的数据元素和本体版本
权限 后端统一 RBAC,现有 governance:read/editreview:approve 本体发布、来源采集、敏感文件下载需要更细粒度权限

2.1 根本问题

当前流程以“创建业务域时顺便上传并解析文件”为中心,导致来源、解析任务、候选项、审核结果和最终治理对象耦合在一个页面和同步请求中。随着来源类型增加,会出现以下问题:

  • 同一文件重复上传会产生重复候选,无法稳定重放或对比解析结果。
  • 长文档、OCR 和大库采集容易阻塞请求,失败后无法断点续跑。
  • 无法回答“这个数据元素来自哪个文件、哪一页、哪个表格、哪次数据库快照”。
  • 物理字段变更可能直接污染逻辑数据元素,无法区分结构漂移与业务语义变更。
  • 业务域组合只是组合数据元素,不等于本体建模,无法表达跨域概念、关系和约束。

3. 建设目标与边界

3.1 建设目标

  • 统一接入数据库和非结构化/半结构化文件,形成异步、可追踪、可重放的采集任务。
  • 建立数据元素从发现、标准化、查重、审核、发布到退役的完整生命周期。
  • 支持一个本体服务多个业务域,支持手工、模板、规则和 AI 辅助的动态本体构建。
  • 所有发布对象都具备稳定 UID、版本、责任人、来源证据、变更审计和权限范围。
  • 发布后的数据元素和本体可供数据目录、数据标准、数据服务、数据流、智能问答和 MCP 使用。

3.2 非目标

  • 第一阶段不抓取业务数据库的真实业务数据,默认只读取系统目录、DDL 和必要的统计信息。
  • 第一阶段不把 LLM 输出当作治理事实,也不允许 AI 自动发布本体。
  • 不在本次升级中替换 Neo4j、PostgreSQL、MinIO 或现有工作流控制面。
  • 不立即删除现有 /api/meta/api/bdDataMeta,采用兼容迁移。

4. 统一领域模型

必须明确以下对象边界:

层次 对象 示例 主要责任
物理层 数据资产、表、字段、文件片段 ods_order.order_id、Excel 第 2 个 Sheet 第 5 行 记录真实来源结构和结构漂移
治理层 数据元素 订单编号、客户证件号码 统一名称、定义、数据类型、标准、敏感等级和质量规则
业务层 业务域 订单域、客户域、供应链域 组织数据元素、责任人和业务上下文
语义层 本体类、属性、关系、约束 客户、订单、客户下单、订单必须有订单编号 构建跨域一致的机器可理解语义

推荐关系模型:

graph LR
  S["来源 Source"] --> A["物理资产 PhysicalAsset"]
  A --> F["物理字段 PhysicalField"]
  F -->|REALIZES| E["数据元素 DataElement"]
  D1["业务域 A"] -->|OWNS_OR_USES| E
  D2["业务域 B"] -->|OWNS_OR_USES| E
  O["本体 Ontology"] -->|SERVES_DOMAIN| D1
  O -->|SERVES_DOMAIN| D2
  O --> C["本体类 OntologyClass"]
  C --> P["本体属性 OntologyProperty"]
  E -->|MAPS_TO| P
  C --> R["本体关系 OntologyRelation"]

业务域与本体是多对多关系。一个业务域可参与多个专题本体,一个本体也可整合多个业务域。BusinessDomain-[:INCLUDES]->DataMeta 在兼容期保留,但新模型应逐步迁移为稳定 UID 关系。

5. 目标架构

5.1 总体流程

flowchart LR
  subgraph Sources["信息来源"]
    DB["数据库直连"]
    DDL["SQL / DDL"]
    TAB["Excel / CSV"]
    DOC["Word / PDF"]
    IMG["扫描 PDF / 图片"]
  end

  Sources --> IN["统一采集服务"]
  IN --> RAW["MinIO 原始件与中间件"]
  IN --> JOB["异步采集任务"]
  JOB --> EX["确定性抽取 / OCR / 文档解析"]
  EX --> NORM["统一规范化与来源证据"]
  NORM --> AI["规则匹配 + AI 语义建议"]
  AI --> CAND["候选数据元素 / 候选本体变更"]
  CAND --> REVIEW["人工审核与差异处置"]
  REVIEW --> VER["版本化治理对象"]
  VER --> PG["PostgreSQL 控制面"]
  VER --> OUTBOX["Outbox 发布事件"]
  OUTBOX --> NEO["Neo4j 当前生效语义图"]
  OUTBOX --> KB["治理知识库 / 向量索引"]

5.2 存储职责

存储 权威数据 不应承担的职责
PostgreSQL 采集任务、解析候选、证据索引、审核、版本快照、发布状态、权限范围、审计 不承担大文件内容和高频图遍历
Neo4j 当前生效的数据元素、业务域、本体类/属性/关系及映射图 不作为审核状态和不可变版本历史的唯一真相源
MinIO 原始上传件、OCR 结果、解析中间产物、导入/导出包 不保存治理状态
治理知识库 已发布版本的检索文档、分块、向量 不代替结构化治理对象和权限判断

跨存储发布使用现有 Outbox 思路:PostgreSQL 先提交版本与发布事件,消费者幂等更新 Neo4j 和知识索引,失败可重试和对账,避免接口内直接双写。

6. 多源采集与解析设计

6.1 统一采集对象

所有来源统一抽象为:

  • IngestionSource:来源定义,如数据库数据源、上传文件、手工粘贴 DDL。
  • IngestionJob:一次采集运行,记录状态、解析器版本、参数、发起人、统计和错误。
  • SourceArtifact:原始文件或数据库结构快照,包含 SHA-256、MIME、大小、MinIO 地址和保留策略。
  • EvidenceFragment:候选项的证据位置,如库/Schema/表/字段,或文件页码/Sheet/表格/单元格/图片框坐标。
  • ExtractionCandidate:统一的候选表、字段、数据元素、概念或关系,包含置信度和建议来源。

同一来源、同一内容哈希、同一解析器版本应具备幂等键。用户可选择复用已有结果或强制以新解析器版本重跑。

6.2 数据库直连

复用 DataSourceConnectionManager.connect(uid, "metadata_collection"),新增数据库目录采集器:

  1. 选择数据源、Schema、表/视图范围和排除规则。
  2. 通过白名单系统目录查询采集表、视图、字段、类型、默认值、主外键、唯一约束、索引、注释。
  3. 默认只读元数据;表行数、空值率等统计必须单独授权、限时和限量。
  4. 生成结构快照,与上一次快照比较新增、删除、重命名和类型变化。
  5. 把物理字段映射为候选数据元素,进入统一审核,不直接覆盖已发布元素。

第一阶段覆盖当前已实现的 PostgreSQL、MySQL;Oracle、SQL Server 需要先新增安全适配器、目录查询和测试矩阵,不能只在页面上增加类型选项。

6.3 文件与图片

来源 主解析器 AI/OCR 作用 关键输出
SQL/DDL SQL 方言解析器;失败时使用现有本地/LLM 兜底 补充中文名、业务定义和同义词 表、字段、约束、注释、血缘引用
XLS/XLSX 工作簿、Sheet、表头和单元格确定性读取 识别非标准数据字典模板 字段行、单元格证据、模板映射
CSV 编码/分隔符探测和流式读取 推断业务含义,不替代原始值 列、推断类型、表头证据
DOCX 段落、标题和表格结构解析 识别散文中的字段定义 文档片段、表格坐标、候选元素
文本型 PDF 页面文本和表格解析 版面语义合并 页码、表格、文本块
扫描 PDF/图片 OCR + 版面分析 纠错、语义归一和关系建议 文字框坐标、页码、OCR 置信度

处理要求:

  • 上传校验统一 MIME、扩展名、魔数、大小和页数限制,不再由“上传接口”和“解析接口”维护两套清单。
  • .doc 明确为“不支持并要求转换”,或增加受控的服务端转换;不能继续出现接口文档声称支持、运行时拒绝的状态。
  • 对 CSV、Excel 的值样本默认只在任务内存或受控临时区处理;进入证据库前做敏感信息识别和脱敏。
  • 每个候选项必须能回到原始证据;用户在审核页可点击定位到具体字段、页码、Sheet 或图片区域。
  • 解析器采用插件接口 can_handle / extract / normalize / evidence,便于后续增加 Markdown、JSON Schema、OpenAPI 等来源。

6.4 异步任务

文件解析、OCR、数据库全量采集必须异步执行,前端使用任务状态轮询或服务端事件获取进度。建议状态:

created -> queued -> extracting -> normalizing -> matching -> awaiting_review -> published/partial/failed/cancelled

每个阶段记录输入哈希、输出哈希、耗时、解析器版本和错误摘要,支持从失败阶段重试,不重复执行已成功且输入未变化的阶段。

7. 数据元素治理升级

7.1 数据元素主数据

在现有 DataMeta 基础上建立正式 DataElement 语义,至少包含:

  • 稳定 uid、编码、中文名、英文名、简称、别名和定义。
  • 逻辑数据类型、长度、精度、格式、值域、计量单位、是否可空。
  • 数据标准、敏感等级、分级分类、质量规则、主数据标识。
  • 所属/使用业务域、责任人、责任组织、状态和生效区间。
  • 来源类型、来源 UID、证据 UID、置信度、创建方式。
  • 当前版本、发布状态、替代元素和废止原因。

物理字段与数据元素是多对多映射:同一数据元素可由多套系统字段实现,一个物理字段也可能承载复合语义,但后者必须进入人工审核。

7.2 生命周期

candidate -> draft -> in_review -> published -> deprecated -> retired

  • 候选:解析器或人工发现,尚未成为治理事实。
  • 草稿:已认领并完成基础字段。
  • 审核中:冻结本次变更集,计算与现有元素的差异和影响范围。
  • 已发布:写入当前语义图并同步治理知识库。
  • 已废止/退役:保留历史和替代关系,不做物理删除。

7.3 匹配与审核

匹配分为四级,均保留原因:

  1. 确定性匹配:稳定 UID、来源路径、标准编码。
  2. 规则匹配:中英文名、别名、类型、值域、业务域。
  3. 语义匹配:向量相似度和 LLM 解释。
  4. 人工判定:复用、合并、创建、映射、忽略、退役。

现有 metadata_review_records 可作为第一阶段审核底座,新增 ingestion_job_uidcandidate_uidevidence_uidsconfidenceparser_versionbusiness_domain_uid 和影响分析字段。所有新逻辑使用稳定 UID,Neo4j 整数 ID 只用于旧接口兼容。

8. 本体定义与动态本体构建

8.1 本体对象

本体不是业务域的另一个名称,应包含:

  • Ontology:名称、编码、目的、所有者、适用范围、状态。
  • OntologyVersion:不可变版本、父版本、变更摘要、发布人和发布时间。
  • OntologyClass:业务概念及层级,例如客户、订单、产品。
  • OntologyProperty:概念的属性,可映射到一个或多个数据元素。
  • OntologyRelation:概念间有方向、有基数的业务关系。
  • OntologyConstraint:必填、唯一、值域、基数、互斥、依赖等约束。
  • OntologyMapping:本体类/属性与业务域、数据元素、物理资产的映射。

内部使用平台图模型;对外提供 RDF/OWL 导入导出,并可用 SHACL 表达约束。外部标准是交换边界,不要求平台内部所有治理状态都存成 RDF 三元组。

8.2 多业务域服务一个本体

新增显式关系:

  • Ontology-[:SERVES_DOMAIN {role, scope, priority}]->BusinessDomain
  • BusinessDomain-[:CONTRIBUTES]->OntologyClass
  • DataElement-[:MAPS_TO {mapping_type, confidence, status}]->OntologyProperty

role 可取 owner/contributor/consumer。本体发布前必须至少有一个 owner 业务域和责任人,避免跨域本体无人负责。

8.3 动态构建模式

支持四种模式并存:

  1. 手工建模:拖拽新增类、属性、关系和约束。
  2. 模板构建:从行业或企业模板复制一个草稿版本。
  3. 来源驱动:从已发布数据元素、业务域关系和数据库主外键生成候选图。
  4. AI 辅助:基于定义、别名、样例和文档证据建议概念聚类、父子类、关系和约束。

动态构建只生成 OntologyChangeSet,不能直接修改已发布图。每个建议必须显示:建议类型、置信度、证据、影响对象、冲突和接受/拒绝原因。

8.4 版本与发布

  • 草稿版本允许多人协作,但发布时生成不可变快照和内容哈希。
  • 变更分为新增、修改、删除、重命名、合并、拆分和映射变化。
  • 发布前执行命名唯一性、悬空关系、循环继承、基数冲突、必填属性映射和权限检查。
  • 破坏性变更必须展示受影响的数据元素、数据流、数据产品和知识索引。
  • 回滚不是覆盖历史,而是基于旧版本创建一个新的发布版本。
  • Neo4j 只暴露当前生效版本;历史版本从 PostgreSQL 快照恢复或按需投影。

9. 建议数据模型

9.1 PostgreSQL 控制面

作用
ingestion_sources 统一来源定义和权限范围
ingestion_jobs 异步任务状态、参数、统计、错误和幂等键
source_artifacts 原始件元数据、哈希、MIME、MinIO 地址和保留策略
evidence_fragments 页码、Sheet、单元格、字段路径、图片框坐标等证据
extraction_candidates 标准化候选对象、置信度、解析器和处置状态
data_element_versions 数据元素不可变版本快照
ontologies 本体主记录、所有者和状态
ontology_versions 本体不可变版本及内容哈希
ontology_change_sets 动态构建建议、审核和发布变更集
ontology_publish_runs 发布、投影、知识索引同步和对账结果

已有 metadata_review_recordsmetadata_version_historygovernance_documents/chunks 和 Outbox 先扩展复用,不重复造同类表。

9.2 Neo4j 发布图

建议节点标签:

SourcePhysicalAssetPhysicalFieldDataElementBusinessDomainOntologyOntologyClassOntologyPropertyOntologyRelationDataStandardDataLabel

所有节点必须有唯一稳定 uid;关键关系也应有 uid 或由版本快照中的稳定键唯一标识。至少建立 UID 唯一约束和名称/编码查询索引。

10. API 设计

为降低旧接口耦合,建议新增编排边界 /api/development/v1,旧的 /api/meta/api/bd/api/datasource 保持兼容,由新服务复用底层能力。

10.1 采集与任务

  • POST /sources/files:上传原始件并返回 artifact_uid
  • POST /ingestion-jobs:创建文件、DDL 或数据库采集任务。
  • GET /ingestion-jobsGET /ingestion-jobs/{uid}:列表、进度和错误。
  • POST /ingestion-jobs/{uid}/retry|cancel:重试或取消。
  • GET /ingestion-jobs/{uid}/candidates:候选项和证据。
  • GET /evidence/{uid}:按权限预览原始证据定位。

10.2 数据元素

  • GET/POST /data-elements
  • GET/PATCH /data-elements/{uid}
  • POST /data-elements/{uid}/submit-review
  • POST /data-elements/{uid}/publish|deprecate
  • GET /data-elements/{uid}/versions|lineage|mappings
  • POST /candidate-decisions/batch:批量复用、创建、映射或忽略。

10.3 本体

  • GET/POST /ontologies
  • POST /ontologies/{uid}/versions:创建草稿版本。
  • GET/PATCH /ontology-versions/{uid}/graph
  • POST /ontology-versions/{uid}/generate:从业务域/元素生成变更集。
  • POST /ontology-change-sets/{uid}/decisions:审核建议。
  • POST /ontology-versions/{uid}/validate|publish
  • POST /ontologies/{uid}/rollback
  • GET /ontologies/{uid}/diff?from=&to=
  • GET/POST /ontologies/{uid}/export|import:RDF/OWL/JSON 包。

列表接口统一分页、排序、过滤和错误结构;写接口接受幂等键;并发编辑使用版本号或 ETag,避免后提交覆盖先提交。

11. 前端信息架构

“数据研发”建议调整为以下二级菜单:

  1. 研发总览:来源数、任务成功率、待审核、元素质量、本体版本和结构漂移。
  2. 数据采集:数据库直连、文件上传、DDL 粘贴、采集配置和历史任务。
  3. 数据元素:由现“元数据”升级,增加来源、映射、版本、质量和影响分析。
  4. 业务域:保留现有页面,改为从已审核元素中编排,不再承担文件解析主流程。
  5. 本体中心:本体列表、业务域服务关系、版本、发布和差异比较。
  6. 本体工作台:图编辑、候选建议、冲突、约束校验和映射覆盖率。
  7. 审核中心:统一处理数据元素、本体变更和结构漂移。
  8. 任务中心:采集、解析、OCR、发布、索引同步的运行记录。

典型操作流:

选择来源 -> 配置范围 -> 启动任务 -> 查看解析预览 -> 批量处置候选 -> 提交审核 -> 发布数据元素 -> 选择多个业务域 -> 生成本体草稿 -> 校验/评审 -> 发布本体

12. 权限、安全与合规

在现有 RBAC 上新增权限:

  • ingestion:run:启动采集和解析任务。
  • ingestion:admin:配置解析器、重试和取消他人任务。
  • evidence:download:下载原始文件;普通读取者仅可预览脱敏片段。
  • data-elements:editdata-elements:publish
  • ontologies:editontologies:publish

建议角色映射:viewer 只读;editor 可采集和编辑草稿;reviewer 可审核;ontology_admin 可发布本体;admin 管理平台配置。后端必须逐接口强制权限,前端菜单隐藏只改善体验。

安全要求:

  • 数据源凭据继续密文保存且不回传页面;目录采集使用现有只读连接目的和超时限制。
  • 数据库查询必须由适配器生成并按数据库类型白名单化,不接受用户任意 SQL 作为“元数据采集”。
  • 上传文件执行类型/大小校验、恶意文件检测、压缩炸弹防护和租户/权限隔离。
  • 原始件、OCR 文本、模型请求和日志都要脱敏;禁止把凭据、连接串和敏感样例发送给 LLM。
  • 模型、提示词、解析器和 OCR 版本进入任务审计,保证结果可复现。

13. 分阶段实施路线图

以下按两周一个迭代估算,可由前后端、数据工程和测试并行推进。

V60:统一模型与采集底座(1 个迭代)

  • 确认四层领域模型、稳定 UID 和存储权威边界。
  • 建立采集任务、原始件、证据、候选项表和新 /api/development/v1 蓝图。
  • 把业务域现有上传入口适配到统一任务,保留旧接口兼容。
  • 增加任务列表、状态机、幂等、重试和基础指标。

V61:数据库直连与结构化文件(2 个迭代)

  • PostgreSQL/MySQL 目录采集、范围选择、结构快照和差异。
  • SQL 方言解析、CSV、Excel 确定性解析和证据定位。
  • 数据元素候选批量审核,扩展现有审核与版本表。
  • 业务域改为引用已审核数据元素。

V62:文档、PDF 与图片解析(2 个迭代)

  • DOCX、文本 PDF 结构抽取标准化。
  • 扫描 PDF/PNG/JPG OCR、版面定位、置信度和人工纠错。
  • 统一文件校验、敏感样例脱敏和 MinIO 保留策略。
  • 解析器质量评测集和回归基线。

V63:本体 MVP(2 个迭代)

  • 本体、版本、类、属性、关系、约束和多业务域关系。
  • 本体列表、图工作台、数据元素映射和完整性校验。
  • 手工与来源驱动构建、版本差异、发布和回滚。
  • PostgreSQL 到 Neo4j 的 Outbox 投影与对账。

V64:动态本体与知识服务(2 个迭代)

  • AI 概念聚类、关系/约束建议和可解释证据。
  • 候选变更集审核、冲突处理和影响分析。
  • RDF/OWL/JSON 导入导出,已发布本体同步治理知识库。
  • 为数据目录、数据流、数据产品、智能问答和 MCP 提供只读语义查询。

V65:生产加固(1 个迭代)

  • 大文件/大库压测、断点续跑、任务限流和容量规划。
  • 权限矩阵、审计、备份恢复、灾难演练和运营看板。
  • 旧接口双读对账、灰度切换和兼容清理清单。

14. 验收标准

14.1 功能验收

  • 数据库直连、SQL、XLS/XLSX、CSV、DOCX、文本 PDF、扫描 PDF、PNG/JPG 均可创建统一采集任务。
  • 每个候选数据元素至少关联一个可回溯证据;文件证据定位到页/Sheet/单元格/区域,数据库证据定位到数据源/Schema/表/字段/快照。
  • 同一文件哈希和解析器版本重复提交不会重复创建治理对象。
  • 数据库结构变化生成差异任务,不直接覆盖已发布数据元素。
  • 一个本体可关联至少两个业务域,并可区分 owner、contributor、consumer。
  • 本体支持草稿、校验、审核、发布、版本差异和基于旧版创建回滚版。
  • AI 建议未经人工接受无法进入已发布数据元素或本体。

14.2 质量与性能验收

  • 预置金标样本集覆盖所有来源类型,并分别统计表识别、字段识别、类型识别、证据定位和语义匹配准确率。
  • 结构化来源字段识别准确率目标不低于 99%;文档/OCR 以金标集确定分层门槛,低置信度自动进入人工复核。
  • 1 万字段规模的数据库目录采集支持分页、超时、取消和重试;具体时延指标在 V60 用基准环境固化。
  • 发布任务具备幂等性;Neo4j 投影或知识索引失败时,PostgreSQL 已发布版本不丢失,可重试并对账。
  • viewer 对写接口返回 403;无效令牌返回 401;敏感原始件下载必须单独授权。

14.3 运维验收

  • 可查看任务成功率、平均耗时、失败阶段、候选接受率、人工审核时长、本体映射覆盖率和投影延迟。
  • 原始件、版本快照、Neo4j 投影和知识索引均有备份/恢复与一致性检查方案。
  • 日志和接口响应不出现数据库密码、完整连接串、访问令牌或未经授权的敏感样例。

15. 兼容迁移策略

  1. 为现有 BusinessDomainDataMetaDataSource 补齐并对账稳定 UID。
  2. 保留 DataMeta 标签和旧 API,新增 DataElement 语义及 UID 查询;兼容期双写关系但不双写版本真相。
  3. 将旧业务域上传记录按可获得信息回填为 SourceArtifact;无法恢复原始证据的对象标记 legacy_no_evidence,不得伪造证据。
  4. 新采集结果只进入候选和审核,不直接调用旧的业务域保存逻辑批量创建元数据。
  5. 先让新页面读取旧+新聚合视图,对账稳定后切换为新控制面读取。
  6. 旧接口下线必须有调用清单、灰度期和回滚开关;deployment/app/ 通过发布同步脚本更新,不直接作为主源码开发。

16. 主要风险与控制措施

风险 控制措施
把物理字段直接当业务概念 强制四层模型和显式映射,禁止采集任务直接发布
LLM 幻觉或结果漂移 规则优先、金标评测、版本记录、证据展示、人工发布门禁
OCR 低质量造成错误治理 置信度门槛、区域纠错、原图对照和人工复核
Neo4j 与 PostgreSQL 不一致 单一控制面、Outbox、幂等投影、周期对账和可重放
大库/大文件拖垮服务 异步任务、分页、限流、超时、取消、资源配额和独立 Worker
敏感数据进入日志或模型 最小采样、脱敏、模型请求审计、文件权限和凭据零暴露
本体范围过大难以落地 先选 2 个业务域和 1 个核心场景做 MVP,再扩域
旧接口兼容期长期不结束 建立调用清单、迁移看板和明确下线版本

17. 建议的 MVP 范围

首个可验证 MVP 建议选择“客户域 + 订单域”或平台现有数据最完整的两个业务域,完成:

  • PostgreSQL/MySQL 直连、SQL、Excel、CSV、DOCX/PDF 中至少各一个真实样本。
  • 100—300 个候选字段经过审核形成数据元素。
  • 构建一个跨两个业务域的本体,包含 10—20 个类、30—60 个属性和 10—20 条关系。
  • 演示结构变更发现、候选差异审核、本体版本发布、回滚和知识检索。

MVP 成功标准不是“图画出来”,而是能从任一本体属性回溯到数据元素、物理字段和来源证据,并能从一次来源变化看到对已发布语义的影响。

18. 评审时需要确认的业务决策

  1. 首个 MVP 选哪两个业务域,以及各自的 owner、数据管理员和本体审核人。
  2. 本体发布采用双人复核还是单人发布;破坏性变更是否必须平台管理员确认。
  3. 是否允许采集字段统计和少量脱敏样例,还是严格限定只读系统目录。
  4. OCR/LLM 使用本地模型还是外部服务,以及哪些数据等级禁止外发。
  5. 原始文件、OCR 文本、候选结果和历史版本的保留期限。
  6. Oracle、SQL Server 是 V61 必选范围还是后续扩展。

在这些业务决策未确认前,可以先实施 V60 的统一模型、任务、证据和兼容底座;这些工作不会锁死后续数据库、OCR 或模型选型。