kazzle.config.ts의 process 컴포넌트에서 선언합니다. 하나의 컴포넌트는 필요한 만큼 많은 트리거를 가질 수 있습니다.
구조
processMode는 생명주기를 선택합니다 — 장시간 실행되는 서버 또는 트리거당 일회성 실행.triggers[]는 이 컴포넌트를 실행해야 하는 이벤트를 나열합니다.
processMode
트리거
각 트리거는name (컴포넌트 내에서 고유), kind, 그리고 모드에 따라 schedule 및/또는 path를 가집니다.
지속 모드 — 서버로의 HTTP
지속 컴포넌트의 트리거가 실행되면, Kazzle은 선언된path에서 서버로 POST합니다. 요청은 다음을 포함합니다:
웹훅 트리거의 경우 원본 요청 본문이 POST 본문으로 전달됩니다. 일정 트리거의 경우 본문은 비어있습니다.
트리거 모드 — 트리거당 일회성
triggered 컴포넌트의 트리거가 실행되면, Kazzle은 진입 스크립트를 새로 생성하고 종료될 때까지 기다립니다. path는 없으며, 스크립트는 환경 변수에서 어떤 트리거가 실행되었는지 알아냅니다.
웹훅 URL
triggerName 세그먼트는 해당 컴포넌트의 triggers[]에서 kind: 'webhook' 항목과 일치해야 합니다. 알 수 없는 트리거 이름은 404를 반환합니다.
일정 해상도
Cron 표현식은 5필드 (분, 시간, 월의 날짜, 월, 요일)이며 분 단위 해상도가 최소입니다. 분 미만의 일정은 매니페스트 검증 시 거부됩니다.실행 기록 방식
각 트리거 실행은trigger_name, triggered_by, run_id 및 실행의 종료 상태와 함께 process_runs 행을 작성합니다. 자신의 코드에서 이를 쿼리하거나 앱의 실행 보기에서 검사할 수 있습니다.
크레딧 부족
실패한 실행은 기록되고 로깅되지만, 일정은 정상 주기에 따라 계속 실행됩니다 — 불안정한 실행이 트리거를 비활성화하지 않습니다. 실행을 중지하는 유일한 것은 크레딧입니다: 모든 트리거 실행은 스페이스의 잔액에 대해 확인되며, 스페이스가 크레딧 부족 상태이거나 청구 설정이 없는 동안 실행은402로 건너뜁니다. 이는 자동 복구됩니다 — 일정은 활성 상태로 유지되고 충전 후 다음 실행은 수동 재개 없이 정상적으로 실행됩니다.
나중에 자동화 추가
간단한 앱은 트리거 없이 시작하고 나중에 추가할 수 있습니다 — 일일 요약 추가, Stripe 연결, 정리 실행. 컴포넌트의 생명주기 (processMode)와 트리거 (triggers[])는 독립적이므로 앱의 나머지 부분을 다시 작성하지 않고도 변경할 수 있습니다.