图中“当前”表示已有建库脚本、Alembic 迁移或 Neo4j 读写代码;“目标”仅用于后续迁移设计,尚未部署到生产。
erDiagram
users {
varchar id PK
varchar username UK
varchar password "旧认证,仅本地验收"
boolean is_admin
}
data_orders {
serial id PK
varchar order_no UK
varchar status
integer result_product_id "逻辑引用"
integer result_dataflow_id "Neo4j 节点 ID"
integer data_source "Neo4j 节点 ID"
jsonb graph_analysis
}
data_products {
serial id PK
varchar product_name
integer source_dataflow_id "Neo4j 节点 ID"
varchar target_schema
varchar target_table
varchar status
}
metadata_review_records {
bigserial id PK
bigint business_domain_id "Neo4j 节点 ID"
varchar record_type
varchar status
jsonb new_meta
jsonb old_meta
jsonb resolution_payload
}
metadata_version_history {
bigserial id PK
bigint meta_id "Neo4j 节点 ID"
jsonb before_snapshot
jsonb after_snapshot
varchar created_by
}
task_list {
serial task_id PK
varchar task_name
varchar status
varchar create_by
}
datasource_credentials {
uuid id PK
uuid data_source_uid
integer credential_version
bytea encrypted_payload
bytea nonce
varchar key_version
varchar status
}
datasource_credential_audit_events {
bigserial id PK
uuid data_source_uid
integer credential_version
varchar event_type
varchar actor_uid
text safe_detail
}
data_orders }o--o| data_products : "result_product_id(当前无 FK)"
datasource_credentials ||--o{ datasource_credential_audit_events : "data_source_uid / credential_version"
当前脚本没有为跨表逻辑引用建立外键;跨 Neo4j 引用使用内部节点 ID,存在节点重建后失效风险。下一阶段必须引入稳定业务 UUID,内部节点 ID 仅用于查询加速,不作为长期契约。
flowchart LR
BD["BusinessDomain"] -->|"COME_FROM"| DS["DataSource"]
BD -->|"INCLUDES"| META["DataMeta"]
BD -->|"LABEL"| LABEL["DataLabel"]
META -->|"LABEL"| LABEL
META -->|"ALIAS"| PRIMARY["DataMeta 主对象"]
BD -->|"INPUT"| DF["DataFlow"]
DF -->|"OUTPUT"| TARGET["BusinessDomain"]
唯一方向约定:
BusinessDomain-[:COME_FROM]->DataSourceBusinessDomain-[:INCLUDES]->DataMetaBusinessDomain-[:INPUT]->DataFlowDataFlow-[:OUTPUT]->BusinessDomain-[:LABEL]->DataLabelalias DataMeta-[:ALIAS]->primary DataMeta遗留查询和注释中若出现反方向假设,应在下一阶段以自动化图模型契约测试消除。
Neo4j DataSource 节点保存 uid、类型、主机、端口、数据库、schema、
TLS 白名单选项、连接池覆盖项、credential_ref 和 credential_version。
节点不允许保存 username、password、conn_str、connection_string
或 connection_url。credential_ref 指向平台 PostgreSQL 中相同
data_source_uid 的当前不可变凭据版本:
flowchart LR
DS["Neo4j DataSource\nuid + credential_version"] -->|"逻辑引用"| CRED["PostgreSQL datasource_credentials\nAES-256-GCM 密文"]
CRED --> AUDIT["datasource_credential_audit_events\n不含密钥的审计明细"]
DS --> POOL["Worker 本地池键\nuid + version + fingerprint"]
数据库约束保证同一数据源每个 credential_version 唯一,且同一数据源最多
一个 active 版本。密文使用数据源 UID 和版本号作为认证附加数据,不能复制到
另一个数据源或版本后解密。删除生产凭据表不属于本轮范围。
下表均已由 migrations/ 中的 Alembic 版本链创建,不再只是设计目标。
| 表 | 核心字段 | 约束/用途 |
|---|---|---|
users |
id UUID, username, password_hash, status |
替换旧明文/可逆密码字段 |
roles |
id, code |
固定 admin/editor/viewer,即管理员、编辑者、查看者 |
user_roles |
user_id, role_id |
用户与角色映射 |
governance_responsibility_scopes |
resource_type, resource_uid, revision, updated_by |
业务域、设备、本体、映射、故障分类和质量问题的责任矩阵版本 |
governance_responsibility_assignments |
scope_id, user_id, responsibility_role, raci_role |
Owner、Steward、架构师、设备资产管理员与 RACI 责任绑定 |
governance_responsibility_audit_events |
resource_type, resource_uid, actor_uid, before_state, after_state |
责任矩阵变更前后快照与操作审计 |
dataflow_workflow_versions |
id, dataflow_uid, environment, version_no, n8n_workflow_id, status |
一个 DataFlow 对多个 n8n Workflow 版本 |
governance_documents |
object_type, object_uid, object_version, content_hash |
治理对象文本快照 |
governance_chunks |
document_id, chunk_no, content, embedding vector |
Qwen Embedding 结果 |
governance_sync_jobs |
mode, cursor, status, error |
增量同步和每日全量一致性巡检 |
workbench_layouts |
user_id, layout_version, widgets jsonb |
按用户保存有限标准组件布局 |
outbox_events |
event_id, aggregate_type, aggregate_id, payload, published_at |
跨存储最终一致性 |
datasource_credentials |
data_source_uid, credential_version, encrypted_payload, nonce, key_version, status |
外部数据源不可变加密凭据 |
datasource_credential_audit_events |
data_source_uid, credential_version, event_type, actor_uid, safe_detail |
不含秘密的凭据及连接池审计 |
ingestion_sources |
uid, source_type, config, permission_scope |
数据库、文件、DDL 采集来源 |
source_artifacts |
source_uid, content_hash, storage_ref, parser_version |
MinIO 原件/工件索引与哈希去重 |
ingestion_jobs |
idempotency_key, status, attempt_count, failure_stage, statistics, last_error |
可重复执行、可诊断、可重试的采集状态机 |
catalog_snapshots |
job_uid, source_uid, attempt, content_hash, snapshot |
每次数据库目录采集的不可变结构快照 |
evidence_fragments |
artifact_uid, locator, excerpt, confidence |
页、表、行列、坐标级证据 |
extraction_candidates |
normalized_data, evidence_uids, confidence, status |
解析候选项 |
data_elements |
code, current_version, status, business_domain_uids |
稳定数据元素身份与生命周期 |
data_element_versions |
data_element_uid, version, snapshot, evidence_uids |
不可变数据元素版本 |
candidate_decisions |
candidate_uid, action, data_element_uid, actor_uid |
reuse/create/map/ignore 决策审计 |
device_assets |
uid, asset_type, name, current_version, content_hash, location, organization, responsible_person, attributes |
设备、部件、测点、告警和维护记录的稳定平台档案 |
device_asset_source_mappings |
asset_uid, source_uid, source_entity, asset_type, source_code, source_updated_at |
源系统身份映射;同一来源身份唯一,不在 WP-04 自动跨源合并 |
device_asset_versions |
asset_uid, version, content_hash, snapshot, source_mapping_uid, actor_uid |
设备资产不可变版本和变更来源追溯 |
ontologies |
code, owner_uid, draft_revision, active_version_uid |
本体稳定身份和生效版本 |
ontology_versions |
ontology_uid, version, parent_version_uid, graph_document, content_hash |
不可变本体版本 |
ontology_domain_links |
ontology_uid, domain_uid, role |
多业务域 owner/contributor/consumer 关系 |
ontology_change_sets |
base_version_uid, changes, decisions, status |
动态建议及人工决策 |
ontology_publish_runs |
version_uid, idempotency_key, validation_result, status |
幂等发布运行 |
环境级唯一生效约束:UNIQUE (dataflow_uid, environment) WHERE status = 'active',保证同一环境只允许一个当前生效版本。
| 治理对象 | 来源 | 文档标识 | 触发方式 |
|---|---|---|---|
| 业务域定义 | Neo4j BusinessDomain |
business_domain:{uid} |
变更后增量同步 |
| 数据流程定义 | Neo4j DataFlow + 版本映射 |
dataflow:{uid}:{version} |
变更/激活后增量同步 |
| 元数据定义 | Neo4j DataMeta |
metadata:{uid} |
审核落库后增量同步 |
| 数据标准/标签 | Neo4j | standard/label:{uid} |
变更后增量同步 |
| 全量校验 | Neo4j + PostgreSQL | 内容哈希 | 每日全量一致性巡检 |
向量由 Qwen 的 embedding 模型生成;DeepSeek 只负责生成式问答。召回结果必须携带对象类型、业务域、版本、更新时间和访问范围,回答必须返回来源对象。