#!/usr/bin/env python3
"""
Test script to verify bracket removal for chest/waist measurements
"""
import json
import requests
import base64
import os
from datetime import datetime

# Test data with brackets containing measurements
test_data = {
    "selected_products": [
        {
            "product_name": "测试商品",
            "product_code": "TEST123[胸围90]",
            "brand": "TestBrand",
            "image_url": "",
            "skus": [
                {
                    "color": "蓝色[胸围100 腰围80]",
                    "size": "L[胸围90-95]",
                    "sales_attr": "",
                    "quantity": 2,
                    "avg_price": 100,
                    "image_url": "/api/v1/static/images/test1.jpg"
                },
                {
                    "color": "蓝色[胸围100 腰围80]",
                    "size": "XL[胸围95-100]",
                    "sales_attr": "",
                    "quantity": 1,
                    "avg_price": 100,
                    "image_url": "/api/v1/static/images/test1.jpg"
                },
                {
                    "color": "红色",
                    "size": "M[腰围70-75]",
                    "sales_attr": "",
                    "quantity": 3,
                    "avg_price": 100,
                    "image_url": "/api/v1/static/images/test2.jpg"
                }
            ]
        }
    ],
    "procurement_method": "NY"
}

def test_bracket_removal():
    """Test the bracket removal in image export"""
    url = "http://localhost:8000/api/v1/procurement/v2/export/images"
    
    print("Testing bracket removal for measurements...")
    print("Original data includes:")
    print("  - Product code: TEST123[胸围90]")
    print("  - Color: 蓝色[胸围100 腰围80]")
    print("  - Sizes: L[胸围90-95], XL[胸围95-100], M[腰围70-75]")
    print("\nExpected result after cleaning:")
    print("  - Product code: TEST123")
    print("  - Color: 蓝色")
    print("  - Sizes: L, XL, M")
    print("\n" + "="*50 + "\n")
    
    try:
        response = requests.post(url, json=test_data)
        print(f"Response status: {response.status_code}")
        
        if response.status_code == 200:
            result = response.json()
            print(f"Success: {result.get('success')}")
            print(f"Message: {result.get('message')}")
            print(f"Images generated: {result.get('count')}")
            
            # Save images for inspection
            if result.get('images'):
                output_dir = f"test_brackets_{datetime.now().strftime('%Y%m%d_%H%M%S')}"
                os.makedirs(output_dir, exist_ok=True)
                
                for img in result['images']:
                    filename = img['filename']
                    print(f"\n  - {filename}")
                    
                    # The filename should not contain brackets
                    if '[' in filename or ']' in filename:
                        print(f"    WARNING: Filename still contains brackets!")
                    
                    # Extract base64 data
                    data = img['data']
                    if data.startswith('data:image'):
                        data = data.split(',')[1]
                    
                    # Decode and save
                    img_data = base64.b64decode(data)
                    filepath = os.path.join(output_dir, filename)
                    with open(filepath, 'wb') as f:
                        f.write(img_data)
                    print(f"    Saved to: {filepath}")
                
                print(f"\nAll images saved to: {output_dir}/")
                print("\nPlease check the images to verify:")
                print("  - Text should show: TestBrand TEST123 蓝色 L(2) XL(1)")
                print("  - No brackets with 胸围/腰围 should appear")
        else:
            print(f"Error: {response.text}")
            
    except Exception as e:
        print(f"Request failed: {e}")

if __name__ == "__main__":
    test_bracket_removal()