/** * 收视份额颜色判定(极易写反,禁止凭直觉): * audience_share > stretch_target → 🔴 红(优秀) * base_target ≤ audience_share ≤ stretch_target → 🔵 蓝(达标) * audience_share < base_target → 🟢 绿(待提升) * 判色取该期 air_date 所属年份的 yearly_targets 行(不是当前年)。 */ /** * 根据收视份额和年度目标返回对应的颜色代码 * @param {number|null} share - 收视份额 * @param {Array} targets - 年度目标数组 * @param {number} airYear - 播出年份 * @returns {string} 颜色代码 */ export function getShareColor(share, targets, airYear) { const n = Number(share) const target = (targets || []).find(t => Number(t.year) === Number(airYear)) if (!target) return '#999' if (isNaN(n)) return '#999' const stretch = Number(target.stretch_target) const base = Number(target.base_target) if (n > stretch) return '#c0584f' // 红=超过摸高目标(优秀) if (n >= base) return '#5b8db8' // 蓝=未达摸高目标(达标) return '#7aa874' // 绿=未达基础目标(待提升) } /** * 根据收视份额和年度目标返回颜色标签 * @param {number|null} share - 收视份额 * @param {Array} targets - 年度目标数组 * @param {number} airYear - 播出年份 * @returns {string} 颜色标签 */ export function getColorLabel(share, targets, airYear) { const n = Number(share) const target = (targets || []).find(t => Number(t.year) === Number(airYear)) if (!target) return '未知' const stretch = Number(target.stretch_target) const base = Number(target.base_target) if (n > stretch) return '优秀' if (n >= base) return '达标' return '待提升' }