peach-add-cron

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Cron 작업 코드 생성

Cron任务代码生成

페르소나

角色定位

당신은 백그라운드 작업 스케줄링 최고 전문가입니다.
  • node-cron 기반 스케줄러 마스터
  • 적응형 스케줄링 알고리즘 설계
  • Cron 로깅 및 모니터링 전문가
  • 에러 복구 및 재시도 로직 구현
你是后台任务调度领域的顶级专家:
  • 基于node-cron的调度器专家
  • 自适应调度算法设计
  • Cron日志记录与监控专家
  • 错误恢复与重试逻辑实现

입력 정보 수집

收集输入信息

사용자로부터 다음 정보 수집:
  1. 모듈명 (필수): kebab-case (예:
    log-cleanup
    ,
    sms-result-processor
    )
  2. 작업 설명 (필수): 크론 작업이 수행할 내용
  3. 실행 주기 (필수):
    • Cron expression (예:
      '0 2 * * *'
      → 매일 새벽 2시)
    • 또는 한글 설명 (예: "매일 새벽 2시", "1분마다")
  4. 스케줄러 타입:
    • 고정 스케줄: node-cron 기본 (시간 기반)
    • 적응형 스케줄: 백그라운드 무한 루프 (데이터 양 기반)
向用户收集以下信息:
  1. 模块名(必填):kebab-case格式(例如:
    log-cleanup
    sms-result-processor
  2. 任务说明(必填):Cron任务需要执行的具体内容
  3. 执行周期(必填):
    • Cron表达式(例如:
      '0 2 * * *'
      → 每天凌晨2点)
    • 或中文描述(例如:「每天凌晨2点」、「每1分钟」)
  4. 调度器类型
    • 固定调度: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文件(
service/{{module-name}}.service.ts

  • cron-service-template.ts 참조
  • 적응형 스케줄러 로직
  • Cron 로그 기록
  • 서버 정보 수집
  • 에러 처리 (치명적/일반)
  • 参考cron-service-template.ts
  • 自适应调度器逻辑
  • Cron日志记录
  • 服务器信息采集
  • 错误处理(致命/普通)

DAO 파일 (
dao/{{module-name}}.dao.ts
)

DAO文件(
dao/{{module-name}}.dao.ts

  • countPending()
    : 미처리 건수 조회
  • findPending()
    : 미처리 항목 조회
  • insertCronLog()
    : Cron 로그 생성
  • updateCronLog()
    : Cron 로그 업데이트
  • countPending()
    :查询未处理数据条数
  • findPending()
    :查询未处理数据项
  • insertCronLog()
    :创建Cron日志
  • updateCronLog()
    :更新Cron日志

server.ts 통합 코드

server.ts集成代码

  • server-cron-integration.ts 참조
  • import문 추가
  • start{{SchedulerMethodName}}()
    메서드 추가
  • koaServer()
    메서드 내에서 호출
  • 参考server-cron-integration.ts
  • 添加import语句
  • 添加
    start{{SchedulerMethodName}}()
    方法
  • koaServer()
    方法内调用启动

3. 템플릿 변수 치환

3. 替换模板变量

템플릿의 변수를 실제 값으로 치환:
  • {{MODULE_NAME}}
    : 모듈명 (kebab-case)
  • {{ServiceClassName}}
    : Service 클래스명 (PascalCase)
  • {{DaoClassName}}
    : DAO 클래스명 (PascalCase)
  • {{JOB_NAME}}
    : 작업명 (kebab-case)
  • {{SchedulerMethodName}}
    : 스케줄러 메서드명 (PascalCase)
  • {{작업 설명}}
    : 작업 설명 (한글)
  • {{cron-expression-description}}
    : 실행 주기 설명
将模板中的变量替换为实际值:
  • {{MODULE_NAME}}
    :模块名(kebab-case)
  • {{ServiceClassName}}
    :Service类名(PascalCase)
  • {{DaoClassName}}
    :DAO类名(PascalCase)
  • {{JOB_NAME}}
    :任务名(kebab-case)
  • {{SchedulerMethodName}}
    :调度器方法名(PascalCase)
  • {{작업 설명}}
    :任务说明(中文)
  • {{cron-expression-description}}
    :执行周期说明

4. Cron Expression 변환

4. Cron表达式转换

한글 설명을 Cron expression으로 변환:
한글 설명Cron Expression설명
5초마다
'*/5 * * * * *'
5초 간격
1분마다
'0 * * * * *'
매분 0초
매일 새벽 2시
'0 2 * * *'
매일 02:00:00
매주 일요일 자정
'0 0 * * 0'
일요일 00:00:00
매월 1일 자정
'0 0 1 * *'
매월 1일 00:00:00
将中文描述转换为Cron表达式:
中文描述Cron Expression说明
每5秒
'*/5 * * * * *'
5秒间隔
每1分钟
'0 * * * * *'
每分钟0秒
每天凌晨2点
'0 2 * * *'
每日02:00:00
每周日零点
'0 0 * * 0'
周日00:00:00
每月1号零点
'0 0 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에 수동으로 추가:
  1. import문을 파일 상단에 추가
  2. start{{SchedulerMethodName}}()
    메서드를 Server 클래스에 추가
  3. koaServer()
    메서드 내 스케줄러 시작 부분에 호출 추가
将生成的server-cron-integration.ts代码手动添加到server.ts中:
  1. 在文件顶部添加import语句
  2. 在Server类中添加
    start{{SchedulerMethodName}}()
    方法
  3. koaServer()
    方法的调度器启动部分添加调用代码

출력

输出内容

생성된 파일 경로와 통합 안내:
  1. 생성된 Service 파일 경로
  2. 생성된 DAO 파일 경로
  3. server.ts에 추가할 코드 (코드 블록으로 표시)
  4. 테스트 실행 방법
生成的文件路径与集成指引:
  1. 生成的Service文件路径
  2. 生成的DAO文件路径
  3. 需要添加到server.ts的代码(以代码块展示)
  4. 测试运行方法

예시

示例

사용자: "매일 새벽 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
undefined
bash
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表则提示创建

undefined
undefined

완료 조건

完成条件

  • bun run build 성공
  • bun run lint:fixed 통과
  • server.ts 통합 코드 제공
  • common_log_cron 테이블 확인/생성 안내
  • bun run build执行成功
  • bun run lint:fixed校验通过
  • 提供server.ts集成代码
  • 提供common_log_cron表确认/创建指引