SuperAPI AI 工具集

streak-tracker

通用与其它

查看项目

更新于 10-16 08:10

技能介绍

用途:该技能用于生成一套可投入生产的连续打卡追踪系统,记录用户连续活跃天数,计算当前连胜与历史最长连胜,并处理时区相关的日界划分,同时支持冻结保护次数与连胜即将中断的本地提醒。

触发场景:用户提出“添加打卡/每日连胜”“连续天数统计”“习惯追踪”“连胜冻结/保护”“连胜风险提醒”“登录连胜/活跃连胜”等需求时启用。

主要能力:生成 SwiftData 数据模型(StreakRecord)、核心引擎(StreakManager)、错误类型(StreakError),以及可选组件:日历热力图、连胜徽章、冻结保护(StreakFreeze)、连胜风险通知调度(StreakNotificationScheduler)。支持每日、每周或自定义间隔的连胜类型;支持 SwiftData 或 UserDefaults 存储;支持里程碑庆祝等附加功能。

生成前检查:检查 Swift 版本(需 5.9+)与部署目标(iOS 17+ / macOS 14+ 以便使用 @Observable 与 SwiftData);搜索既有连胜/习惯代码,若存在则询问替换还是扩展;确定面向 iOS、macOS 或两者(均用 UNUserNotificationCenter)。随后通过 AskUserQuestion 询问连胜类型、存储后端、是否含冻结保护、是否含连胜风险通知及附加功能。

生成流程:读取 templates.md 获取生产级 Swift 代码,创建核心与 UI 文件,按配置创建可选文件,并根据项目结构决定输出目录(如 Sources/StreakTracking/)。输出后提供文件清单与集成步骤,例如在 App 中通过 .modelContainer(for: [StreakRecord.self, StreakFreeze.self]) 配置模型容器,在用户操作时调用 recordActivity(type:),用 StreakBadgeView、StreakCalendarView 展示,用 useStreakFreeze() 使用冻结。附带 Swift Testing 测试示例,覆盖记录、连续、断签与冻结场景。

限制与注意事项:日界必须用 Calendar.current.startOfDay(for:) 归一化,避免直接比较原始 Date;recordActivity 按日历日与类型幂等,重复调用只生成一条记录;SwiftData 数据在重装后丢失;设备时钟可被篡改,服务端同步可校验;不同日历的日界与周结构不同;App Store 对推送提醒需显式同意、冻结/修复售卖需走 IAP。具体价格、平台支持范围及其他商业细节暂未提供。