/** * 即时多巴胺反馈 — 预设文案 + 音效映射表 * L1 即时反馈使用 */ // 各场景触发时的文案 var PRESETS = { micro_action: { texts: ['太棒了!🎉', '好样的!⭐', '一步一个脚印 💪', '健康在积累!🌱'], icon: '✅', sound: 'ding' }, checkin: { texts: ['今天又是健康的一天!🌟', '打卡成功!🔥', '坚持就是胜利 💪'], icon: '📅', sound: 'ding' }, exercise: { texts: ['今天动了{{minutes}}分钟!💪', '运动让大脑更聪明 🧠'], icon: '🏃', sound: 'light' }, sleep: { texts: ['优质睡眠!😴', '好睡眠是最好的免疫力 🌙'], icon: '😴', sound: 'light' }, water: { texts: ['补水成功 💧', '身体在感谢你!☕️'], icon: '💧', sound: 'light' }, milestone_3: { texts: ['连续3天!你已经超过了50%的新手 💪'], icon: '🔥', sound: 'ascend' }, milestone_7: { texts: ['一周了!习惯正在形成 🌱'], icon: '🌱', sound: 'ascend' }, milestone_14: { texts: ['两周!坚持就是你的超能力 ⚡'], icon: '⚡', sound: 'ascend' }, milestone_21: { texts: ['21天法则!习惯几乎自动化了 🔥'], icon: '🔥', sound: 'ascend' }, milestone_30: { texts: ['一个月!你是健康行动派 🏆'], icon: '🏆', sound: 'ascend' }, first_use: { texts: ['你的健康之旅开始了!🎉'], icon: '🚀', sound: 'ding' }, comeback: { texts: ['欢迎回来!每一次重启都是勇敢的 🌟'], icon: '🌟', sound: 'ding' } } // 获取随机文案 function getRandomText(scene) { var preset = PRESETS[scene] if (!preset) return '' var list = preset.texts return list[Math.floor(Math.random() * list.length)] } // 获取场景图标 function getIcon(scene) { var preset = PRESETS[scene] return preset ? preset.icon : '✅' } // 获取场景音效类型 function getSound(scene) { var preset = PRESETS[scene] return preset ? preset.sound : 'ding' } // 格式化文案(替换变量) function formatText(text, vars) { if (!vars) return text return text.replace(/\{\{(\w+)\}\}/g, function(m, key) { return vars[key] !== undefined ? vars[key] : m }) } export { PRESETS, getRandomText, getIcon, getSound, formatText }