rafaldembski commited on
Commit
d5e86a3
1 Parent(s): 1e27c56

Create pages/Analysis.py

Browse files
Files changed (1) hide show
  1. pages/Analysis.py +93 -0
pages/Analysis.py ADDED
@@ -0,0 +1,93 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # pages/Analysis.py
2
+
3
+ import streamlit as st
4
+ from utils.functions import get_phone_info, simple_checks, analyze_message, update_stats
5
+ import os
6
+
7
+ def show_analysis():
8
+ st.header("📱 Analiza Fałszywych Wiadomości SMS")
9
+ st.write("Wprowadź treść wiadomości SMS oraz numer telefonu nadawcy, aby przeprowadzić analizę pod kątem potencjalnego oszustwa.")
10
+
11
+ with st.form("sms_form"):
12
+ message = st.text_area("Treść wiadomości SMS", height=150)
13
+ phone_number = st.text_input("Numer telefonu nadawcy (w formacie międzynarodowym, np. +48123123123)")
14
+
15
+ st.markdown("### Dodatkowe Informacje")
16
+ # Dodane pytania
17
+ frequency = st.selectbox(
18
+ "Jak często otrzymujesz wiadomości od tego numeru?",
19
+ ('Pierwszy raz', 'Sporadycznie', 'Regularnie')
20
+ )
21
+ last_received = st.selectbox(
22
+ "Kiedy ostatnio otrzymałeś podobną wiadomość?",
23
+ ('Dziś', 'W ciągu ostatniego tygodnia', 'W ciągu ostatniego miesiąca', 'Dłużej')
24
+ )
25
+ confidence_level = st.slider(
26
+ "Jak bardzo jesteś pewny, że wiadomość jest autentyczna?",
27
+ 1, 5, 3,
28
+ help="1: Bardzo mało pewny, 5: Bardzo pewny"
29
+ )
30
+ unexpected = st.radio(
31
+ "Czy otrzymanie tej wiadomości było dla Ciebie niespodziewane?",
32
+ ('Tak', 'Nie')
33
+ )
34
+ additional_notes = st.text_area("Dodatkowe uwagi lub informacje (opcjonalnie)", height=100)
35
+
36
+ submitted = st.form_submit_button("Analizuj wiadomość")
37
+
38
+ if submitted:
39
+ if not message.strip():
40
+ st.error("Proszę wprowadzić treść wiadomości.")
41
+ elif not phone_number.strip():
42
+ st.error("Proszę wprowadzić numer telefonu nadawcy.")
43
+ else:
44
+ # Informacje o numerze telefonu
45
+ country, operator = get_phone_info(phone_number)
46
+ if country and operator:
47
+ st.write(f"**Informacje o numerze telefonu:**")
48
+ st.write(f"- **Kraj:** {country}")
49
+ st.write(f"- **Operator:** {operator}")
50
+ else:
51
+ st.write("Nie udało się uzyskać informacji o numerze telefonu.")
52
+
53
+ # Heurystyczne sprawdzenia
54
+ warnings = simple_checks(message)
55
+ if warnings:
56
+ st.warning("Znaleziono następujące potencjalne czerwone flagi:")
57
+ for warn in warnings:
58
+ st.write(f"- {warn}")
59
+
60
+ # Zbierz dodatkowe informacje
61
+ additional_info = f"""
62
+ **Jak często otrzymujesz wiadomości od tego numeru?** {frequency}
63
+ **Kiedy ostatnio otrzymałeś podobną wiadomość?** {last_received}
64
+ **Jak bardzo jesteś pewny, że wiadomość jest autentyczna?** {confidence_level}/5
65
+ **Czy otrzymanie tej wiadomości było dla Ciebie niespodziewane?** {unexpected}
66
+ **Dodatkowe uwagi lub informacje:** {additional_notes}
67
+ """
68
+
69
+ # Pobierz klucz API
70
+ api_key = os.getenv('SAMBANOVA_API_KEY')
71
+ if not api_key:
72
+ st.error("Brak klucza API. Ustaw zmienną środowiskową SAMBANOVA_API_KEY w ustawieniach aplikacji.")
73
+ else:
74
+ # Analiza za pomocą modelu AI
75
+ with st.spinner("Analizuję wiadomość przy użyciu modelu AI..."):
76
+ analysis_text, risk_text, recommendations_text = analyze_message(message, phone_number, additional_info, api_key)
77
+ st.subheader("📑 Analiza treści wiadomości:")
78
+ st.markdown(analysis_text)
79
+ st.subheader("⚠️ Ocena ryzyka oszustwa:")
80
+ st.markdown(risk_text)
81
+ st.subheader("✅ Zalecenia dla użytkownika:")
82
+ st.markdown(recommendations_text)
83
+
84
+ # Aktualizacja statystyk na podstawie oceny ryzyka
85
+ try:
86
+ risk_score = int(risk_text.split("/")[0].split(":")[-1].strip())
87
+ fraud_detected = risk_score >= 7 # Przykładowy próg
88
+ update_stats(fraud_detected=fraud_detected)
89
+ except:
90
+ pass
91
+
92
+ 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.")
93
+