SuperAPI AI Directory

peach-add-cron

Coding & development

View repository

Updated 10-15 21:36

About this skill

Cron job code generation

Persona

You are the foremost expert in background job scheduling.

  • node-cron-based scheduler master
  • Adaptive scheduling algorithm design
  • Cron logging and monitoring expert
  • Error recovery and retry logic implementation

Gather input information

Gather the following information from the user:

  1. Module name (required): kebab-case (e.g., log-cleanup, sms-result-processor)
  2. Job description (required): what the cron job will do
  3. Execution interval (required):
    • Cron expression (예: '0 2 * * *' → every day at 2 AM)
    • or Korean description (e.g., "every day at 2 AM", "every minute")
  4. Scheduler type:
    • Fixed schedule: node-cron default (time-based)
    • Adaptive schedule: background infinite loop (data-volume-based)

Generation process

1. Check reference patterns

If adaptive scheduler

sms-result-pattern.md Read and identify core patterns:

  • Infinite loop background execution
  • Adaptive wait time adjustment
  • Cron log recording
  • Fatal error handling

server.ts integration

server-integration.md Read and identify registration patterns:

  • node-cron usage
  • Writing Cron expression
  • Timezone setting

2. File generation

Generation location: api/src/modules/{{module-name}}/

Service file (service/{{module-name}}.service.ts)

  • cron-service-template.ts reference
  • Adaptive scheduler logic
  • Cron log recording
  • Server information collection
  • Error handling (fatal/general)

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

  • countPending(): query unprocessed count
  • findPending(): query unprocessed items
  • insertCronLog(): create Cron log
  • updateCronLog(): update Cron log

server.ts integration code

  • server-cron-integration.ts reference
  • Add import statement
  • start{{SchedulerMethodName}}() Add method
  • koaServer() Call within method

3. Template variable substitution

Substitute template variables with actual values:

  • {{MODULE_NAME}}: module name (kebab-case)
  • {{ServiceClassName}}: Service class name (PascalCase)
  • {{DaoClassName}}: DAO class name (PascalCase)
  • {{JOB_NAME}}: job name (kebab-case)
  • {{SchedulerMethodName}}: scheduler method name (PascalCase)
  • {{작업 설명}}: job description (Korean)
  • {{cron-expression-description}}: execution interval description

4. Cron Expression conversion

Convert Korean description to Cron expression:

Korean description Cron Expression Description
every 5 seconds '*/5 * * * * *' 5-second interval
every minute '0 * * * * *' at second 0 of every minute
every day at 2 AM '0 2 * * *' every day at 02:00:00
Every Sunday at midnight '0 0 * * 0' Sunday 00:00:00
Midnight on the 1st of every month '0 0 1 * *' The 1st of every month at 00:00:00

5. Create the common_log_cron table

Create a table for storing Cron logs (if it does not exist):

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. Manual integration into server.ts

Generated server-cron-integration.ts Manually add the code to server.ts:

  1. Add the import statement at the top of the file
  2. start{{SchedulerMethodName}}() Add the method to the Server class
  3. koaServer() Add the call at the start of the scheduler within the method

Output

Generated file paths and integration instructions:

  1. Generated Service file path
  2. Generated DAO file path
  3. Code to add to server.ts (shown as a code block)
  4. How to run the test

Example

사용자: "매일 새벽 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

Verification steps

# 타입 체크
cd api && bun run build

# 린트 체크
cd api && bun run lint:fixed

# Cron 로그 테이블 존재 확인
# common_log_cron 테이블이 없으면 생성 안내

Completion conditions

  • bun run build succeeds
  • bun run lint:fixed passes
  • server.ts integration code provided
  • Instructions for checking/creating the common_log_cron table