# 数据模型核心业务逻辑模块

本模块包含了数据模型相关的所有核心业务逻辑函数，处理数据模型的创建、查询、更新、删除以及与其他数据对象的关系管理。

## 主要功能

1. **数据模型基础操作**
   - 创建数据模型节点
   - 更新数据模型属性
   - 删除数据模型节点
   - 查询数据模型详情

2. **数据模型关系管理**
   - 数据模型与元数据（meta_node）的关系处理
   - 数据模型与数据资源（DataResource）的关系处理
   - 数据模型与其他数据模型的关系处理
   - 数据模型与标签（DataLabel）的关系处理

3. **数据模型层级管理**
   - 计算并设置数据模型层级（level）属性
   - 处理父子关系（child）

4. **数据模型血缘分析**
   - 数据模型血缘关系分析
   - 数据资源血缘关系分析
   - 生成血缘图谱数据

5. **图谱生成**
   - 生成血缘关系图谱（Kinship）
   - 生成影响关系图谱（Impact）
   - 生成全量关系图谱（All）

## 核心函数列表

- `calculate_model_level`：计算数据模型层级
- `handle_model_relation`：处理数据模型血缘关系
- `handle_data_model`：创建数据模型节点
- `resource_handle_meta_data_model`：处理数据模型与数据资源的关系
- `model_handle_meta_data_model`：处理数据模型与其他数据模型的关系
- `handle_no_meta_data_model`：处理从DDL中选取的没有元数据的数据模型
- `handle_id_model`：获取数据模型详情
- `model_list`：获取数据模型列表
- `model_resource_list`：获取有血缘关系的数据资源列表
- `model_kinship_graph`：生成数据模型血缘图谱
- `model_impact_graph`：生成数据模型影响图谱
- `model_all_graph`：生成数据模型全量图谱
- `data_model_edit`：更新数据模型

## 数据模型

数据模型（DataModel）节点具有以下主要属性：
- `name`：数据模型名称（中文）
- `en_name`：数据模型英文名称
- `category`：数据模型分类
- `description`：数据模型描述
- `time`：创建/更新时间
- `level`：数据模型层级
- `id_list`：相关ID列表（JSON序列化字符串）

## 关系类型

数据模型相关的主要关系类型：
- `component`：数据模型与元数据的组成关系
- `resource`：数据模型与数据资源的关联关系
- `use`：数据模型之间的使用关系
- `child`：数据模型的父子关系
- `label`：数据模型与标签的分类关系

## 依赖关系

- 依赖 `app.core.graph.graph_operations` 提供图数据库节点操作功能
- 依赖 `app.routes.graph_routes` 提供图数据库连接
- 依赖 `app.services.neo4j_driver` 提供Neo4j会话管理
- 依赖 `app.core.meta_data` 提供元数据处理功能
- 依赖 `app.utils.common_functions` 提供通用功能函数
- 依赖 `app.core.data_resource` 提供数据资源处理功能

## 调用示例

```python
# 创建数据模型示例
from app.core.data_model.model import handle_data_model, calculate_model_level

# 创建数据模型
model_name = "客户信息模型"
result_list = ["customer_info_model"]
result = json.dumps([{"resource_id": 123, "metaData": [{"id": 456}]}])
receiver = {
    "category": "业务模型",
    "description": "包含客户基本信息的数据模型",
    "tag": 789,
    "childrenId": []
}

model_id, model_node = handle_data_model(model_name, result_list, result, receiver)

# 计算模型层级
calculate_model_level(model_id)
``` 