# 核心数据指标模块

## 简介

核心数据指标模块(`app.core.data_metric`)包含与数据指标相关的所有核心业务逻辑，负责实现数据指标的管理、查询、图谱生成等功能的核心算法和数据处理逻辑。该模块不直接处理HTTP请求，而是由API层调用，实现业务与接口的分离。

## 主要功能

1. **数据指标管理**：创建、更新、查询数据指标的核心逻辑
2. **数据指标列表**：实现数据指标列表的查询和过滤功能
3. **图谱生成**：计算和生成不同类型的数据指标关系图谱，包括：
   - 血缘关系图谱（Kinship Graph）
   - 影响关系图谱（Impact Graph）
   - 完整关系图谱（All Relationships Graph）
4. **关系处理**：管理数据指标与其他实体（数据模型、其他指标、元数据、标签）之间的关系

## 核心函数列表

| 函数名 | 描述 |
|-------|------|
| `metric_list()` | 获取数据指标列表，支持多种过滤条件 |
| `handle_metric_relation()` | 处理数据指标血缘关系 |
| `id_mertic_graph()` | 生成数据指标关系图谱 |
| `handle_data_metric()` | 创建或更新数据指标节点 |
| `handle_meta_data_metric()` | 处理数据指标与其他节点的关系 |
| `handle_id_metric()` | 获取数据指标详情 |
| `metric_kinship_graph()` | 生成数据指标血缘关系图谱 |
| `metric_impact_graph()` | 生成数据指标影响关系图谱 |
| `metric_all_graph()` | 生成数据指标所有关系图谱 |
| `data_metric_edit()` | 编辑数据指标 |

## 数据模型

### 数据指标（data_metric）

数据指标是对数据的测量和计算规则，主要属性包括：

- **name**: 指标名称（中文）
- **en_name**: 指标英文名称
- **category**: 指标分类
- **describe**: 指标描述
- **time**: 创建/更新时间
- **tag**: 关联的标签ID
- **code**: 计算代码
- **id_list**: 关联的数据模型或其他指标ID列表

### 指标关系

数据指标与其他实体之间的主要关系类型：

- **origin**: 指标来源（指标→模型或指标→指标）
- **connection**: 指标与元数据的连接
- **label**: 指标与标签的连接
- **child**: 指标的下级关系

## 使用示例

### 1. 获取数据指标列表

```python
from app.core.data_metric.metric_interface import metric_list

# 获取第一页，每页10条数据
skip_count = 0
page_size = 10
data, total = metric_list(skip_count, page_size, name_filter="用户")

print(f"共找到 {total} 条记录")
for item in data:
    print(f"指标名称: {item['name']}, 分类: {item['category']}")
```

### 2. 生成指标关系图谱

```python
from app.core.data_metric.metric_interface import metric_all_graph

# 生成某个指标的所有关系图谱，包含元数据
graph_data = metric_all_graph(nodeid=123, meta=True)

# 输出图谱数据
print(f"节点数量: {len(graph_data['nodes'])}")
print(f"连线数量: {len(graph_data['lines'])}")
```

## 依赖项

本模块主要依赖以下组件：

1. **py2neo**: 用于Neo4j图数据库操作
2. **routes.graph_routes**: 提供图数据库连接
3. **DataOps_function.common_functions**: 提供通用操作函数
4. **DataOps_function.meta_data_function**: 提供元数据相关功能
5. **core.graph.graph_operations**: 提供节点和关系操作功能

## 错误处理

本模块使用Python标准异常处理机制。大多数函数在遇到错误时会抛出相应的异常，由调用者(通常是API层)捕获和处理。模块还使用logging模块记录关键操作和错误，日志文件为`metric_interface.log`。

## 性能考虑

数据指标图谱查询可能涉及大量的节点和关系，查询性能可能受到影响。为优化性能，本模块:

1. 使用MATCH查询时，尽量添加适当的WHERE条件减少结果集
2. 使用SKIP和LIMIT进行分页查询
3. 合理使用OPTIONAL MATCH减少查询失败
4. 对图谱节点和关系进行过滤，只返回有效的数据

## 代码结构

- **__init__.py**: 导入模块接口
- **metric_interface.py**: 包含所有核心功能实现

## 维护者

数据平台开发团队 