import datetime import uuid from enum import IntEnum from sqlalchemy import Column, ForeignKey, Integer, DateTime, String from sqlalchemy.dialects.postgresql import UUID from sqlalchemy.dialects.postgresql import JSONB from app.db import Base from app.schemas.app_schema import FileType class PerceptualType(IntEnum): VISION = 1 AUDIO = 2 TEXT = 3 CONVERSATION = 4 @staticmethod def trans_from_file_type(file_type: FileType | str): type_map = { FileType.IMAGE: PerceptualType.VISION, FileType.AUDIO: PerceptualType.AUDIO, FileType.VIDEO: PerceptualType.VISION, FileType.DOCUMENT: PerceptualType.TEXT } return type_map.get(file_type, PerceptualType.TEXT) class FileStorageService(IntEnum): LOCAL = 1 REMOTE = 2 class MemoryPerceptualModel(Base): __tablename__ = "memory_perceptual" id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) end_user_id = Column(UUID(as_uuid=True), ForeignKey("end_users.id"), index=True) perceptual_type = Column(Integer, index=True, nullable=False, comment="感知类型") storage_service = Column(Integer, default=0, comment="存储服务类型") file_path = Column(String, nullable=False, comment="文件路径") file_name = Column(String, nullable=False, comment="文件名称") file_ext = Column(String, nullable=False, comment="文件后缀名") summary = Column(String, comment="摘要") meta_data = Column(JSONB, comment="元信息") created_time = Column(DateTime, default=datetime.datetime.now, comment="创建时间")