import gradio as gr
import time
from .analyzer import NPAAnalyzer


def create_interface():
    try:
        analyzer = NPAAnalyzer()

        # Функція для форматування результату в Markdown
        def analyze_and_format(npa_text):
            if not npa_text.strip():
                return "### Помилка\nПоле для тексту не може бути порожнім. Введіть текст для аналізу."

            start_time = time.time()  # Початок відліку часу
            status = "Аналіз завершено..."
            result = analyzer.analyze_npa(npa_text)
            end_time = time.time()  # Кінець відліку часу

            elapsed_time = end_time - start_time
            return f"### Експертний висновок\n{result}\n\n_Час аналізу: {elapsed_time:.2f} секунд._", status

        with gr.Blocks() as iface:
            gr.Markdown("""
                ## Антикорупційна експертиза НПА
                Система допомагає визначати корупціогенні фактори в проектах НПА відповідно до [офіційної методології](https://nazk.gov.ua/uk/antykoruptsijna-ekspertyza/).

                ### Інструкція:
                1. Введіть текст проекту нормативно-правового акту в поле нижче.
                2. Натисніть кнопку "Аналіз" для запуску аналізу.
                3. Ознайомтесь із висновком.
            """)

            with gr.Row():
                input_box = gr.Textbox(
                    lines=12,
                    label="Введіть текст проекту НПА",
                    placeholder="Вставте текст проекту нормативно-правового акту для аналізу...",
                )
            with gr.Row():
                analyze_button = gr.Button("Аналіз")

            with gr.Row():
                output_box = gr.Markdown(label="Експертний висновок")

            with gr.Row():
                status_box = gr.Textbox(label="Статус", interactive=False)

            # Логіка кнопки
            analyze_button.click(
                analyze_and_format,
                inputs=input_box,
                outputs=[output_box, status_box]
            )

        return iface
    except Exception as e:
        print(f"Помилка при створенні інтерфейсу: {str(e)}")
        raise