feedback-presets.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /**
  2. * 即时多巴胺反馈 — 预设文案 + 音效映射表
  3. * L1 即时反馈使用
  4. */
  5. // 各场景触发时的文案
  6. var PRESETS = {
  7. micro_action: {
  8. texts: ['太棒了!🎉', '好样的!⭐', '一步一个脚印 💪', '健康在积累!🌱'],
  9. icon: '✅',
  10. sound: 'ding'
  11. },
  12. checkin: {
  13. texts: ['今天又是健康的一天!🌟', '打卡成功!🔥', '坚持就是胜利 💪'],
  14. icon: '📅',
  15. sound: 'ding'
  16. },
  17. exercise: {
  18. texts: ['今天动了{{minutes}}分钟!💪', '运动让大脑更聪明 🧠'],
  19. icon: '🏃',
  20. sound: 'light'
  21. },
  22. sleep: {
  23. texts: ['优质睡眠!😴', '好睡眠是最好的免疫力 🌙'],
  24. icon: '😴',
  25. sound: 'light'
  26. },
  27. water: {
  28. texts: ['补水成功 💧', '身体在感谢你!☕️'],
  29. icon: '💧',
  30. sound: 'light'
  31. },
  32. milestone_3: {
  33. texts: ['连续3天!你已经超过了50%的新手 💪'],
  34. icon: '🔥',
  35. sound: 'ascend'
  36. },
  37. milestone_7: {
  38. texts: ['一周了!习惯正在形成 🌱'],
  39. icon: '🌱',
  40. sound: 'ascend'
  41. },
  42. milestone_14: {
  43. texts: ['两周!坚持就是你的超能力 ⚡'],
  44. icon: '⚡',
  45. sound: 'ascend'
  46. },
  47. milestone_21: {
  48. texts: ['21天法则!习惯几乎自动化了 🔥'],
  49. icon: '🔥',
  50. sound: 'ascend'
  51. },
  52. milestone_30: {
  53. texts: ['一个月!你是健康行动派 🏆'],
  54. icon: '🏆',
  55. sound: 'ascend'
  56. },
  57. first_use: {
  58. texts: ['你的健康之旅开始了!🎉'],
  59. icon: '🚀',
  60. sound: 'ding'
  61. },
  62. comeback: {
  63. texts: ['欢迎回来!每一次重启都是勇敢的 🌟'],
  64. icon: '🌟',
  65. sound: 'ding'
  66. }
  67. }
  68. // 获取随机文案
  69. function getRandomText(scene) {
  70. var preset = PRESETS[scene]
  71. if (!preset) return ''
  72. var list = preset.texts
  73. return list[Math.floor(Math.random() * list.length)]
  74. }
  75. // 获取场景图标
  76. function getIcon(scene) {
  77. var preset = PRESETS[scene]
  78. return preset ? preset.icon : '✅'
  79. }
  80. // 获取场景音效类型
  81. function getSound(scene) {
  82. var preset = PRESETS[scene]
  83. return preset ? preset.sound : 'ding'
  84. }
  85. // 格式化文案(替换变量)
  86. function formatText(text, vars) {
  87. if (!vars) return text
  88. return text.replace(/\{\{(\w+)\}\}/g, function(m, key) {
  89. return vars[key] !== undefined ? vars[key] : m
  90. })
  91. }
  92. export { PRESETS, getRandomText, getIcon, getSound, formatText }