"""Identificación de fabricante por OUI (base local, sin Internet)."""
from __future__ import annotations

import json
from pathlib import Path
from typing import Dict

from .models import app_root, mac_oui_prefix, normalize_mac

_CACHE: Dict[str, str] = {}
_LOADED = False


def _load() -> None:
    global _LOADED, _CACHE
    if _LOADED:
        return
    path = app_root() / "data" / "oui_vendors.json"
    if not path.exists():
        # fallback relativo al paquete
        path = Path(__file__).resolve().parent.parent / "data" / "oui_vendors.json"
    data: Dict[str, str] = {}
    if path.exists():
        with open(path, "r", encoding="utf-8") as f:
            raw = json.load(f)
        for k, v in raw.items():
            if k.startswith("_"):
                continue
            key = k.replace(":", "").replace("-", "").upper()
            data[key] = v
    _CACHE = data
    _LOADED = True


def lookup_vendor(mac: str) -> str:
    _load()
    prefix = mac_oui_prefix(mac)
    if not prefix:
        return ""
    return _CACHE.get(prefix.upper(), "")


def known_vendors() -> Dict[str, str]:
    _load()
    return dict(_CACHE)
