Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(member): 에러 정책 업데이트 #270

Merged
merged 2 commits into from
Feb 18, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/lovely-foxes-whisper.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@clab-platforms/member": patch
---

feat(member): 예외 정책 업데이트
79 changes: 70 additions & 9 deletions apps/member/src/constants/message.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,75 @@ export const MY_MESSAGE = {
NO_MEMBERSHIP: '회비 신청 내역이 없어요.',
NO_ACTIVITY: '활동 내역이 없어요.',
} as const;
/**
* 에러 발생에 대한 사용자에게 안내할 메세지를 정의합니다.
* Server 팀과 협의하여 정의합니다.
*/

export const API_ERROR_MESSAGE = {
BOOKALREADYAPPLIEDFORLOANEXCEPTION: '이미 대여 신청한 도서이에요.',
ALREADYBORROWEDBOOKEXCEPTION: '해당 도서는 대여 상태에요.',
OVERDUEEXCEPTION: '도서 대여 연장은 최대 2회까지 가능해요.',
NOTFOUNDEXCEPTION: '요청하신 정보를 찾을 수 없어요.',
ALREADYAPPLIEDEXCEPTION: '이미 신청한 활동이에요.',
INVALID_VERIFICATION_REQUEST: '입력한 인증 정보가 올바르지 않아요.',
RESET_PASSWORD_INFORMATION_MISMATCH: '입력한 회원 정보가 일치하지 않아요.',
INVALID_PARENT_BOARD: '올바르지 않은 게시판 정보예요.',
INVALID_DATE_RANGE: '날짜 범위가 잘못되었어요.',
INVALID_DATE_TIME_RANGE: '시간 설정이 올바르지 않아요.',
INVALID_COLUMN: '정렬 기준이 잘못되었어요.',
UNSUPPORTED_EMOJI: '이모지를 사용할 수 없어요.',
INVALID_ROLE_CHANGE: '이 역할로 변경할 수 없어요.',
INVALID_FILE_ATTRIBUTE: '파일 속성이 올바르지 않아요.',
INVALID_GITHUB_URL: '입력한 GitHub 주소가 올바르지 않아요.',
INACTIVE_ACTIVITY_GROUP_MEMBER: '활동에 참여 중인 멤버만 변경할 수 있어요.',
RECRUITMENT_NOT_ACTIVE: '모집이 활성 상태가 아니에요.',
INVALID_RECRUITMENT_CLOSURE_WINDOW: '모집 종료일이 잘못되었어요.',
INDEX_OUT_OF_BOUNDS: '입력값이 허용된 범위를 벗어났어요.',
MISSING_PARAMETER: '필요한 정보가 누락되었어요.',
MALFORMED_JSON: '입력값이 올바르지 않아요.',
HTTP_MESSAGE_NOT_READABLE: '요청을 처리할 수 없어요.',
TYPE_MISMATCH: '입력한 값이 올바르지 않아요.',
ILLEGAL_ACCESS: '이 작업을 수행할 수 없어요.',
NUMBER_FORMAT_ERROR: '숫자 형식이 잘못되었어요.',
SORTING_ARGUMENT_MISMATCH: '정렬 기준과 방식이 맞지 않아요.',
INVALID_SORT_DIRECTION: '정렬 방식이 올바르지 않아요.',
UNKNOWN_PATH: '요청한 경로가 존재하지 않아요.',
ASSIGNMENT_BOARD_HAS_NO_DUE_DATE: '과제 마감 기한이 설정되지 않았어요.',
FEEDBACK_BOARD_HAS_NO_CONTENT: '피드백 내용을 입력해주세요.',
INVALID_BOARD_CATEGORY_HASHTAG: '해당 해시태그를 사용할 수 없어요.',
EXECUTIVE_ALREADY_REGISTERED: '이미 운영진으로 등록되어 있어요.',
EXECUTIVE_NOT_A_MEMBER: '운영진 등록 대상이 아니에요.',
METHOD_ARGUMENT_NOT_VALID: '입력값을 다시 확인해주세요.',
CONSTRAINT_VIOLATION: '제약 조건을 위반했어요.',
INVALID_DATA_ACCESS: '잘못된 요청이에요.',
ALERT_TYPE_NOT_FOUND: '알림 정보를 찾을 수 없어요.',
ILLEGAL_ARGUMENT: '입력값이 잘못되었어요.',
JWT_SECURITY_ERROR: '인증 정보를 확인할 수 없어요.',
NO_SUCH_FIELD: '해당 정보를 찾을 수 없어요.',
UNSUPPORTED_OPERATION: '이 작업은 지원되지 않아요.',
AUTHENTICATION_NOT_FOUND: '로그인이 필요해요.',
MEMBER_LOCKED: '계정이 잠겼어요. 관리자에게 문의해주세요.',
BAD_CREDENTIALS: '아이디 또는 비밀번호가 잘못되었어요.',
TOKEN_INVALID: '인증 정보가 올바르지 않아요.',
TOKEN_MISUSED: '잘못된 인증 방식이에요.',
TOKEN_FORGERY: '보안 문제로 요청을 처리할 수 없어요.',
MESSAGING_ERROR: '메시지를 전송할 수 없어요.',
EXPIRED_JWT: '로그인이 만료되었어요. 다시 로그인해주세요.',
MALFORMED_JWT: '인증 정보가 올바르지 않아요.',
UNSUPPORTED_JWT: '지원되지 않는 인증 방식이에요.',
USERNAME_NOT_FOUND: '입력한 사용자 정보를 찾을 수 없어요.',
ACCESS_DENIED: '이 작업을 수행할 수 없어요.',
PERMISSION_DENIED: '권한이 없어요.',
MEMBER_NOT_PART_OF_ACTIVITY_GROUP: '이 활동에 참여하고 있지 않아요.',
AUTHORIZATION_DENIED: '이 작업을 수행할 권한이 없어요.',
AUTHORIZATION_SERVICE_ERROR: '권한 확인 중 문제가 발생했어요.',
FILE_ACCESS_DENIED: '파일을 열 수 없어요.',
RESOURCE_NOT_FOUND: '요청한 정보를 찾을 수 없어요.',
NOT_FOUND: '해당 정보를 찾을 수 없어요.',
ELEMENT_NOT_FOUND: '입력한 값을 찾을 수 없어요.',
FILE_NOT_FOUND: '파일을 찾을 수 없어요.',
INVALID_PATH_VARIABLE: '입력한 경로가 올바르지 않아요.',
BOOK_ALREADY_BORROWED: '이미 대출 중인 도서예요.',
BOOK_ALREADY_RETURNED: '이미 반납된 도서예요.',
BOOK_ALREADY_APPLIED_FOR_LOAN: '이미 대출 신청한 도서예요.',
MAX_BORROW_LIMIT_EXCEEDED: '대출 가능한 도서 수를 초과했어요.',
BOOK_LOAN_EXTENSION_LIMIT_EXCEEDED: '대출 연장 횟수를 초과했어요.',
BOOK_BORROWER_MISMATCH: '대출 정보가 일치하지 않아요.',
INTERNAL_SERVER_ERROR: '서비스 이용 중 문제가 발생했어요.',
SECURITY_ERROR: '보안 문제가 발생했어요.',
TRANSACTION_SYSTEM_ERROR: '요청을 처리하는 중 문제가 발생했어요.',
} as const;

export type APIErrorMessage = keyof typeof API_ERROR_MESSAGE;
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export function useActivityGroupMemberMutation() {
isPending: activityGroupMemberIsPending,
} = useMutation({
mutationFn: postActivityGroupMemberApply,
onSuccess: ({ success, data: data, errorMessage }) => {
onSuccess: ({ success, data, errorMessage }) => {
if (errorMessage) {
toast({
state: 'error',
Expand Down
4 changes: 2 additions & 2 deletions apps/member/src/types/api.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { API_ERROR_MESSAGE } from '@constants/message';
import { type APIErrorMessage } from '@constants/message';

/**
* API Call 시 반환되는 기본 응답 타입입니다.
Expand All @@ -9,7 +9,7 @@ import { API_ERROR_MESSAGE } from '@constants/message';
export type BaseResponse<T = unknown> = {
success: boolean;
data: T;
errorMessage?: keyof typeof API_ERROR_MESSAGE;
errorMessage?: APIErrorMessage;
};

/**
Expand Down
Loading