File size: 2,161 Bytes
13d0427
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import logging
import sys
import os

logging.basicConfig(
    level=logging.INFO, 
    format='%(asctime)s - %(levelname)s - %(message)s', 
    handlers=[
        logging.FileHandler("aiexp.log"),
        logging.StreamHandler(sys.stdout)
    ])
logger = logging.getLogger(__name__)

def log_message(message):
    logger.info(message)
    print(message, flush=True)
    sys.stdout.flush()

CHUNKS_LOG_FILE = "all_chunks_debug.log"

def init_chunks_log():
    """
    Создает (или перезаписывает) файл лога чанков.
    Вызывать один раз при старте/перезапуске системы.
    """
    try:
        with open(CHUNKS_LOG_FILE, 'w', encoding='utf-8') as f:
            f.write("=== РЕЕСТР ВСЕХ ЧАНКОВ (ОЧИЩЕНО ПРИ ЗАПУСКЕ) ===\n")
        log_message(f"Файл лога чанков очищен: {CHUNKS_LOG_FILE}")
    except Exception as e:
        log_message(f"Ошибка создания лога чанков: {e}")

def log_full_chunk_to_file(doc, index, total):
    """
    Записывает полное содержимое чанка в отдельный файл.
    """
    try:
        doc_id = doc.metadata.get('document_id', 'UNKNOWN')
        doc_type = doc.metadata.get('type', 'text')
        
        # Формируем заголовок для чанка
        header = f"\n{'='*20} CHUNK #{index+1}/{total} [{'TABLE' if doc_type=='table' else 'TEXT'}] {'='*20}\n"
        meta_info = f"DOC ID: {doc_id}\nMETADATA: {doc.metadata}\n"
        content_sep = f"{'-'*20} CONTENT START {'-'*20}\n"
        footer = f"\n{'-'*20} CONTENT END {'-'*20}\n"
        
        with open(CHUNKS_LOG_FILE, 'a', encoding='utf-8') as f:
            f.write(header)
            f.write(meta_info)
            f.write(content_sep)
            f.write(doc.text) # Самое важное - полный текст
            f.write(footer)
            
    except Exception as e:
        # Не ломаем приложение, если лог не записался
        print(f"Ошибка записи чанка в лог: {e}")