Cafeteria API 서버
- API 서버: cafeteria-server
- 모바일 앱: cafeteria-mobile
- 콘솔 API 서버: cafeteria-console-server
- 콘솔 웹 인터페이스: cafeteria-console-web
- API 서버 배포 스크립트: cafeteria-server-deploy
이 서버는 다음 API를 제공합니다.
- 식단 정보
- 식당 예약
- 할인 멤버십
- 1:1 문의, 공지사항, FAQ 등
- 결제시 할인 유효성 검증
- 결제시 할인 내역 등록
카페테리아 학생 할인을 제공받으려면 아래의 조건들을 만족해야 합니다:
- 1: requestShouldBeInMealTime
- 2: cafeteriaShouldSupportDiscount
- 3: userShouldExist
- 4: barcodeShouldBeActive
- 5: discountAtThisCafeteriaShouldBeFirstToday
- 6: barcodeShouldNotBeUsedRecently
- 상태 페이지 개선.
- 재학 상태 확인시 인증 정보는 헤더에 평문으로.
- 학생 인증 기능 복귀.
- 백엔드 의존성 업데이트.
- 로그인 서버 이전 마무리될 때까지 학생 인증 잠시 배제.
- 식단이 오늘 것만 표시되는 문제 해결.
path.join()
사용.
- 교내 API 서버 변경에 대응.
- 수료 또는 졸업생에게 표시되는 로그인 메시지 세분화.
- 의존성 hotfix.
- 공통 코드 backend-core로 이동.
- 예약 내역은 실시간 SSE로 받아볼 수 있게 함.
node-fetch
스펙 변경 핫픽스.
- 취약 의존성 업데이트.
- 식단 파서가
기타 정보
에 대해 규격을 준수하지 않는 문제 해결.
- 식단 파싱 규격 변경 (감사합니다 영양사님).
- 메뉴 캐시 삭제하는 엔드포인트 추가.
- 엔티티 복구 로직을 백엔드 코어에서 이 저장소로 이전.
- 공휴일인 경우 예약 옵션에서 제외.
- 예약 옵션 캐싱.
- 의존성 업데이트.
- 예약 관련 API 파라미터 이름 변경.
- 로그 누락 문제 해결.
- 예약 검증할 때에는 BookingOption 직접 가져와서 진행.
- 응답 메시지에서 개행문자 제거.
- 새 키오스크 API 성공시 body 규격 맞춤.
- 레거시 키오스크 API 파라미터 검증 lazy하게.
- 예약할 때 시간대 검증 오류 해결.
- 학번 로그인 API limit 해제.
- 답변 읽은 날짜 저장하는 부분 누락된 것 해결.
- 예약 시스템 준비 완료.
- 타임존 설정 환경변수로 오버라이드 가능하게 설정.
- 타임존 이슈 해결.
- 예약 시간대 표시 기준 변경.
- 아직 끝나지 않았으면 시작된 시간대도 표시.
- 코어 의존성 개행문자 따라붙는 버그 해결.
- 코어 의존성 버그 해결.
- Firebase admin 삭제.
- import 수정.
- 환경변수 중 일부는 secret에서 가져올 수 있게 함.
- Docker 배포 준비.
- 급한 버그 수정.
- 예약 시간대는 당일 또는 다음날만 보여줌. 보여줄 것이 없으면 보여주지 않음.
- 키오스크 API 개선.
- 학번으로 로그인 시 타임아웃 에러 다루는 부분 추가.
- 백엔드 코어 의존성 변경과 이에 대한 대응 적용.
- 동의 유효기한은 백엔드 코어에서 정함.
- SMS 발신번호 수정.
- SMSSender 로그 추가.
- 누락된 동의 28일 제한 config에 추가.
- 예약 가져올 때에는 최신 순으로 가져옴.
- 최근 예약 가져올 때에 relations가 빠진 코어 의존성 문제 해결.
- 예약 상태 3가지로 나누어 처리.
- 최근 72시간 예약 내역 표시.
- 개인정보 이용동의 여부 저장.
- 같은 식당 중복 예약 제한.
- 누락된 메일 알림 복귀.
- 관리자에게 보내는 메일에서, 사용자 질문에 답변하는 링크 수정.
- 코어 의존성 업데이트.
- 코어 의존성 업데이트.
- 로거와 rule validator 클래스를 backed core의 것으로 대체.
- 잘못 import된 MealType 수정.
- 누락된 markAnswerRead 추가.
- 코어 의존성 업데이트.
- 마지막 공지 가져오는 API 추가.
- 로그 확대.
- RuleChecker 구현에 끼어든 작은 버그 수정.
- RuleChecker 로그 출력 강화.
- 예약 찾는 함수에 인자 누락된 것 수정.
- 30분 정도 지난 예약도 표시는 해줌.
- 지나간 예약이 표시되는 문제를 해결한 backend-core 업데이트 적용.
- 오류 문구 수정.
- 애플 심사를 위한 테스트 계정 추가.
- 로그 남길 때에 body 원본 수정하는 문제 해결.
- API limit 완화.
- 로깅 강화
- 의존성 전체 업데이트.
- 의존성 안 쓰는 것 정리.
- 상태 체크 대응.
- tsc 의존성 제거.
- 누락된 의존성 tsc 추가.
- Typescript로 다시 작성.
- Express 사용.
- 예약 관련 기능 추가
- 보안 취약점 업데이트
- 문서에서 누락된 API 설명 추가
- 정적 호스팅 파일 제거(
cafeteria-in-app-web
으로 이전) - 공지 노출 여부를 판단하기 위해 버전을 체크할 때에
semver
사용
- 할인 룰 5번 수정:
discountAtThisCafeteriaShouldBeFirstToday
- 의존성 업데이트
- 카페테리아 Comment 추가
MealType
규격 통일: 아침(4), 점심(2), 저녁(1) 사용
- axios 취약점 패치 적용
- 30분마다 현재부터 5일째까지 식단 가져옴
- 로그 포맷이 CloudWatch와 파일에서 다른 문제 해결
- 로그에 인스턴스 정보 표시
- AWS 설정 별도의 파일로 이동
- 문의 알림 메일에 담기는 콘솔 링크 변경
- 주문 상태 세분화
- 알림에 보내는 데이터 변경
- 대기중인 주문 삭제 안되는 버그 해결
- 식단 파싱할 때 날짜(weekdiff) 선정하는 문제 해결
- 의존성 보안 취약점 패치
- 30분마다 식단 파싱 및 오래된 주문 삭제
- 번호알림 지원
- DB 설정 명령어 지원 확대
- 식단 파싱할 때에 코너 이름을 느슨하게 비교하도록 변경
- 식단 파싱할 때에 빈 스트링이 걸러지지 않는 버그 제거
- DB 싱크 명령 추가
- IP 파악에
X-Forwarded-For
헤더 사용
- 사용자 에이전트 로깅
- 식단 배열로 제공하는 옵션 추가
- 식단 파싱할 때 날짜(
jun
) 문제 해결 - 긴 스트링에 TEXT 자료형 사용
- DB 인코딩 변경
- 문의 글자 수 제한 추가
- 문의 등록되면 관리자에게 알림 메일 발송
- 식단 파싱 버그 해결
- 고객센터 신설
- 타겟 공지 및 앱 업데이트 지원
- 사용자가 없으면 최근 바코드 태그된 적도 없는 것으로 간주함
- 바코드 파싱 후 정수로 변환
/isBarcode
와/paymentSend
에 적용되는 validation rule 각각 다르게 함- 중복 로깅 문제 해결
- 사용자가 없는 상태에서도 transaction commit 가능해짐
- 바코드 태그시 모든 성공/실패 케이스에 TransactionHistory를 남김
- 더 유연한 동작 가능
- DB 테이블 수정 및 추가
- 생협 홈페이지 리뉴얼로 인한 식단 파싱 문제 해결
- 식단 양식 대응
- Remember-me token으로 로그인할 수 없는 문제 해결
- 카페테리아 정보 요청시 500 에러 해결
- 응답 모델 문서 수정
- 식단 생협 홈페이지에서 직접 가져옴
- 코너에 조식/중식/석식 구분 추가
- 테스트 계정 추가
- 로그아웃 컨트롤러 500 버그 해결
- 로그인이 안 되는 심각한 버그 해결
- 광범위한 유닛 테스트 추가
- 도메인과 HTTPS 적용
- Notification API 이름 FeedbackReplies로 변경
- 내부 DB 구조 변경 (notifications -> feedback_replies, id와 feedback_id 추가)
- /isBarcode와 /paymentSend에 대응되는 입력 유효성 검사 로직 강화
- 도메인 엔티티 Cafeteria 확장
- 결제 유효성 검사에서 Cafeteria 할인 지원 여부 명시적으로 확인
- 로그인 시도시 응답 없는 경우 대응
- ES6 지원 추가, 클래스 기반으로 재설계
- 새로운 피드백과 답장 기능 추가
- 기존 API 모두 지원
- 최소 기능으로 새로운 시작 1.0.0 !!
- 실서버에 배포
- CI 테스트 적용
소스 코드에는 GPLv3 라이센스가 적용됩니다. 라이센스는 이곳에서 확인하실 수 있습니다.