Files
memind/wechat/health-reminder-library.mjs
T
john 830f8a4011
Memind CI / Test, build, and release guards (push) Successful in 5m36s
feat(wechat): add service-account push subscriptions and news morning cover delivery
Ship the 10-item numeric subscription loop on WeChat MP, wire schedule delivery
for news/weather/quote/health/finance/tech/knowledge/night/surprise pushes, and
extend news morning draft cover generation plus a one-shot draft push script.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-20 16:15:15 +08:00

82 lines
2.9 KiB
JavaScript

import { pickDailyLibraryEntry } from './push-content/daily-library-pick.mjs';
export const HEALTH_REMINDER_MORNING = Object.freeze([
'☕ 先喝一杯温水,唤醒身体,也唤醒今天的好状态。',
'🧘 伸个懒腰,转转肩颈,3 分钟就能让精神提起来。',
'🚶 如果方便,出门走 5 分钟,阳光和微风都是免费的能量。',
'💧 记得补水:早起后第一杯水,对代谢特别友好。',
'🍎 早餐别跳过,哪怕简单一点,也比空腹硬扛好。',
]);
export const HEALTH_REMINDER_AFTERNOON = Object.freeze([
'👀 看屏幕久了?试试 20-20-20:每 20 分钟,看 20 英尺外 20 秒。',
'🚶 午后站起来走一圈,对腰、对眼、对心情都有帮助。',
'💧 再补一杯水,别等口渴才想起来。',
'🧘 三个深呼吸,把肩颈放松下来,效率会更高。',
'🍵 如果困,先补水或走动,比硬喝咖啡更温和。',
]);
export const HEALTH_REMINDER_EVENING = Object.freeze([
'🌙 晚上尽量别太晚吃重口味,胃和睡眠都会感谢你。',
'📵 睡前 30 分钟少刷手机,给大脑一个慢慢降速的信号。',
'🚶 饭后散步 10 分钟,对消化和睡眠都有帮助。',
'🧘 做几组拉伸,把坐了一天的身体松一松。',
'💤 今天也辛苦了,早点休息,明天会更有劲。',
]);
export const HEALTH_REMINDER_GENERAL = Object.freeze([
'🏃 健康不是大目标,而是很多小选择叠在一起。',
'💧 记得喝水,这是最低成本、最高收益的健康习惯。',
'🧘 忙里偷闲 1 分钟,也比一直硬撑更好。',
'🚶 能走楼梯就别久坐,身体需要一点点活动量。',
'😊 心情也是健康的一部分,对自己温柔一点。',
]);
export function resolveHealthReminderSlot(hour) {
const safeHour = Number(hour);
if (!Number.isInteger(safeHour)) return 'general';
if (safeHour >= 6 && safeHour < 12) return 'morning';
if (safeHour >= 12 && safeHour < 18) return 'afternoon';
if (safeHour >= 18 && safeHour <= 23) return 'evening';
return 'general';
}
export function pickHealthReminder({
userId = '',
timezone = 'Asia/Shanghai',
now = Date.now(),
hour = null,
} = {}) {
const slot = resolveHealthReminderSlot(
hour ?? new Date(now).getHours(),
);
const library = {
morning: HEALTH_REMINDER_MORNING,
afternoon: HEALTH_REMINDER_AFTERNOON,
evening: HEALTH_REMINDER_EVENING,
general: HEALTH_REMINDER_GENERAL,
}[slot] ?? HEALTH_REMINDER_GENERAL;
return pickDailyLibraryEntry({
userId,
timezone,
now,
library,
salt: `health:${slot}`,
});
}
export function formatHealthReminderDeliveryText({
userId,
timezone = 'Asia/Shanghai',
now = Date.now(),
hour = null,
} = {}) {
const tip = pickHealthReminder({
userId,
timezone,
now,
hour: hour ?? new Date(now).getHours(),
});
return `🏃 健康提醒\n\n${tip}\n\n回复「取消8」关闭推送`;
}