mcpField
P
peach-add-cron

peach-add-cron

github.com/peachsolution開発63 回インストール
リポジトリ

peach-add-cron について

peach-add-cron は Peach プロジェクトの定期バックグラウンドジョブを生成するスキルです。固定または適応型スケジューリングを追加する開発者向けに、既存パターンに沿った Service、DAO、server.ts の統合コードと検証手順を用意します。

主な機能

  1. 01ジョブ内容と実行周期を収集
  2. 02固定・適応型スケジューリングに対応
  3. 03Service と DAO ファイルを生成
  4. 04server.ts の統合コードを提示
  5. 05Cron ログテーブルとビルドを確認

活用シーン

  1. 01Cron 式でバックグラウンドジョブを設定
  2. 02自然言語の周期を式に変換
  3. 03未処理データのポーリングを追加
  4. 04定期ジョブに実行ログを追加

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/peachsolution/peach-harness --skill peach-add-cron

インストール後、Claude Code で/peach-add-cronを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
cron-service-template.ts
server-cron-integration.ts
references/
server-integration.md
sms-result-pattern.md

README(原文)English

プロジェクトの README より

この README の日本語訳はまだありません。以下は英語の原文です。日本語の紹介はページ上部をご覧ください。

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. 참조 패턴 확인
적응형 스케줄러인 경우

sms-result-pattern.md 읽고 핵심 패턴 파악:

  • 무한 루프 백그라운드 실행
  • 적응형 대기 시간 조정
  • Cron 로그 기록
  • 치명적 에러 처리
server.ts 통합

server-integration.md 읽고 등록 패턴 파악:

  • node-cron 사용법
  • Cron expression 작성
  • 시간대 설정
2. 파일 생성

생성 위치: api/src/modules/{{module-name}}/

Service 파일 (service/{{module-name}}.service.ts)
  • cron-service-template.ts 참조
  • 적응형 스케줄러 로직
  • Cron 로그 기록
  • 서버 정보 수집
  • 에러 처리 (치명적/일반)
DAO 파일 (dao/{{module-name}}.dao.ts)
  • countPending(): 미처리 건수 조회
  • findPending(): 미처리 항목 조회
  • insertCronLog(): Cron 로그 생성
  • updateCronLog(): Cron 로그 업데이트
server.ts 통합 코드
  • server-cron-integration.ts 참조
  • import문 추가
  • start{{SchedulerMethodName}}() 메서드 추가
  • koaServer() 메서드 내에서 호출
3. 템플릿 변수 치환

템플릿의 변수를 실제 값으로 치환:

  • {{MODULE_NAME}}: 모듈명 (kebab-case)
  • {{ServiceClassName}}: Service 클래스명 (PascalCase)
  • {{DaoClassName}}: DAO 클래스명 (PascalCase)
  • {{JOB_NAME}}: 작업명 (kebab-case)
  • {{SchedulerMethodName}}: 스케줄러 메서드명 (PascalCase)
  • {{작업 설명}}: 작업 설명 (한글)
  • {{cron-expression-description}}: 실행 주기 설명
4. Cron Expression 변환

한글 설명을 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
5. common_log_cron 테이블 생성

Cron 로그 저장을 위한 테이블 생성 (없는 경우):

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 수동 통합

생성된 server-cron-integration.ts 코드를 server.ts에 수동으로 추가:

  1. import문을 파일 상단에 추가
  2. start{{SchedulerMethodName}}() 메서드를 Server 클래스에 추가
  3. koaServer() 메서드 내 스케줄러 시작 부분에 호출 추가

출력

생성된 파일 경로와 통합 안내:

  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

검증 단계

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

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

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

완료 조건

  • bun run build 성공
  • bun run lint:fixed 통과
  • server.ts 통합 코드 제공
  • common_log_cron 테이블 확인/생성 안내

コメント