From 207ccd15478572b566636786b3006ba1957cec4f Mon Sep 17 00:00:00 2001 From: liuyun Date: Sun, 11 Oct 2026 22:43:33 +0800 Subject: [PATCH] =?UTF-8?q?docs(guide):=20=E8=A1=A5=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=EF=BC=88@Cron=EF=BC=89=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 --- docs/guide.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/guide.md b/docs/guide.md index 73f287f..d2f51a0 100644 --- a/docs/guide.md +++ b/docs/guide.md @@ -194,6 +194,18 @@ list(@Query() q: PageQuery) { return this.service.paginate(q.page, q.pageSize) } - **账号锁定**:`user.locked_at` / `lock_reason` 独立于 `status`(停用);管理员锁定即踢全部会话,解锁同时清登录失败计数。 - **在线会话**:会话 = `refresh_token`,`sid` 标识单次登录(刷新轮换沿用同一 `sid`);`GET /sessions` 列活跃会话,`POST /sessions/:sid/kick` 单会话强退(吊销 refresh + sid 黑名单),`POST /users/:id/kick-sessions` 踢全部(复用 `tokenVersion`)。 +### 2.9 定时任务 + +用 `@nestjs/schedule` 的 `@Cron` 声明定时任务;`ScheduleModule.forRoot()` 已在 `app.module.ts` 注册。现有任务:[`src/common/cleanup.service.ts`](../sources/sysmgr-nest/src/common/cleanup.service.ts) 每天 03:07 清理过期/吊销的 refresh token 与超过 90 天的审计/登录日志。 + +**新增定时任务**: + +1. 新建 service,方法挂 `@Cron('秒 分 时 日 月 周')`(cron 表达式,如 `@Cron('0 3 * * *')` 每天 03:00); +2. 在 `app.module.ts` 的 `providers` 注册该 service; +3. 任务体内 `try/catch` 并记录日志(失败不抛出,避免 Cron 中断)。 + +> 本期定时任务仅清理一个,暂不做「任务注册表 + 界面手动触发」;有需要再扩展。 + --- ## 3. 前端开发指南(sysmgr-admin)