
최신업데이트 날짜 - 24.01.04
국내알파리뷰 - 보수작업
작업 전 pull
branch 새로 파기
backend - master (origin)
frontend - develop (origin)
local로 작업
내가 어떤 다른 명령어를 했기 때문,,
즉 , 다시 activate환경 설정 -> pip list적합하게
-> 이는 내가 받은 db가 옛날 꺼라 컬럼이 일치하지 않기 때문이다.
이러한 에러를 알기 위해
를 해주면 터미널에서 어떠한 오류인지 이유를 알 수 있다.
#.11/1 task#1
1. 리뷰 정렬 확인
1. 최신순 , 오래된 순, 평점 높은 순, 평점 낮은 순등에 대한 리뷰데이터 정렬 처리하기
2. 로딩 속도 개선하기
dashboard 창에서 , 리뷰의 정렬상태를 다르게 하고 싶을때, 조건을 변경하여도 적용이 안되어 최신순 리뷰데이터 순으로만 정렬되는 현상 발생
문제점
해결을 위해,
변경 후 ,
위 사항을 개선해야할 필요성이 있다.
현재 상태
선배님 피드백
해결방안
(+) 추가로 , 한번에 모든 리뷰데이터를 다 로딩하려는 문제점 발견
-> 이를 해결하고자 , 4번쨰 페이지까지의 데이터만 먼저 로딩하는 것으로 변경
__gte ,
__lte
orm을 적용 -> 위 두개는 filter()내의 조건문에서 '이상' ,'이하'를 적용시킬 수 있는 것이다.
이렇게 하여 , 기간별 필터링 조건이 적용되게 제대로된 필터 기능 구현
결과 ,
"휴즈네스트" 라는 쇼핑몰을 타겟으로 필터기능 수행하였을때 // 화면 로딩 시간 분석
리뷰데이터
100~150 개 : 10초 이내
1000~2000개 : 1분~1분30초 이내
8000개 이상 : 4분 이내결론적으로, 데이터가 많은 볼륨이 큰 업체같은 경우에서는 로딩시간이 길어지는 문제가 계속 야기,
하지만,
기능적인 부분에서는 정상적으로 작동하기에 이번 테스크는 이렇게 마무리.
추후, serilaizer 부분에서 로딩속도를 개선할 수 있는 방안을 탐색해볼 예정
#.11/6 task#2
1. 필터 조건 추가
1. 현재 지급예정, 지급대기에 맞는 필터기능이 , cafe24와 같이 나오면 안될 데이터까지 나오고 있다
2. task1의 날짜,평점에 맞는 정렬기준에 현재 조건까지 추가하여 병합하기
dashboard 창에서 ,고급필터영역에서 지급대기 및 지급예정 체크박스를 선택하였을때 , 알맞게 필터링이 되지 않는 현상
문제점
해결을 위해,
orm - filter(reward_status_new = reward_status_list[i]) 사용
위를 통해,
지급대기&지급예정을 선택하였을때는 정확하게 "알파리뷰"에서 작성된 리뷰만 필터링이 된다.
"오래된순" 으로 정렬상태가 변경되었을떄, review_copy라는 미리 복사해놓은 필터가되어 들어가있는 변수에서 새로운 조건을 추가하는 것을 볼 수 있다.
이로 인해, 고급필터 후의 정보가 저장된 변수를 정렬상태가 변동되었을때도 사용할 수 있는 것이다.
#.11/15 task#3
1. 새로운 필터 만들기
1. FE : 대시보드에 새로운 필터 항목 추가
2. BE : 기존 filter api 수정 - 새로운 필터 적용 version
FE
BE
#.11/17 task#4
1. 새로고침 없이, 바뀐 데이터 적용되게
알아야할것,
클릭하였을때 불러지는 api에서 ,
to_be_pay_date 값이 today날짜로 변경이 된다. // 원래는 null값이다.
datasource_setting() 함수에서 html에서 다뤄지는 변수값 조정이 이루어지므로,
여기서, 값을 조정해야될 필요성이 생김
즉 , 클릭을 통해 // to_be_pay_date값이 생겼다면, "checkreward_on" 은 true로, "reward_status_new" =10으로 변경을 해준다.
checkreward_on 는 , html에서 ngif 를 사용하기 위해 새로 생성한 변수이다.
함수를통한 관리가 아닌, 변수를 통해 관리하기 위해
어려웠던 요인 //
잘 짜인 코드라고 생각했으나 , 작동에 문제가 있었던 이유는
reward_satus_new = 10 인 상태에서 review.total 또는 "지급예정" 두개의 상태가 관리된다고 생각했으나, 그것이 아니라 초기 {review.total} 상태일떄는 reward_status_new가 11 로 관리가 되어있었다.
그렇기에 , 아무리 checkreward_on을 true로 변경을 하여도 더 상위의 div 값 ngif 가 일치하지 않았기에 작동이 되지 않았다.
상위인 reward_status_new = 10 div일때는 두가지 , 이때는 pay_date는 무조건 있고, checkschedule함수에 의해 나누어지는 부분이다.
하지만, 이부분을 위의 방식처럼 checkreward_on으로 관리 방식을 바꾸게 된다면,
checkschedule 로 인해 관리되는 부분은 필요없는 코드가 되어버리는것이다.
그렇기에 , checkreward_on은 처음에 검증하는 방식으로만 쓰인다는 생각으로 쓰고, 지금은 위 변수는 없애주었다.
없애도, reward_status_new가 10으로 바뀜으로써 원활하게 관리된다.
#.~12/17 task#5 - channeltalk
1. 채널톡 DB update
알파리뷰 db에 저장되어있는 고객 정보를
채널톡 db로 주기적으로 update 시키는 작업
#.12/20 task#6
1. 어드민 기본값 수정
#.12/26 ~ 12/28 task#7
1. datepicker 기능 추가
현재 알파리뷰 대시보드의 datepicker는 기간별 선택만 가능했다.
즉 , 23.12.14 ~ 24.08.13 이런식으로 기간이 정해져있어야 필터링 기능이 작동하다는 것이다.
하지만, 단일 선택 기능이 추가되면 좋겠다는 요구사항을 받았다.
즉 , 이제부터는 datepicker상에서 ,
단 하루의 날짜를 선택할 경우에도 그 날짜에 맞는 단일날짜 필터링이 수행되어야 된다는 것이다.
23년 12월 28일 선택할시 -> 작동안하는것이 아닌, 23.12.28~23.12.28 로 단 하루날짜로 필터링이 작동이 되게끔.
고민사항
datepicker자체적으로 기간별 필터링만 수행이 되는 material를 사용한것이 아닌지?
위 고민사항을 토대로 , 다시 코드를 파헤쳐보았다.
현 datepicker의 수행 방법은 , 기본적인 달력을 가지고만 오고, 수행 동작 함수는 코드로 작성이 되어있었다. 현 코드는, from 과 to가 설정이 되어야 필터링이 되는 필터링 함수가 작동이 되게 되어있던 것이었다.
그랬기에, 이는 코드 재작성으로 수정이 가능하겠다는 생각을 하게됬다.
수행 방법
option 추가
현재의 option값은 '오늘' ,'전체' , '7일' ,'한달' 등 datepicker를 사용하지 않아도 쉽게 필터링을 할 수 있도록 편리기능처럼 제공이 되어있었다.
이에 나는 '단일' 이란 option을 추가했다.
그래서, 사용자가 option -'단일'을 선택할 경우에는 단일 필터링 함수가 불려지도록 하려는 의도였다.
즉 , 그 외에는 기존의 필터링 함수가 작동하고, 단일 선택시에만 단일 필터링 함수가 작동이 되게!
새로운 전역 변수 생성 'onlydate'란 변수 생성
onlydate = false;
if (option = '단일'){
this.onlydate = true;
}
<form *ngIf='onlydate'>...단일선택 함수 불려지게...</form>
.
.
.
.
<form *ngIf='!onlydate'>...기존 함수 불려지게...</form>
이런식으로 , 상태처리를 해주었다.
onlyDateSelection(date: NgbDateStruct) {
.
.생략
.
//변경파트
this.toDate = date;
this.fromDate = date;
//변경파트
.
.생략
.
}
즉, toDate와 fromDate둘다 date로 설정함으로써 단 하루것만 필터링이 될수 있게 된다.
기존에는, 여러 조건문을 활용하여 ,두가지 선택이 되어야만 필터링이 되게 되는 함수로 구성이 되었다.
그 함수를 건드는것보다는, 새로운 단일 함수를 생성하는것이 더 사용성이 좋다고 생각되어 새로운 함수를 생성했다.
QA
#.12/29 ~ 1/2 task#7-2
1. datepicker 요구사항 변경으로 인한 재작업
단일 선택 모드가 가능하게 작업을 완료하였었다.
기획팀은, 사용자 관점에서 단일모드 선택이 따로 독립적으로 위치하는 것이 좋을 거 같다는 판단을 하였다.
그래서, 재작업을 진행하였다.
기존 작업 IMG

재작업 IMG

하지만, 기획 조정이 한번 더 되었다.
- 기존의 요구사항은,
단일모드를 선택한 후 , 날짜를 선택하는 것이었는데 이것이 반대로 변경되었다.- 최종 요구사항
- 날짜를 선택하던 도중, 하루를 선택하고 나서 단일 모드를 선택하면 반영이 되게끔
바뀌었다.
위 요구사항으로 작업을 재진행하던 도중, 어려움에 겪었다.
처음에는, 위 요구사항으로는 안될거 같다는 판단이었다.
이유는, 날짜를 선택 한 후 모드를 선택 할 경우, 날짜 데이터값이 전달이 안될 거라고 생각했다.
실제로 , 작업 후 진행하였을때도
하지만, 고민이 짧았단 판단하에 다시 한번 고민을 해보았고 해결방법을 찾을 수 있었다.
작업도중, 어려움은
문제의 원인
문제의 원인은 날짜를 필터링 하는 함수 자체가 끝이 났었기 때문이다.
하루를 선택한 거 자체로, 그 필터링 함수는 동작이 끝이 난다.
그렇기에 필터링 함수를 재호출을 하는 것이 필요했다.
그래서 , 단일모드 선택으로 변경되는 함수가 끝나고 난 뒤, 날짜필터링 함수를 호출하게끔 수정하였다.
이때, 전달될수 없었다고 생각한것은 오류였다.
하루의 날짜를 선택했을떄 할당되는 전역 변수인 "fromdate"에 날짜의 값이 저장이 되어있고,
재호출할때 위 값을 인자로 사용하면 되었다.
이렇게 해서 , "날짜 선택 후 모드 선택" 요구사항에 맞게 재작업을 했다.
이번 태스크를 하면서 느낀점이 있다.
- "소통" 은 중요하다.
- 현재 기획-개발 회의에 참석하지 않고 회의를 통해서 나온 결과값을 전달받아 작업을 진행하는 프로세스로 작업을 진행하고 있었다.
- 이는, "맡은 작업" 에 대해서 기획자에게 직접적으로 전달받는 것이 아니기에, 오차가 생길 수 있다.
- 개발자의 입장에서, 요구사항이 계속 변경이 되는것은 조금의 효율성이 떨어진다고 생각한다.
- 물론, 더 나은 기획이 생긴다면 요구사항을 변경하는것은 당연하다고 본다.
- 아쉬웠던 부분은, 태스크 담당자와 기획자와의 회의의 부재였다.
- 회의는 "오차"를 줄이기 위한 일이라고 생각한다.
- "태스크" 라는 공통의 목표인 주제로 "담당기획자"와 "담당개발자"의 회의는 그 태스크를 수월하게 진행할 수 있는 진검다리 역할이라고 생각한다.
- 개발자의 입장에서, 또는 기획자의 입장에서 - 아쉬운부분, 개선하면 좋을 부분등을 이야기하다보면 다시 돌아갈 확률이 적게끔 요구사항이 탄탄해질 것이라고 생각된다.
- 결국은 , 탄탄한 기획, 태스크를 진행하고 있는 일원들의 같은 생각은 작업을 하는데 있어 정말 중요한거 같다.
- 요구사항이 나왔다면, 그를 해결하기까지 고민은 끝까지 해봐야한다.
- 처음에는, 나의 시야로 위 요구사항은 되지 않을 것이란 판단을 하였다.
- 이는 매우 경솔하고, 나의 현 위치에서는 하면 안될 행동이란 생각이 들었다.
- 이유는 간단하다. 나의 시야는 아직 매우 좁기 때문이다.
- 이를 위해, 앞으로는 요구사항이 생겼을때 안된다는 생각 ,
사실 이부분이 정말 중요한데, 안된다는 판단은 못할거같아서라는 판단이 내포되어있을수도 있다.
이는, 발전할 수 없는 태도 중 하나라고 생각된다.- 그렇기에 , 요구사항을 끝까지 붙잡고 "태스크의 완성점"을 위해 집념하는 힘을 더 길러야된다는 생각을 했다.
이로써, 이번 태스크의 회고는 마치도록 하겠다.
💡 최종 요구사항#.1/3 task#7-3
1. datepicker 버튼 통합 작업
날짜 선택 후 버튼 클릭
버튼 클릭 후 날짜 선택
위 두가지 방법 모두 되게끔 .
“통합 관리 버튼” 을 하나 만들어 , 그 안에서 ‘선선택’ , ‘후선택’ 모두 가능하게 한다.
.img

.img

결론적으로, 알파리뷰의 시그니처 디자인을 입힌다면 이렇게 두가지가 가능할 것이다.
.img

#.1/4 task#8
1. yesterday filter 추가 - 엑셀다운로드 or 대시보드 메인
요구사항
- "어제" 항목을 클릭하였을때, 자동적으로 "어제"의 내용의 리뷰만 필터링 되도록 요구
- 현재는 "오늘", "7일" ,"15일" 등의 단위의 옵션으로 이루어져있다. (7일은 오늘날짜로부터 7일전까지의 리뷰를 말한다.)
위 사항을 해결하고자,
FE part. 수정이 이루어졌으며
if (option == "어제") {
from.setDate(from.getDate() - 1);
to.setDate(to.getDate() - 1);
}
이렇게, 오늘 날짜의 하루를 뺀 것을 설정해주어 , "어제" 라는 옵션에 맞게 필터링이 되게끔 하였다.
#.1/8~1/18 task#9
1. 세팅모달 가이드 디자인 작업 및 팝업 창 플로우 변경