File size: 4,100 Bytes
3aa83be
8d47315
3aa83be
3ceecc5
3aa83be
3ceecc5
3aa83be
 
 
 
 
 
8d47315
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3aa83be
 
 
 
 
8d47315
 
3aa83be
8d47315
 
 
 
 
 
 
 
 
 
3aa83be
 
 
 
 
 
8d47315
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fffe79f
88917dc
3aa83be
 
 
 
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
import streamlit as st
from utils.functions import get_phone_info, simple_checks, analyze_message
import os

def main():
    st.set_page_config(page_title="📱 Detektor Fałszywych Wiadomości SMS", page_icon="📱")
    st.title("📱 Detektor Fałszywych Wiadomości SMS")
    st.write("Wprowadź treść wiadomości SMS oraz numer telefonu nadawcy, aby przeprowadzić analizę pod kątem potencjalnego oszustwa.")

    with st.form("sms_form"):
        message = st.text_area("Treść wiadomości SMS", height=150)
        phone_number = st.text_input("Numer telefonu nadawcy (w formacie międzynarodowym, np. +48123123123)")
        
        st.markdown("### Dodatkowe Informacje")
        # Dodane pytania
        frequency = st.selectbox(
            "Jak często otrzymujesz wiadomości od tego numeru?",
            ('Pierwszy raz', 'Sporadycznie', 'Regularnie')
        )
        last_received = st.selectbox(
            "Kiedy ostatnio otrzymałeś podobną wiadomość?",
            ('Dziś', 'W ciągu ostatniego tygodnia', 'W ciągu ostatniego miesiąca', 'Dłużej')
        )
        confidence_level = st.slider(
            "Jak bardzo jesteś pewny, że wiadomość jest autentyczna?",
            1, 5, 3,
            help="1: Bardzo mało pewny, 5: Bardzo pewny"
        )
        unexpected = st.radio(
            "Czy otrzymanie tej wiadomości było dla Ciebie niespodziewane?",
            ('Tak', 'Nie')
        )
        additional_notes = st.text_area("Dodatkowe uwagi lub informacje (opcjonalnie)", height=100)
        
        submitted = st.form_submit_button("Analizuj wiadomość")

    if submitted:
        if not message.strip():
            st.error("Proszę wprowadzić treść wiadomości.")
        elif not phone_number.strip():
            st.error("Proszę wprowadzić numer telefonu nadawcy.")
        else:
            # Informacje o numerze telefonu
            country, operator = get_phone_info(phone_number)
            if country and operator:
                st.write(f"**Informacje o numerze telefonu:**")
                st.write(f"- **Kraj:** {country}")
                st.write(f"- **Operator:** {operator}")
            else:
                st.write("Nie udało się uzyskać informacji o numerze telefonu.")

            # Heurystyczne sprawdzenia
            warnings = simple_checks(message)
            if warnings:
                st.warning("Znaleziono następujące potencjalne czerwone flagi:")
                for warn in warnings:
                    st.write(f"- {warn}")

            # Zbierz dodatkowe informacje
            additional_info = f"""
**Jak często otrzymujesz wiadomości od tego numeru?** {frequency}
**Kiedy ostatnio otrzymałeś podobną wiadomość?** {last_received}
**Jak bardzo jesteś pewny, że wiadomość jest autentyczna?** {confidence_level}/5
**Czy otrzymanie tej wiadomości było dla Ciebie niespodziewane?** {unexpected}
**Dodatkowe uwagi lub informacje:** {additional_notes}
            """

            # Pobierz klucz API
            api_key = os.getenv('SAMBANOVA_API_KEY')
            if not api_key:
                st.error("Brak klucza API. Ustaw zmienną środowiskową SAMBANOVA_API_KEY w ustawieniach aplikacji.")
            else:
                # Analiza za pomocą modelu AI
                with st.spinner("Analizuję wiadomość przy użyciu modelu AI..."):
                    analysis_text, risk_text, recommendations_text = analyze_message(message, phone_number, additional_info, api_key)
                    st.subheader("📑 Analiza treści wiadomości:")
                    st.markdown(analysis_text)
                    st.subheader("⚠️ Ocena ryzyka oszustwa:")
                    st.markdown(risk_text)
                    st.subheader("✅ Zalecenia dla użytkownika:")
                    st.markdown(recommendations_text)

            st.info("📌 Pamiętaj: zawsze zachowuj ostrożność przy otrzymywaniu wiadomości od nieznanych nadawców. Nie udostępniaj poufnych informacji i nie klikaj w podejrzane linki.")

if __name__ == "__main__":
    main()