import os import gradio as gr from datetime import datetime from threading import Lock import requests import logging # Simple configuration BUSINESS_NAME = "Jay's Mobile Wash" JAY_PHONE = os.environ.get('JAY_PHONE_NUMBER', '+15622289429') AI_PHONE = os.environ.get('AI_PHONE_NUMBER', '+17149278841') DEEPSEEK_KEY = os.environ.get('DEEPSEEK_API_KEY', '') # Simple state management class SimpleState: def __init__(self): self.lock = Lock() self.data = { 'calls': 0, 'sms': 0, 'ai_responses': 0, 'start_time': datetime.now(), 'log': [] } def increment(self, key): with self.lock: self.data[key] += 1 def add_log(self, entry): with self.lock: self.data['log'].insert(0, entry) if len(self.data['log']) > 20: self.data['log'] = self.data['log'][:20] def get_all(self): with self.lock: return self.data.copy() state = SimpleState() # Simple AI class SimpleAI: def detect_intent(self, text): text = text.lower() if any(word in text for word in ['price', 'cost', 'much']): return 'pricing' elif any(word in text for word in ['book', 'schedule', 'appointment']): return 'booking' elif any(word in text for word in ['urgent', 'emergency']): return 'urgent' elif any(word in text for word in ['jay', 'human', 'person']): return 'human' return 'general' def generate_response(self, text, forwarded=False): intent = self.detect_intent(text) prefix = "Thanks for your patience. " if forwarded else "" responses = { 'pricing': f"{prefix}Our services: Basic wash $25, Premium $45, Full detail $85. Which interests you?", 'booking': f"{prefix}We're available Mon-Sat 8AM-6PM, Sun 10AM-4PM. What day works for you?", 'urgent': f"{prefix}I understand this is urgent. Let me connect you with Jay right away.", 'human': f"{prefix}Let me connect you with Jay personally.", 'general': f"{prefix}Hi! I'm Jay's AI assistant. I can help with pricing, scheduling, or questions about our mobile car wash services." } response = responses.get(intent, responses['general']) # Try DeepSeek if available if DEEPSEEK_KEY and intent not in ['urgent', 'human']: try: enhanced = self.get_deepseek_response(text) if enhanced: response = enhanced except: pass return response def get_deepseek_response(self, prompt): try: headers = {"Authorization": f"Bearer {DEEPSEEK_KEY}", "Content-Type": "application/json"} data = { "model": "deepseek-chat", "messages": [ {"role": "system", "content": f"You are {BUSINESS_NAME} AI assistant. Be friendly and professional. Services: Basic wash ($25), Premium ($45), Full detail ($85), Ceramic coating ($150). Hours: Mon-Sat 8AM-6PM, Sun 10AM-4PM. Phone: {JAY_PHONE}"}, {"role": "user", "content": prompt} ], "max_tokens": 150 } response = requests.post("https://api.deepseek.com/v1/chat/completions", headers=headers, json=data, timeout=10) if response.status_code == 200: return response.json()['choices'][0]['message']['content'].strip() except: pass return None ai = SimpleAI() # Dashboard function def get_dashboard(): stats = state.get_all() uptime = datetime.now() - stats['start_time'] return f"""
๐ Calls
๐ฑ SMS
๐ค AI Responses
Jay's iPhone: {JAY_PHONE}
AI Number: {AI_PHONE}
DeepSeek AI: {'โ Connected' if DEEPSEEK_KEY else 'โ ๏ธ Not configured'}
Uptime: {int(uptime.total_seconds() / 3600)} hours
$25
$45
$85
$150
Your Message: {message}
Detected Intent: {intent}