Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -279,11 +279,11 @@ def get_reference_message(gender, generation, psychotype, business_stage, indust
|
|
279 |
print(f"Error accessing the file: {response.status_code}")
|
280 |
return None
|
281 |
|
282 |
-
#
|
283 |
for col in ["Пол", "Поколение", "Психотип", "Стадия бизнеса", "Отрасль", "ОПФ"]:
|
284 |
df[col] = df[col].astype(str).str.strip().str.lower()
|
285 |
|
286 |
-
#
|
287 |
params = {
|
288 |
"Пол": str(gender).strip().lower() if gender else None,
|
289 |
"Поколение": str(generation).strip().lower() if generation else None,
|
@@ -293,22 +293,17 @@ def get_reference_message(gender, generation, psychotype, business_stage, indust
|
|
293 |
"ОПФ": str(legal_form).strip().lower() if legal_form else None
|
294 |
}
|
295 |
|
296 |
-
#
|
297 |
-
print("DataFrame columns:", df.columns)
|
298 |
-
print("DataFrame head:\n", df.head())
|
299 |
-
print("Personalization parameters:", params)
|
300 |
-
|
301 |
-
# Build the filter conditions dynamically
|
302 |
filter_conditions = []
|
303 |
for col, value in params.items():
|
304 |
if value and value.lower() != 'none':
|
305 |
filter_conditions.append(df[col] == value)
|
306 |
|
307 |
if not filter_conditions:
|
308 |
-
print("
|
309 |
return None
|
310 |
|
311 |
-
#
|
312 |
filter_condition = filter_conditions[0]
|
313 |
for condition in filter_conditions[1:]:
|
314 |
filter_condition &= condition
|
@@ -316,21 +311,24 @@ def get_reference_message(gender, generation, psychotype, business_stage, indust
|
|
316 |
filtered_df = df[filter_condition]
|
317 |
|
318 |
if filtered_df.empty:
|
319 |
-
print("
|
320 |
return None
|
321 |
|
322 |
-
#
|
323 |
filtered_df = filtered_df.sort_values(by="Timestamp", ascending=False)
|
324 |
|
325 |
-
#
|
326 |
latest_row = filtered_df.iloc[0]
|
327 |
|
328 |
-
#
|
329 |
if pd.notnull(latest_row.get("Откорректированное сообщение", None)) and latest_row["Откорректированное сообщение"].strip():
|
330 |
reference_message = latest_row["Откорректированное сообщение"]
|
331 |
else:
|
332 |
reference_message = latest_row.get("Персонализированное сообщение", "")
|
333 |
|
|
|
|
|
|
|
334 |
return reference_message
|
335 |
|
336 |
|
|
|
279 |
print(f"Error accessing the file: {response.status_code}")
|
280 |
return None
|
281 |
|
282 |
+
# Нормализуем данные для корректного сравнения
|
283 |
for col in ["Пол", "Поколение", "Психотип", "Стадия бизнеса", "Отрасль", "ОПФ"]:
|
284 |
df[col] = df[col].astype(str).str.strip().str.lower()
|
285 |
|
286 |
+
# Нормализуем входные параметры
|
287 |
params = {
|
288 |
"Пол": str(gender).strip().lower() if gender else None,
|
289 |
"Поколение": str(generation).strip().lower() if generation else None,
|
|
|
293 |
"ОПФ": str(legal_form).strip().lower() if legal_form else None
|
294 |
}
|
295 |
|
296 |
+
# Формируем условия фильтрации
|
|
|
|
|
|
|
|
|
|
|
297 |
filter_conditions = []
|
298 |
for col, value in params.items():
|
299 |
if value and value.lower() != 'none':
|
300 |
filter_conditions.append(df[col] == value)
|
301 |
|
302 |
if not filter_conditions:
|
303 |
+
print("Не заданы параметры персонализации.")
|
304 |
return None
|
305 |
|
306 |
+
# Применяем фильтрацию
|
307 |
filter_condition = filter_conditions[0]
|
308 |
for condition in filter_conditions[1:]:
|
309 |
filter_condition &= condition
|
|
|
311 |
filtered_df = df[filter_condition]
|
312 |
|
313 |
if filtered_df.empty:
|
314 |
+
print("Сообщения с заданными параметрами не найдены.")
|
315 |
return None
|
316 |
|
317 |
+
# Сортируем по дате
|
318 |
filtered_df = filtered_df.sort_values(by="Timestamp", ascending=False)
|
319 |
|
320 |
+
# Берем последнее сообщение
|
321 |
latest_row = filtered_df.iloc[0]
|
322 |
|
323 |
+
# Получаем сообщение
|
324 |
if pd.notnull(latest_row.get("Откорректированное сообщение", None)) and latest_row["Откорректированное сообщение"].strip():
|
325 |
reference_message = latest_row["Откорректированное сообщение"]
|
326 |
else:
|
327 |
reference_message = latest_row.get("Персонализированное сообщение", "")
|
328 |
|
329 |
+
# Удаляем строку с количеством знаков
|
330 |
+
reference_message = re.sub(r'\n-{6,}\nКоличество знаков: \d+', '', reference_message).strip()
|
331 |
+
|
332 |
return reference_message
|
333 |
|
334 |
|