Skip to content

공지사항 PRD

Status: 디자인 완료 created: March 26, 2026 4:09 PM 앱/웹/스튜디오: 앱, 웹

1. 목표 및 배경

  1. 문제: 현재 공지사항이 외부 노션(support.frontia.ai/notice)을을)을)을) 인웹 브라우저로 띄우는 방식
    • 푸시/딥링크로 특정 공지 상세에 바로 보내기 어려움 → 공지 도달률 저하
    • 인웹 브라우저 전환으로 앱 내 경험 단절 → UX 저하
    • 공지별 읽음 여부, 클릭률 등 데이터 트래킹 불가 → 운영 인사이트 부재
  2. 아이디어: 공지사항을 앱/웹 내부 네이티브 화면으로 전환하고, 자체 어드민에서 콘텐츠를 관리
  3. 가설:
    1. 딥링크를 통해 푸시 → 공지 상세로 직접 진입이 가능해지면, 공지 도달률(열람률)이 유의미하게 상승할 것이다.
    2. 네이티브 UI 전환으로 공지 페이지 이탈률이 감소할 것이다.
    3. 읽음률/클릭률 데이터를 기반으로 공지 운영 전략을 개선할 수 있을 것이다.

2. 타깃 사용자

  • 앱/웹 사용자 전체

3. 핵심 기능 요구사항

3-1. 클라이언트 (앱/웹)

공지 리스트 페이지

  • 진입점: MY 탭 > 메뉴 > 공지사항
  • 레드닷: 읽지 않은 공지가 1개 이상 존재할 경우, 공지사항 메뉴 진입점에 레드닷 표시
    • 공지 리스트 페이지 진입 시 레드닷 해제 (리스트 진입 = 확인으로 간주)
  • 카테고리 탭: 전체 | 공지 | 이벤트 | 업데이트
    • 기본 선택: 전체
    • 카테고리는 고정값이며 어드민에서 추가·수정 불가
  • 상단 고정(핀): 어드민에서 핀 설정된 공지는 카테고리 무관하게 일반 리스트와 분리된 별도 영역(리스트 상단)에 표시. 아래에 일반 공지 리스트(발행일 역순)가 이어짐
    • 핀 공지가 복수인 경우 핀 설정 시점 역순(최신 핀이 위)
    • 핀 공지에는 고정 아이콘/라벨 표시
    • 동시 핀 최대 개수: 3개. 이미 3개인 상태에서 추가 시, 어드민에서 기존 핀 1개를 수동 해제한 뒤 설정해야 함 (초과 설정 차단)
  • 리스트 항목 구성: 카테고리 라벨 | 제목 | 날짜(YYYY.MM.DD)
  • 리스트 정렬: 발행일 역순(최신순)
  • 제목 글자 수: 상한 없음. 리스트에서의 말줄임 처리 기준은 디자인에서 결정
  • 페이지네이션: 무한 스크롤 (페이지 사이즈: 25건)

공지 상세 페이지

  • 구성: 카테고리 라벨, 제목, 날짜, 본문(마크다운 렌더링)
  • 마크다운 지원 범위: 제목(h1~h3), 볼드/이탤릭, 링크, 이미지, 테이블, 리스트(순서/비순서), 구분선, 인용
  • 딥링크 진입: frontia://notice/{notice_id} 로 해당 상세 페이지에 직접 랜딩
    • 웹: https://frontia.ai/notice/{notice_id} (또는 동일 라우트)
  • 비로그인 접근: 웹에서는 비로그인 상태에서도 공지 리스트 및 상세 페이지 열람 가능. 단, 레드닷 등 로그인 기반 기능은 비활성화

레드닷 판정 로직

  • 서버에서 마지막으로 발행된 공지의 ID(또는 발행일시)와, 유저가 마지막으로 공지 리스트에 진입한 시점을 비교
  • 마지막 진입 이후 새로운 공지가 있으면 레드닷 ON
  • 공지 리스트 페이지 진입 시 마지막 확인 시점 갱신 → 레드닷 OFF
  • 다중 디바이스: 디바이스(클라이언트)별 독립 관리. 서버 동기화 불필요 (로컬 저장 방식 가능)

3-2. 딥링크

경로동작
frontia://notice공지 리스트 페이지로 이동
frontia://notice/{notice_id}해당 공지 상세 페이지로 이동
  • 앱 미설치 시: 웹 fallback URL로 리다이렉트 (https://frontia.ai/notice/{notice_id})

3-3. 어드민

공지 관리 (CRUD)

  • 작성: 마크다운 에디터로 본문 작성
    • 필수 입력: 제목, 카테고리(공지/이벤트/업데이트), 본문
    • 선택 입력: 상단 고정(핀) 여부
    • 이미지: 어드민 마크다운 에디터에서 직접 업로드 지원
    • 임시저장/예약 발행: 1차 스코프 제외. 발행 → 즉시 노출만 지원
  • 수정: 발행된 공지의 제목, 본문, 카테고리, 핀 여부 수정 가능
  • 삭제: 발행된 공지 삭제 (소프트 딜리트). 복원 기능 및 보존 기간 없음. 삭제된 공지의 딥링크 진입 시 안내 화면 표시를 위한 용도
  • 리스트 관리: 전체 공지 목록 조회, 카테고리 필터, 발행 상태 확인, 핀 상태 확인

4. 사용자 플로우

일반 진입 플로우

  1. 유저가 MY 탭 진입 → 메뉴에 공지사항 항목 확인 (새 공지 있으면 레드닷 표시)
  2. 공지사항 메뉴 탭 → 공지 리스트 페이지 진입, 레드닷 해제
  3. 카테고리 탭으로 필터링하거나, 리스트에서 원하는 공지 선택
  4. 공지 상세 페이지에서 마크다운으로 렌더링된 본문 확인

딥링크 진입 플로우 (푸시 등 외부 유입)

  1. 운영팀이 어드민에서 공지 작성 및 발행
  2. 운영팀이 기존 푸시 시스템에서 해당 공지의 딥링크(frontia://notice/{notice_id})를 포함한 푸시 알림 수동 발송
  3. 유저가 푸시 탭 → 앱 실행 → 해당 공지 상세 페이지에 직접 랜딩
  4. 뒤로가기 시 공지 리스트 페이지로 이동

어드민 플로우

  1. 운영자가 어드민 > 공지 관리 진입
  2. 새 공지 작성: 제목, 카테고리, 본문(마크다운), 핀 여부 설정
  3. 발행 → 즉시 앱/웹에 노출
  4. 발행된 공지의 딥링크 URL 복사 가능 (푸시 발송 시 활용)
  5. 필요 시 수정/삭제

유의사항

  • 딥링크로 진입한 경우에도 뒤로가기 시 공지 리스트로 이동하여 다른 공지도 확인할 수 있어야 함 (콜드스타트 시 홈 이동도 허용 — 개발자 논의 후 확정)
  • 삭제된 공지의 딥링크로 진입 시 적절한 안내 필요 (에러 처리 참고)
  • 웹 공지 상세 페이지: 검색엔진 노출을 위해 SSR 또는 메타태그 적용 권장

5. 에러 처리 및 예외 상황

  • 삭제/존재하지 않는 공지 딥링크 진입: "해당 공지를 찾을 수 없습니다" 안내 후 공지 리스트로 이동 유도
  • 네트워크 오류: 공지 리스트/상세 로딩 실패 시 재시도 UI 표시
  • 마크다운 렌더링 실패: 렌더링 불가한 요소는 무시하고 가능한 범위까지 표시 (깨지지 않게)
  • 핀 공지 상한: 동시 핀 최대 3개. 어드민에서 3개 초과 설정 시 기존 핀을 먼저 해제하도록 안내 (초과 설정 차단)

6. 데이터 분석

핵심 지표

  1. 공지 도달률: 푸시 발송 대비 공지 상세 페이지 진입률
  2. 공지 열람률: DAU 대비 공지 리스트 진입 유저 비율
  3. 공지별 클릭률: 리스트 노출 대비 상세 진입 비율

로깅 이벤트

타입이름용도파라미터비고
Eventview_notice_list공지 리스트 페이지 진입category: 'all''notice'
Eventclick_notice_item공지 리스트에서 항목 클릭notice_id, category, is_pinned: boolean
Eventview_notice_detail공지 상세 페이지 진입notice_id, category, source: 'list''deeplink'