feat(schedule): 待办提醒推送、行事历仅展示提醒与管理 API
单次提醒 worker 投递、local 时间写入校验、未来 7 天提醒列表与忽略/批量删除;行事历去掉事项重复展示。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+33
@@ -1871,6 +1871,39 @@ api.get('/mindspace/v1/space', async (req, res) => {
|
||||
return sendData(res, req, space);
|
||||
});
|
||||
|
||||
api.post('/mindspace/v1/schedule/reminders/:reminderId/ignore', async (req, res) => {
|
||||
if (!ensureMindSpaceEnabled(res, req) || !scheduleService) {
|
||||
return sendError(res, req, 503, 'feature_disabled', '日程服务未启用');
|
||||
}
|
||||
try {
|
||||
const reminder = await scheduleService.cancelReminder({
|
||||
userId: req.currentUser.id,
|
||||
reminderId: req.params.reminderId,
|
||||
});
|
||||
return sendData(res, req, reminder);
|
||||
} catch (err) {
|
||||
const message = err instanceof Error ? err.message : '忽略提醒失败';
|
||||
return sendError(res, req, 400, 'invalid_schedule_input', message);
|
||||
}
|
||||
});
|
||||
|
||||
api.post('/mindspace/v1/schedule/reminders/bulk-delete', async (req, res) => {
|
||||
if (!ensureMindSpaceEnabled(res, req) || !scheduleService) {
|
||||
return sendError(res, req, 503, 'feature_disabled', '日程服务未启用');
|
||||
}
|
||||
try {
|
||||
const ids = Array.isArray(req.body?.ids) ? req.body.ids.map(String) : [];
|
||||
const deleted = await scheduleService.deleteReminders({
|
||||
userId: req.currentUser.id,
|
||||
reminderIds: ids,
|
||||
});
|
||||
return sendData(res, req, { deleted });
|
||||
} catch (err) {
|
||||
const message = err instanceof Error ? err.message : '删除提醒失败';
|
||||
return sendError(res, req, 400, 'invalid_schedule_input', message);
|
||||
}
|
||||
});
|
||||
|
||||
api.get('/mindspace/v1/space/quota', async (req, res) => {
|
||||
if (!mindSpace) return res.status(503).json({ message: 'MindSpace 未启用' });
|
||||
const quota = await mindSpace.getQuota(req.currentUser.id);
|
||||
|
||||
Reference in New Issue
Block a user