46 lines
2.7 KiB
Python
46 lines
2.7 KiB
Python
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 |