From de1e06cb2c459ee3fc720dba268070c1ca4a990a Mon Sep 17 00:00:00 2001 From: ohmo Date: Sat, 4 Jul 2026 16:41:55 +0700 Subject: [PATCH] add: department exclusion check for auto-approval --- sd_dispatcher.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/sd_dispatcher.py b/sd_dispatcher.py index 4e41863..6fb3368 100644 --- a/sd_dispatcher.py +++ b/sd_dispatcher.py @@ -196,7 +196,8 @@ def find_user_in_ad(requester, caller_phone=None, ticket_id=None): manager_email = conn.entries[0].mail.value department = user.department.value if "department" in user and user.department.value else None - return {"city": city, "company": company, "ad_path": ad_path, "manager_email": manager_email, "source": f"AD ({search_by})"} + department = user.department.value if "department" in user and user.department.value else None + return {"city": city, "company": company, "department": department, "ad_path": ad_path, "manager_email": manager_email, "source": f"AD ({search_by})"} return {"city": city, "company": company, "department": department, "ad_path": ad_path, "manager_email": manager_email, "source": f"AD ({search_by})"} log_to_file(f"❌ Ошибка LDAP или таймаут сети AD: {e}", ticket_id) return None @@ -764,6 +765,7 @@ def process_ticket_logic(req_id): company = user_info["company"] if user_info else None ad_path = user_info["ad_path"] if user_info else None manager_email = user_info["manager_email"] if user_info else None + user_department = user_info["department"] if user_info else None info_source = user_info["source"] if user_info else "Не определен" user_department = user_info["department"] if user_info else None @@ -891,6 +893,17 @@ def process_ticket_logic(req_id): is_cat_ok = False if cat_name in APPROVAL_CATEGORIES: allowed_subcats = APPROVAL_CATEGORIES[cat_name] + # Проверка: отдел пользователя в списке исключений + is_excluded = False + if user_department and APPROVAL_EXCLUDED_DEPARTMENTS: + for dept in APPROVAL_EXCLUDED_DEPARTMENTS: + if dept.lower() in user_department.lower() or user_department.lower() in dept.lower(): + is_excluded = True + t_log(f" ⚠️ Отдел '{user_department}' в списке исключений — автосогласование отменено") + break + if is_excluded: + t_log(" ⏭ Пропуск: пользователь в исключённом отделе.") + continue if "*" in allowed_subcats or subcat_name in allowed_subcats: is_cat_ok = True # Проверка: отдел пользователя в списке исключений