"""
統編查詢 API 本地代理伺服器
解決 CORS 跨域限制問題
"""

from flask import Flask, jsonify, request
from flask_cors import CORS
import requests
import sys
import io

# 設定 UTF-8 編碼
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8')

app = Flask(__name__)
CORS(app)  # 允許所有來源的跨域請求

@app.route('/api/company-lookup', methods=['GET'])
def company_lookup():
    """查詢公司名稱 API"""
    vat_number = request.args.get('vat_number', '')

    # 驗證統編格式
    if not vat_number or len(vat_number) != 8 or not vat_number.isdigit():
        return jsonify({'error': '統編格式錯誤'}), 400

    try:
        # 呼叫政府 API
        api_url = 'https://data.gcis.nat.gov.tw/od/data/api/5F64D864-61CB-4D0D-8AD9-492047CC1EA6'
        params = {
            '$format': 'json',
            '$filter': f"Business_Accounting_NO eq '{vat_number}'",
            '$top': 1
        }

        response = requests.get(api_url, params=params, timeout=10)
        response.raise_for_status()

        data = response.json()

        if data and len(data) > 0:
            company_info = data[0]
            return jsonify({
                'company_name': company_info.get('Company_Name', ''),
                'status': company_info.get('Company_Status_Desc', ''),
                'location': company_info.get('Company_Location', ''),
                'responsible_name': company_info.get('Responsible_Name', '')
            })
        else:
            return jsonify({'error': '查無此統編'}), 404

    except requests.Timeout:
        return jsonify({'error': 'API 查詢超時'}), 504
    except requests.RequestException as e:
        return jsonify({'error': f'API 查詢失敗: {str(e)}'}), 500
    except Exception as e:
        return jsonify({'error': f'伺服器錯誤: {str(e)}'}), 500

@app.route('/health', methods=['GET'])
def health_check():
    """健康檢查"""
    return jsonify({'status': 'ok', 'message': '統編查詢 API 代理伺服器正在運行'})

if __name__ == '__main__':
    print("🚀 統編查詢 API 代理伺服器啟動中...")
    print("📡 API 位址：http://localhost:5000/api/company-lookup?vat_number=統編")
    print("💡 範例：http://localhost:5000/api/company-lookup?vat_number=54255107")
    print("🔍 健康檢查：http://localhost:5000/health")
    print("\n⚠️  按 Ctrl+C 停止伺服器\n")

    app.run(host='0.0.0.0', port=5000, debug=True)
