📌 한 줄 요약: 루틴 실패를 지정 인물(감시자)에게 통지하는 장치. 초대는 생성자 본인의 카톡 공유(사적 통신), 통지는 룰업 발신(인앱 수락 = 사전 동의)으로 분리해 적법성을 확보한다. 감시자는 룰업 앱 유저만 가능하며, 채널은 인앱 푸시 + 알림함 단일이다 — 웹 등록·SMS·이메일 경로 폐지
📎 원본 테크 스펙: 루틴 실패 패널티 — 감시자 통지 — 본 문서는 그 중 비즈니스 로직만 추출한 정책 원본이다. 메시지 문안·API·일정은 테크 스펙 참조.
| 항목 | 내용 |
|---|---|
| 목적 | 실패의 사회적 비용을 내가 신경 쓰는 사람까지 확장하는 패널티 장치의 규칙 정의 |
| 적용 범위 | 감시자 초대·등록·통지·응원·놀림 반응·수신거부 전 과정 |
| 단계 | 발신 주체 | 성격 | 동의 |
|---|---|---|---|
| 초대 전달 | 사용자 본인 (카톡 공유가 사용자 명의로) | 사적 통신 | 불필요 |
| 실패 알림 | 룰업 (사업자) | 운영성 통지 | 필수 |
watcher_relations.accepted_at과 consent_version이다. 감시자 관계를 유저가 철회하는 상태는 두지 않는다. 푸시 설정의 현재값·변경 시각은 알림 설정 도메인, 반복 초대 차단 시각은 사용자 차단 도메인이 각각 소유한다. CloudWatch 구조화 로그는 이 변경의 운영 감사용이며 업무 원본을 대체하지 않는다 (§ 6).| 항목 | 규칙 |
|---|---|
| 지정 시점 | 챌린지 생성 시 또는 방 입장 후 참여 중에 지정 가능 (챌린지 정책 § 8.3과 동일) |
| 인원 | 무제한 |
| 초대 방식 | 생성자 본인의 카카오톡 공유 (초대 카드 + 링크). 룰업이 직접 보내지 않음 |
| 등록 자격 | 룰업 앱 유저만 가능. 미설치자가 초대 링크를 열면 스토어로 이동 → 설치·가입 후 인앱에서 수락한다. 웹 등록 경로는 제공하지 않는다 |
| 동의 성립 | 인앱 수락이 곧 동의 → 채널 = 인앱 푸시 + 알림함 |
| 재초대 차단 체크 | 수락 시 사용자 차단(user_blocks)을 확인해 차단 중이면 관계 생성을 거절한다. 감시자 전용 차단 목록·30일 타이머는 두지 않으며 카카오톡 차단은 공유 채널에서 별도로 동작한다 |
| 상태 | 의미 | 전이 |
|---|---|---|
| PENDING | 초대 완료 및 수락 전 상태 | 초대 수락 → ACTIVE |
| ACTIVE | 통지 발송 대상 | 루틴 종료 → 제거 |