import pandas as pd
import json
import os
import re

# Bước 1: Đọc file Excel và lấy list mã địa điểm
excel_file = "Link LLV 2025.xlsx"
sheet_name = "Bản sao của LLV Form mới"

df = pd.read_excel(excel_file, sheet_name=sheet_name)
filtered_df = df[df["Bên AI review File"] == "Hoàn thành"]

# Lấy list mã địa điểm
ma_dia_diem_list = filtered_df["Mã địa điểm"].tolist()

print(f"Tìm thấy {len(ma_dia_diem_list)} mã địa điểm có trạng thái 'Hoàn thành'")
print(f"Danh sách mã địa điểm: {ma_dia_diem_list[:10]}...")  # In 10 mã đầu tiên

# Bước 2: Đọc các file JSON và trích xuất "Nội dung công việc"
success_folder = "success"
all_work_contents = set()  # Dùng set để tự động loại bỏ trùng lặp

def clean_work_content(text):
    """
    Xử lý chuỗi loại bỏ:
    - Cụm "tầng", "tâng"
    - Cụm "T" + số (T1, T2, T3...)
    - Cụm "tầng" + số
    - Các dấu đặc biệt và số không cần thiết
    """
    if not text:
        return text
    
    # Loại bỏ các cụm "T" + số (T1, T2, T3, T1-T3, T1->T3, v.v.)
    text = re.sub(r'\bT\d+', '', text, flags=re.IGNORECASE)
    text = re.sub(r'T\d+\s*[-–>]+\s*T?\d+', '', text, flags=re.IGNORECASE)
    
    # Loại bỏ "tầng" hoặc "tâng" + số
    text = re.sub(r't[ầâ]ng\s*\d+', '', text, flags=re.IGNORECASE)
    text = re.sub(r't[ầâ]ng\s*\d+\s*[-–>]+\s*\d+', '', text, flags=re.IGNORECASE)
    
    # Loại bỏ từ "tầng", "tâng" đơn lẻ
    text = re.sub(r'\bt[ầâ]ng\b', '', text, flags=re.IGNORECASE)
    
    # Loại bỏ các số đứng riêng lẻ (1, 2, 3...)
    text = re.sub(r'\b\d+\b', '', text)
    
    # Loại bỏ các ký tự đặc biệt thừa: ->, --, ( trống ), v.v.
    text = re.sub(r'[-–>]+\s*[-–>]*', ' ', text)
    text = re.sub(r'\(\s*\)', '', text)
    
    # Loại bỏ khoảng trắng thừa
    text = re.sub(r'\s+', ' ', text)
    text = text.strip()
    
    # Loại bỏ dấu phẩy, dấu chấm ở cuối nếu có
    text = text.strip(',. ')
    
    return text

# Đọc từng file JSON
processed_files = 0
not_found_files = []

for ma_dia_diem in ma_dia_diem_list:
    # Tạo tên file JSON (có thể có nhiều file với cùng mã)
    json_pattern = f"{ma_dia_diem}*.json"
    
    # Tìm tất cả file khớp với pattern
    matching_files = []
    for filename in os.listdir(success_folder):
        if filename.startswith(str(ma_dia_diem)) and filename.endswith('.json'):
            matching_files.append(filename)
    
    if not matching_files:
        not_found_files.append(ma_dia_diem)
        continue
    
    # Xử lý từng file khớp
    for filename in matching_files:
        json_path = os.path.join(success_folder, filename)
        
        try:
            with open(json_path, 'r', encoding='utf-8') as f:
                data = json.load(f)
            
            # Trích xuất "Nội dung công việc" từ Chi_tiet_vi_tri
            if 'Chi_tiet_vi_tri' in data:
                chi_tiet = data['Chi_tiet_vi_tri']
                
                # Duyệt qua từng vị trí (VT1, VT2, ...)
                for vi_tri_key, vi_tri_data in chi_tiet.items():
                    # Xử lý "Công việc thường"
                    if 'Công việc thường' in vi_tri_data:
                        for cong_viec in vi_tri_data['Công việc thường']:
                            if 'Nội dung công việc' in cong_viec:
                                content = cong_viec['Nội dung công việc']
                                cleaned_content = clean_work_content(content)
                                if cleaned_content:  # Chỉ thêm nếu còn nội dung sau khi xử lý
                                    all_work_contents.add(cleaned_content)
                    
                    # Xử lý "Công việc định kỳ"
                    if 'Công việc định kỳ' in vi_tri_data:
                        for cong_viec in vi_tri_data['Công việc định kỳ']:
                            if 'Nội dung công việc' in cong_viec:
                                content = cong_viec['Nội dung công việc']
                                cleaned_content = clean_work_content(content)
                                if cleaned_content:
                                    all_work_contents.add(cleaned_content)
            
            processed_files += 1
            
        except Exception as e:
            print(f"Lỗi khi đọc file {filename}: {e}")

print(f"\nĐã xử lý {processed_files} file JSON")
print(f"Không tìm thấy file cho {len(not_found_files)} mã địa điểm")

# Bước 3: Lưu kết quả
# Sắp xếp và lưu vào file text
sorted_contents = sorted(all_work_contents)

output_file = "unique_work_contents.txt"
with open(output_file, 'w', encoding='utf-8') as f:
    for content in sorted_contents:
        f.write(content + '\n')

print(f"\nĐã tìm thấy {len(all_work_contents)} nội dung công việc duy nhất")
print(f"Kết quả đã được lưu vào file: {output_file}")

# In một số ví dụ
print("\n=== Một số ví dụ nội dung công việc đã xử lý ===")
for i, content in enumerate(sorted_contents[:20], 1):
    print(f"{i}. {content}")

# Lưu thêm vào file JSON để dễ xử lý sau này
output_json = "unique_work_contents.json"
with open(output_json, 'w', encoding='utf-8') as f:
    json.dump(sorted_contents, f, ensure_ascii=False, indent=2)

print(f"\nKết quả cũng đã được lưu vào file JSON: {output_json}")
