Files
InternalAuditInterprise/backend/app/ingest/base.py
T

54 lines
1.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""接入适配器基类与通用数据结构。"""
from __future__ import annotations
import uuid
from abc import ABC, abstractmethod
from dataclasses import dataclass, field
from sqlalchemy.orm import Session
from app.datahub.models import Entity, EntityRelationship, MetricEvent
@dataclass
class IngestResult:
"""单次适配器执行的输出汇总。"""
entities: list[Entity] = field(default_factory=list)
relationships: list[EntityRelationship] = field(default_factory=list)
metric_events: list[MetricEvent] = field(default_factory=list)
row_count: int = 0
error_count: int = 0
class BaseAdapter(ABC):
"""接入适配器抽象基类。
每个源明细表实现一个子类,负责将 staging 行映射到本体层。
"""
# 子类须指定所适配的源系统标识(如 "BSS", "ERP"
source_system: str = ""
# 子类须指定所适配的 staging 表名
staging_table: str = ""
@abstractmethod
def ingest(
self,
session: Session,
data_version_id: uuid.UUID | None = None,
batch_size: int = 1000,
) -> IngestResult:
"""从 staging 表读取未处理行,映射写入本体层。
Args:
session: 数据库会话
data_version_id: 当前批次的数据版本 ID
batch_size: 每批处理行数
Returns:
IngestResult 汇总
"""
...