MAKITTHandoff
Handoff Boards
finishedsystem-issue-notification

System Issue Notification — E2E 핸드오프

System Issue Notification — E2E 핸드오프

S1. 신규 이슈 발생 (HTTP 5xx)

  1. local 에서 makitt-api 임의 endpoint 에 throw 심기
  2. 호출 → 500 응답
  3. 검증:
    • Slack makitt-system-issue-local 에 메시지 1건 (count: 1)
    • PG issue row 1개 (status=open, occurrence_count=1)
    • PG issue_occurrence row 1개
    • apps/docs/issues 리스트에 등장
    • [Open in board] 링크 클릭 → 상세 페이지 (stack + occurrence timeline)

S2. 같은 이슈 반복 (in-place 갱신)

  1. S1 endpoint 를 100회 연속 호출
  2. 검증:
    • Slack 채널에 새 메시지 안 보냄 — 기존 메시지 in-place update (count 1 → 100, last 갱신)
    • milestone (1, 5, 10, 50, 100) 마다 thread reply 1회씩 (총 5건)
    • PG issue.occurrence_count = 100
    • PG issue_occurrence 100 row
    • 보드 상세 페이지 timeline 에 100건

S3. 30분 idle 후 재발 (윈도우 만료)

  1. S1 발생 → 30분 대기 (또는 윈도우 짧게 설정해서 검증)
  2. 같은 endpoint 재호출
  3. 검증:
    • 이전 Slack 메시지에 thread reply: "resolved (silent for 30m)"
    • Slack 채널에 신규 메시지 1건 (count: 1)
    • PG issue row 동일 (fingerprint+env unique) — occurrence_count 누적 / slack_ts 새 ts 로 갱신
    • 보드 timeline 은 끊김 없이 누적

S4. Kafka consumer 실패

  1. consumer 가 처리하는 topic 에 의도적 malformed 메시지 publish
  2. 재시도 정책 소진 후 fallthrough
  3. 검증:
    • 재시도 중에는 Slack 알림 X
    • 소진 후 Slack 메시지 1건
    • endpoint 필드에 kafka topic 명
    • source_module = makitt-consumer

S5. @Scheduled 예외

  1. @Scheduled 메서드에서 throw
  2. 검증:
    • Slack 메시지 1건
    • endpoint 필드에 scheduler bean / method 식별자

S6. 보드에서 status 변경

  1. apps/docs/issues/{id} 에서 status 를 resolved 로 변경
  2. assignee 지정
  3. 검증:
    • PG issue.status = resolved, assignee 갱신
    • 리스트 default filter (open) 에서 사라짐
    • Slack 메시지에는 자동 반영 안 됨 (1차 out — v2)

S7. 환경 분리

  1. dev 에서 throw → makitt-system-issue-dev 만 발송
  2. local 에서 throw → makitt-system-issue-local 만 발송
  3. 검증: 채널 cross-post 없음, board 의 env filter 정확히 분리

S8. local stdout fallback

  1. local 에서 MAKITT_ALERT_SLACK_BOT_TOKEN 미설정 / 빈값
  2. throw 발생
  3. 검증:
    • /tmp/makitt-api.log 에 [ALERT] prefix 한 줄
    • PG 에는 정상 upsert (DB 는 token 무관)

비어 있음

당신이 처리할 항목

docs / spec / finished / system-issue-notification / e2e.md