mirror of
http://88.130.71.182:3000/BlitTech/contexta_be.git
synced 2026-06-12 23:23:21 +00:00
updates Mar6
This commit is contained in:
113
app/models.py
113
app/models.py
@@ -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
|
||||
Reference in New Issue
Block a user