'use strict'; const express = require('express'); const { getMonitoringList, getMonitoringFilters, getDepartmentTagConfig, saveDepartmentTagConfig, getProductOperators, } = require('../services/productMonitoringService'); const router = express.Router(); function sendError(res, error, fallback = '商品监控请求失败') { const status = Number(error?.statusCode) || 500; console.error('[ProductMonitoring]', { message: error?.message || fallback, code: error?.code || null, status, stack: error?.stack || null, }); res.status(status).json({ success: false, error: error.message || fallback }); } // 明细列表(含公司标签 / 部门标签 / 负责人 / 汇总) router.get('/list', async (req, res) => { try { res.json({ success: true, data: await getMonitoringList(req.query || {}) }); } catch (error) { sendError(res, error, '加载商品监控列表失败'); } }); // 筛选下拉选项 router.get('/filters', async (_req, res) => { try { res.json({ success: true, data: await getMonitoringFilters() }); } catch (error) { sendError(res, error, '加载筛选选项失败'); } }); // 行下钻:该 SKU 的运营人员明细(运营 / 日销 / 主渠道) router.get('/operators', async (req, res) => { try { const sku = req.query?.sku || req.query?.skuoid; if (!sku) { return res.status(400).json({ success: false, error: '缺少 sku 参数' }); } return res.json({ success: true, data: { operators: await getProductOperators(sku) } }); } catch (error) { return sendError(res, error, '加载运营明细失败'); } }); // 部门标签 + 负责人配置(系统设置用) router.get('/department-config', async (_req, res) => { try { res.json({ success: true, data: await getDepartmentTagConfig() }); } catch (error) { sendError(res, error, '加载部门标签配置失败'); } }); router.put('/department-config', async (req, res) => { try { res.json({ success: true, data: await saveDepartmentTagConfig(req.body || {}) }); } catch (error) { sendError(res, error, '保存部门标签配置失败'); } }); module.exports = router;