import os from datetime import datetime, timedelta BASE_DIR = os.path.dirname(os.path.abspath(__file__)) DATA_DIR = os.path.join(BASE_DIR, "data") # 📂 ПОДПАПКИ DАТА SCUD_DIR = os.path.join(DATA_DIR, "scud") ZUP_1C_DIR = os.path.join(DATA_DIR, "1c") OUTPUT_DIR = os.path.join(BASE_DIR, "output") # Создаем директории при их отсутствии for folder in [DATA_DIR, SCUD_DIR, ZUP_1C_DIR, OUTPUT_DIR]: os.makedirs(folder, exist_ok=True) # 📅 Даты NOW = datetime.now() DATE_TODAY = NOW.strftime("%d.%m.%Y") if NOW.weekday() == 0: # Понедельник -> Вчера = Пятница DATE_YESTERDAY = (NOW - timedelta(days=3)).strftime("%d.%m.%Y") else: DATE_YESTERDAY = (NOW - timedelta(days=1)).strftime("%d.%m.%Y") # 📄 Пути к файлам SCUD_FILE_TODAY = os.path.join(SCUD_DIR, f"Сотрудники_{DATE_TODAY}.xlsx") SCUD_FILE_YESTERDAY = os.path.join(SCUD_DIR, f"Сотрудники_{DATE_YESTERDAY}.xlsx") SCUD_FILE = os.path.join(SCUD_DIR, "Сотрудники.xlsx") STAFF_FILE_1C = os.path.join(ZUP_1C_DIR, "Штатные сотрудники - ОУП.xlsx") ABSENT_FILE_1C = os.path.join(ZUP_1C_DIR, "Отсутствия сотрудников - выгрузка.xlsx") # Настройки Ollama / RAG (объявляем оба имени для совместимости) OLLAMA_URL = "http://10.121.18.227:11434/api/generate" OLLAMA_MODEL = "qwen2.5:14b" MODEL_NAME = OLLAMA_MODEL KNOWLEDGE_BASE_PATH = os.path.join(DATA_DIR, "knowledge_base.json") EXCEPTIONS_PATH = os.path.join(BASE_DIR, "exceptions.json") def normalize_fio(fio): if not fio or not isinstance(fio, str): return "" parts = fio.strip().split() return " ".join(parts).title() def clean_scud_fio_light(fio_str): if not isinstance(fio_str, str): return "" fio_clean = fio_str.replace("(сводная)", "").strip() return normalize_fio(fio_clean) def load_exceptions(): import json if os.path.exists(EXCEPTIONS_PATH): try: with open(EXCEPTIONS_PATH, "r", encoding="utf-8") as f: return json.load(f) except Exception: pass return {"fio": [], "departments": [], "positions": [], "position_keywords": []}