"""測試同名查詢"""
import sys
sys.stdout.reconfigure(encoding='utf-8')

from playwright.sync_api import sync_playwright
import time
import os
from pathlib import Path

SCRIPT_DIR = Path(__file__).parent
CAPTCHA_IMAGE = SCRIPT_DIR / 'captcha_to_read.png'
CAPTCHA_ANSWER = SCRIPT_DIR / 'captcha_answer.txt'

def cleanup():
    for f in [CAPTCHA_IMAGE, CAPTCHA_ANSWER]:
        if os.path.exists(f):
            os.remove(f)

def wait_for_captcha_answer(timeout=120):
    print('  等待驗證碼...')
    start = time.time()
    while time.time() - start < timeout:
        if os.path.exists(CAPTCHA_ANSWER):
            with open(CAPTCHA_ANSWER, 'r') as f:
                answer = f.read().strip()
            if answer:
                os.remove(CAPTCHA_ANSWER)
                return answer
        time.sleep(0.5)
    return None

def test_duplicate_name(name):
    cleanup()
    print(f'\n=== 測試同名查詢: {name} ===')

    with sync_playwright() as p:
        browser = p.chromium.launch(headless=True)
        page = browser.new_page()

        page.goto('https://resim.moi.gov.tw/Home/AssessIndex')
        page.wait_for_load_state('networkidle')
        page.click('text=證書資料查詢')
        page.wait_for_timeout(1500)

        page.fill('#assess_name', name)
        page.locator('#vCodeView').screenshot(path=str(CAPTCHA_IMAGE))
        print(f'  驗證碼已截圖: {CAPTCHA_IMAGE}')

        captcha = wait_for_captcha_answer()
        if not captcha:
            print('  ❌ 超時')
            browser.close()
            return

        print(f'  收到驗證碼: {captcha}')
        page.fill('#codenumber', captcha)
        page.click('#subb')
        page.wait_for_timeout(3000)

        # 截圖完整結果頁面
        page.screenshot(path=str(SCRIPT_DIR / 'duplicate_result.png'))
        print(f'  結果頁面已截圖: duplicate_result.png')

        # 解析結果
        page_content = page.content()

        if '驗證碼錯誤' in page_content:
            print('  ❌ 驗證碼錯誤')
        elif '查無資料' in page_content:
            print('  ⚠ 查無資料')
        else:
            results = []
            rows = page.locator('table tr').all()
            print(f'\n  找到 {len(rows)} 個 table rows')

            for i, row in enumerate(rows):
                cells = row.locator('td').all()
                if len(cells) >= 5:
                    texts = [cell.text_content().strip() for cell in cells]
                    print(f'\n  Row {i}: {texts}')

                    # 確認是資料列
                    if texts[0] and not texts[0].startswith('姓名'):
                        results.append({
                            '姓名': texts[0],
                            '英文姓名': texts[1],
                            '估價師證書字號': texts[2],
                            '考試院證書字號': texts[3],
                            '證書狀態': texts[4]
                        })

            print(f'\n=== 解析結果: 共 {len(results)} 筆 ===')
            for r in results:
                print(f"  {r['姓名']} | {r['英文姓名']} | {r['估價師證書字號']}")

        browser.close()

if __name__ == '__main__':
    test_duplicate_name('李世銘')
