Code Monkey home page Code Monkey logo

write-me's People

Contributors

dependabot[bot] avatar economy30 avatar hajeong815 avatar juajang avatar leeminjoo avatar

Stargazers

 avatar

Watchers

 avatar

write-me's Issues

DB 설계

키워드 - keywordName, keywordID, date, categoryID
힌트 - keywordID, hintID, hintName
포스트 - postID, postTitle, postDetail, userID, keywordID, categoryID, date, time, likeID,
좋아요 - postID, userID
유저 - userID, userPW, userName

사용자 시나리오

< 글 쓰기 >

  • 메인페이지 접속
  • 카테고리 선택
  • 키워드 제시 (3~4개)
    • keyword DB에서 가장 마지막단
  • 키워드 선택(1개) - 글쓰기 버튼 역할
    • 로그인 여부 확인 / 회원가입
  • 힌트 키워드 제시 (제목 하단)
    • hint DB에서 keyword ID를 받아서 실행
  • 제목/내용 작성
  • 저장
    • postDB 저장
  • 글읽기 페이지로 이동

< 글 목록 - 카테고리 중심 >

  • keyword DB에서 categoryID로 쿼리
  • 키워드 제시
  • 선택된 키워드(디폴트는 가장 최근) post 불러오기
    • post DB에서 keyword ID로
  • 글 목록 제시
    • 정렬 디폴트 좋아요순 / 최신순으로 변경 가능
  • 글쓰기 버튼
    • 현재 페이지에서 선택된 키워드로 글쓰기 페이지

< 글 목록 - 사용자 중심 >

  • 한 사용자의 포스트 불러오기
    • postDB에서 userID
  • 글 목록 제시
    • 정렬 디폴트 최신순 / 좋아요순으로 변경 가능

< 글 읽기 - 하나의 포스트 >

  • 내용이 채워져 있는 글쓰기 페이지
  • 저장버튼 없음
  • 글 수정 &삭제
    • 글읽기 페이지에서 작성자 아이디와 독자 아이디가 같으면 수정 및 삭제 가능
  • 좋아요 버튼
    • 본인 글에도 가능
  • 하단부 다른사람 글 목록 불러오기
    • 최신순으로 정렬

< 글을 쓰는 와중에 키워드가 바꼈다면? >

  • 이미 선택된 키워드이므로 글쓰기 가능

< 키워드 추출 >

  • 하루에 두번
    • 오전 7시/ 오후 7시
  • model script 실행 - DB 저장
  • 키워드별 hint DB 생성
    • 예전에 있던 키워드일 경우 hintDB 업데이트

관련 기술 스터디

  • 데이터 분석 - modeling
  • spring - backend
  • react - frontend
    각자 맡고 있는 부분에 대해서 간단하게 이해할 수 있는 스터디 자료(유튜브링크 등) 공유 부탁드립니다!

hintID, CORS 이슈, 중복된 키워드 문제

[GET] /api/posts/hint?keywordID={keywordID}
CORS 문제 해결해야 함

hintID - auto increment로

[GET] /api/posts/distinctKeyword?categoryID={categoryID}
여전히 중복된 키워드를 가져옴

30개 기사에서 키워드 추출 알고리즘 구현

각 카테고리별 주요키워드 3,4개 보여줄 예정

  • 네이버의 상위 기사 30개 중에서 주요 키워드 추출
    • TF-IDF 사용 예정
    • 명사만
  • 성능이 안좋을 경우 빅카인즈 미워드 크롤링

REST API 명세

API 명세서(2020.06.19 수정)

USER

  • 회원가입
    [POST]/api/register/local
    {
    "username": "javainuse1",
    "password": "password1"
    }

  • 로그인
    [POST]/api/authenticate
    {
    "username": "javainuse1",
    "password": "password1"
    }

  • 헤더 jwt 토큰으로부터 username 받아오기
    [GET]/api/auth/me
    [POST]/api/authenticate 에서 생성된 토큰을 헤더에 넣어 보내면 username 리턴(postman 에서는 authorization 탭에 토큰 넣으면 헤더에 자동으로 입력됨)

KEYWORD

  • 카테고리별 키워드 불러오기(중복 제거 없음)
    [GET]/api/posts/keyword?categoryID={categoryID}
    ex. http://localhost:8080/api/posts/keyword?categoryID=3 으로 api GET 했을 경우 결과
    {
    "keywordID": 17,
    "categoryID": 3,
    "keywordName": "할머니",
    "date": "2020-05-19T00:00:00.000+0000",
    "time": "pm"
    } ...

  • 카테고리별 키워드 불러오기(중복 제거된 키워드 리스트)
    [GET]/api/posts/distinctKeyword?categoryID={categoryID}

  • keywordName별 키워드 불러오기
    [GET]/api/posts/keyowrdName?keywordName={keywordName}

POST

  • 글 작성
    postID는 auto_increment
    [POST]/api/post
    {
    "postID": 4,
    "postTitle": "테스트",
    "postDetail": "테스트입니다",
    "username": "test1",
    "keywordID": 3,
    "categoryID": 5,
    "date": "2020-05-20T15:00:00.000+0000"
    }

  • postID별 작성내용 조회
    [GET]/api/post/{postID}
    ex. http://localhost:8080/api/post/3
    {
    "postID": 3,
    "postTitle": "edit",
    "postDetail": "editing",
    "username": "test1",
    "keywordID": 3,
    "categoryID": 5,
    "date": "2020-05-20T00:00:00.000+0000"
    }

  • username별 작성내용 조회
    [GET]/api/post/user?username={username}

  • keywordID별 작성내용 조회
    [GET]/api/post?keywordID={keywordID}

  • keywordName별 작성내용 조회
    [GET]/api/post/keywordName?keywordName={keywordName}&categoryID={categoryID}
    ex. 카테고리id 3 중 '코로나' 키워드로 작성된 글 GET
    http://localhost:8080/api/post/keywordName?keywordName=코로나&categoryID=3
    {
    "postID": 2410211,
    "postTitle": "[속보]강남대성학원 코로나19 확진자 발생…영통구 거주 조리보조원",
    "postDetail": " [경향신문] 강남대성학원(송파) 급식실에서 근무하는 조리보조원(20대 남성)이 9일 코로나19 확진판정을 받았다.이 남성은 발열 등의 증상이 나타나지 않아 학원에 비치한 열화상기를 통과할 수 있었고, 지난 5일간 급식실에서 근무한 것으로 현재까지 파악되고 있다.수원시 영통구 영통3동에 거주하고 있는 이 남성은 지난달 30일 양천구 목동 탁구클럽에 방문한 이후 지난 3일 근육통과 어지러움을 느꼈지만 별도의 코로나19 검체검사를 받지 않고 8일까지 급식실에서 근무한 것으로 알려졌다. 그러나 이상함을 느낀 남성은 학원의 지시로 8일 오후 2시 귀가한 후 3시 구급차를 이용해 영통구 보건소 선별진료소를 방문해 검사를 받아 다음날인 9일 오전 10시 44분 양성판정을 받았다. 남성은 현재 경기도의료원 수원병원에 격리입원될 예정이다. 5층 규모에 1000여 명의 학생이 재원하고 있는 강남대성학원(송파)는 현재 급식실을 폐쇄하고 수업을 중단한 상태다.류인하 기자 [email protected]▶ 장도리 | 그림마당 보기▶ 경향신문 바로가기▶ 경향신문 구독신청하기©경향신문(www.khan.co.kr), 무단전재 및 재배포 금지 ",
    "username": "test1",
    "keywordID": 11,
    "categoryID": 3,
    "date": "2020-06-09T00:00:00.000+0000",
    "keywordName": null
    }
    POST 테이블의 내용만 가져오므로 keywordName은 null

  • 작성 내용 수정
    [PUT]/api/post/edit/{postID}

  • 글 삭제
    [DELETE]api/post/delete/{postID}

HINT

  • keywordID별 힌트 키워드 가져오기
    [GET] /api/posts/hint?keywordID={keywordID}

기능 리스트업

회원가입/로그인
모든 서비스는 로그인이 되어있어야 접근 가능
로그인이 안 되어있으면 로그인 페이지로 넘어감

  • 정치 / 경제 / 사회 / 세계 / IT과학 … 5개의 카테고리별 api GET
    • 지난 키워드를 불러오기 (여러개)
      • api/keywords/categoryID
    • 오늘의 키워드를 불러오기
      • api/keywords/categoryID/date
  • 글을 키워드별로 볼 수 있는 api GET
    • 좋아요 순
      • api/posts/keyword/like/keywordID
    • 최신 순
      • api/posts/keyword/recent/keywordID
  • 글을 사용자별로 볼 수 있는 api GET
    • api/posts/user/userID
  • 글 작성 api POST
    • api/post/postID
  • 좋아요 누르기 api POST
    • api/like/postID

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.