"""
Test script: Kiểm tra fetch ảnh từ URL Canifa → base64
Mục đích: Chứng minh API tự lấy ảnh từ URL, n8n KHÔNG cần gửi base64.

Chạy:  python -m backend.api.product_desc.test.test_fetch_image
  hoặc: python backend/api/product_desc/test/test_fetch_image.py
"""

import base64
import sys

import httpx

# ─── Sample data từ Google Sheets ────────────────────────────────────────────
SAMPLE_IMAGE_URL = "http://mdp.canifa.com/images-web/cache/c8/00/c80079b26cd5437c1473d98930fc1a07.jpg"

def test_fetch_image():
    print("=" * 60)
    print("🧪 TEST: Fetch ảnh từ URL Canifa → Base64")
    print("=" * 60)
    print(f"\n📎 URL: {SAMPLE_IMAGE_URL}")

    try:
        # Fetch ảnh — giống hệt logic trong product_generate_desc_web.py
        r = httpx.get(
            SAMPLE_IMAGE_URL,
            headers={"User-Agent": "Mozilla/5.0"},
            timeout=15,
            follow_redirects=True,
        )
        r.raise_for_status()

        # Thông tin response
        content_type = r.headers.get("content-type", "unknown")
        size_bytes = len(r.content)
        size_kb = round(size_bytes / 1024, 1)

        print(f"\n✅ Fetch thành công!")
        print(f"   Status code : {r.status_code}")
        print(f"   Content-Type: {content_type}")
        print(f"   Size        : {size_bytes:,} bytes ({size_kb} KB)")

        # Convert base64
        b64 = base64.b64encode(r.content).decode()
        b64_len = len(b64)
        b64_preview = b64[:80] + "..."

        print(f"\n🔄 Base64 encode:")
        print(f"   Length   : {b64_len:,} chars")
        print(f"   Preview  : {b64_preview}")

        # Validate — check JPEG magic bytes (FFD8FF)
        is_jpeg = r.content[:3] == b'\xff\xd8\xff'
        is_png = r.content[:4] == b'\x89PNG'
        fmt = "JPEG" if is_jpeg else ("PNG" if is_png else "Unknown")
        print(f"\n🖼️  Format: {fmt}")

        # Simulate Groq API payload
        data_url = f"data:{content_type};base64,{b64[:20]}..."
        print(f"\n📦 Data URL cho AI Vision:")
        print(f"   {data_url}")

        print(f"\n{'=' * 60}")
        print(f"✅ KẾT LUẬN: n8n KHÔNG cần gửi base64!")
        print(f"   → Chỉ cần gửi 'image_url' (Link ảnh từ Sheets)")
        print(f"   → API tự fetch + convert base64 server-side")
        print(f"   → Rồi gửi cho AI Vision model (Llama 4 Scout)")
        print(f"{'=' * 60}")

        return True

    except httpx.HTTPStatusError as e:
        print(f"\n❌ HTTP Error: {e.response.status_code}")
        print(f"   URL có thể bị chặn hoặc không tồn tại")
        return False
    except httpx.ConnectError as e:
        print(f"\n❌ Connection Error: {e}")
        print(f"   Không kết nối được tới mdp.canifa.com")
        return False
    except Exception as e:
        print(f"\n❌ Error: {type(e).__name__}: {e}")
        return False


if __name__ == "__main__":
    ok = test_fetch_image()
    sys.exit(0 if ok else 1)
