Первичная зашифрованная версия проекта

This commit is contained in:
2026-07-27 21:10:59 +03:00
commit 97b4be7162
14 changed files with 947 additions and 0 deletions
+46
View File
@@ -0,0 +1,46 @@
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