File size: 2,748 Bytes
a962ffe
 
00eef23
a962ffe
00eef23
 
a962ffe
00eef23
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a962ffe
a2dd0df
 
 
 
 
00eef23
a2dd0df
 
 
00eef23
 
a2dd0df
00eef23
 
 
 
a2dd0df
00eef23
 
a2dd0df
00eef23
 
a2dd0df
00eef23
 
a2dd0df
00eef23
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a962ffe
00eef23
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import pandas as pd
import streamlit as st
import sqlite3

# Database setup
DB_FILE = "feedback.db"

def init_db():
    # Connect to SQLite database
    conn = sqlite3.connect(DB_FILE)
    cursor = conn.cursor()

    # Create a table for storing feedback if not exists
    cursor.execute("""
        CREATE TABLE IF NOT EXISTS feedback (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            question TEXT,
            selected_answer TEXT,
            rating INTEGER,
            feedback_text TEXT
        )
    """)
    conn.commit()
    conn.close()

def store_feedback(question, selected_answer, rating, feedback_text):
    conn = sqlite3.connect(DB_FILE)
    cursor = conn.cursor()
    cursor.execute("""
        INSERT INTO feedback (question, selected_answer, rating, feedback_text)
        VALUES (?, ?, ?, ?)
    """, (question, selected_answer, rating, feedback_text))
    conn.commit()
    conn.close()

# Initialize database
init_db()

# Load Q&A data
@st.cache_data
def load_data():
    return pd.read_csv("dummy_qa_data.csv")

data = load_data()

# Session state for question navigation
if "current_index" not in st.session_state:
    st.session_state.current_index = 0

# Current question index
current_index = st.session_state.current_index

# Display question and options
if 0 <= current_index < len(data):
    question = data.loc[current_index, "Question"]
    answers = eval(data.loc[current_index, "Generated Answer"])  # Convert string to list of tuples

    st.subheader(f"Question {current_index + 1}: {question}")
    selected_answer = st.radio("Choose the best answer:", options=[ans[0] for ans in answers])

    # Rating
    rating = st.slider("Rate the answer (1 = Worst, 5 = Best)", 1, 5, value=3)

    # Free-text feedback
    feedback_text = st.text_area("Any additional feedback?")

    # Navigation buttons
    col1, col2, col3 = st.columns([1, 1, 2])

    with col1:
        if st.button("Back") and current_index > 0:
            st.session_state.current_index -= 1
            st.experimental_rerun()

    with col2:
        if st.button("Next"):
            # Store feedback for the current question
            store_feedback(question, selected_answer, rating, feedback_text)

            if current_index < len(data) - 1:
                st.session_state.current_index += 1
                st.experimental_rerun()
            else:
                st.success("You have completed all questions!")
                st.stop()
else:
    st.write("No more questions available!")

# View results for debugging (optional)
if st.checkbox("Show Feedback Database (Admin Use)"):
    conn = sqlite3.connect(DB_FILE)
    df = pd.read_sql_query("SELECT * FROM feedback", conn)
    st.dataframe(df)
    conn.close()