import os import pandas as pd from datetime import datetime, timedelta from config import DATA_DIR, DATE_TODAY, DATE_YESTERDAY def check_file_freshness(): """ Проверяет наличие и актуальность файлов СКУД и 1С. Возвращает (is_valid, warnings_list, errors_list) """ errors = [] warnings = [] # Ожидаемые имена файлов scud_today_file = os.path.join(DATA_DIR, f"Сотрудники_{DATE_TODAY}.xlsx") scud_yesterday_file = os.path.join(DATA_DIR, f"Сотрудники_{DATE_YESTERDAY}.xlsx") staff_file = os.path.join(DATA_DIR, "Штатные сотрудники - ОУП.xlsx") absent_file = os.path.join(DATA_DIR, "Отсутствия сотрудников - выгрузка.xlsx") now = datetime.now() # 1. Проверка файла СКУД за СЕГОДНЯ if not os.path.exists(scud_today_file): errors.append(f"❌ КРИТИЧЕСКАЯ ОШИБКА: Отсутствует актуальный файл СКУД за сегодня: 'Сотрудники_{DATE_TODAY}.xlsx'!") else: # Проверяем дату изменения файла (mtime) file_mtime = datetime.fromtimestamp(os.path.getmtime(scud_today_file)) if file_mtime.date() < now.date(): errors.append(f"⚠️ ОШИБКА АКТУАЛЬНОСТИ: Файл 'Сотрудники_{DATE_TODAY}.xlsx' существует, но изменялся прошлым днем ({file_mtime.strftime('%d.%m.%Y %H:%M')})!") # 2. Проверка файла СКУД за ВЧЕРА if not os.path.exists(scud_yesterday_file): warnings.append(f"⚠️ ПРЕДУПРЕЖДЕНИЕ: Файл СКУД за вчера ({DATE_YESTERDAY}) не найден. Детальный отчет за вчера может быть неполным.") # 3. Проверка файлов 1С (Штат и Отсутствия) for f_path, f_name in [(staff_file, "Штатные сотрудники"), (absent_file, "Выгрузка отсутствий")]: if not os.path.exists(f_path): errors.append(f"❌ КРИТИЧЕСКАЯ ОШИБКА: Файл 1С '{f_name}' не найден в папке data/!") else: file_mtime = datetime.fromtimestamp(os.path.getmtime(f_path)) days_old = (now - file_mtime).days if days_old >= 2: warnings.append(f"⚠️ УСТАРЕВШИЕ ДАННЫЕ 1С: Файл '{os.path.basename(f_path)}' не обновлялся {days_old} дн. (Дата: {file_mtime.strftime('%d.%m.%Y')})") is_valid = len(errors) == 0 return is_valid, warnings, errors