"""
测试模板管理功能
1. 下载当前模板
2. 创建新的测试模板
3. 上传新模板并验证
4. 恢复原始模板
"""

import os
import sys
import requests
from pathlib import Path
import tempfile
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill

# Flask应用地址
BASE_URL = "http://localhost:8000"
API_BASE = f"{BASE_URL}/fs-ai-asistant/api/workflow/lawrisk"

def download_template():
    """下载当前模板"""
    print("📥 正在下载当前模板...")

    try:
        response = requests.get(f"{API_BASE}/admin/permit-import/template")

        if response.status_code == 200:
            filename = "风险提示表 模板_原始.xlsx"
            with open(filename, 'wb') as f:
                f.write(response.content)
            print(f"✅ 原始模板已下载: {filename} ({len(response.content)} bytes)")
            return filename
        else:
            print(f"❌ 下载失败: HTTP {response.status_code}")
            return None
    except Exception as e:
        print(f"❌ 下载出错: {e}")
        return None

def create_test_template():
    """创建新的测试模板"""
    print("\n🧪 正在创建新的测试模板...")

    wb = Workbook()
    ws = wb.active
    ws.title = "风险提示表"

    # 添加标题
    ws['A1'] = "风险提示表 - 测试模板"
    ws['A1'].font = Font(bold=True, size=14)
    ws['A1'].fill = PatternFill(start_color="366092", end_color="366092", fill_type="solid")

    # 添加表头
    headers = ['区域', '主题', '许可名称', '风险内容', '法律依据', '文档编号']
    for col, header in enumerate(headers, 1):
        cell = ws.cell(row=3, column=col, value=header)
        cell.font = Font(bold=True)
        cell.fill = PatternFill(start_color="D9E1F2", end_color="D9E1F2", fill_type="solid")

    # 添加测试数据
    test_data = [
        ['市级', '餐饮服务', '食品经营许可证', '无证经营风险', '食品安全法', 'DOC-2024-001'],
        ['禅城区', '住宿服务', '特种行业许可证', '未经许可经营', '特种行业管理法', 'DOC-2024-002'],
        ['顺德区', '娱乐服务', '娱乐经营许可证', '无证经营风险', '娱乐场所管理条例', 'DOC-2024-003'],
    ]

    for row, data in enumerate(test_data, 4):
        for col, value in enumerate(data, 1):
            ws.cell(row=row, column=col, value=value)

    # 保存文件
    filename = "风险提示表_测试模板.xlsx"
    wb.save(filename)
    print(f"✅ 测试模板已创建: {filename}")
    return filename

def check_flask_status():
    """检查Flask应用状态"""
    try:
        response = requests.get(BASE_URL, timeout=5)
        print(f"✅ Flask应用运行正常: {BASE_URL}")
        return True
    except Exception as e:
        print(f"❌ 无法连接到Flask应用: {e}")
        print("请确保Flask应用正在运行: python app.py")
        return False

def main():
    print("=" * 60)
    print("🧪 模板管理功能测试")
    print("=" * 60)

    # 检查Flask应用状态
    if not check_flask_status():
        return

    # 第一步：下载原始模板
    original_template = download_template()
    if not original_template:
        print("❌ 无法下载原始模板，但继续测试...")

    # 第二步：创建测试模板
    test_template = create_test_template()

    print("\n" + "=" * 60)
    print("📝 自动化测试说明")
    print("=" * 60)
    print("\n请按照以下步骤手动测试模板管理功能：")
    print("\n1. 打开浏览器，访问超级管理员控制台:")
    print(f"   {BASE_URL}/static/super_admin.html")
    print("\n2. 如果需要登录，请先登录")
    print("\n3. 切换到'📄 模板管理'标签页")
    print("\n4. 查看当前模板信息")
    print("\n5. 点击'下载当前模板'按钮下载原始模板")
    print("\n6. 点击'选择文件'并选择测试模板:")
    print(f"   {test_template}")
    print("\n7. 点击'覆盖模板'按钮上传")
    print("\n8. 验证上传成功消息和模板元数据更新")
    print("\n9. 重新下载模板验证内容")
    print("\n10. 再次上传原始模板恢复系统:")
    print(f"    {original_template if original_template else '风险提示表 模板.xlsx'}")
    print("\n" + "=" * 60)

if __name__ == "__main__":
    main()
