import os, json, base64
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

# Tự động cài đặt python-docx nếu chưa có
try:
    import docx
except ImportError:
    import subprocess
    import sys
    subprocess.check_call([sys.executable, "-m", "pip", "install", "python-docx"])
    import docx

from docx import Document
from docx.shared import Inches

# 1. Khởi tạo tài liệu DOCX
doc = Document()
doc.add_heading('BÁO CÁO TỔNG HỢP SỰ CỐ ĐỤC TRẮNG MÀNG SƠN TẠI CÔNG TY PMA', 0)
doc.add_paragraph('Cập nhật ngày: 27/07/2026\n'
                  'Người viết báo cáo: Bùi Thiện Lộc, Đặng Đình Thảo, Nguyễn Đức Thắng\n'
                  'Kính gửi: Ban Giám đốc và Lãnh đạo Phòng QC/Kỹ thuật BT-Chem & Ban Lãnh đạo Công ty PMA\n')

doc.add_heading('1. Thông tin chung sự cố', level=1)
doc.add_paragraph('• Địa điểm xảy ra: Nhà máy Công ty PMA.')
doc.add_paragraph('• Sản phẩm bị ảnh hưởng:')
doc.add_paragraph('  - Tủ Veneer Walnut: Khoảng 30 sản phẩm bị lỗi đục trắng bề mặt và ghim gỗ.\n'
                   '  - Ghế Bench gỗ Sồi (Oak): Đêm thứ Bảy (18/07), xưởng sản xuất đến công đoạn lót được 46 sản phẩm thì phát hiện màng sơn bị trắng đục ghim gỗ (tạm ngưng sản xuất hàng loạt).\n'
                   '  - Băng Kệ Tầng Veneer Sồi: Gần 600 chi tiết bị lỗi đục trắng ghim gỗ sau khi hoàn thiện sơn.')

doc.add_heading('2. Xác định nguyên nhân gốc rễ (Root Cause)', level=1)
doc.add_paragraph('• Hiện tượng: Màng sơn bị đục trắng trong ghim gỗ Veneer và trên bề mặt sau khi sơn hoàn thiện (đã phát hiện từ công đoạn sơn lót NC 1807).')
doc.add_paragraph('• Thử nghiệm đối chứng:\n'
                   '  - Sơn trên gỗ tự nhiên (gỗ Oak, gỗ Walnut): Màng sơn đạt chất lượng tốt, căng đẹp, không bị lỗi.\n'
                   '  - Sơn trên gỗ Veneer (Veneer Oak, Veneer Walnut): Xuất hiện hiện tượng đục trắng trong ghim gỗ. Trong đó Veneer Oak bị cục bộ vài vị trí (nhìn kỹ mới thấy), còn Veneer Walnut bị đục ghim rất nhiều trên gần như toàn bộ phôi.')
doc.add_paragraph('• Kết luận nguyên nhân: Do chất lượng keo dán Veneer (Veneer mỏng hoặc mối nối keo dán) thẩm thấu ngược lên bề mặt và ghim gỗ, xảy ra phản ứng hóa học với các thành phần trong sơn lót và sơn bóng NC.')
doc.add_paragraph('• Làm việc với nhà máy: Kỹ thuật BT-Chem đã làm việc trực tiếp với quản lý nhà máy PMA (QC nhà máy, Tổ trưởng chuyền Sơn, Giám đốc sản xuất) về kết quả kiểm tra đối chứng. Tuy nhiên, phía nhà máy hiện tại không đồng ý lỗi do nền Veneer.')

try:
    doc.add_picture(r'C:\Users\pc\.gemini\antigravity\brain\7848b713-1331-4e89-9f0f-8ab394f4791d\duc_trang_ghim_go_oak.png', width=Inches(5))
    doc.add_paragraph('[Hình ảnh: Lỗi đục trắng ghim gỗ Oak tại PMA]').runs[0].font.italic = True
    
    doc.add_picture(r'C:\Users\pc\.gemini\antigravity\brain\7848b713-1331-4e89-9f0f-8ab394f4791d\media__1784646673960.png', width=Inches(5))
    doc.add_paragraph('[Hình ảnh: Chi tiết ghim gỗ bị trắng đục khiếu nại (Veneer Walnut)]').runs[0].font.italic = True
except Exception as e:
    print(f"Error adding picture: {e}")

doc.add_heading('3. Nhật ký xử lý & Thử nghiệm', level=1)

doc.add_heading('Ngày 18/07/2026', level=2)
doc.add_paragraph('• Xử lý: Áp dụng chất chống xì TBS 2512 New (tỷ lệ 6 TBS 2512 New : 1 Primer TBS 2512) theo 2 quy trình rửa dung môi / chà nhám.\n'
                   '• Kết quả: Đã xử lý thành công 2 sản phẩm tủ lỗi đạt yêu cầu chất lượng sau 4 giờ kiểm tra dưới sự giám sát của PMA và kỹ thuật BT-Chem.')

doc.add_heading('Ngày 20/07/2026', level=2)
doc.add_paragraph('• Xử lý: Áp dụng thử nghiệm song song trên các tủ lỗi để tìm phương án tối ưu nhất (Quy trình 1: Rửa sơn cũ -> TBS 2512 -> lót NC 1807 -> bóng NC 1807; Quy trình 2: Thay TBS bằng Lót PU FD 0212).')

doc.add_heading('Ngày 21/07/2026', level=2)
doc.add_paragraph('• Xử lý: Kỹ thuật BT-Chem (anh Khoa, anh Sinh) thống nhất làm trước 3 tủ mẫu theo quy trình: Rửa lại -> xử lý Primer -> Lót lại -> Bóng lại. Lên lịch đánh giá nghiệm thu vào 9:00 ngày 22/07/2026.')

try:
    doc.add_picture(r'C:\Users\pc\.gemini\antigravity\brain\7848b713-1331-4e89-9f0f-8ab394f4791d\media__1784604960360.jpg', width=Inches(5))
    doc.add_paragraph('[Hình ảnh: Bản báo cáo viết tay thống nhất phương án xử lý ngày 21/07/2026]').runs[0].font.italic = True
except Exception as e:
    print(f"Error adding picture 21/07: {e}")

doc.add_heading('Ngày 22/07/2026 (Cập nhật mới nhất)', level=2)
doc.add_paragraph('• Kết quả đánh giá chất lượng phôi và Veneer (Sau 12 giờ):\n'
                   '  - Phương pháp kiểm tra: Phun Lót NC 1807 (2 lần) -> Bóng NC NY 1807 10% sử dụng nguyên liệu sơn tại kho PMA.\n'
                   '  - Kết quả: Phôi gỗ tự nhiên đạt yêu cầu ✅. Veneer Oak bị trắng ghim cục bộ vài vị trí ⚠️. Veneer Walnut bị trắng ghim rất nặng hầu như toàn bộ bề mặt phôi ❌.')

try:
    doc.add_picture(r'C:\Users\pc\.gemini\antigravity\brain\281a0edd-af66-4143-9ad4-91909ce43f2c\media__1784728920619.jpg', width=Inches(5))
    doc.add_paragraph('[Hình ảnh: Phôi gỗ/Veneer thực tế sau khi kiểm tra đánh giá ngày 22/07/2026]').runs[0].font.italic = True
except Exception as e:
    print(f"Error adding picture 22/07 phoi: {e}")

doc.add_paragraph('• Khắc phục lỗi sản phẩm chi tiết kệ tầng (Veneer Oak):\n'
                   '  - Nhà máy đang cho chà nhám lại toàn bộ các sản phẩm lỗi. Tiến hành thực hiện sơn trước 48 chi tiết để kịp tiến độ đóng container xuất khẩu.\n'
                   '  - Thử nghiệm trước: Kỹ thuật đã xử lý chà trắng và chạy lại quy trình mẫu trên 2 sản phẩm: hoàn thành lúc 11:45, đến 16:00 cùng ngày nhà máy đã kiểm tra đánh giá chất lượng đạt tiêu chuẩn ✅.\n'
                   '  - Tiến độ sản xuất: Lúc 16:20 đang ở công đoạn phun ngăn dầu TBS. Tối nay sẽ tiếp tục thực hiện các bước còn lại (Lót NC 1807 / Bóng NC 1807 10%).')

try:
    doc.add_picture(r'C:\Users\pc\.gemini\antigravity\brain\281a0edd-af66-4143-9ad4-91909ce43f2c\media__1784728920625.jpg', width=Inches(5))
    doc.add_paragraph('[Hình ảnh: QC/Kỹ thuật thực tế xử lý trên chuyền sơn ngày 22/07/2026]').runs[0].font.italic = True
except Exception as e:
    print(f"Error adding picture 22/07 chuyen: {e}")

doc.add_paragraph('• Khắc phục lỗi sản phẩm Ghế Bench (Gỗ Oak):\n'
                   '  - Hôm nay tiến hành xử lý 2 sản phẩm (thực tế kiểm tra tổng cộng 3 sản phẩm bao gồm 1 sản phẩm ngày 21/07 và 2 sản phẩm ngày 22/07) theo quy trình: Lót NC 1807 (2 lần) -> Bóng NC 1807 10%.\n'
                   '  - Sơn hoàn thiện xong lúc 15:00. Lúc 16:00 phối hợp cùng nhà máy (QC và Tổ trưởng chuyền sơn) kiểm tra kết quả đánh giá màng sơn Đạt yêu cầu ✅.')

doc.add_heading('Ngày 27/07/2026 (Cập nhật kết quả thử nghiệm tại Lab)', level=2)
doc.add_paragraph('• Tình trạng mẫu đối chứng: Các mẫu phôi chạy theo quy trình gốc (đối chứng) sau vài ngày theo dõi tại Lab (đến ngày 27/07) bắt đầu xuất hiện các vết ố trắng trong ghim gỗ.\n'
                   '• Phương án 1 (Chốt quy trình): Quy trình "Chống xì TBS 2512 New -> Lót NC 1807 -> Bóng NC 1807" cho kết quả tốt, màng sơn KHÔNG bị hiện tượng đục trắng ghim gỗ.\n'
                   '• Phương án 2 (Chống tươm dầu): Pha thật loãng chất ngăn dầu (TBS) kết hợp với màu dye (màu trong) để phun lót. Việc pha loãng giúp hóa chất và màu rút sâu vào các tôm gỗ siêu nhỏ để khóa dầu -> màng sơn KHÔNG bị đục trắng.\n'
                   '• Phương án 3 (Phương án dự phòng 1 - Điều chỉnh Lót NC 1807): Sử dụng Lót NC 1807 pha giảm dung môi, dùng hệ dung môi có lực hòa tan mạnh hơn (4B) và chậm khô hơn (BCS) để giúp dung môi thấm sâu lấp tôm gỗ, đồng thời kéo dài thời gian thoát dung môi hoàn toàn khỏi ghim gỗ -> Kết quả giảm 90% lỗi đục trắng, chỉ còn lại rất ít vết.\n'
                   '• Nhận định kỹ thuật: Việc phương án 3 (chỉ cần tăng độ hòa tan và làm chậm khô của dung môi) giúp giảm đáng kể lỗi đục trắng ở ghim gỗ cho thấy nguyên nhân cốt lõi có thể do đặc tính của các loại nhựa TPA thoát dung môi rất kém so với nhựa NC thông thường, dễ để lại dung môi kẹt trong ghim gỗ gây đục trắng.')

try:
    doc.add_picture(r'C:\antigra-DS\CLAW_LAM_VIEC\QC\Bao cao\Thu_nghiem_veneer_PMA_250726\so_sanh_phuong_an_3_va_doi_chung_tong_quan.jpg', width=Inches(5))
    doc.add_paragraph('[Hình ảnh: Tổng quan so sánh mẫu điều chỉnh dung môi Phương án 3 (trái) và mẫu đối chứng (phải)]').runs[0].font.italic = True
    
    doc.add_picture(r'C:\antigra-DS\CLAW_LAM_VIEC\QC\Bao cao\Thu_nghiem_veneer_PMA_250726\so_sanh_phuong_an_3_va_doi_chung_chi_tiet.png', width=Inches(5))
    doc.add_paragraph('[Hình ảnh: Chi tiết cận cảnh tôm gỗ mẫu Phương án 3 và mẫu đối chứng]').runs[0].font.italic = True
except Exception as e:
    print(f"Error adding picture 27/07: {e}")

doc.add_heading('4. Đề xuất & Kiến nghị kỹ thuật', level=1)
doc.add_paragraph('1. Kiểm tra chất lượng & Bàn giao khi giao sơn: Yêu cầu bộ phận kỹ thuật tiến hành kiểm tra chất lượng và lập biên bản gửi sang phía công ty PMA mỗi khi thực hiện giao sơn. Lưu ý quan trọng: Đối với các biên bản này, phía cán bộ quản lý nhà máy PMA đều không đồng ý ký xác nhận nhận bàn giao.')
doc.add_paragraph('2. Khắc phục hệ thống đường hơi: Hệ thống hơi phun sơn tại buồng sơn của PMA chứa lượng nước quá nhiều, ảnh hưởng trực tiếp đến độ khô và chất lượng màng sơn. Yêu cầu nhà máy PMA xử lý ngay vấn đề này.')

try:
    doc.add_picture(r'C:\Users\pc\.gemini\antigravity\brain\281a0edd-af66-4143-9ad4-91909ce43f2c\media__1784728832807.jpg', width=Inches(5))
    doc.add_paragraph('[Hình ảnh: Bản báo cáo viết tay ngày 22/07/2026 - Trang 1]').runs[0].font.italic = True
    
    doc.add_picture(r'C:\Users\pc\.gemini\antigravity\brain\281a0edd-af66-4143-9ad4-91909ce43f2c\media__1784728832810.jpg', width=Inches(5))
    doc.add_paragraph('[Hình ảnh: Bản báo cáo viết tay ngày 22/07/2026 - Trang 2]').runs[0].font.italic = True
except Exception as e:
    print(f"Error adding handwritten report pics: {e}")

docx_filename = 'c:/antigra-DS/CLAW_LAM_VIEC/QC/Bao cao/bao_cao_su_co_pma.docx'
doc.save(docx_filename)
print(f"Saved report to {docx_filename}")

# 2. Gửi email qua Gmail API
try:
    token_path = os.path.expanduser('~/AppData/Local/hermes/google_agent_token.json')
    with open(token_path) as f:
        creds = Credentials.from_authorized_user_info(json.load(f))

    service = build('gmail', 'v1', credentials=creds)

    msg = MIMEMultipart()
    msg['To'] = 'ngoducminh84@gmail.com'
    msg['Subject'] = 'Báo cáo tổng hợp sự cố đục trắng màng sơn tại PMA - Cập nhật 27/07/2026'

    body = "Kính gửi anh Minh,\n\nGửi anh báo cáo tổng hợp chi tiết cập nhật ngày 27/07/2026 về sự cố đục trắng màng sơn tại PMA dưới dạng file đính kèm DOCX (đã bao gồm đầy đủ hình ảnh thực tế và kết quả thử nghiệm mới nhất ngày 27/07 tại Lab).\n\nTrân trọng,\nKỹ thuật/QC BT-Chem"
    msg.attach(MIMEText(body, 'plain', 'utf-8'))

    with open(docx_filename, 'rb') as f:
        part = MIMEBase('application', 'octet-stream')
        part.set_payload(f.read())
        encoders.encode_base64(part)
        part.add_header('Content-Disposition', f'attachment; filename="bao_cao_su_co_pma.docx"')
        msg.attach(part)

    raw = base64.urlsafe_b64encode(msg.as_bytes()).decode()
    result = service.users().messages().send(userId='me', body={'raw': raw}).execute()
    print(f"Email sent successfully to {msg['To']}: {result['id']}")
except Exception as e:
    print(f"Error sending email: {e}")
