周期跟进规则(RRule)
灵感:能力工具箱 rrule-follow(pkg: rrule)。
何时使用
- 「每周二跟进一次」「每月 1 号回访」
- 生成未来 N 次跟进日期列表
硬约束
- 使用
rrule(RRule/RRuleSet);输出本地日期字符串YYYY-MM-DD或带时区说明的 ISO。 - 至少支持:按周(
WEEKLY+byweekday)、按月(MONTHLY+bymonthday)。 - 必须有
dtstart;count或until二选一限制,防止无限展开。 - 展开上限默认 ≤100 次;超出截断并提示。
- 与「工作日推算」区分:本 Skill 生成重复规则序列;遇节假日是否顺延由可选开关说明,默认不自动跳假。
推荐实现要点
import { RRule } from 'rrule'
export function weeklyFollowDates(opts: {
start: Date
weekday: number // RRule.MO = 0 ... 与库常量一致时用 RRule.MO
count: number
}) {
const rule = new RRule({
freq: RRule.WEEKLY,
dtstart: opts.start,
byweekday: [opts.weekday],
count: Math.min(opts.count, 100),
})
return rule.all().map((d) => d.toISOString().slice(0, 10))
}
export function monthlyFollowDates(opts: {
start: Date
monthDay: number
count: number
}) {
const rule = new RRule({
freq: RRule.MONTHLY,
dtstart: opts.start,
bymonthday: [opts.monthDay],
count: Math.min(opts.count, 100),
})
return rule.all().map((d) => d.toISOString().slice(0, 10))
}
Agent 步骤
- 问清频率、起始日、次数或结束日。
- 生成列表;时区用本地并注明。
- 可选:导出 ICS 提示可对接
ics-agenda-parse生态,但不强制。
附加
- README.md · reference.md · templates/usage.md