import json
import os

# --- KONFIGURACJA ---
# Tutaj mapujemy nazwę pliku na kategorię, którą chcemy "wypalić" w treści
FILES_MAPPING = {
    "sniadania.jsonl": "ŚNIADANIE (RANO)",
    "drugie_sniadania.jsonl": "DRUGIE ŚNIADANIE / PRZEKĄSKA",
    "obiady.jsonl": "OBIAD (DANIE GŁÓWNE)",
    "kolacje.jsonl": "KOLACJA (WIECZÓR)",
    # "desery.jsonl": "DESER"
}

OUTPUT_DIR = "./gotowe_do_rag"
if not os.path.exists(OUTPUT_DIR):
    os.makedirs(OUTPUT_DIR)

def process_files():
    print("--- ROZPOCZYNAM PRZETWARZANIE DANYCH ---")

    for filename, category_tag in FILES_MAPPING.items():
        if not os.path.exists(filename):
            print(f"⚠️  Pominięto {filename} (brak pliku)")
            continue

        output_path = os.path.join(OUTPUT_DIR, f"processed_{filename}")

        print(f"🔄 Przetwarzanie: {filename} -> Kategoria: {category_tag}")

        with open(filename, 'r', encoding='utf-8') as fin, \
             open(output_path, 'w', encoding='utf-8') as fout:

            count = 0
            for line in fin:
                line = line.strip()
                if not line: continue

                try:
                    # 1. Wczytaj oryginalny JSON
                    record = json.loads(line)

                    # 2. Stwórz wersję tekstową idealną dla LLM
                    # Ignorujemy techniczne ID, skupiamy się na treści
                    content_for_ai = f"""
### TYP POSIŁKU: {category_tag}
NAZWA: {record.get('name', 'Bez nazwy')}
KALORIE: {record.get('calories', 'brak danych')} kcal
SKŁADNIKI: {', '.join(record.get('ingredients', []))}
PRZYGOTOWANIE: {record.get('preparation', '')}
""".strip()

                    # 3. Zapisz jako nowy obiekt JSONL z gotowym polem 'text_content'
                    # RAG będzie czytał tylko to pole 'text_content'
                    new_record = {
                        "source_file": filename,
                        "category": category_tag,
                        "text_content": content_for_ai
                    }

                    fout.write(json.dumps(new_record, ensure_ascii=False) + "\n")
                    count += 1
                except json.JSONDecodeError:
                    continue

        print(f"✅ Zapisano {count} przepisów do {output_path}")

    print(f"\nGotowe! Pliki do wgrania znajdują się w folderze: {OUTPUT_DIR}")

if __name__ == "__main__":
    process_files()
