from sqlalchemy import Column, Integer, String, Text, Float, ForeignKey, DateTime from sqlalchemy.orm import relationship from datetime import datetime from db import Base class Product(Base): __tablename__ = "products" id = Column(Integer, primary_key=True) name = Column(String(200), unique=True, index=True) description = Column(Text, nullable=True) notes = Column(Text, nullable=True) price = Column(Float, nullable=True) class CustomerProfile(Base): __tablename__ = "customer_profiles" id = Column(Integer, primary_key=True) name = Column(String(200), unique=True, index=True) attributes = Column(Text) # JSON or plain text description wcltv = Column(Float, default=0.0) n = Column(Integer, default=0) class Conversation(Base): __tablename__ = "conversations" id = Column(Integer, primary_key=True) profile_name = Column(String(200), index=True) started_at = Column(DateTime, default=datetime.utcnow) messages = relationship("Message", back_populates="conversation", cascade="all, delete-orphan") class Message(Base): __tablename__ = "messages" id = Column(Integer, primary_key=True) conversation_id = Column(Integer, ForeignKey("conversations.id")) sender = Column(String(32)) # 'customer' or 'agent' text = Column(Text) ts = Column(DateTime, default=datetime.utcnow) conversation = relationship("Conversation", back_populates="messages")