feat: 添加线索引擎、NLQ、场景检测、前端界面等核心功能模块

This commit is contained in:
freedakgmail
2026-06-16 08:15:15 +08:00
parent 7b1e2b10a8
commit 48340f6011
62 changed files with 6772 additions and 65 deletions
+53
View File
@@ -0,0 +1,53 @@
"""接入适配器基类与通用数据结构。"""
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 汇总
"""
...