티스토리 뷰

728x90

 안녕하세요! 웰리빙 프로젝트 후기 2탄 서비스 기능 소개와 API 개발 정리입니다!! API 소개 중 respond에서는 http code 200 성공한 부분만 보여드리겠습니다. 실패시 409, 400 에러처리는 완료된 상태입니다.

 


서비스 기능

저희 서비스 기능은 총 다섯가지입니다.

 

1. 추억카드 작성 

2. 마음챙김 글쓰기

3. chatGPT로부터 위로 메세지 받기

4. 문자전송을 위한 사용자 케어

5. 커뮤니티 


DB 설계


추억카드

    추억 카드는 사용자의 소중한 기억을 되돌아보며 자신의 추억을 카드에 기록하는 기능입니다. 추억 카드의 목적은 사용자에게 치유의 효과를 제공하기 위함입니다. 자기성찰 글쓰기 라는 논문에서는 총 106명을 설문한 결과 삶의 회고를 통해 스스에 대한 삶의 애착과 자긍심을 높이고, 나의 부정적인 요소 마저도 내 삶을 있게 한 소중한 것으로 인식하게 할 수 있습니다.


<API>

1. 추억카드 작성 API 

    : POST /api/life/memory/create

//request
//Header : jwt token
//Body :
{
  "memory": [
    "추억1",
    "추억2",
    "추억3"
  ]
}

//respond 200
{
	"ok":true
}

추억카드를 사용자가 작성하면 DB에 저장하는 API이다. requestBody에 배열로 추억카드 내용을 담아서 받으면 해당 내용을 .toString()을 이용해서 문자열로 변환 후 저장한다.

=> ["추억1","추억2","추억3"]->'추억1,추억2,추억3' 


2. 내 추억카드 조회 API

    : GET /api/life/memory/show

//request
//Header : jwt token

//respond
{
  "ok": "true",
  "count": "3,",
  "memory": [
    "추억1",
    "추억2",
    "추억3"
  ]
}

 사용자가 자신이 작성한 추억카드를 볼 수 있는 API이다. 사용자 user_id가 담긴 jwt token을 헤더에 넣어서 보내면 백엔드에서 채굴해서 사용한다. 이때 추억카드 테이블은 외래키로 사용자 아이디(user_id)와 글 아이디(letter_id)를 갖고있다. 사용자 자신의 추억카드를 확인할 때는 사용자 아이디(user_id)를 통해서 확인한다.


마음 챙김 글쓰기

    마음 챙김 글쓰기는 사용자가 지난 삶을 되돌아보며 스스로에게 편지를 작성하는 방식으로 이루어집니다. 이때 사용자는 관찰자적인 시각을 취하기 위해 내가 나에게 작성하는 것이 아닌 나를 사랑하는 누군가가 되어 제 3자의 입장에서 편지를 작성합니다. 사용자가 “나를 사랑하는 누군가가 된다" 라는 컨셉에 몰입할 수 있도록 작성 도움말을 넣었습니다.


    <API>

1. 마음챙김 글쓰기 API

    : POST /api/life/letter/create

//request
//Header : jwt token
//Body
{
  "title": "string",
  "content": "string",
  "isShare": "Unknown Type: int"
}

//respond
{
	"ok":true
}

  사용자가 마음챙김 글을 작성하면 DB에 저장하는 API이다. 사용자로부터 공개/비공개 여부도 받아서 처리한다. DB에는 사용자로부터 받은 데이터(제목, 내용, 공개여부)와 YYYY-MM-DD HH:MM:SS 형태로된 생성일시, 사용자가 작성한 추억카드 아이디(memory_id)를 넣는다. 생성일시는 자바스크립트의 Date()를 사용하고 추억카드 아이디(memory_id)는 사용자 아이디(user_id)를 이용해서 추억카드 테이블(Memory table)에서 찾아서 사용한다.


2. 내 글 조회 API

    : GET /api/life/letter/show

//request
//Header : jwt token

//respond
{
  "ok": true,
  "data": {
    "title": "string",
    "content": "string",
    "createdAt": "string",
    "isShare": "Unknown Type: int"
  }
}

사용자가 자신의 글을 조회하는 API입니다. 헤더에 있는 jwt token 토큰을 채굴해서 user_id로 글을 조회합니다.


3. 글 내용 수정 API

    : GET /api/life/letter/modify-content

//request
//Header : jwt token
//Body
{
  "title": "string",
  "content": "string"
}

//response 200
{
  "ok": true
}

 사용자가 본인의 글을 수정하는 API입니다. 헤더에 있는 jwt token 토큰을 채굴해서 user_id로 사용자의 글을 찾습니다. req.Body에 있는 title과 content를 이용해서 글을 수정합니다. 


chatGPT로부터 위로 메세지 받기

 

 chatGPT API를 이용해 마음챙김 글을 분석하고 해당 글을 바탕으로 사용자에게 위로를 건네는 서비스입니다. 저희는 chatGPT에게 잘 살아왔고, 더 행복해 질 수 있는 자격이 있다라는 말을 하는 역할을 부여했습니다. 따라서, 생성형 AI를 통해 사용자는 글을 쓰는 행위에 그치지 않고 자신이 쓴 글을 바탕으로 피드백까지 받을 수 있는 기능을 구현하였습니다.

대회 끝나고 코드 리팩토링하려고 봤더니 살짝 엉망이길래..ㅎㅎ 코드가 엉망이어서 힘들지만 넌 할 수 있다라는 내용의 글을 썼더니 이렇게 답이 왔습니다. 모자이크는 제 이름입니다.


<API>

1. ChatGPT 글쓰기 응답 API

    : POST /api/life/letter/generate-response

//request 
{
  "userLetter": "string"
}

//response 200
{
  "response": "XX아, 너는 삶에서 당당하게 살아왔어. 매일같이 취업준비를 하면서도, 끝까지 포기하지 않고 최선을 다해왔어. 내가 너에게 전할 수 있는 말은, 너는 메말라있는 나무에서도 꽃을 피울 수 있는 힘이 있어. 너는 이미 충분히 용감하고 희망적인 사람이야. 이제는 나와 함께, 삶을 새롭게 시작해보자. 너는 세상에서 소중한 존재야. 함께 행복한 시간을 보내며, 너의 인생을 더욱 살아보자."
}

 chatGPT 3.5 API를 활용한다. chatGPT API에게 다음과 같은 역할을 부여한다.

Read what you see and say something that can give courage and strength in a kind way. In Korean, more than 100 letters

chatGPT에게 시스템의 역할과 사용자의 마음챙김글을 함께 보낸 후 응답을 받는다.


문자전송을 위한 사용자 케어

 

 사용자는 핸드폰 번호를 입력합니다. 매일 정해진 시간에 좋은 글귀, 에세이, 명상 수행 음악이나 가이드를 제공합니다. 사용자가 추후 관리를 받을 수 있도록 했습니다. 사용자의 번호를 인증하는 기능까지 완료했습니다. 매일 정해진 시간에 문자를 보내는 기능은 해커톤이라는 시간제약때문에 개발하지 못했습니다.


<API>

1. 인증번호 보내는 API

    : POST /api/users/send-message

//request
{
	"phoneNumber":string
}

response JSON

 문자 API는 알리고 API를 사용했다. 그리고 send-message에서 인증번호는 cache를 이용해서 서버에 저장한 후 인증번호를 확인할 때 사용된다.


2. 인증번호 확인 API

    : POST /api/users/verify-message

//request
{
	"phoneNumber":string,
    	"verifyCode":string
}

//response 200
//핸드폰 번호, 인증코드 둘 다 없을 경우
{
	msg: "핸드폰 번호를 입력해주세요."
}

//인증번호가 틀릴 경우
{
	msg : "입력하신 인증번호와 일치하지 않습니다."
}

//성공 200
{
	ok: true,
    	msg: "인증이 완료되었습니다."
}

  cache를 통해서 저장된 인증번호를 불러온다. phoneNumber가 없을 경우, 인증번호가 틀릴 경우를 에러처리했다. 


커뮤니티

사용자는 마음챙김 글쓰기를 완료한 후 공유할 수 있습니다. 공유할 경우 어디에도 말하지 못했던 자신의 속이야기를 불특정 다수에게 쏟아낼 수 있습니다. 또한 서로가 인생에 대해 어떤 시각을 가지고 살고 있는지 알고 위안을 얻을 수 있습니다. 사용자의 글이 비난과 조롱의 대상이 되지 않도록 좋아요 기능과 댓글 기능은 없앴습니다. 갈등을 일으킬 수 있는 요소를 제외하여 본래 취지였던 자아 성찰에 집중할 수 있도록 돕습니다.


<API>

1. 모든 글 리스트 조회 API

    : GET /life/letter/list/{birth}

//request
//parameters -> letter_id 

//respond
{
  "ok": true,
  "data": {
    "count": "Unknown Type: int",
    "letter": {
      "letter_id": "Unknown Type: int",
      "title": "string",
      "createdAt": "string"
    }
  }
}

 다른 사람들의 글이 모여있는 리스트를 조회하는 API이다. 이때, 태어난 년대(ex. 2000,1990,1980)별로 조회가 가능하다. 


2. 다른 사람 추억카드 조회 API

    : GET /api/life/memory/othershow/{letter_id}

//request
//parameters -> letter_id 

//respond
{
  "ok": "true",
  "count": "3,",
  "memory": [
    "추억1",
    "추억2",
    "추억3"
  ]
}

 사용자가 다른 사람의 추억카드를 볼 수 있는 API이다. 이는 커뮤니티 기능 중 일부인데 다른 사람의 글과 추억카드를 볼 수 있는 기능의 일부이다. 이때 사용자는 다른 사람의 글 아이디(letter_id)를 통해서 접근할 수 있다. 추억카드 테이블에는 외래키로 글 아이디(letter_id)를 갖고있기 때문에 가능하다. 


3. 다른 사람 글 조회 API

    : GET /life/letter/othershow/{letter_id}

//request
//parameters -> letter_id

//response
{
  "ok": true,
  "data": {
    "title": "string",
    "content": "string",
    "createdAt": "string"
  }
}

 글 리스트에서 보고싶은 글을 클릭할 경우 다른 사람 글을 볼 수 있다. 이때 다른 사람 글 조회 API가 사용된다. 글 리스트 조회 API에서 프론트로 letter_id를 보냈기 때문에 프론트는 letter_id로 상세 정보를 요청할 수 있다. 


4. 글 공개/비공개 기능 수정 API

    : POST /life/letter/modify-isShare

//request
//Header -> jwt token
//Body
{
  "isShare": "Unknown Type: int"
}

//response
{
  "ok": true
}

 사용자가 자신의 글 공개 여부를 수정하는 API이다. 헤더에 있는 jwt token을 이용해서 사용자 id를 알아낸다. req.body에 있는 isShare 값이 1일 경우 공개, 0일 경우 비공개이다. 사용자 id를 이용해서 사용자가 작성한 글을 알아내고 해당 글의 isShare 값을 변경한다.


AUTH

 회원가입, 로그인, 카카오 로그인, 개인정보 수정 등 사용자 인증 Auth에 해당하는 기능입니다. 상대적으로 가벼운 jwt token으로 구현했습니다. 웰리빙의 주요 기능이 아니라서 Auth 개발은 다른 포스팅에서 다루겠습니다!!


이번 포스팅에서는 웰리빙의 핵심 기능 소개와 각 기능별 구현한 API를 정리했습니다. 감사합니다!

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함