Spaces:
Running
Running
Update pages/Analysis.py
Browse files- pages/Analysis.py +39 -38
pages/Analysis.py
CHANGED
@@ -7,11 +7,10 @@ from utils.functions import (
|
|
7 |
analyze_message,
|
8 |
update_stats,
|
9 |
add_to_history,
|
10 |
-
is_fake_number
|
11 |
-
add_fake_number
|
12 |
)
|
13 |
import os
|
14 |
-
import re
|
15 |
from phonenumbers import parse, is_valid_number, NumberParseException
|
16 |
|
17 |
def show_analysis(language):
|
@@ -82,71 +81,73 @@ def show_analysis(language):
|
|
82 |
}
|
83 |
}
|
84 |
|
85 |
-
|
86 |
-
|
|
|
|
|
87 |
|
88 |
with st.form("sms_form"):
|
89 |
message = st.text_area(
|
90 |
-
label=
|
91 |
-
placeholder=
|
92 |
height=150
|
93 |
)
|
94 |
phone_number = st.text_input(
|
95 |
-
label=
|
96 |
value="",
|
97 |
-
max_chars=
|
98 |
)
|
99 |
|
100 |
-
st.markdown(f"### {
|
101 |
|
102 |
# Dodane pytania
|
103 |
frequency = st.selectbox(
|
104 |
-
label=
|
105 |
-
options=
|
106 |
)
|
107 |
last_received = st.selectbox(
|
108 |
-
label=
|
109 |
-
options=
|
110 |
)
|
111 |
confidence_level = st.slider(
|
112 |
-
label=
|
113 |
min_value=1,
|
114 |
max_value=5,
|
115 |
value=3,
|
116 |
-
help=
|
117 |
)
|
118 |
unexpected = st.radio(
|
119 |
-
label=
|
120 |
-
options=
|
121 |
)
|
122 |
additional_notes = st.text_area(
|
123 |
-
label=
|
124 |
height=100
|
125 |
)
|
126 |
|
127 |
-
submitted = st.form_submit_button(
|
128 |
|
129 |
if submitted:
|
130 |
if not message.strip():
|
131 |
-
st.error(
|
132 |
elif not phone_number.strip():
|
133 |
-
st.error(
|
134 |
else:
|
135 |
# Informacje o numerze telefonu
|
136 |
country, operator = get_phone_info(phone_number)
|
137 |
if country and operator:
|
138 |
-
st.write("**
|
139 |
-
st.write(f"- **
|
140 |
st.write(f"- **Operator:** {operator}")
|
141 |
else:
|
142 |
-
st.write("
|
143 |
|
144 |
# Sprawdzenie, czy numer jest w bazie fałszywych numerów
|
145 |
if is_fake_number(phone_number):
|
146 |
-
st.warning(
|
147 |
fraud_detected = True
|
148 |
else:
|
149 |
-
st.info(
|
150 |
fraud_detected = False
|
151 |
|
152 |
# Przeprowadź proste sprawdzenia heurystyczne
|
@@ -187,17 +188,17 @@ def show_analysis(language):
|
|
187 |
# Pobierz klucz API z Secret
|
188 |
api_key = os.getenv('SAMBANOVA_API_KEY')
|
189 |
if not api_key:
|
190 |
-
st.error("
|
191 |
else:
|
192 |
-
with st.spinner("
|
193 |
analysis_text, risk_text, recommendations_text = analyze_message(
|
194 |
message, phone_number, additional_info, api_key, language
|
195 |
)
|
196 |
-
st.subheader("📑
|
197 |
st.markdown(analysis_text)
|
198 |
-
st.subheader("⚠️
|
199 |
st.markdown(risk_text)
|
200 |
-
st.subheader("✅
|
201 |
st.markdown(recommendations_text)
|
202 |
|
203 |
# Aktualizacja statystyk na podstawie oceny ryzyka
|
@@ -211,21 +212,21 @@ def show_analysis(language):
|
|
211 |
# Dodanie analizy do historii
|
212 |
add_to_history(message, phone_number, analysis_text, risk_text, recommendations_text)
|
213 |
|
214 |
-
st.info("📌
|
215 |
|
216 |
# Zgłoszenie numeru jako oszustwo
|
217 |
if fraud_detected:
|
218 |
-
if st.button(
|
219 |
try:
|
220 |
parsed_number = parse(phone_number, None)
|
221 |
if is_valid_number(parsed_number):
|
222 |
success = add_fake_number(phone_number)
|
223 |
if success:
|
224 |
-
st.success("
|
225 |
else:
|
226 |
-
st.info("
|
227 |
else:
|
228 |
-
st.error("
|
229 |
except NumberParseException:
|
230 |
-
st.error("
|
231 |
|
|
|
7 |
analyze_message,
|
8 |
update_stats,
|
9 |
add_to_history,
|
10 |
+
is_fake_number
|
|
|
11 |
)
|
12 |
import os
|
13 |
+
import re
|
14 |
from phonenumbers import parse, is_valid_number, NumberParseException
|
15 |
|
16 |
def show_analysis(language):
|
|
|
81 |
}
|
82 |
}
|
83 |
|
84 |
+
translations = page_translations[language]
|
85 |
+
|
86 |
+
st.header(translations['header'])
|
87 |
+
st.write(translations['content'])
|
88 |
|
89 |
with st.form("sms_form"):
|
90 |
message = st.text_area(
|
91 |
+
label=translations['content'], # Non-empty label for accessibility
|
92 |
+
placeholder=translations['input_placeholder'],
|
93 |
height=150
|
94 |
)
|
95 |
phone_number = st.text_input(
|
96 |
+
label=translations['phone_input_label'],
|
97 |
value="",
|
98 |
+
max_chars=20 # Zwiększenie limitu znaków dla numerów międzynarodowych
|
99 |
)
|
100 |
|
101 |
+
st.markdown(f"### {translations['additional_info_header']}")
|
102 |
|
103 |
# Dodane pytania
|
104 |
frequency = st.selectbox(
|
105 |
+
label=translations['frequency_label'],
|
106 |
+
options=translations['frequency_options']
|
107 |
)
|
108 |
last_received = st.selectbox(
|
109 |
+
label=translations['last_received_label'],
|
110 |
+
options=translations['last_received_options']
|
111 |
)
|
112 |
confidence_level = st.slider(
|
113 |
+
label=translations['confidence_level_label'],
|
114 |
min_value=1,
|
115 |
max_value=5,
|
116 |
value=3,
|
117 |
+
help=translations['confidence_level_help']
|
118 |
)
|
119 |
unexpected = st.radio(
|
120 |
+
label=translations['unexpected_label'],
|
121 |
+
options=translations['unexpected_options']
|
122 |
)
|
123 |
additional_notes = st.text_area(
|
124 |
+
label=translations['additional_notes_label'],
|
125 |
height=100
|
126 |
)
|
127 |
|
128 |
+
submitted = st.form_submit_button(translations['analyze_button'])
|
129 |
|
130 |
if submitted:
|
131 |
if not message.strip():
|
132 |
+
st.error(translations['input_placeholder'])
|
133 |
elif not phone_number.strip():
|
134 |
+
st.error(translations['phone_input_label'])
|
135 |
else:
|
136 |
# Informacje o numerze telefonu
|
137 |
country, operator = get_phone_info(phone_number)
|
138 |
if country and operator:
|
139 |
+
st.write("**Phone Number Information:**")
|
140 |
+
st.write(f"- **Country:** {country}")
|
141 |
st.write(f"- **Operator:** {operator}")
|
142 |
else:
|
143 |
+
st.write("Unable to retrieve phone number information.")
|
144 |
|
145 |
# Sprawdzenie, czy numer jest w bazie fałszywych numerów
|
146 |
if is_fake_number(phone_number):
|
147 |
+
st.warning(translations['result_positive'])
|
148 |
fraud_detected = True
|
149 |
else:
|
150 |
+
st.info(translations['result_negative'])
|
151 |
fraud_detected = False
|
152 |
|
153 |
# Przeprowadź proste sprawdzenia heurystyczne
|
|
|
188 |
# Pobierz klucz API z Secret
|
189 |
api_key = os.getenv('SAMBANOVA_API_KEY')
|
190 |
if not api_key:
|
191 |
+
st.error("API key is missing. Please set the SAMBANOVA_API_KEY environment variable.")
|
192 |
else:
|
193 |
+
with st.spinner("Analyzing the message using AI model..."):
|
194 |
analysis_text, risk_text, recommendations_text = analyze_message(
|
195 |
message, phone_number, additional_info, api_key, language
|
196 |
)
|
197 |
+
st.subheader("📑 Message Content Analysis:")
|
198 |
st.markdown(analysis_text)
|
199 |
+
st.subheader("⚠️ Fraud Risk Assessment:")
|
200 |
st.markdown(risk_text)
|
201 |
+
st.subheader("✅ User Recommendations:")
|
202 |
st.markdown(recommendations_text)
|
203 |
|
204 |
# Aktualizacja statystyk na podstawie oceny ryzyka
|
|
|
212 |
# Dodanie analizy do historii
|
213 |
add_to_history(message, phone_number, analysis_text, risk_text, recommendations_text)
|
214 |
|
215 |
+
st.info("📌 Remember: Stay cautious with messages from unknown senders.")
|
216 |
|
217 |
# Zgłoszenie numeru jako oszustwo
|
218 |
if fraud_detected:
|
219 |
+
if st.button(translations['report_button']):
|
220 |
try:
|
221 |
parsed_number = parse(phone_number, None)
|
222 |
if is_valid_number(parsed_number):
|
223 |
success = add_fake_number(phone_number)
|
224 |
if success:
|
225 |
+
st.success("Number has been reported as fraud.")
|
226 |
else:
|
227 |
+
st.info("Number has already been reported as fraud.")
|
228 |
else:
|
229 |
+
st.error("The provided phone number is invalid.")
|
230 |
except NumberParseException:
|
231 |
+
st.error("Failed to parse the phone number. Please ensure it is in the correct format.")
|
232 |
|