// miniapp/miniprogram/pages/index/index.ts
const app = getApp<IAppOption>()

Page({
  data: {
    imageUrl: '',
    resultText: '',
    resultData: null as any // 新增：用于接收复杂的专家诊断数据
  },

  // 1. 选图并重置状态
  chooseImage() {
    wx.chooseMedia({
      count: 1,
      mediaType: ['image'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        const tempFilePath = res.tempFiles[0].tempFilePath;
        this.setData({
          imageUrl: tempFilePath,
          resultData: null, // 清空上一张图的结果
          resultText: '正在调用 AI 视觉引擎与大模型，请稍候...'
        });
        this.uploadForDetection(tempFilePath);
      }
    });
  },

  // 2. 自动获取位置并触发检测
  uploadForDetection(filePath: string) {
    const userInfo = app.globalData.userInfo || wx.getStorageSync('userInfo');
    
    // 首页追求极速体验，自动获取位置，不强制输入参数
    wx.getLocation({
      type: 'wgs84',
      success: (loc) => {
        this.sendPestRequest(filePath, userInfo, loc.longitude, loc.latitude);
      },
      fail: () => {
        this.sendPestRequest(filePath, userInfo, null, null);
      }
    });
  },

  // 3. 发送网络请求给后端 PAD 接口
  sendPestRequest(filePath: string, userInfo: any, lon: any, lat: any) {
    wx.uploadFile({
      // 指向我们之前跑通的、最强大的 PAD 融合检测接口
      url: `${app.globalData.baseUrl}/api/detect/`, 
      filePath: filePath,
      name: 'image',
      formData: {
        'user_id': userInfo ? userInfo.user_id : '',
        'longitude': lon || '',
        'latitude': lat || '',
        'temp': '28.0', // 首页缺省默认传入大棚标准温度
        'hum': '80.0'   // 首页缺省默认传入大棚标准湿度
      },
      success: (res) => {
        const data = JSON.parse(res.data);
        if (data.code === 200) {
          this.setData({ 
            resultData: data.data,
            imageUrl: data.data.image_base64, // 替换为带 YOLO 画框的结果图
            resultText: '' 
          });
          wx.showToast({ title: '诊断完成', icon: 'success' });
        } else {
          this.setData({ resultText: '分析失败：' + data.msg });
          wx.showToast({ title: data.msg, icon: 'none' });
        }
      },
      fail: (err) => {
        console.error(err);
        this.setData({ resultText: '网络错误，上传失败' });
      }
    });
  },
  // === 新增：页面跳转路由函数 ===
  navTo(e: any) {
    const url = e.currentTarget.dataset.url;
    // 检查用户是否登录
    if (!app.globalData.userInfo && !wx.getStorageSync('userInfo')) {
      wx.showToast({ title: '请先前往“我的”登录', icon: 'none' });
      return;
    }
    
    // 微信要求跳转还没创建的页面会报错，目前我们先弹窗提示
    wx.navigateTo({ 
      url: url,
      fail: () => {
        wx.showToast({ title: '模块开发中，敬请期待', icon: 'none' });
      }
    });
  }
})