Handoff Boards
finishedsystem-issue-notification
System Issue Notification — E2E 핸드오프
System Issue Notification — E2E 핸드오프
S1. 신규 이슈 발생 (HTTP 5xx)
- local 에서
makitt-api임의 endpoint 에 throw 심기 - 호출 → 500 응답
- 검증:
- Slack
makitt-system-issue-local에 메시지 1건 (count: 1) - PG
issuerow 1개 (status=open, occurrence_count=1) - PG
issue_occurrencerow 1개 apps/docs/issues리스트에 등장[Open in board]링크 클릭 → 상세 페이지 (stack + occurrence timeline)
- Slack
S2. 같은 이슈 반복 (in-place 갱신)
- S1 endpoint 를 100회 연속 호출
- 검증:
- 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_occurrence100 row - 보드 상세 페이지 timeline 에 100건
S3. 30분 idle 후 재발 (윈도우 만료)
- S1 발생 → 30분 대기 (또는 윈도우 짧게 설정해서 검증)
- 같은 endpoint 재호출
- 검증:
- 이전 Slack 메시지에 thread reply: "resolved (silent for 30m)"
- Slack 채널에 신규 메시지 1건 (count: 1)
- PG
issuerow 동일 (fingerprint+env unique) —occurrence_count누적 /slack_ts새 ts 로 갱신 - 보드 timeline 은 끊김 없이 누적
S4. Kafka consumer 실패
- consumer 가 처리하는 topic 에 의도적 malformed 메시지 publish
- 재시도 정책 소진 후 fallthrough
- 검증:
- 재시도 중에는 Slack 알림 X
- 소진 후 Slack 메시지 1건
endpoint필드에 kafka topic 명source_module = makitt-consumer
S5. @Scheduled 예외
@Scheduled메서드에서 throw- 검증:
- Slack 메시지 1건
endpoint필드에 scheduler bean / method 식별자
S6. 보드에서 status 변경
apps/docs/issues/{id}에서 status 를resolved로 변경- assignee 지정
- 검증:
- PG
issue.status = resolved,assignee갱신 - 리스트 default filter (open) 에서 사라짐
- Slack 메시지에는 자동 반영 안 됨 (1차 out — v2)
- PG
S7. 환경 분리
- dev 에서 throw →
makitt-system-issue-dev만 발송 - local 에서 throw →
makitt-system-issue-local만 발송 - 검증: 채널 cross-post 없음, board 의 env filter 정확히 분리
S8. local stdout fallback
- local 에서
MAKITT_ALERT_SLACK_BOT_TOKEN미설정 / 빈값 - throw 발생
- 검증:
/tmp/makitt-api.log에[ALERT]prefix 한 줄- PG 에는 정상 upsert (DB 는 token 무관)
비어 있음
당신이 처리할 항목
docs / spec / finished / system-issue-notification / e2e.md