9bccac82f3
When use_agent is enabled, the scheduler runs the message content as a prompt through the LangChain agent and sends Simba's response instead of the raw content. Frontend adds an Ask Simba toggle with visual indicator. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
49 lines
1.3 KiB
Python
49 lines
1.3 KiB
Python
import enum
|
|
|
|
from tortoise import fields
|
|
from tortoise.models import Model
|
|
|
|
|
|
class MessageChannel(enum.Enum):
|
|
IMESSAGE = "imessage"
|
|
EMAIL = "email"
|
|
|
|
|
|
class MessageStatus(enum.Enum):
|
|
PENDING = "pending"
|
|
SENT = "sent"
|
|
FAILED = "failed"
|
|
CANCELLED = "cancelled"
|
|
|
|
|
|
class Recurrence(enum.Enum):
|
|
NONE = "none"
|
|
DAILY = "daily"
|
|
WEEKLY = "weekly"
|
|
MONTHLY = "monthly"
|
|
|
|
|
|
class ScheduledMessage(Model):
|
|
id = fields.UUIDField(primary_key=True)
|
|
recipient = fields.CharField(max_length=255)
|
|
channel = fields.CharEnumField(enum_type=MessageChannel, max_length=20)
|
|
content = fields.TextField()
|
|
subject = fields.CharField(max_length=255, null=True)
|
|
scheduled_at = fields.DatetimeField()
|
|
status = fields.CharEnumField(
|
|
enum_type=MessageStatus, max_length=20, default=MessageStatus.PENDING
|
|
)
|
|
recurrence = fields.CharEnumField(
|
|
enum_type=Recurrence, max_length=20, default=Recurrence.NONE
|
|
)
|
|
use_agent = fields.BooleanField(default=False)
|
|
error_message = fields.TextField(null=True)
|
|
created_by = fields.ForeignKeyField(
|
|
"models.User", related_name="scheduled_messages"
|
|
)
|
|
created_at = fields.DatetimeField(auto_now_add=True)
|
|
updated_at = fields.DatetimeField(auto_now=True)
|
|
|
|
class Meta:
|
|
table = "scheduled_messages"
|