64 lines
2.2 KiB
Python
64 lines
2.2 KiB
Python
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": []} |