проект теперь работает с использованием локальной базы данных SQLite. Все данные аккумулируются и хранятся в ней. Впереди - разработка веб интерфейса.

This commit is contained in:
2026-08-03 12:59:23 +03:00
parent d39618c891
commit 0efbe4ff99
14 changed files with 976 additions and 300 deletions
+28 -20
View File
@@ -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