проект теперь работает с использованием локальной базы данных SQLite. Все данные аккумулируются и хранятся в ней. Впереди - разработка веб интерфейса.
This commit is contained in:
+28
-20
@@ -1,34 +1,42 @@
|
||||
import os
|
||||
import time
|
||||
from datetime import datetime
|
||||
from config import SCUD_FILE_TODAY, STAFF_FILE_1C, ABSENT_FILE_1C
|
||||
from config import DATE_TODAY, DATE_YESTERDAY, find_dated_file, ZUP_1C_DIR, SCUD_DIR
|
||||
|
||||
|
||||
def check_file_freshness(max_age_hours=24):
|
||||
"""
|
||||
Проверяет существование и свежесть входных файлов.
|
||||
Проверяет существование входных файлов 1С и СКУД.
|
||||
Возвращает флаги доступности файлов за Сегодня и Вчера.
|
||||
"""
|
||||
warnings = []
|
||||
errors = []
|
||||
now = time.time()
|
||||
max_age_sec = max_age_hours * 3600
|
||||
|
||||
# 1. Проверка файлов 1С в data/1c
|
||||
for file_path, label in [(STAFF_FILE_1C, "Штатное расписание 1С"), (ABSENT_FILE_1C, "Отсутствия 1С")]:
|
||||
if not os.path.exists(file_path):
|
||||
errors.append(f"Файл '{label}' не найден по пути: {file_path}")
|
||||
else:
|
||||
mtime = os.path.getmtime(file_path)
|
||||
age_hours = (now - mtime) / 3600
|
||||
if age_hours > max_age_hours:
|
||||
warnings.append(
|
||||
f"Файл '{label}' обновлялся давно ({age_hours:.1f} ч. назад). "
|
||||
f"Дата изменения: {datetime.fromtimestamp(mtime).strftime('%d.%m.%Y %H:%M')}"
|
||||
)
|
||||
# 1. Проверка файлов 1С за СЕГОДНЯ
|
||||
staff_today = find_dated_file("Штат", DATE_TODAY)
|
||||
absent_today = find_dated_file("Отсутствия", DATE_TODAY)
|
||||
has_today_1c = bool(staff_today and absent_today)
|
||||
|
||||
# 2. Проверка файла СКУД в data/scud
|
||||
if not os.path.exists(SCUD_FILE_TODAY):
|
||||
warnings.append(f"Сегодняшний файл СКУД еще не сформирован: {SCUD_FILE_TODAY}")
|
||||
if not has_today_1c:
|
||||
warnings.append(
|
||||
f"Файлы 1С за СЕГОДНЯ ({DATE_TODAY}) еще не выложены на сетевую шару. "
|
||||
f"Формирование Ежедневной сводки за сегодня будет временно пропущено."
|
||||
)
|
||||
|
||||
# 2. Проверка файлов 1С за ВЧЕРА (критически важны для детального отчета)
|
||||
staff_yesterday = find_dated_file("Штат", DATE_YESTERDAY)
|
||||
absent_yesterday = find_dated_file("Отсутствия", DATE_YESTERDAY)
|
||||
|
||||
if not staff_yesterday or not absent_yesterday:
|
||||
errors.append(
|
||||
f"Отсутствуют файлы 1С за ВЧЕРА ({DATE_YESTERDAY}) в папке {ZUP_1C_DIR}. "
|
||||
f"Невозможно построить детальный отчет за прошлую смену."
|
||||
)
|
||||
|
||||
# 3. Проверка файлов СКУД
|
||||
scud_today = find_dated_file("Сотрудники", DATE_TODAY, search_dirs=[SCUD_DIR])
|
||||
if not scud_today:
|
||||
warnings.append(f"Сегодняшний файл СКУД за {DATE_TODAY} еще не сформирован в {SCUD_DIR}")
|
||||
|
||||
is_valid = len(errors) == 0
|
||||
return is_valid, warnings, errors
|
||||
return is_valid, warnings, errors, has_today_1c
|
||||
Reference in New Issue
Block a user