요구사항 명세서 - prgrms-web-devcourse-final-project/WEB4_5_GAEPPADAK_BE GitHub Wiki

구분 주기능 상세기능 설명 Version 비고 🗒️ API 명세서 QA ID
1 회원가입 1.1 이메일 회원가입 - 사용자의 입력 유효성 검증: 이메일, 비밀번호- 이메일 중복 확인- 이메일 인증 절차 포함- 유저 정보 입력: 닉네임, 생년월일- 가입 완료시 로그인 페이지로 이동 - Spring Secutiry + JWT 인증- 비밀번호는 8~30자, 영소문자+숫자+특수기호 포함- 비밀번호 암호화 저장- 닉네임은 중복 불가능 1.0 실패시 에러 메시지 토스트 노출 , , , , 25
2 로그인 2.1 이메일 로그인 - 사용자의 입력 유효성 검증: 이메일, 비밀번호- 회원 검증- JWT(refresh, access) 발급- 로그인 완료 - Spring Security + JWT 인증 1.0 실패시 에러 메시지 토스트 노출   , , 10
  제목 없음             50
  2.3 토큰 갱신 - 자동 토큰 갱신 - refresh token으로 JWT 재발급 1.0 발급 실패시 로그아웃 처리   , , 5
3 로그아웃 3.1 로그아웃 - 세션 해제 - cookie 삭제 1.0 실패시 에러 메시지 토스트 노출     15
5 메인 화면 5.1 실시간 키워드 리스트 - 실시간 키워드 Top 10개 보기   1.0 로딩 및 로딩 실패 메시지 노출     19
  5.2 실시간 포스트 리스트 - 실시간 키워드 1:1 매칭 포스트 리스트 보기(포스트 썸네일, 포스트 제목, AI 요약 내용 최대 50자, 작성일) - 페이지네이션 1.0 로딩 및 로딩 실패 메시지 노출     21
  5.3 실시간 인기 뉴스 5개 - 실시간으로 인기 있는 뉴스(Naver News) Top 5개 노출 - 당일 수집된 출처 모음 기준 1.0     , 33
  5.4 인기 뉴스 전체보기 버튼 - 17.1 인기 뉴스 리스트 로 이동   1.0     , 30
  5.5 실시간 인기 유튜브 5개 - 실시간으로 인기 있는 유튜브 Top 5개 노출 - 당일 수집된 출처 모음 기준 1.0     , 39
  5.6 인기 유튜브 전체보기 버튼 - 16.1 인기 유튜브 리스트 로 이동   1.0     , 32
6 포스트 화면 6.1 소스 표기 - 출처 뉴스 링크 리스트- 출처 유튜브 링크 리스트 - Open API 사용 1.0 로딩 및 로딩 실패 메시지 노출 ,   22
  6.2 요약 내용 - 요약 내용 - 소스 뉴스 1개의 내용을 가져오거나 AI 기능 활용하여 요약 1.0 로딩 및 로딩 실패 메시지 노출     29
  6.3 댓글 작성 및 반응 공유 - 댓글 조회- 댓글 작성- 작성한 댓글 수정/삭제- 댓글 반응 좋아요 - 사용자 토큰 확인 필요 (조회 제외)- 댓글 조회시 페이지네이션- 수정/삭제는 작성자 본인만 가능- 좋아요는 작성자 제외 가능 1.0 토큰 검증 실패시 로그인 제안 메시지 노출조회시 로딩 및 로딩 실패 메시지 노출이외 기능 실패시 에러 메시지 토스트 노출 , , , , , , , , , , 16
  6.6 실시간 키워드 리스트 5.1 실시간 키워드 리스트 와 동일   1.0     , , , 41
14 회원 정보 14.1 회원 정보 보기 - 회원 정보(이메일, 닉네임, 즐겨찾기한 키워드, 구독한 주간리포트 주제) 조회 - 사용자 토큰 확인 필요- 결제 여부에 따라 정보 제공 1.0 로딩 및 로딩 실패 메시지 노출   , 24
16 인기 유튜브 화면 16.1 인기 유튜브 리스트 - 실시간 출처 유튜브 리스트를 인기순으로 조회 - 당일 수집된 출처 모음 기준- 소스 페이지네이션 1.0     , 36
  16.2 실시간 인기 뉴스 5개 5.3 실시간 인기 뉴스 5개 와 동일 - 당일 수집된 출처 모음 기준 1.0     , 35
17 인기 뉴스 화면 17.1 인기 뉴스 리스트 - 실시간 출처 뉴스 리스트를 인기순으로 조회 - 당일 수집된 출처 모음 기준- 소스 페이지네이션 1.0     , 34
  17.2 실시간 인기 유튜브 5개 5.5 실시간 인기 유튜브 5개 와 동일 - 당일 수집된 출처 모음 기준 1.0     , 40
[BE] 18 Trend 스케줄러 18.1 1시간 단위 Job - 1시간 마다 키워드 수집부터 포스트 생성까지의 스케줄러 동작   1.0       43
  18.2 키워드수집 - fetchTrendingKeywords: Google Trends RSS 호출 → JSON 수신 → DB에 Upsert → 시간대별 점수 계산 → Top‑10 키워드 선정 → ExecutionContext에 저장   1.0       44
  18.3 소스 검색 - searchSources: Naver News API(10) + YouTube API(10) 병렬 호출 → URL 정규화 → SHA‑256 fingerprint → 중복 방어   1.0       46
  18.5 포스트 생성 - generatePost: 신규 Source 기반 LLM 요약 호출 → DB 저장   1.0       42
4 회원 탈퇴 4.1 회원 탈퇴 - 회원 탈퇴 - soft-delete 1.5 실패시 에러 메시지 토스트 노출     6
15 키워드 화면 15.1 해당 포스트 리스트 - 실시간 키워드 클릭시 해당하는 포스트 목록 조회 - 포스트 페이지네이션 1.5 로딩 및 로딩 실패 메시지 노출     38
  15.2 해당 소스 리스트 - 키워드에 해당하는 소스 5개 조회   1.5 로딩 및 로딩 실패 메시지 노출     31
  15.3 실시간 키워드 리스트 5.1 실시간 키워드 리스트 와 동일   1.5 로딩 및 로딩 실패 메시지 노출     37
  18.4 포스트 신규성 평가 - evaluateNovelty: 수집된 Source 결과 기반 → Novelty 조건 평가 및 플래그 업데이트   1.5       45
  2.2 비밀번호 초기화 - 사용자의 입력 검증(이메일)- 이메일 인증- 새로운 비밀번호 입력- 비밀번호 수정 완료 - 비밀번호는 8~30자, 영소문자+숫자+특수기호 포함- 비밀번호 암호화 저장 2.0 인증 실패시 기존 비밀번호 유지실패시 에러 메시지 토스트 노출 , ,   18
  6.4 댓글 신고 - 댓글 옆의 ‘신고’ 버튼을 눌러 신고- 댓글 신고 시 이유 선택 후 제출- 이유 종류 리스트: 부적절한 내용, 불쾌감을 일으키는 내용, 광고, 기타(의견 작성 없음) - 사용자 토큰 확인 필요 2.0 실패시 에러 메시지 토스트 노출     27
  6.5 포스트 신고 - 포스트 우측 하단의 ‘신고’ 버튼을 눌러 신고- 포스트 신고 시 이유 선택 후 제출- 이유 종류 리스트: 부적절한 내용, 실제와 다른 내용, 기타(의견 작성 없음) - 사용자 토큰 확인 필요 2.0 실패시 에러 메시지 토스트 노출     1
7 키워드 검색 7.1 키워드 검색 결과 리스트 - 원하는 키워드로 검색하여 관련 포스트 리스트를 최신순, 이름순으로 볼 수 있음- 키워드 검색바는 상단의 메뉴바에 있어야 됨 (와이어 프레임 참고)- 글자를 쓰면 연관된 키워드가 나와야 됩니다.(예: ‘가’를 검색창에 입력하면 아래로 ‘가나’, ‘가방’, ‘가수’ 이런 연관된 키워드가 떠야합니다.) - 사용자 토큰 확인 필요- 페이지네이션 2.0 로딩 및 로딩 실패 메시지 노출     7
12 관리자 신고 관리 12.1 포스트 신고 관리 - 관리자 검수- 신고된 포스트 목록 조회- 정렬: (기본)최신순, 신고된 횟수 (검색창 우측에 정렬 목록이 나옵니다.)- 포스트 제목, 내용, 키워드 사유 확인 가능- 페이지네이션 적용- 검색창은 리스트 위 상단에 위치 (와이어 프레임 참고)- 검색창 좌측에 검색 대상 드롭다운 표시(포스트 제목, 포스트 내용, 키워드, 사유)- 드롭다운 좌측에 ‘신고 승인’, ‘신고 거부’ 버튼 위치 (각 포스트를 체크박스로 체크하여 각각 신고 승인과 신고 거부를 함) - 사용자 토큰 확인 필요- 관리자 권한 필요- 신고 조회시 페이지네이션- 소프트 딜리트 2.0 로딩 및 로딩 실패 메시지 노출     9
  12.2 신고된 포스트 삭제 - 부적절한 포스트 삭제- 체크박스에 체크 후 삭제 버튼을 눌러 여러개 삭제 가능 - 사용자 토큰 확인 필요- 관리자 권한 필요 2.0 실패시 에러 메시지 토스트 노출     26
  12.4 사용자 댓글 신고 관리 - 관리자 검수- 신고된 댓글 목록 조회- 정렬: (기본)최신순, 신고된 횟수 (검색창 우측에 정렬 목록이 나옵니다.)- 닉네임, 포스트 제목, 내용, 댓글 내용 사유 확인 가능- 페이지네이션 적용- 검색창은 리스트 위 상단에 위치 (와이어 프레임 참고)- 검색창 좌측에 검색 대상 드롭다운 표시(닉네임, 포스트 제목, 댓글 내용, 사유)- 드롭다운 좌측에 ‘신고 승인’, ‘신고 거부’ 버튼 위치 (각 포스트를 체크박스로 체크하여 각각 신고 승인과 신고 거부를 함. 신고 승인 및 거부를 하면 )- 댓글 신고 내역에서 탈퇴한 유저의 닉네임은 ‘탈퇴한 회원’이라고 적혀지게 됨 - 사용자 토큰 확인 필요- 관리자 권한 필요- 신고 조회시 페이지네이션- 소프트 딜리트 2.0 로딩 및 로딩 실패 메시지 노출     23
  12.5 신고된 댓글 숨김 - 부적절한 댓글 숨김 처리- 체크박스에 체크 후 삭제 버튼을 눌러 여러개 삭제 가능 - 사용자 토큰 확인 필요- 관리자 권한 필요 2.0 실패시 에러 메시지 토스트 노출     28
13 관리자 회원 관리 13.1 회원 리스트 - 회원 목록을 리스트로 볼 수 있음- 정렬: (기본) 닉네임- 리스트에서 닉네임, 이메일, 역할 확인 가능(관리자, 블랙, 유저)- 페이지네이션 적용- 검색창은 리스트 위 상단에 위치 (와이어 프레임 참고)- 검색창 좌측에 검색 대상 리스트 표시 (닉네임, 이메일, 역할) - 사용자 토큰 확인 필요- 관리자 권한 필요- 페이지네이션 2.0 로딩 및 로딩 실패 메시지 노출     20
  13.2 회원 권한 수정 - 악성 유저는 블랙 처리하여 댓글 권한 전체 제한- 관리자가 역할을 눌러 역할 변경 가능(유저, 블랙)- 관리자 역할은 역할이 변경되지 않고 줄 수도 없음 - 사용자 토큰 확인 필요- 관리자 권한 필요 2.0 실패시 에러 메시지 토스트 노출     17
  4.2 회원 정보 수정 - 닉네임을 수정할 수 있음- 비밀번호 수정할 수 있음 - 사용자 토큰 검증 필요- 닉네임은 중복 불가능- 닉네임은 210자 이내- 비밀번호는 820자, 영문자+숫자+특수기호 포함- 비밀번호 암호화 저장 2.0 실패시 에러 메시지 토스트 노출     11
  12.6 댓글 신고 거부 - 부적절한 신고 거부- 체크박스에 체크 후 삭제 버튼을 눌러 여러개 거부 가능 - 사용자 토큰 확인 필요- 관리자 권한 필요 2.0 실패시 에러 메시지 토스트 노출     49
  12.3 포스트 신고 거부 - 부적절한 신고 거부- 체크박스에 체크 후 삭제 버튼을 눌러 여러개 거부 가능 - 사용자 토큰 확인 필요- 관리자 권한 필요 2.0 실패시 에러 메시지 토스트 노출     48
4 회원 탈퇴 4.1 회원 탈퇴 - 회원 탈퇴 시 댓글, 사용자 댓글 신고 관리에서 해당 사용자의 닉네임이 ‘탈퇴한 회원’으로 변경- 탈퇴 회원은 관리자 회원 관리 목록에 나타나지 않음 - soft-delete 2.0 실패시 에러 메시지 토스트 노출     47
10 트렌드 분석 10.1 키워드 타임라인 - 이슈화된 최초/피크/퇴출 시점, 연속 노출 기간 - 사용자 토큰 확인 필요- 결제 필요 3.0 로딩 및 로딩 실패 메시지 노출     13
  10.2 키워드 감성 분석 - 키워드 감성 분석 결과 조회 - 사용자 토큰 확인 필요- 결제 필요 3.0 로딩 및 로딩 실패 메시지 노출     12
8 키워드 즐겨찾기 8.1 키워드 저장 및 해제(제거) - 키워드를 저장할 수 있음- 저장해둔 키워드를 해제할 수 있음 - 사용자 토큰 확인 필요 백로그 실패시 에러 메시지 토스트 노출 ,   8
  8.2 즐겨찾기 리스트(제거) - 마이페이지에서 저장한 키워드 목록 확인 - 사용자 토큰 확인 필요- 페이지네이션 백로그 로딩 및 로딩 실패 메시지 노출     4
9 알림 9.1 즐겨찾기 키워드 알림(제거) - 즐겨찾기한 키워드 중 알림 설정을 한 키워드에 대해서 새로운 이슈 발생 시 푸시 알림 - 키워드 검색량 급상승시 알림 백로그       3
11 주간리포트 11.1 구독 관리(제거) - 특정 주제(인기, 사회, 스포츠 등) 구독 및 취소 - 사용자 토큰 확인 필요- 결제 필요 백로그 실패시 에러 메시지 토스트 노출     14
  11.2 리포트 발송(제거) - PDF 이메일 - Batch 백로그       2