feat: add reminder scheduling and sound controls
This commit is contained in:
@@ -30,6 +30,8 @@
|
||||
- AI 请求取消和对话清空
|
||||
- 角色文件夹导入和角色切换
|
||||
- 删除用户导入角色
|
||||
- 本地一次性提醒、提醒列表、取消提醒和到点通知
|
||||
- 内置/用户提醒音效切换、导入、删除和试听
|
||||
- Windows 打包脚本和 Inno Setup 安装器脚本
|
||||
- Release exe 双击不弹控制台窗口
|
||||
|
||||
@@ -294,12 +296,12 @@ IP 定位隐私说明
|
||||
阶段 5:语音对话 / 更复杂 Agent 能力
|
||||
```
|
||||
|
||||
当前最推荐先做:
|
||||
当前结构收口和定时提醒已经进入实现阶段。下一步最推荐继续做:
|
||||
|
||||
```text
|
||||
1. IntentRouter / CommandDispatcher
|
||||
2. 定时提醒
|
||||
3. 天气查询
|
||||
1. 天气查询
|
||||
2. 本地文件操作安全边界
|
||||
3. 联网搜索
|
||||
```
|
||||
|
||||
---
|
||||
@@ -378,6 +380,20 @@ CommandDispatcher::dispatch(userText)
|
||||
|
||||
桌宠创建本地提醒,到点后气泡提示或托盘提示。
|
||||
|
||||
当前实现状态:
|
||||
|
||||
```text
|
||||
已新增 src/reminder/ 模块
|
||||
已支持一次性提醒解析、JSON 持久化、启动后加载、到点触发和状态标记
|
||||
已支持聊天创建 / 查询 / 取消提醒
|
||||
已支持设置页按状态查看提醒、取消 pending 提醒、清理已触发/已取消历史
|
||||
已支持 reminder_default / reminder_soft 内置音效
|
||||
已支持用户 wav 音效导入、删除、切换和试听
|
||||
提醒触发时使用当前设置页选择的全局音效,ReminderItem.soundId 仅保留为历史兼容字段
|
||||
已接入 Qt Multimedia / QSoundEffect 播放提醒音效
|
||||
已预留 NotificationDispatcher,当前 Windows 仍由托盘通知承接
|
||||
```
|
||||
|
||||
## 5.2 第一版范围
|
||||
|
||||
要做:
|
||||
@@ -408,12 +424,18 @@ CommandDispatcher::dispatch(userText)
|
||||
```text
|
||||
src/reminder/
|
||||
├── ReminderTypes.h
|
||||
├── ReminderCommandHandler.h
|
||||
├── ReminderCommandHandler.cpp
|
||||
├── ReminderParser.h
|
||||
├── ReminderParser.cpp
|
||||
├── ReminderManager.h
|
||||
├── ReminderManager.cpp
|
||||
├── ReminderStore.h
|
||||
└── ReminderStore.cpp
|
||||
├── ReminderStore.cpp
|
||||
├── ReminderSoundRepository.h
|
||||
├── ReminderSoundRepository.cpp
|
||||
├── ReminderSoundPlayer.h
|
||||
└── ReminderSoundPlayer.cpp
|
||||
```
|
||||
|
||||
## 5.4 数据结构建议
|
||||
@@ -425,8 +447,9 @@ struct ReminderItem
|
||||
QString title;
|
||||
QString originalText;
|
||||
QDateTime remindAt;
|
||||
bool triggered = false;
|
||||
ReminderStatus status = ReminderStatus::Pending;
|
||||
QDateTime createdAt;
|
||||
QString soundId; // 历史兼容字段,触发时不再读取
|
||||
};
|
||||
```
|
||||
|
||||
@@ -448,8 +471,9 @@ QStandardPaths::AppConfigLocation/reminders.json
|
||||
"title": "提交作业",
|
||||
"originalText": "晚上8点提醒我提交作业",
|
||||
"remindAt": "2026-06-01T20:00:00",
|
||||
"triggered": false,
|
||||
"createdAt": "2026-06-01T15:20:00"
|
||||
"status": "pending",
|
||||
"createdAt": "2026-06-01T15:20:00",
|
||||
"soundId": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -475,13 +499,21 @@ reminders.broken.yyyyMMdd-HHmmss.json
|
||||
下午3点
|
||||
明天9点
|
||||
明天上午10点
|
||||
后天9点
|
||||
今天下午3点
|
||||
6月3日9点
|
||||
6/3 09:00
|
||||
下周一上午10点
|
||||
10分钟后
|
||||
半小时后
|
||||
一个半小时后
|
||||
一小时后
|
||||
1小时后
|
||||
两小时后
|
||||
2小时后
|
||||
```
|
||||
|
||||
如果规则解析失败,后续可以再接 AI 解析。
|
||||
如果规则解析失败,后续可以再接 AI 解析。包含“每天 / 每周 / 每月 / 工作日 / 重复”等语义时,当前只返回“重复提醒尚未支持”,不创建一次性提醒。
|
||||
|
||||
## 5.7 AI 辅助解析的设计边界
|
||||
|
||||
@@ -524,9 +556,9 @@ userText
|
||||
建议行为:
|
||||
|
||||
```text
|
||||
桌宠可见:显示 ChatBubble + 切 talk 或 happy
|
||||
桌宠隐藏:系统托盘通知
|
||||
用户拖动中:不打断 drag,拖动结束后显示
|
||||
桌宠可见:播放当前全局音效,显示 ChatBubble + 切 happy,无 happy 时回退 talk,不发 Windows 通知
|
||||
桌宠隐藏:播放当前全局音效,触发 Windows 托盘通知,不在下次显示时补气泡
|
||||
用户拖动中:播放当前全局音效,不打断 drag,拖动结束后显示气泡,不发 Windows 通知
|
||||
```
|
||||
|
||||
提醒文案:
|
||||
@@ -988,12 +1020,8 @@ CustomSearchProvider
|
||||
## 9.2 第二步:定时提醒
|
||||
|
||||
```text
|
||||
1. ReminderTypes
|
||||
2. ReminderStore
|
||||
3. ReminderParser
|
||||
4. ReminderManager
|
||||
5. 到点气泡和托盘通知
|
||||
6. 设置页增加提醒列表,可后置
|
||||
当前已落地一次性提醒、提醒列表、取消提醒、到点气泡/托盘通知和提醒音效管理。
|
||||
后续可继续补确认/稍后提醒、重复提醒和跨平台通知实现。
|
||||
```
|
||||
|
||||
## 9.3 第三步:天气查询
|
||||
@@ -1066,8 +1094,8 @@ CustomSearchProvider
|
||||
其中:
|
||||
|
||||
```text
|
||||
定时提醒:最适合第一个落地
|
||||
天气:第二个落地
|
||||
定时提醒:已作为第一个工具能力落地
|
||||
天气:建议第二个落地
|
||||
本地文件操作:风险较高,第三个落地
|
||||
联网搜索:通用能力,最后落地
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user