Component({
  properties: {
    /** 是否显示 */
    visible: {
      type: Boolean,
      value: true,
    },
    /** 跳转目标页面 */
    targetUrl: {
      type: String,
      value: '/pages/chat/chat',
    },
    /** 可选：携带客户 ID 参数 */
    customerId: {
      type: String,
      value: '',
    },
    /** 距底部距离（rpx），TabBar 页面用 200，非 TabBar 页面用 120 */
    bottom: {
      type: Number,
      value: 200,
    },
    /**
     * Phase 2.3：来源页面标识（sourcePage），用于后端注入 page_context。
     * 取值参考 backend page_context.py 的 SUPPORTED_PAGE_TYPES：
     * board-finance / board-coach / board-customer / performance / task-list / my-profile 等。
     * 为空时不传入 chat 页。
     */
    sourcePage: {
      type: String,
      value: '',
    },
    /**
     * Phase 2.3：页面筛选参数（board-* 页面的 timeDimension/dimension/areaFilter 等），
     * 将作为 JSON 字符串附加到 url，在 chat 页面解析后随 SSE 请求发给后端。
     */
    pageFilters: {
      type: Object,
      value: null as Record<string, string> | null,
    },
  },

  methods: {
    onTap() {
      let url = this.data.targetUrl
      const params: string[] = []
      if (this.data.customerId) {
        params.push(`customerId=${encodeURIComponent(this.data.customerId)}`)
      }
      if (this.data.sourcePage) {
        params.push(`sourcePage=${encodeURIComponent(this.data.sourcePage)}`)
      }
      if (this.data.pageFilters && Object.keys(this.data.pageFilters).length > 0) {
        try {
          params.push(
            `pageFilters=${encodeURIComponent(JSON.stringify(this.data.pageFilters))}`,
          )
        } catch {
          // 非法 filters 忽略，不影响跳转
        }
      }
      if (params.length > 0) {
        url += (url.includes('?') ? '&' : '?') + params.join('&')
      }
      wx.navigateTo({
        url,
        fail: () => {
          wx.showToast({ title: '页面跳转失败', icon: 'none' })
        },
      })
    },
  },
})
