File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
import { BOARD_PATHS } from '@/lib/domain/board-post-query';
/**
* 관리자 알림 한 건. 백엔드 `CmmNtcnVo`(`TB_COM_NTCN`).
*
* 이름을 `Notification`으로 두지 않는다 — 브라우저 전역 타입과 겹쳐 클라이언트 코드에서
* 어느 쪽인지 흐려진다.
*/
export type AdminNotification = {
/** 백엔드 `ntcnSn` — 일련번호이자 키. */
id: string;
/** 백엔드 `ntcnSj` — 제목. */
title: string;
/** 백엔드 `ntcnCn` — 내용. */
content: string;
/** 백엔드 `readYn`. 값이 없으면 안 읽은 것으로 본다. */
isRead: boolean;
};
export function countUnread(
notifications: readonly AdminNotification[]
): number {
return notifications.filter((item) => !item.isRead).length;
}
/**
* 이슈: `TB_COM_NTCN`에 대상(게시판·게시글) 컬럼이 없어 제목으로 가른다. 지금 적재되는 알림은
* 학습자 1:1문의 등록(`CmmBbsServiceImpl.insert`, 제목 "학습자 1:1 문의 등록") 하나다.
* 모르는 알림은 null — 누를 곳이 없다.
*/
export function resolveNotificationHref(
notification: AdminNotification
): string | null {
return notification.title.includes('1:1 문의') ? BOARD_PATHS.inquiry : null;
}