from dotenv import load_dotenv

load_dotenv()  # .env 에서 OPENAI_API_KEY 로드

import os

from langchain_community.document_loaders import TextLoader

# (1) 정답
loader = TextLoader("../DATA/nvme.txt", encoding="utf-8")
documents = loader.load()

print(f"불러온 Document 개수: {len(documents)}\n")

doc = documents[0]
print(f"page_content (앞 200자):\n{doc.page_content[:200]}...\n")
print(f"metadata: {doc.metadata}")

# (2) 정답 — 두 번째 텍스트 파일도 같은 방식으로 로드
ssd_docs = TextLoader("../DATA/ssd.txt", encoding="utf-8").load()
print(f"\n[ssd.txt] 불러온 Document 개수: {len(ssd_docs)}")
print(f"metadata: {ssd_docs[0].metadata}")
print(f"page_content (앞 100자): {ssd_docs[0].page_content[:100]}...")

from langchain_text_splitters import RecursiveCharacterTextSplitter

FILES = ["../DATA/nvme.txt", "../DATA/ssd.txt"]
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=100)

# (3) 정답
all_chunks = []
for path in FILES:
    documents = TextLoader(path, encoding="utf-8").load()
    chunks = splitter.split_documents(documents)

    # 파일별로 source(파일명만) + chunk_id(파일 내부 1..N) 부여
    for i, chunk in enumerate(chunks, start=1):
        chunk.metadata["source"] = os.path.basename(path)
        chunk.metadata["chunk_id"] = i

    all_chunks.extend(chunks)
    print(f"{os.path.basename(path)}: {len(chunks)} 청크")
