> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# 알림

인앱 알림, 사용자별 설정, 관리자 공지.

## 초보자 연습

전제 조건: 아래 두 개의 초보자 가이드를 읽고, 웹 로컬 설정을 완료하고, 편집기의 루트에서 이 모노레포를 엽니다. 웹 설정은 `apps/web/.env.local`에 속합니다. Next.js는 ​​루트 `.env`를 읽지 않습니다. 기본 가짜 모드의 `/dashboard`는 데이터베이스가 없는 데모입니다. `/auth`에는 마이그레이션된 데이터베이스가 필요합니다.

빠른 용어: 작업 영역은 한 팀의 별도 사용자, 데이터 및 설정입니다. 서버는 신뢰할 수 있는 백엔드입니다. 제공업체 키를 브라우저 및 전화 코드에 보관하세요. 마이그레이션은 테이블을 생성하거나 업데이트하는 버전이 지정된 데이터베이스 변경입니다. AI 모델은 응답하는 엔진입니다. 모델 카탈로그는 서버의 사용 가능한 모델 ID 및 가격 목록입니다. 공급자는 AI, 이메일, 청구 서비스와 같은 외부 서비스입니다. 자격은 작업 영역에서 기능을 사용할 수 있도록 하는 부여입니다. 웹훅은 한 서비스가 다른 서비스의 URL에 보내는 메시지입니다.

1. 테스트 회원으로 로그인하고 설정 → 알림을 열어 사용 가능한 채널 기본 설정을 검토하세요.

2. 하나의 작업 공간에서 두 명의 테스트 멤버를 사용하고 `EMAIL_PROVIDER=local`를 사용하여 초대와 같은 로컬 테스트 이벤트를 트리거합니다.

3. 자격을 갖춘 회원과 활성화된 채널만 앱이나 로컬 발신함에서 알림을 받는지 확인합니다. 실제 회원에게 테스트 메시지를 보내지 마세요.

사용자 정의 코드의 경우 제공된 `prompts/README.md`로 시작하고 가장 가까운 프롬프트(앱 화면의 경우 `prompts/new-app-screen.md`, 공개 페이지의 경우 `prompts/new-landing-page.md`)를 복사합니다. 서버, 데이터베이스 또는 공급자 작업의 경우 코딩 에이전트에게 이 가이드의 작업을 제공하고 `AGENTS.md`, `.ai/PROJECT_CONTEXT.md` 및 일치하는 `.ai/` 미러를 읽도록 요청하세요. 여기에 이름이 지정된 정확한 소스 파일을 검사하십시오. 편집하기 전에 파일을 나열하고 확인합니다. 작업 공간 소유권과 서버 전용 비밀을 보존합니다. 차이점을 보여주세요. 원하는 동작, 입력 및 출력 필드, 허용된 역할, 예상되는 성공 및 오류, 테스트 계정, 공급자 또는 장치를 알려주십시오. 샘플 값을 사용하십시오. 절대 진짜 비밀을 붙여넣지 마세요.

[시작하기 전에](https://supastack.dev/ko/docs/web/before-you-start.md)

[단말기 기본사항](https://supastack.dev/ko/docs/web/terminal-basics.md)

[웹 로컬 설정](https://supastack.dev/ko/docs/web/ship-in-5-minutes.md)

[에이전트 프롬프트 및 프로젝트 메모리](https://supastack.dev/ko/docs/web/agents.md)


## 제품 이벤트 파이프라인 사용

`notification-events.ts`는 청구, 예산, 초대, 멤버십 및 연결된 계정 이벤트를 현지화된 사본 및 회원별 전달 계획에 매핑합니다. API 및 앱 클라이언트는 로그인된 작업 영역의 알림을 읽습니다. 기본 설정은 적격 채널을 제어합니다.

일부 이벤트는 의도적으로 앱 내에 유지됩니다. 예를 들어 연결된 계정 새로 고침 실패로 인해 토큰 세부 정보가 노출되거나 원치 않는 이메일이 트리거되어서는 안 됩니다.


## 수령인 선호도 존중

모든 회원에게 독립적으로 메시지를 보내는 대신 기존 전달 계획, 기본 기본 설정 및 행위자 제외 옵션을 사용하세요. 거래 이메일은 계속해서 구성된 공급자를 사용하며 자체 전달 결과를 기록합니다.


## 수신자 및 상태 확인

비활성화된 기본 설정, 제외된 행위자, 제거된 멤버, 읽지 않음/읽음 동작 및 다른 작업 영역을 테스트합니다. 동적 업데이트에 대한 액세스를 유지하고 현지화된 메시지를 확인하세요.

[이메일 전달](https://supastack.dev/ko/docs/modules/email.md)

[알림 사전](https://supastack.dev/ko/docs/web/i18n.md)


## 설치 및 설정

알림 서비스(notification-service.ts)는 워크스페이스 스코프의 인앱 레코드를 저장합니다. GET /api/notifications가 로그인한 멤버의 목록을 반환하고 mark-read 라우트가 상태를 업데이트합니다. 사용자별 설정 플래그가 제품 업데이트나 보안 경고 같은 카테고리를 제어합니다.

멤버는 /settings/notifications에서 설정을 관리합니다. 플랫폼 공지는 announcement-actions로 작성되어 같은 파이프라인으로 전달됩니다.

```
GET   /api/notifications
PATCH /api/notifications   (mark-read)

Emitted on mutations, e.g.:
  member.left
  member.role_changed
```


## 구현 워크플로

알림은 성공한 뮤테이션 후에 발행하세요 — 쓰기가 커밋되기 전이 아니라. 페이로드를 구조화(타입, 워크스페이스, 참조)해 UI가 산문을 파싱하지 않고 렌더링·라우팅할 수 있게 하세요.

비활성화 가능한 카테고리를 전달하기 전에 설정 플래그를 확인하고, 보안 관련 알림(새 세션, 키 변경)은 필수로 유지하세요.


## 검증 및 문제 해결

비활성화된 설정이 전달을 억제하는지, mark-read가 세션 간에 유지되는지, 다른 워크스페이스가 레코드를 나열할 수 없는지, 공지가 의도된 멤버에게 도달하는지 확인합니다. 볼륨이 커져도 알림 팬아웃은 요청의 크리티컬 패스 밖에 두세요.


## 다음

[계정과 보안](https://supastack.dev/ko/docs/web/account.md)
