Skip to content
Chorom Ham edited this page Apr 29, 2021 · 3 revisions

team[-2] 기술문서

🔍주요 기능

1. 멘토링 알림

  • 멘토링이 업로드되었을 시 실시간으로 멘토링 정보와 신청 버튼이 포함된 메시지를 발송

2. 멘토링 신청 및 취소

  • 각 멘토링 알림에서 신청 버튼을 눌렀을 시 멘토링이 신청되고 그 결과를 메시지로 발송
  • 신청결과 메시지에서는 신청 취소버튼이 포함되어 신청 취소도 가능
  • 각 홈페이지 계정정보를 웰컴 메시지의 모달로 전달, user_id에 맵핑하여 db에 저장

3. 멘토링 한줄평

  • 각 멘토링의 수강자 정보를 스크래핑하여 수강자들에게 멘토링 한줄평 등록 메시지를 발송
  • 한줄평 등록 메시지의 모달을 통해 db에 업로드
  • 웰컴메시지의 한줄평 보기 버튼과 모달을 통해 멘토명을 제출하면 멘토에 대한 한줄평 메시지 전송

☁️구름 컨테이너 서버 (main-container) api

알림 메시지

  • 웰컴 메시지
  • 멘토링 알림 메시지
  • 멘토링 한줄평 요구 메시지

request 메시지 (모달 요청)

  • 계정 정보
  • 멘토링 한줄평 입력
  • 멘토링 한줄평 검색

callback 메시지 (모달 제출)

  • 키워드 정보 제출 후 db저장 완료 메시지
  • 계정 정보 제출 후 db 저장 완료 메시지
  • 멘토링 한줄평 입력 제출 후 db 저장 완료 메시지
  • 멘토링 한줄평 검색 제출 후 멘토링 한줄평 정보 메시지

💻aws lambda 함수

게시물 업로드 알림

  • 이벤트 트리거 rate(10min)
  • 10분에 한번씩 게시물 데이터를 읽고 새로운 데이터가 있다면 구름 알림 api 호출
  • response
  • 리턴 데이터 형식 (notification.js mentoring 함수 참고)
  • req.body:
[{data}...]
data=
{
    "dataType": "mentoring",
    "id": 590,
    "subject": "[자유멘토링]5/7(금)_18:00부터-오선식팀 멘토링",
    "location": "온라인",
    "link": "https://swmaestro.org/sw/mypage/mentoLec/view.do?qustnrSn=590&menuNo=200046",
    "status": "[접수중]",
    "period": "2021-04-25 ~ 2021-05-06",
    "date": "2021-05-07",
    "applicants": "1",
    "mento": "최원서",
    "description": "[자유멘토링]5/7(금)_18:00부터-오선식팀 멘토링"
  }

멘토링 신청/취소

  • api gateway

    • method : post

    • url: https://e79d0h6thd.execute-api.us-east-2.amazonaws.com/default/swm-applicant

    • header

      • Content-Type: application/json
      • x-api-key: api key
    • body

      • link : 신청할 멘토링 게시글 링크
      • userId : 카카오워크 아이디
      • type : 신청 및 취소 유형
      • req 예시
      {
      
      "link":"https://swmaestro.org/sw/mypage/mentoLec/view.do?qustnrSn=585&menuNo=200046",
      
      "userId":"1234444",
      
      "type" :"applicant"
      
      }
      {
      
      "link":"https://swmaestro.org/sw/mypage/mentoLec/view.do?qustnrSn=585&menuNo=200046",
      
      "userId":"1234444",
      
      "type" :"cancle"
      
      }
      • res 예시
      {
          "statusCode": 200,
          "body": "{'message':'신청하였습니다.','number':'2'}" //넘버는 신청 순위
      }
      {
          "statusCode": 400,
          "body": "wrong type" //type 틀렸을때
      }
      {
          "statusCode": 400,
          "body": "계정정보가 존재하지 않습니다" //db에 계정정보 없을 때
      }
      {
          "statusCode": 500,
          "body": "{'message':'신청을 실패했습니다','number':-1'}" //홈페이지에 버튼없어서 실패
      }
  • 구름 서버에서 신청 버튼 누를 시 유저 아이디와 게시물 링크를 포함한 post 요청을 해당 api로 보냄

  • 구름 서버에서 취소 버튼 누를 시 유저 아이디와 게시물 링크를 포함한 post 요청을 해당 api로 보냄

멘토링 수강자 알림 (멘토링 한줄평 수신 대상자)

  • 이벤트 트리거 cron()하루에 한번씩
  • 그 전날 시행된 멘토링과 해당 수강자들의 정보를 담아 구름 알림 api 호출
  • 구름api post 호출 시 body 데이터
"body": {
    "yesterdayMentoring": [
      {
        "data": {
          "subject": "[멘토특강] 5월 14일(금) 17시 (온라인) 시험에 잘 나오는 프로젝트관리 (PM)",
          "date": "2021-05-14",
          "dataType": "mentoring",
          "location": "온라인-Webex",
          "mento": "박정규",
          "status": "[접수중]",
          "applicants": "4",
          "period": "2021-04-24 ~ 2021-05-04",
          "link": "https://swmaestro.org/sw/mypage/mentoLec/view.do?qustnrSn=581&menuNo=200046",
          "description": "제목 : 시험에 잘 나오는 프로젝트관리 (PM)\n\n프로젝트관리란 무엇이고? 대규모, 장기 프로젝트에선 왜? 프로젝트관리가 중요한것인지?\n실무 PM 경험 바탕으로 10대 영역에 대해서 설명해 드리겠습니다.\n또한, 탑싯과 정보처리기사 등에도 항상 빈번히 출제되는 도메인이기도 합니다. \n\n날짜 : 2021년 5월 14일(금)\n시간 : 17:00 ~ 21:00\n장소 : 온라인 - 웹엑스\n제약조건 : 특강이며 실습 과정이 포함되어 최대 7명(선착순) 마감하겠습니다.\n\n특강 내용:\n1. 프로젝트 관리란?\n2. 프로젝트 관리 10대 영역 (통합,범위,일정,비용,리스크,품질,의사소통,조달,인적자원관리 등)\n3. 소마 프로젝트에서도 가장 중요한 \"일정관리\"\n4. 탑싯에도 잘 나오는 프로젝트 관리 영역\n5. 계산 문제 풀이\n6. 실무에 적용하는 노하우\n7. PMI 에서 말하는 PMP 자격증\n\n제약조건: 실습도 포함되어 선착순 7명으로 마감하겠습니다.\n\n신청 댓글에 text 입력이 불가합니다.\n박정규 멘토 : 010 8001 3933  (신청 시, 핸드폰으로 문자 부탁드립니다.)\nex) 자유멘토링 신청 5/14 - 신청자:홍길동 멘티\n\n혹시라도 다른날짜? 다른시간 추가 강의? 문의도 환영합니다.",
          "id": 581
        },
        "names": [
          "이종아",
          "김혜수",
          "이현민",
          "정용훈",
          "양성훈"
        ]
      }
			...
    ]
  }

소마 홈페이지 계정등록

  • api gateway

    //아이디 검증 성공 및 디비 저장
    {
        "statusCode": 200,
        "body": "아이디 정보가 유효합니다"
    }
    //아이디 검증 실패
    {
        "statusCode": 400,
        "body": "계정정보가 유효하지 않습니다"
    }