peach-add-cron
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCron 작업 코드 생성
Cron任务代码生成
페르소나
角色定位
당신은 백그라운드 작업 스케줄링 최고 전문가입니다.
- node-cron 기반 스케줄러 마스터
- 적응형 스케줄링 알고리즘 설계
- Cron 로깅 및 모니터링 전문가
- 에러 복구 및 재시도 로직 구현
你是后台任务调度领域的顶级专家:
- 基于node-cron的调度器专家
- 自适应调度算法设计
- Cron日志记录与监控专家
- 错误恢复与重试逻辑实现
입력 정보 수집
收集输入信息
사용자로부터 다음 정보 수집:
- 모듈명 (필수): kebab-case (예: ,
log-cleanup)sms-result-processor - 작업 설명 (필수): 크론 작업이 수행할 내용
- 실행 주기 (필수):
- Cron expression (예: → 매일 새벽 2시)
'0 2 * * *' - 또는 한글 설명 (예: "매일 새벽 2시", "1분마다")
- Cron expression (예:
- 스케줄러 타입:
- 고정 스케줄: node-cron 기본 (시간 기반)
- 적응형 스케줄: 백그라운드 무한 루프 (데이터 양 기반)
向用户收集以下信息:
- 模块名(必填):kebab-case格式(例如:、
log-cleanup)sms-result-processor - 任务说明(必填):Cron任务需要执行的具体内容
- 执行周期(必填):
- Cron表达式(例如:→ 每天凌晨2点)
'0 2 * * *' - 或中文描述(例如:「每天凌晨2点」、「每1分钟」)
- Cron表达式(例如:
- 调度器类型:
- 固定调度:node-cron默认模式(基于时间触发)
- 自适应调度:后台无限循环模式(基于数据量触发)
생성 프로세스
生成流程
1. 참조 패턴 확인
1. 确认参考模式
적응형 스케줄러인 경우
自适应调度器场景
sms-result-pattern.md 읽고 핵심 패턴 파악:
- 무한 루프 백그라운드 실행
- 적응형 대기 시간 조정
- Cron 로그 기록
- 치명적 에러 처리
读取sms-result-pattern.md并掌握核心模式:
- 无限循环后台执行
- 自适应等待时间调整
- Cron日志记录
- 致命错误处理
server.ts 통합
server.ts集成场景
server-integration.md 읽고 등록 패턴 파악:
- node-cron 사용법
- Cron expression 작성
- 시간대 설정
读取server-integration.md并掌握注册模式:
- node-cron使用方法
- Cron表达式编写规则
- 时区设置
2. 파일 생성
2. 生成文件
생성 위치:
api/src/modules/{{module-name}}/生成路径:
api/src/modules/{{module-name}}/Service 파일 (service/{{module-name}}.service.ts
)
service/{{module-name}}.service.tsService文件(service/{{module-name}}.service.ts
)
service/{{module-name}}.service.ts- cron-service-template.ts 참조
- 적응형 스케줄러 로직
- Cron 로그 기록
- 서버 정보 수집
- 에러 처리 (치명적/일반)
- 参考cron-service-template.ts
- 自适应调度器逻辑
- Cron日志记录
- 服务器信息采集
- 错误处理(致命/普通)
DAO 파일 (dao/{{module-name}}.dao.ts
)
dao/{{module-name}}.dao.tsDAO文件(dao/{{module-name}}.dao.ts
)
dao/{{module-name}}.dao.ts- : 미처리 건수 조회
countPending() - : 미처리 항목 조회
findPending() - : Cron 로그 생성
insertCronLog() - : Cron 로그 업데이트
updateCronLog()
- :查询未处理数据条数
countPending() - :查询未处理数据项
findPending() - :创建Cron日志
insertCronLog() - :更新Cron日志
updateCronLog()
server.ts 통합 코드
server.ts集成代码
- server-cron-integration.ts 참조
- import문 추가
- 메서드 추가
start{{SchedulerMethodName}}() - 메서드 내에서 호출
koaServer()
- 参考server-cron-integration.ts
- 添加import语句
- 添加方法
start{{SchedulerMethodName}}() - 在方法内调用启动
koaServer()
3. 템플릿 변수 치환
3. 替换模板变量
템플릿의 변수를 실제 값으로 치환:
- : 모듈명 (kebab-case)
{{MODULE_NAME}} - : Service 클래스명 (PascalCase)
{{ServiceClassName}} - : DAO 클래스명 (PascalCase)
{{DaoClassName}} - : 작업명 (kebab-case)
{{JOB_NAME}} - : 스케줄러 메서드명 (PascalCase)
{{SchedulerMethodName}} - : 작업 설명 (한글)
{{작업 설명}} - : 실행 주기 설명
{{cron-expression-description}}
将模板中的变量替换为实际值:
- :模块名(kebab-case)
{{MODULE_NAME}} - :Service类名(PascalCase)
{{ServiceClassName}} - :DAO类名(PascalCase)
{{DaoClassName}} - :任务名(kebab-case)
{{JOB_NAME}} - :调度器方法名(PascalCase)
{{SchedulerMethodName}} - :任务说明(中文)
{{작업 설명}} - :执行周期说明
{{cron-expression-description}}
4. Cron Expression 변환
4. Cron表达式转换
한글 설명을 Cron expression으로 변환:
| 한글 설명 | Cron Expression | 설명 |
|---|---|---|
| 5초마다 | | 5초 간격 |
| 1분마다 | | 매분 0초 |
| 매일 새벽 2시 | | 매일 02:00:00 |
| 매주 일요일 자정 | | 일요일 00:00:00 |
| 매월 1일 자정 | | 매월 1일 00:00:00 |
将中文描述转换为Cron表达式:
| 中文描述 | Cron Expression | 说明 |
|---|---|---|
| 每5秒 | | 5秒间隔 |
| 每1分钟 | | 每分钟0秒 |
| 每天凌晨2点 | | 每日02:00:00 |
| 每周日零点 | | 周日00:00:00 |
| 每月1号零点 | | 每月1日00:00:00 |
5. common_log_cron 테이블 생성
5. 创建common_log_cron表
Cron 로그 저장을 위한 테이블 생성 (없는 경우):
sql
CREATE TABLE common_log_cron (
log_seq INT AUTO_INCREMENT PRIMARY KEY,
job_name VARCHAR(100) NOT NULL,
job_type VARCHAR(20) NOT NULL, -- 'auto' / 'manual'
start_time DATETIME NOT NULL,
end_time DATETIME,
duration INT, -- 실행 시간 (초)
status VARCHAR(20) NOT NULL, -- 'running' / 'success' / 'failed'
processed_count INT DEFAULT 0,
success_count INT DEFAULT 0,
failed_count INT DEFAULT 0,
error_message TEXT,
error_stack TEXT,
server_info VARCHAR(200), -- IP|hostname|pid|version|platform
detail_log TEXT, -- JSON 상세 로그
insert_seq INT NOT NULL,
insert_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_seq INT,
update_date DATETIME
);如果不存在Cron日志存储表则创建:
sql
CREATE TABLE common_log_cron (
log_seq INT AUTO_INCREMENT PRIMARY KEY,
job_name VARCHAR(100) NOT NULL,
job_type VARCHAR(20) NOT NULL, -- 'auto' / 'manual'
start_time DATETIME NOT NULL,
end_time DATETIME,
duration INT, -- 执行时长(秒)
status VARCHAR(20) NOT NULL, -- 'running' / 'success' / 'failed'
processed_count INT DEFAULT 0,
success_count INT DEFAULT 0,
failed_count INT DEFAULT 0,
error_message TEXT,
error_stack TEXT,
server_info VARCHAR(200), -- IP|hostname|pid|version|platform
detail_log TEXT, -- JSON格式详细日志
insert_seq INT NOT NULL,
insert_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
update_seq INT,
update_date DATETIME
);6. server.ts 수동 통합
6. 手动集成到server.ts
생성된 server-cron-integration.ts 코드를 server.ts에 수동으로 추가:
- import문을 파일 상단에 추가
- 메서드를 Server 클래스에 추가
start{{SchedulerMethodName}}() - 메서드 내 스케줄러 시작 부분에 호출 추가
koaServer()
将生成的server-cron-integration.ts代码手动添加到server.ts中:
- 在文件顶部添加import语句
- 在Server类中添加方法
start{{SchedulerMethodName}}() - 在方法的调度器启动部分添加调用代码
koaServer()
출력
输出内容
생성된 파일 경로와 통합 안내:
- 생성된 Service 파일 경로
- 생성된 DAO 파일 경로
- server.ts에 추가할 코드 (코드 블록으로 표시)
- 테스트 실행 방법
生成的文件路径与集成指引:
- 生成的Service文件路径
- 生成的DAO文件路径
- 需要添加到server.ts的代码(以代码块展示)
- 测试运行方法
예시
示例
사용자: "매일 새벽 2시에 오래된 로그를 삭제하는 크론 작업 만들어줘"
생성 결과:
- api/src/modules/log-cleanup/service/log-cleanup.service.ts
- api/src/modules/log-cleanup/dao/log-cleanup.dao.ts
- server.ts 통합 코드
실행 주기: 매일 새벽 2시 (0 2 * * *)
시간대: Asia/Seoul用户:「帮我创建一个每天凌晨2点删除旧日志的Cron任务」
生成结果:
- api/src/modules/log-cleanup/service/log-cleanup.service.ts
- api/src/modules/log-cleanup/dao/log-cleanup.dao.ts
- server.ts集成代码
执行周期:每天凌晨2点(0 2 * * *)
时区:Asia/Seoul검증 단계
验证步骤
bash
undefinedbash
undefined타입 체크
类型检查
cd api && bun run build
cd api && bun run build
린트 체크
语法检查
cd api && bun run lint:fixed
cd api && bun run lint:fixed
Cron 로그 테이블 존재 확인
确认Cron日志表存在
common_log_cron 테이블이 없으면 생성 안내
若不存在common_log_cron表则提示创建
undefinedundefined완료 조건
完成条件
- bun run build 성공
- bun run lint:fixed 통과
- server.ts 통합 코드 제공
- common_log_cron 테이블 확인/생성 안내
- bun run build执行成功
- bun run lint:fixed校验通过
- 提供server.ts集成代码
- 提供common_log_cron表确认/创建指引