updates Mar6

This commit is contained in:
belviskhoremk
2026-03-06 22:37:40 +00:00
parent 2ed998058e
commit 9dccc83293
23 changed files with 2257 additions and 74 deletions

View File

@@ -10,7 +10,8 @@ import uuid
class PlanType(str, Enum):
free = "free"
starter = "starter"
pro = "pro"
business = "business"
agency = "agency"
enterprise = "enterprise"
@@ -107,6 +108,14 @@ class ChatbotCreate(BaseModel):
category: Optional[str] = None
industry: Optional[str] = None
languages: List[str] = ["en"]
show_branding: bool = True
lead_capture_enabled: bool = False
lead_capture_fields: List[str] = ["email"]
lead_capture_trigger: str = "after_first_message"
handoff_enabled: bool = False
handoff_message: str = "I'll connect you with our team. Please wait."
handoff_email: Optional[str] = None
handoff_keywords: List[str] = ["human", "agent", "speak to someone", "talk to a person", "real person"]
class ChatbotUpdate(BaseModel):
@@ -122,6 +131,14 @@ class ChatbotUpdate(BaseModel):
category: Optional[str] = None
industry: Optional[str] = None
languages: Optional[List[str]] = None
show_branding: Optional[bool] = None
lead_capture_enabled: Optional[bool] = None
lead_capture_fields: Optional[List[str]] = None
lead_capture_trigger: Optional[str] = None
handoff_enabled: Optional[bool] = None
handoff_message: Optional[str] = None
handoff_email: Optional[str] = None
handoff_keywords: Optional[List[str]] = None
class ChatbotResponse(BaseModel):
@@ -147,6 +164,14 @@ class ChatbotResponse(BaseModel):
average_rating: Optional[float] = None
created_at: Optional[datetime] = None
published_at: Optional[datetime] = None
show_branding: bool = True
lead_capture_enabled: bool = False
lead_capture_fields: List[str] = ["email"]
lead_capture_trigger: str = "after_first_message"
handoff_enabled: bool = False
handoff_message: str = "I'll connect you with our team. Please wait."
handoff_email: Optional[str] = None
handoff_keywords: List[str] = ["human", "agent", "speak to someone", "talk to a person", "real person"]
class ChatbotPublicResponse(BaseModel):
@@ -203,6 +228,8 @@ class ChatResponse(BaseModel):
sources: List[SourceDocument] = []
model_used: str
tokens_used: int = 0
needs_lead_capture: bool = False
handoff: bool = False
class MessageResponse(BaseModel):
@@ -239,7 +266,7 @@ class SubscriptionResponse(BaseModel):
class CheckoutSessionCreate(BaseModel):
plan: str # starter or pro
plan: str # starter, business, or agency
success_url: str
cancel_url: str
@@ -307,4 +334,84 @@ class SuccessResponse(BaseModel):
class ErrorResponse(BaseModel):
error: str
detail: Optional[str] = None
detail: Optional[str] = None
# ─── Lead Models ───────────────────────────────────────────────────────────────
class LeadCreate(BaseModel):
email: Optional[str] = None
name: Optional[str] = None
phone: Optional[str] = None
company: Optional[str] = None
conversation_id: Optional[str] = None
class LeadResponse(BaseModel):
id: str
chatbot_id: str
conversation_id: Optional[str] = None
email: Optional[str] = None
name: Optional[str] = None
phone: Optional[str] = None
company: Optional[str] = None
created_at: Optional[datetime] = None
# ─── URL Source Models ─────────────────────────────────────────────────────────
class UrlSourceCreate(BaseModel):
url: str
class UrlSourceResponse(BaseModel):
id: str
chatbot_id: str
url: str
status: str
page_title: Optional[str] = None
chunk_count: int = 0
error_message: Optional[str] = None
created_at: Optional[datetime] = None
# ─── Feedback Models ───────────────────────────────────────────────────────────
class FeedbackCreate(BaseModel):
message_id: str
feedback: str # 'positive' or 'negative'
# ─── Inbox Models ─────────────────────────────────────────────────────────────
class InboxConversation(BaseModel):
id: str
chatbot_id: str
chatbot_name: str
session_id: Optional[str] = None
language: str
message_count: int
first_message: Optional[str] = None
created_at: Optional[datetime] = None
class InboxMessage(BaseModel):
id: str
role: str
content: str
sources: Optional[List[Dict]] = None
confidence_score: Optional[float] = None
is_handoff: bool = False
created_at: Optional[datetime] = None
# ─── Channel Models ────────────────────────────────────────────────────────────
class ChannelConnectionResponse(BaseModel):
id: str
channel: str
bot_username: Optional[str] = None
wa_keyword: Optional[str] = None
wa_link: Optional[str] = None
is_active: bool
created_at: Optional[datetime] = None