"""知识图谱模型。 企业特征 + 管理动作 + 环境上下文 → 结果 → 回报影响。 """ import uuid from datetime import datetime, timezone from sqlalchemy import JSON, DateTime, ForeignKey, String, Text from sqlalchemy.orm import Mapped, mapped_column from app.core.database import Base from app.core.types import JSONBType class KnowledgeNode(Base): """知识图谱节点。""" __tablename__ = "knowledge_nodes" id: Mapped[str] = mapped_column(String(36), primary_key=True, default=lambda: str(uuid.uuid4())) tenant_id: Mapped[str] = mapped_column(String(36), ForeignKey("tenants.id"), nullable=False, index=True) entity_type: Mapped[str] = mapped_column(String(50), nullable=False, comment="company/action/context/result/return") entity_id: Mapped[str | None] = mapped_column(String(36), nullable=True, comment="关联实体 ID") attributes: Mapped[dict | None] = mapped_column(JSONBType, nullable=True, comment="实体属性") relations: Mapped[dict | None] = mapped_column(JSONBType, nullable=True, comment="关系列表 — target_id + relation_type") embedding: Mapped[dict | None] = mapped_column(JSON, nullable=True, comment="向量嵌入") created_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), default=lambda: datetime.now(timezone.utc) )