Swiper-match / app.py
Almaz K
added phone numbers to results
e4c90f5
"""
Swiper Match - Car Dealer Predictor
Main application file using modular components
"""
import gradio as gr
import logging
# Import core modules
from core.matcher import CarDealerMatcher
from core.config import DETAILED_MODEL_PATH, SIMPLE_MODEL_PATH, UI_CONFIG, GRADIO_CSS
# Import UI components
from ui.interface import (
update_models, predict_dealers_interface, simple_predict_dealers_interface,
search_data_interface, simple_search_data_interface, range_search_data_interface
)
from ui.tabs.simple_tab import create_simple_tab
from ui.tabs.detailed_tab import create_detailed_tab
from ui.tabs.traditional_tab import create_traditional_tab
from ui.tabs.simple_search_tab import create_simple_search_tab
from ui.tabs.range_search_tab import create_range_search_tab
# Import utilities
from utils.helpers import get_model_status_info, get_app_header, get_app_description, setup_event_handlers
# Set up logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def create_app():
"""Create and configure the Gradio application"""
# Initialize the matchers
logger.info("πŸš€ Initializing Car Dealer Matchers...")
matcher = CarDealerMatcher(model_path=DETAILED_MODEL_PATH)
simple_matcher = CarDealerMatcher(model_path=SIMPLE_MODEL_PATH)
# Create the Gradio interface
with gr.Blocks(
title=UI_CONFIG['title'],
theme=gr.themes.Default(),
css=GRADIO_CSS
) as demo:
# App header
gr.Markdown(get_app_header())
gr.Markdown(get_app_description())
# Create tabs
with gr.Tabs():
simple_search_tab = create_simple_search_tab(matcher)
range_search_tab = create_range_search_tab(matcher)
traditional_tab = create_traditional_tab(matcher)
simple_tab = create_simple_tab(simple_matcher)
detailed_tab = create_detailed_tab(matcher)
# Model Information Footer
gr.Markdown("---")
gr.Markdown(get_model_status_info(matcher, simple_matcher))
# Setup event handlers
interface_functions = {
'update_models': update_models,
'predict': predict_dealers_interface,
'simple_predict': simple_predict_dealers_interface,
'search': search_data_interface,
'simple_search': simple_search_data_interface,
'simple_range_search': range_search_data_interface
}
tabs_data = (simple_tab, detailed_tab, traditional_tab, simple_search_tab, range_search_tab)
matchers = (matcher, simple_matcher)
setup_event_handlers(tabs_data, interface_functions, matchers)
return demo
# Launch the app
if __name__ == "__main__":
logger.info("🎯 Starting Swiper Match application...")
demo = create_app()
demo.launch()