Add whatsapp feature

This commit is contained in:
Urtzi Alfaro
2025-11-13 16:01:08 +01:00
parent d7df2b0853
commit 9bc048d360
74 changed files with 9765 additions and 533 deletions

View File

@@ -48,35 +48,37 @@ class EmailTemplate(Base):
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
class WhatsAppTemplate(Base):
"""WhatsApp-specific templates"""
__tablename__ = "whatsapp_templates"
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
tenant_id = Column(UUID(as_uuid=True), nullable=True, index=True)
# Template identification
template_key = Column(String(100), nullable=False, unique=True)
name = Column(String(255), nullable=False)
# WhatsApp template details
whatsapp_template_name = Column(String(255), nullable=False) # Template name in WhatsApp Business API
whatsapp_template_id = Column(String(255), nullable=True)
language_code = Column(String(10), default="es")
# Template content
header_text = Column(String(60), nullable=True) # WhatsApp header limit
body_text = Column(Text, nullable=False)
footer_text = Column(String(60), nullable=True) # WhatsApp footer limit
# Template parameters
parameter_count = Column(Integer, default=0)
parameters = Column(JSON, nullable=True) # Parameter definitions
# Status
approval_status = Column(String(20), default="pending") # pending, approved, rejected
is_active = Column(Boolean, default=True)
# Timestamps
created_at = Column(DateTime, default=datetime.utcnow)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
# NOTE: WhatsAppTemplate has been moved to app/models/whatsapp_messages.py
# This old definition is commented out to avoid duplicate table definition errors
# class WhatsAppTemplate(Base):
# """WhatsApp-specific templates"""
# __tablename__ = "whatsapp_templates"
#
# id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
# tenant_id = Column(UUID(as_uuid=True), nullable=True, index=True)
#
# # Template identification
# template_key = Column(String(100), nullable=False, unique=True)
# name = Column(String(255), nullable=False)
#
# # WhatsApp template details
# whatsapp_template_name = Column(String(255), nullable=False) # Template name in WhatsApp Business API
# whatsapp_template_id = Column(String(255), nullable=True)
# language_code = Column(String(10), default="es")
#
# # Template content
# header_text = Column(String(60), nullable=True) # WhatsApp header limit
# body_text = Column(Text, nullable=False)
# footer_text = Column(String(60), nullable=True) # WhatsApp footer limit
#
# # Template parameters
# parameter_count = Column(Integer, default=0)
# parameters = Column(JSON, nullable=True) # Parameter definitions
#
# # Status
# approval_status = Column(String(20), default="pending") # pending, approved, rejected
# is_active = Column(Boolean, default=True)
#
# # Timestamps
# created_at = Column(DateTime, default=datetime.utcnow)
# updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)