Files
MemoryBear/api/app/models/end_user_model.py
2026-03-26 18:30:59 +08:00

71 lines
3.5 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.
import datetime
import uuid
from sqlalchemy import Column, DateTime, ForeignKey, String, Text
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import relationship
from app.db import Base
class EndUser(Base):
__tablename__ = "end_users"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4, nullable=False, index=True)
app_id = Column(UUID(as_uuid=True), ForeignKey("apps.id"), nullable=True)
workspace_id = Column(UUID(as_uuid=True), ForeignKey("workspaces.id"), nullable=False)
# end_user_id = Column(String, nullable=False, index=True)
other_id = Column(String, nullable=True) # Store original user_id
other_name = Column(String, default="", nullable=False)
other_address = Column(String, default="", nullable=False)
reflection_time = Column(DateTime, nullable=True)
created_at = Column(DateTime, default=datetime.datetime.now)
updated_at = Column(DateTime, default=datetime.datetime.now, onupdate=datetime.datetime.now)
# 用户档案字段 - User Profile Fields
position = Column(String, nullable=True, comment="职位")
department = Column(String, nullable=True, comment="部门")
contact = Column(String, nullable=True, comment="联系方式")
phone = Column(String, nullable=True, comment="电话")
hire_date = Column(DateTime, nullable=True, comment="入职日期")
updatetime_profile = Column(DateTime, nullable=True, comment="核心档案信息最后更新时间")
memory_config_id = Column(
UUID(as_uuid=True),
ForeignKey("memory_config.config_id"),
nullable=True,
index=True,
comment="关联的记忆配置ID"
)
# 用户摘要四个维度 - User Summary Four Dimensions
user_summary = Column(Text, nullable=True, comment="缓存的用户摘要(基本介绍)")
personality_traits = Column(Text, nullable=True, comment="性格特点")
core_values = Column(Text, nullable=True, comment="核心价值观")
one_sentence_summary = Column(Text, nullable=True, comment="一句话总结")
user_summary_updated_at = Column(DateTime, nullable=True, comment="用户摘要最后更新时间")
# 记忆洞察四个维度 - Memory Insight Four Dimensions
memory_insight = Column(Text, nullable=True, comment="缓存的记忆洞察报告(总体概述)")
behavior_pattern = Column(Text, nullable=True, comment="行为模式")
key_findings = Column(Text, nullable=True, comment="关键发现")
growth_trajectory = Column(Text, nullable=True, comment="成长轨迹")
memory_insight_updated_at = Column(DateTime, nullable=True, comment="洞察报告最后更新时间")
# RAG存储模式专用字段 - RAG Storage Mode Fields
# storage_type = Column(String, nullable=True, default="neo4j", comment="存储模式类型: neo4j / rag")
rag_tags = Column(Text, nullable=True, comment="RAG模式下提取的标签列表JSON格式")
rag_personas = Column(Text, nullable=True, comment="RAG模式下提取的人物形象列表JSON格式")
rag_summary_updated_at = Column(DateTime, nullable=True, comment="RAG摘要/标签/人物形象最后更新时间")
# 与 App 的反向关系
app = relationship(
"App",
back_populates="end_users"
)
# 与 WorkSpace 的反向关系
workspace = relationship("Workspace", back_populates="end_users")
# 与 EndUserInfo 的反向关系
info = relationship("EndUserInfo", back_populates="end_user", cascade="all, delete-orphan")