1차 스프린트 구현
sequenceDiagram participant User participant View participant 도서시스템(Naver) participant Server participant DB User->>View: 현재 등록 되어있는 책 목록 요청 or 책 검색 View->>도서시스템(Naver): 등록되어있는 책 요청 도서시스템(Naver)->>View: 책 목록 리턴 User->>View: 책 선택 하여 등록 View->>Server: {"title","author",.."isbn":..} 으로 책 등록 요청 Server->>DB: repository.save(book) Server->>View: 저장된 책 id 리턴
최종 결정사항 (2차 스프린트 진행중)
sequenceDiagram participant User participant View participant 도서시스템 participant Server participant DB User->>View: 현재 등록 되어있는 책 목록 요청 or 책 검색 View->>도서시스템: 등록되어있는 책 요청 도서시스템->>View: 책 목록 리턴 User->>View: 책 선택 하여 조회 요청 View->>Server: isbn 으로 책 검색 (GET) Server->>DB: repository.findByIsbn(book) Server->>View: 저장된 책 id 리턴 View->>User: 없습니다(비회원) / 책 등록할래요?(회원)
본격 코드 작성 전 회의할 때 작성하던 내용
- 책 이미지는 서버에 저장하지 않고 , 실제 도서시스템에 저장되어있는 이미지 url 을 받아와 저장한다
- 책 등록 성공,실패 여부는, 즉시 알려준다
- 사용자가 등록신청한 책 목록은 따로 확인할 수 없다
sequenceDiagram participant User participant View participant 도서시스템 participant Server participant DB User->>View: 현재 등록 되어있는 책 목록 요청 or 책 검색 View->>Server: 등록되어있는 책 요청 Server->> DB: 책 데이터 요청 DB->> View: 책 목록 데이터 전송, IF 데이터 없을시 User->> View: 책 등록 요청 loop 도서정보 크롤링 View->>도서시스템: html 요청 도서시스템->>View: html 페이지 리턴 loop 파싱 View->>View: 파싱 -> 도서 정보 데이터 추출 end end View->>Server: 도서 등록 데이터 전송 Server->>DB: 도서 데이터 저장
어린왕자
어린왕자님
- 등록 데이터 전송
- isbn 기준으로
redirect → 프론트의 추가 로직이 된다.
중복 크롤링 생긴다
trim 한 데이터를 넘겨주신다면 좀 더 위와 같은 상황이 줄어들겠지만, “어린왕자"로는 “어린왕자님"은 검색이 안되기 때문에, 결국 추가적인 리다이렉션과 중복 크롤링이 생길 수 밖에 없는 상황
검색어에 대한 정책 결론
- 책 제목으로 검색을 하고 → %Like% ( 포함된 문자열로 검색 가능 함 ) → column 기준 정렬 까진 가능합니다
- 좀 더 일치하는 결과부터 내려면 Like%
- ( 참고- 개선가능성 : %Like
- 검색 결과 목록에서 Pagination OK
Like%
%Like
- 어린왕자, 어린왕자 하얀 이런 정렬은 힘듭니다! ㅠㅠ ( 검색 엔진이 추가로 필요하다 )
검색어 조건
- 책 목록
- 필터링 조건 ( 우선순위를 결정해 보자 ) → UX 관점에서도 순위를 두 가지로 나눠봐야 할 것 같다
- 🐳
- 1. 저자, 제목
- ISBN 2.카테고리 + 검색어
- 저자 : Like
- 제목 : Like
- ISBN ( Unique)
- 어린왕자 → 어린왕자 하얀, . ..
- 카테고리별 검색.. Like ‘title’ Where category = ?
- Pagination ( 카운트 값이 필요할 것 같다고 하심 )
- next 알 수 있음