docs: 2026-04-27 알림 채널 관리 UI 추가 내용 업데이트
Some checks failed
Build and Push Images / build-backend (push) Has been cancelled
Some checks failed
Build and Push Images / build-backend (push) Has been cancelled
This commit is contained in:
56
README.md
56
README.md
@@ -766,3 +766,59 @@ fetch('/api/admin/notify-test', {
|
|||||||
- **backend/frontend 이미지 주소** — 내부 서비스명(`gitea-http.gitea.svc.cluster.local:3000`) → 외부 IP(`192.168.10.101:30000`)로 변경
|
- **backend/frontend 이미지 주소** — 내부 서비스명(`gitea-http.gitea.svc.cluster.local:3000`) → 외부 IP(`192.168.10.101:30000`)로 변경
|
||||||
- **notifier.py, monitor.py 누락** — Dockerfile에 파일이 있었으나 `--no-cache` 재빌드로 해결
|
- **notifier.py, monitor.py 누락** — Dockerfile에 파일이 있었으나 `--no-cache` 재빌드로 해결
|
||||||
- **notify-secrets** — 기존 Secret이 잘못된 값으로 등록되어 있어 재생성
|
- **notify-secrets** — 기존 Secret이 잘못된 값으로 등록되어 있어 재생성
|
||||||
|
|
||||||
|
### 2026-04-27 (알림 채널 관리 UI 추가)
|
||||||
|
|
||||||
|
#### 기능 추가
|
||||||
|
- **🔔 알림 채널 관리 페이지** — 관리자 탭에 추가, 웹에서 직접 알림 채널 추가/수정/삭제 가능
|
||||||
|
- **다중 채널 지원** — Discord 전용 / Gmail 전용 / Discord+Gmail 혼합 채널을 복수로 등록 가능
|
||||||
|
- **채널 유형별 발송 (B방식)** — 채널 유형과 알림 종류의 교집합으로 발송 대상 자동 결정
|
||||||
|
- **DB 기반 알림 설정** — `notify_channels` 테이블에 저장, Pod 재시작 후에도 설정 유지
|
||||||
|
- **환경변수 fallback** — DB 채널 미등록 시 K8s Secret 환경변수로 자동 대체
|
||||||
|
- **notifier.py 전면 개선** — 매 발송 시 DB에서 활성 채널 목록 직접 조회 후 발송
|
||||||
|
|
||||||
|
#### 채널 유형별 발송 규칙
|
||||||
|
|
||||||
|
| 채널 유형 | notify_both (Pod 이상/복구) | notify_discord_only (계정잠금/임시PW) | notify_email_only (인증서만료) |
|
||||||
|
|---------|--------------------------|--------------------------------------|-------------------------------|
|
||||||
|
| Discord+Gmail | Discord + Gmail | Discord만 | Gmail만 |
|
||||||
|
| Discord 전용 | Discord만 | Discord만 | 발송 안 함 |
|
||||||
|
| Gmail 전용 | Gmail만 | 발송 안 함 | Gmail만 |
|
||||||
|
|
||||||
|
#### 알림 채널 등록 방법 (웹 UI)
|
||||||
|
1. 관리자 로그인 → **🔔 알림 설정** 탭
|
||||||
|
2. 좌측 폼에서 채널 이름, 유형, Webhook URL / Gmail 정보 입력
|
||||||
|
3. **💾 저장** 클릭 → 우측 목록에 추가됨
|
||||||
|
4. 목록에서 ✏️ 클릭 → 폼에 값 자동 입력 후 수정/저장
|
||||||
|
5. 🗑️ 클릭 → 채널 삭제
|
||||||
|
6. **📨 테스트 발송** 버튼으로 등록된 모든 채널에 테스트 알림 발송
|
||||||
|
|
||||||
|
#### DB 테이블 수동 생성 (신규 배포 전 필요 시)
|
||||||
|
```bash
|
||||||
|
kubectl exec -n web-portal deployment/backend -- python3 -c "
|
||||||
|
import psycopg2
|
||||||
|
conn = psycopg2.connect(host='postgres-service', database='portaldb', user='portaluser', password='portalpass')
|
||||||
|
cur = conn.cursor()
|
||||||
|
cur.execute('''CREATE TABLE IF NOT EXISTS notify_channels (
|
||||||
|
id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, type VARCHAR(20) NOT NULL,
|
||||||
|
discord_webhook_url TEXT DEFAULT chr(0), gmail_user VARCHAR(200) DEFAULT chr(0),
|
||||||
|
gmail_app_password TEXT DEFAULT chr(0), alert_email_to VARCHAR(200) DEFAULT chr(0),
|
||||||
|
enabled BOOLEAN DEFAULT TRUE, created_at TIMESTAMP DEFAULT NOW()
|
||||||
|
)''')
|
||||||
|
conn.commit()
|
||||||
|
print('완료')
|
||||||
|
"
|
||||||
|
```
|
||||||
|
|
||||||
|
> ℹ️ 새 `main.py` 배포 후에는 startup 시 자동으로 테이블이 생성되므로 수동 생성 불필요.
|
||||||
|
|
||||||
|
#### 프로젝트 구조 변경
|
||||||
|
```
|
||||||
|
backend/
|
||||||
|
├── main.py ← 알림 채널 CRUD API 추가, notify_channels 테이블 자동 생성
|
||||||
|
├── notifier.py ← DB 기반 다중 채널 발송으로 전면 재작성
|
||||||
|
└── monitor.py ← 변경 없음 (notifier 인터페이스 동일)
|
||||||
|
|
||||||
|
frontend/
|
||||||
|
└── index.html ← 🔔 알림 설정 탭 추가 (좌측 폼 + 우측 리스트 UI)
|
||||||
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user