기업분석 리포트 개편
Work Period
2023.06.26 ~ 2023.07.17
NEEDS
- 비로그인/입사제안 거절인 경우 기업분석리포트의 열람제한되는 영역 로직을 변경 적용
PROBLEM
- css로 블라인드 처리도 하지만 html상의 문구도 볼 수 없어야 하지만 네트워크 응답값으로 확인이 가능함
HOW TO FIX
- 서버단에서 블라인드 처리가 필요한 항목들에 대해 값이 바뀌어진 채로 응답을 하도록 변경함
About Me
NEEDS
- 본인의 새싹을 만들어서 친구들에게 공유하는 기능 구현
- 텍스트가 비처럼 떨어지고, 텍스트의 갯수에 따라 새싹이 자라나는 기능 구현
PROBLEM
- 카카오 브라우저에서는 클립보드 복사 기능(navigator.clipboard.writeText)이 동작하지 않음
- SPA 구조와 해시라우팅 구조여서 복사된 링크 접근 시 의도된 페이지가 랜딩되지 않음
HOW TO FIX
- copy-to-clipboard 라이브러리를 활용해 어느 브라우저에서든 copy 기능이 동작할 수 있도록 처리함
- DOMContentLoaded 이벤트 발생 시, hash경로를 파악해 원하는 페이지가 랜더링될 수 있도록 처리함
채용 상세 개편
Work Period
2023.06.20 ~ 06.30
NEEDS
- 채용 상세 페이지로 이동하는 모든 부분을 페이지 전환으로 변경
- 채용 상세 페이지에 GNB 및 추천 기업/공고 배너를 추가하여 사이트 내로 유입할 수 있는 경로 노출
PROBLEM
- 페이지 전환으로 변경되어 채용리스트의 필터 값이 초기화되는 상황이 발생함
- 채용 상세 페이지에 추가될 추천 기업/공고 배너의 데이터 판단 로직이 switch문으로 되어 있어 가독성이 떨어짐
HOW TO FIX
- Vuex로 관리되는 필터 값들이 초기화되는 부분을 페이지 이탈 시가 아닌 페이지 진입 시로 변경하였고, from 값으로 상세 페이지에서 온 경우에만 초기화되지 않도록 처리함
- switch문으로 값이 변경되는 부분들을 computed로 선언시켰으며 mounted훅에서 네트워크 호출이 이루어진 부분을 fetch훅에서 호출되도록 함
건강보험공단 경력 연동 서비스
Work Period
2023.05.17 ~ 06.19
NEEDS
- 건강보험공단 연동을 통해 간편하게 인증된 경력 정보를 가져올 수 있는 기능 구현
PROBLEM
- 건강보험료 api는 1년치에 대해서만 호출이 가능함
- ios환경에서는 pending된 api가 있을 경우 서비스가 백그라운드 상태에 진입 후 다시 포그라운드 상태로 될 경우 이전 호출을 취소하고 재호출을 하는 현상이 있음
HOW TO FIX
- 자격득실 리스트를 가져온 후, 필요한 년도를 계산하여 호출 수를 줄이려 했지만 간편 인증을 두 번하게 되는 상황이 되어서 묶어서 최근 10년치 api를 호출하도록 함
- 10개의 외부 api를 호출시키는 api에 대해서는 바로 응답이 올 수 있도록 한 뒤, 서버단에서 응답이 왔을 때 db에 값이 들어가도록 함. 해당 db를 탐색하는 api를 매1초동안 호출하여 처리함
면접AI 튜터 서비스
Work Period
2023.04.18 ~ 05.16
NEEDS
- openai의 gpt api를 활용해 예상 면접 질문을 만들어주고, 꼬리질문도 만들어주는 기능 구현
PROBLEM
- gpt api에 의존적인 기능인데 api의 응답속도 이슈가 있음
- 프롬프트가 제대로 만들어졌는지 테스트 과정에서 지속적으로 확인이 되어야 함
HOW TO FIX
- 프롬프트를 영문으로 변경하고 글자 수를 줄이며 프롬프트 최적화를 진행하였고, 타임아웃이 나지 않도록 nginx에서 해당 api에 대한 설정을 변경하여 처리함
- 함수형 프로그래밍 패러다임 중 '하나의 함수는 한가지 역할만 해야한다', '함수를 통해 변수가 변질되면 안된다'를 지키며 구현을 하여 테스트 과정에서도 해당 함수만을 호출하여 확인될 수 있도록 함
What is my team?
NEEDS
- 사용자 얼굴을 인식하여 프리미어리그의 어느 팀에 어울리는 관상인지 추천해주는 기능 구현
PROBLEM
- 얼굴을 인식해서 결과를 내줄 수 있는 추천 모델이 있어야 함
- 모델을 학습시킬 프리미어리그 선수 사진이 있어야 함
HOW TO FIX
- teachablemachine 서비스를 이용해 모델을 생성하고, 생성된 모델을 사용하도록 함
- epl공식 사이트의 팀별 선수들 사진을 크롤링하여 가져오도록 함
진학사 조식봇
NEEDS
- 진학사의 조식 메뉴를 간편하게 알 수 있는 챗봇
PROBLEM
- 이미지로 제공되는 메뉴를 텍스트 형태로 DB화되어야 함
HOW TO FIX
- google vision api를 통해 이미지에서 텍스트를 추출해내서 firebase db에 저장되도록 함
- google vision의 인식률이 100%가 아니기에 뽑아낸 텍스트를 input창에 뿌려준 뒤 확인 및 수정 후 저장할 수 있도록 처리함
채용 유지보수
Work Period
2023.02.13 ~ 02.17
NEEDS
- 개인 맞춤화된 공고 카테고리를 추천하는 기능 추가
PROBLEM
- 개인화된 데이터이다보니 결과값이 무조건 있다는 보장이 되지 않음
HOW TO FIX
- 사용자 이력서 DB를 우선적으로 활용하고 데이터가 없는 경우엔 그 후순위들로 값을 가져올 수 있도록 처리
즉시지원 레이어 유지보수
Work Period
2023.01.30 ~ 02.03
NEEDS
- 즉시지원 프로세스의 사용자 경험 개선
PROBLEM
- 즉시지원 레이어에서 이력서 및 자소서를 수정하기 위해 이동한 뒤, 다시 즉시지원 화면으로 돌아오지 못함
- 이력서 및 자소서 수정 후 즉시지원 레이어가 있던 탭의 데이터가 갱신되지 않음
HOW TO FIX
- 작성페이지로 이동 시 쿼리스트링을 추가해 즉시지원 중에 이동하였음을 판단하고 탭이 닫힐 수 있도록 처리함
- 즉시지원 레이어에서 값을 불러오는 함수를 broadcast channel로 등록해놓은 뒤 작성페이지에서 해당 함수를 호출할 수 있게 처리함
공고/지원자 관리 개편
Work Period
2022.12.02 ~ 12.26
NEEDS
- 지원자 관리 메일 발송 레이어에 알림톡 발송 관련 기능 추가
- 채용보고서에 일일 단위 조회수와 지원자수 그래프 기능 추가
PROBLEM
- 레이어 내 다양한 기능이 있는데 하나의 컴포넌트 내에서 코드가 작성되어 있음
- 조회와 지원에 대한 로그 데이터를 일일 단위로 계산해서 가져오는 데 계산 비용이 큼
HOW TO FIX
- 레이어 내 탭 별로 컴포넌트를 분리하고 컴포넌트에서 각각의 로직이 실행될 수 있도록 기능 구현을 하였고, 재사용 가능한 기능들은 mixin으로 분리함
- Airflow로 스케줄링 작업을 만들어 매 자정마다 모든 공고에 대해 하루 단위의 조회수와 지원자 수 데이터를 만들어두도록 함
기업 개편
Work Period
2022.09.01 ~ 09.15
NEEDS
- 추천기업 개념 도입에 따른 신규 기능 추가 및 어드민 기능 추가
PROBLEM
- 비슷한 구성의 컴포넌트를 재사용하는 데 예외적인 부분들이 많아짐
- 똑같은 기능을 하는 부분이 동일한 코드로 복사되어 사용되고 있음
HOW TO FIX
- html구조의 예외가 아닌 부분들은 props로 값을 받아 처리하였고, html 구조가 조금 다른 부분들은 새로운 컴포넌트로 구현하고 기능은 mixin으로 분리하여 컴포넌트에서 재사용할 수 있도록 처리함
- composition api로 기능을 구현하고, 컴포넌트로 분리하여 재사용할 수 있도록 함
관심기업 서비스
Work Period
2021.12.23 ~ 2022.01.14
NEEDS
- 관심기업DB 기반 사용자 맞춤 공고를 추천해주는 알림 발송
PROBLEM
- 운영환경의 DB에서는 양이 많아 속도 이슈가 생김. DB 부하의 위험성이 있음
- 발송된 앱 푸쉬의 클릭 여부를 알 수가 없음
HOW TO FIX
- With절로 만들어진 테이블들을 모두 임시테이블로 변경하여 평균 10분정도 소요되던 부분을 5분 내외로 개선함
- 앱 푸쉬 url데이터에 쿼리스트링을 붙이고, middleware를 통해 해당 쿼리스트링이 있으면 클릭 로그가 쌓이도록 처리함
이력서 자격증 네이버연동
Work Period
2021.10.25 ~ 11.05
NEEDS
- 네이버 자격증 API 연동을 통해 자격증 데이터를 가져옴
PROBLEM
- 웹뷰 형태로 구현된 앱에서는 앱을 이탈하여 연동 페이지가 열려 데이터를 불러올 수 없음
HOW TO FIX
- 앱을 이탈하지 않도록 해당 도메인에 대해 예외처리를 추가하였고, 브라우저 환경에서는 callback으로 api를 호출하여 값을 받아올 수 있도록 처리하고 앱 환경에서는 callback 페이지로 돌아와서 값을 받아올 수 있도록 처리함
이력서 소분류, 보유기술 항목 추가
Work Period
2021.07.26 ~ 08.09
NEEDS
- 기존 직무 분류 체계에 소분류 체계 추가로 인한 소분류 선택 기능 추가
PROBLEM
- 기존 직무의 경우 중복 선택 가능하지만 데이터가 한 컬럼에 콤마 스트링으로 관리됨
- 데이터를 불러온 뒤 프론트단에서 이중 for문으로 변환해주는 작업이 곳곳에 있음
HOW TO FIX
- 유지보수에 용이하도록 직무 데이터를 프론트에서 바로 쓸 수 있도록 DB 단에서 리턴되게 수정함
마이페이지 개편
Work Period
2021.04.19 ~ 06.09
NEEDS
- 마이페이지 UI/UX 개선
- 사용자 활동 앱 푸쉬 알림 발송 기능 추가
PROBLEM
- 동일한 구조의 코드가 반복적으로 작성되어 있음
- Firebase Messaging 서버와 웹 서버가 분리되어 있어서 이벤트가 발생했을 때 바로 호출을 할 수가 없음
HOW TO FIX
- 화면상 탭으로 구분되는 페이지였고, 컴포넌트로 분리되어 있는 상황이었는데 반복된 코드를 줄이기 위해 Mixin으로 빼서 코드를 재사용할 수 있도록 처리함
- 웹 서버에 푸쉬 발송이 될 데이터를 가져오는 API를 만들고, 앱 푸쉬 서버에서 해당 API를 호출하여 데이터를 가져온 후 앱 푸쉬가 발송될 수 있도록 하였고, Airflow로 스케줄러를 등록해 매1분마다 실행될 수 있도록 하여 실시간 발송이 될 수 있도록 함
이력서 유도레이어 서비스
Work Period
2021.01.22 ~ 02.08
NEEDS
- 사용자의 이력서 작성 상태에 따라 이력서 필수값을 입력할 수 있도록 유도하는 레이어 노출
PROBLEM
- 필요한 데이터를 모두 가져와서 프론트단에서 호출 여부 및 단계를 계산하도록 되어 있어서 성능 이슈와 코드의 가독성 이슈가 발생함
- 이력서 유도레이어는 한 곳에서만 쓰이지 않고 사이트 곳곳에서 쓰일 가능성이 높음
HOW TO FIX
- 쿼리단에서 단계와 그에 맞는 데이터를 리턴해줄 수 있도록 수정함
- nuxt의 이벤트버스에 레이어 호출 함수를 등록하고 공통 레이아웃 또는 푸터에 컴포넌트를 등록하여 어디서든 호출할 수 있도록 함
- 레이어 내 callback함수를 인자로 받을 수 있게 하여 유도레이어 종료 시 callback함수가 호출될 수 있도록 함
최종합격꿀팁 개편
Work Period
2020.12.01 ~ 12.08
NEEDS
- 합격 후기 작성 페이지 항목 변경 및 추가
PROBLEM
- 데이터 구조 변경으로 인해 기존 데이터 노출 예외 필요
- forEach문을 통한 데이터 비동기 처리로 데이터가 누락되는 문제 발생
HOW TO FIX
- 데이터가 화면에 뿌려지기 전에 computed에서 값을 검증하여 NULL 또는 undefined가 되지 않도록 처리함
- forEach문이 아닌 for문을 통한 비동기처리로도 해결 가능 했지만, 통신 횟수를 줄이기 위해 쿼리문에서 OpenJson 구문을 활용함
Projects Portfolio