#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
无人机战场态势感知系统 - Web版本
先显示地图界面，通过按钮控制摄像头启动和显示
"""

import sys
import os
from src import WebServer, config

def main():
    """主函数"""
    global config  # 声明 config 为全局变量
    
    print("=" * 60)
    print("🚁 无人机战场态势感知系统 - Web版本")
    print("=" * 60)
    print()
    
    # 检查配置
    print("📋 系统配置检查...")
    print(f"📍 摄像头位置: ({config.CAMERA_LATITUDE:.6f}, {config.CAMERA_LONGITUDE:.6f})")
    print(f"🧭 摄像头朝向: {config.CAMERA_HEADING}°")
    print(f"🔑 API Key: {'已配置' if config.GAODE_API_KEY != 'your_gaode_api_key_here' else '未配置'}")
    print()
    
    if config.GAODE_API_KEY == "your_gaode_api_key_here":
        print("⚠️  警告: 未配置高德地图API Key")
        print("   地图功能可能受限，建议运行 setup_camera_location.py 进行配置")
        print()
    
    # 检查是否为默认配置，提供自动配置选项
    if (config.CAMERA_LATITUDE == 39.9042 and 
        config.CAMERA_LONGITUDE == 116.4074 and 
        config.CAMERA_HEADING == 0):
        print("🤖 检测到摄像头使用默认配置")
        print("   是否要自动配置摄像头位置和朝向？")
        print("   • 输入 'y' - 立即自动配置")
        print("   • 输入 'n' - 跳过，使用Web界面配置")
        print("   • 直接回车 - 跳过自动配置")
        print()
        
        try:
            choice = input("🔧 请选择 (y/n/回车): ").strip().lower()
            
            if choice == 'y':
                print("\n🚀 启动自动配置...")
                from src.orientation_detector import OrientationDetector
                
                detector = OrientationDetector()
                result = detector.auto_configure_camera_location()
                
                if result['success']:
                    print(f"✅ 自动配置成功!")
                    print(f"📍 新位置: ({result['gps_location'][0]:.6f}, {result['gps_location'][1]:.6f})")
                    print(f"🧭 新朝向: {result['camera_heading']:.1f}°")
                    
                    apply_choice = input("\n🔧 是否应用此配置? (y/n): ").strip().lower()
                    if apply_choice == 'y':
                        detector.update_camera_config(
                            result['gps_location'], 
                            result['camera_heading']
                        )
                        print("✅ 配置已应用!")
                        
                        # 重新加载配置模块
                        import importlib
                        import src.config
                        importlib.reload(src.config)
                        
                        # 更新全局 config 变量
                        config = src.config
                    else:
                        print("⏭️  配置未应用，将使用原配置")
                else:
                    print("❌ 自动配置失败，将使用默认配置")
                    print("💡 可以在Web界面启动后使用自动配置功能")
                
                print()
            elif choice == 'n':
                print("⏭️  已跳过自动配置")
                print("💡 提示: 系统启动后可在Web界面使用自动配置功能")
                print()
            else:
                print("⏭️  已跳过自动配置")
                print()
                
        except KeyboardInterrupt:
            print("\n⏭️  已跳过自动配置")
            print()
        except Exception as e:
            print(f"⚠️  自动配置过程出错: {e}")
            print("💡 将使用默认配置，可在Web界面手动配置")
            print()
    
    # 系统介绍
    print("🎯 系统功能:")
    print("  • 🗺️  实时地图显示")
    print("  • 📷 摄像头控制（Web界面）")
    print("  • 👥 人员检测和定位")
    print("  • 📏 距离测量")
    print("  • 🌐 Web界面操作")
    print()
    
    print("💡 使用说明:")
    print("  1. 系统启动后会自动打开浏览器")
    print("  2. 在地图界面点击 '启动视频侦察' 按钮")
    print("  3. 右上角会显示摄像头小窗口")
    print("  4. 检测到的人员会在地图上用红点标记")
    print("  5. 点击 '停止侦察' 按钮停止检测")
    print()
    
    try:
        # 创建并启动Web服务器
        print("🌐 正在启动Web服务器...")
        web_server = WebServer()
        
        # 获取本机IP地址用于移动设备连接
        import socket
        try:
            # 连接到一个远程地址来获取本机IP
            s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
            s.connect(("8.8.8.8", 80))
            local_ip = s.getsockname()[0]
            s.close()
        except:
            local_ip = "127.0.0.1"
        
        # 启动服务器
        print("✅ 系统已启动!")
        print(f"🔒 本地访问: https://127.0.0.1:5000")
        print(f"🔒 手机/平板访问: https://{local_ip}:5000")
        print(f"📱 手机客户端: https://{local_ip}:5000/mobile/mobile_client.html")
        print("🔴 按 Ctrl+C 停止服务器")
        print()
        print("🔑 HTTPS注意事项:")
        print("   • 首次访问会显示'您的连接不是私密连接'警告")
        print("   • 点击'高级'->'继续访问localhost(不安全)'即可")
        print("   • 手机访问时也需要点击'继续访问'")
        print()
        
        # 尝试自动打开浏览器
        try:
            import webbrowser
            webbrowser.open('https://127.0.0.1:5000')
            print("🌐 浏览器已自动打开")
        except:
            print("⚠️  无法自动打开浏览器，请手动访问地址")
        
        print("-" * 60)
        
        # 运行服务器，绑定到所有网络接口，启用HTTPS
        web_server.run(host='0.0.0.0', port=5000, debug=False, ssl_enabled=True)
        
    except KeyboardInterrupt:
        print("\n🔴 用户中断程序")
    except Exception as e:
        print(f"❌ 程序运行出错: {e}")
        print("💡 建议检查:")
        print("  1. 是否正确安装了所有依赖包")
        print("  2. 摄像头是否正常工作")
        print("  3. 网络连接是否正常")
        sys.exit(1)
    finally:
        print("👋 程序已结束")

if __name__ == "__main__":
    main() 