import os
from datetime import datetime

# API & MODELS
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")

EMBED_MODEL = "text-embedding-3-small"
LLM_MODEL = "gpt-4o-mini"

# TENANT & RUN METADATA
TENANT_ID = "zydus-poc"
RUN_ID = f"{TENANT_ID}-{datetime.now().strftime('%Y%m%d-%H%M%S')}"

# BASE DIRECTORY (Zydus POC aligned)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

POC_ROOT = os.path.join(BASE_DIR, "Zydus-POC", "AnnualReports")

INPUT_DIR = os.path.join(POC_ROOT, "Input")
OUTPUT_DIR = os.path.join(POC_ROOT, "Output")
ARTIFACTS_DIR = os.path.join(POC_ROOT, "Artifacts")

INDEX_DIR = os.path.join(ARTIFACTS_DIR, "indexes", "faiss")

for path in [INPUT_DIR, OUTPUT_DIR, ARTIFACTS_DIR, INDEX_DIR]:
    os.makedirs(path, exist_ok=True)

# CHUNKING CONFIGURATION
CHUNK_SIZE = 800
CHUNK_OVERLAP = 150

ENABLE_PAGE_NUMBERS = True   # HIGHLY recommended for pharma
FALLBACK_TO_CHUNK_ORDER = True

# RETRIEVAL CONFIGURATION
TOP_K_PER_CATEGORY = 40
MIN_TOP_K = 25
MAX_TOP_K = 60

MAX_FINDINGS_PER_CATEGORY = 15

# FIXED EXTRACTION CATEGORIES (ENTERPRISE)
CATEGORIES = [
    "Regulatory & Compliance",
    "Quality / Audit / Inspection",
    "Operational / Manufacturing",
    "Supply Chain",
    "ESG / Sustainability",
    "Financial Risks",
    "Legal / Litigation",
    "Cyber / Data / Privacy"
]

# SCORING CONFIGURATION (DETERMINISTIC)
SEVERITY_SCORES = {
    "High": 3,
    "Medium": 2,
    "Low": 1
}
KEYWORD_BOOSTS = [
    "non-compliance",
    "regulatory",
    "audit finding",
    "inspection"
]

# ARTIFACT FILE NAMES
FINDINGS_FILE = os.path.join(ARTIFACTS_DIR, "findings.json")
LOG_FILE = os.path.join(ARTIFACTS_DIR, f"run_{RUN_ID}.log")

def retrieval_bundle_path(category: str) -> str:
    safe_name = category.lower().replace(" ", "_").replace("/", "_")
    return os.path.join(
        ARTIFACTS_DIR,
        f"retrieval_bundle_{safe_name}.json"
    )
