import os
import random
from langchain_community.vectorstores import Chroma
from langchain_huggingface import HuggingFaceEmbeddings

# --- KONFIGURACJA ---
DB_DIR = "/home/pali112/db_build123d_reference"
# --------------------

def inspect_database():
    if not os.path.exists(DB_DIR):
        print(f"❌ Błąd: Nie znaleziono katalogu bazy: {DB_DIR}")
        return

    print(f"📂 Otwieram bazę z: {DB_DIR} ...")

    # Musimy załadować embeddings, mimo że tylko czytamy tekst (wymóg Chroma w LangChain)
    embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
    db = Chroma(persist_directory=DB_DIR, embedding_function=embeddings)

    # Pobieramy wszystkie dane (bez wektorów, same metadane i tekst)
    # db.get() zwraca słownik: {'ids': [], 'embeddings': None, 'documents': [], 'metadatas': []}
    data = db.get()

    ids = data['ids']
    metadatas = data['metadatas']
    documents = data['documents']

    count = len(ids)

    if count == 0:
        print("⚠️  Baza jest PUSTA!")
        return

    print(f"\n📊 STATYSTYKI BAZY:")
    print(f"   Liczba chunków (fragmentów): {count}")

    # --- ANALIZA ROZDZIAŁÓW ---
    # Zbieramy unikalne pary header_1 > header_2, żeby sprawdzić filtrowanie
    unique_sections = set()
    for meta in metadatas:
        h1 = meta.get('header_1', 'N/A')
        h2 = meta.get('header_2', 'N/A')
        unique_sections.add(f"{h1} > {h2}")

    print("\n🔍 ZAWARTE SEKCJE (Sprawdź czy to tylko te, które chciałeś):")
    for section in sorted(unique_sections):
        print(f"   ✅ {section}")

    # --- PODGLĄD TREŚCI ---
    print("\n📝 PRZYKŁADOWE FRAGMENTY (Losowe 3):")

    # Losujemy 3 indeksy (lub mniej, jeśli baza jest mała)
    sample_indices = random.sample(range(count), min(3, count))

    for i in sample_indices:
        print("-" * 50)
        print(f"ID: {ids[i]}")
        print(f"METADATA: {metadatas[i]}")
        print(f"TREŚĆ (pierwsze 300 znaków):\n")
        print(documents[i][:300] + "...")
        print("-" * 50)

if __name__ == "__main__":
    inspect_database()
