/**
 * 用户行为埋点（P2 转化漏斗数据源）
 * ================================
 * C端三端在页面切换/商品浏览/加购/下单时调用 POST /api/track 记录行为事件。
 * 无鉴权要求（避免拖慢页面），由 IP + 可选 user_id 标识。
 * 行为纳入漏斗：
 *   visit       访问(页面浏览/PV)
 *   product_view 商品详情浏览
 *   add_cart    加购(与 carts 表可互为印证)
 *   order       下单
 *   pay         支付
 */
const express = require('express');
const router = express.Router();
const { run } = require('../utils/db');
const { success } = require('../utils/response');

// 行为白名单（防垃圾埋点）
const ACTIONS = ['visit', 'product_view', 'add_cart', 'order', 'pay', 'search', 'share', 'login'];

router.post('/', (req, res) => {
  try {
    const { action, page, product_id, source } = req.body || {};
    if (!action || !ACTIONS.includes(action)) return res.json(success(null));
    const userId = req.userId ? req.userId : (Number(req.body && req.body.user_id) || 0);
    const ip = (req.headers['x-forwarded-for'] || req.socket.remoteAddress || '').toString().slice(0, 45);
    run('INSERT INTO user_events(user_id,source,action,page,product_id,ip) VALUES(?,?,?,?,?,?)',
      [userId || 0, source || 'h5', action, String(page || '').slice(0, 60), Number(product_id) || 0, ip]);
    return res.json(success(null));
  } catch (e) {
    // 埋点失败不阻塞页面
    return res.json(success(null));
  }
});

module.exports = router;
