@@ -52,11 +52,24 @@ export interface ApiResponse<T> {
5252 INVALID_INPUT_VALUE : 'CMN003' ,
5353 INVALID_TYPE_VALUE : 'CMN004' ,
5454 MISSING_REQUEST_PARAMETER : 'CMN005' ,
55+ UNAUTHORIZED : 'CMN006' ,
5556
57+ // user 도메인
58+ LOGIN_FAILED : 'U001' ,
59+ EMAIL_VERIFY_FAILED : 'U002' ,
60+ NAME_NOT_FOUND : 'U003' ,
61+ PASSWORD_NOT_FOUND : 'U004' ,
62+ PASSWORD_NOT_EQUAL : 'U005' ,
63+ EMAIL_NOT_FOUND : 'U006' ,
64+ ALREADY_REGISTERED_EMAIL : 'U007' ,
65+
5666 // Analysis 도메인
5767 INVALID_GITHUB_URL : 'A001' ,
5868 INVALID_REPOSITORY_PATH : 'A002' ,
5969 ANALYSIS_NOT_FOUND : 'A003' ,
70+ USER_NOT_FOUND : 'A004' ,
71+ FORBIDDEN : 'A005' ,
72+ ANALYSIS_IN_PROGRESS : 'A006' ,
6073
6174 // Repository 도메인
6275 GITHUB_REPO_NOT_FOUND : 'G001' ,
@@ -65,32 +78,63 @@ export interface ApiResponse<T> {
6578 GITHUB_INVALID_TOKEN : 'G004' ,
6679 GITHUB_RESPONSE_PARSE_ERROR : 'G005' ,
6780 GITHUB_API_FAILED : 'G006' ,
68-
81+ GITHUB_REPO_TOO_LARGE : 'G007' ,
82+
83+ // comment 도메인
84+ COMMENT_NOT_FOUND : 'R001' ,
85+
6986 // 프론트엔드 전용 에러
7087 NETWORK_ERROR : 'FE001' ,
7188 TIMEOUT_ERROR : 'FE002' ,
72- INVALID_RESPONSE : 'FE003' ,
73- UNAUTHORIZED : 'FE004' ,
74- FORBIDDEN : 'FE005' ,
89+ INVALID_RESPONSE : 'FE003'
7590 } as const ;
7691
7792 export type ErrorCode = typeof ERROR_CODES [ keyof typeof ERROR_CODES ] ;
7893
7994 // ========== 에러 메시지 매핑 ==========
8095 export const ERROR_MESSAGES : Record < string , string > = {
96+ // 공통
8197 [ ERROR_CODES . VALIDATION_FAILED ] : '입력값 검증에 실패했습니다.' ,
8298 [ ERROR_CODES . INTERNAL_ERROR ] : '서버 내부 오류가 발생했습니다.' ,
8399 [ ERROR_CODES . INVALID_INPUT_VALUE ] : '잘못된 입력값입니다.' ,
100+ [ ERROR_CODES . INVALID_TYPE_VALUE ] : '잘못된 타입의 값입니다.' ,
101+ [ ERROR_CODES . MISSING_REQUEST_PARAMETER ] : '필수 요청 파라미터가 누락되었습니다.' ,
102+ [ ERROR_CODES . UNAUTHORIZED ] : '인증이 필요합니다.' ,
103+
104+ // user 도메인
105+ [ ERROR_CODES . LOGIN_FAILED ] : '로그인에 실패했습니다.' ,
106+ [ ERROR_CODES . EMAIL_VERIFY_FAILED ] : '이메일 인증코드가 일치하지 않습니다.' ,
107+ [ ERROR_CODES . NAME_NOT_FOUND ] : '이름이 입력되지 않았습니다.' ,
108+ [ ERROR_CODES . PASSWORD_NOT_FOUND ] : '비밀번호가 입력되지 않았습니다.' ,
109+ [ ERROR_CODES . PASSWORD_NOT_EQUAL ] : '비밀번호 확인이 일치하지 않습니다.' ,
110+ [ ERROR_CODES . EMAIL_NOT_FOUND ] : '해당 이메일은 없는 계정입니다.' ,
111+ [ ERROR_CODES . ALREADY_REGISTERED_EMAIL ] : '이미 회원가입된 이메일입니다.' ,
112+
84113 [ ERROR_CODES . INVALID_GITHUB_URL ] : '올바른 GitHub 저장소 URL이 아닙니다.' ,
85- [ ERROR_CODES . INVALID_REPOSITORY_PATH ] : '저장소 URL 형식이 잘못되었습니다.' ,
114+ [ ERROR_CODES . INVALID_REPOSITORY_PATH ] :
115+ '저장소 URL 형식이 잘못되었습니다. (예: https://github.com/{owner}/{repo})' ,
86116 [ ERROR_CODES . ANALYSIS_NOT_FOUND ] : '분석 결과를 찾을 수 없습니다.' ,
117+ [ ERROR_CODES . USER_NOT_FOUND ] : '사용자 정보를 찾을 수 없습니다.' ,
118+ [ ERROR_CODES . FORBIDDEN ] : '접근 권한이 없습니다.' ,
119+ [ ERROR_CODES . ANALYSIS_IN_PROGRESS ] : '이미 분석이 진행 중입니다. 잠시 후 다시 시도해주세요.' ,
120+
121+ // repository 도메인
87122 [ ERROR_CODES . GITHUB_REPO_NOT_FOUND ] : 'GitHub 저장소를 찾을 수 없습니다.' ,
88123 [ ERROR_CODES . GITHUB_API_SERVER_ERROR ] : 'GitHub API 서버에서 오류가 발생했습니다.' ,
89124 [ ERROR_CODES . GITHUB_RATE_LIMIT_EXCEEDED ] : 'GitHub API 호출 제한을 초과했습니다.' ,
125+ [ ERROR_CODES . GITHUB_INVALID_TOKEN ] : 'GitHub 인증 토큰이 유효하지 않습니다.' ,
126+ [ ERROR_CODES . GITHUB_RESPONSE_PARSE_ERROR ] :
127+ 'GitHub 응답 데이터를 처리하는 중 오류가 발생했습니다.' ,
128+ [ ERROR_CODES . GITHUB_API_FAILED ] : 'GitHub API 응답에 실패했습니다.' ,
129+ [ ERROR_CODES . GITHUB_REPO_TOO_LARGE ] : '저장소가 너무 커서 분석할 수 없습니다.' ,
130+
131+ // comment 도메인
132+ [ ERROR_CODES . COMMENT_NOT_FOUND ] : '댓글을 찾을 수 없습니다.' ,
133+
134+ // 프론트엔드 전용
90135 [ ERROR_CODES . NETWORK_ERROR ] : '네트워크 연결을 확인해주세요.' ,
91136 [ ERROR_CODES . TIMEOUT_ERROR ] : '요청 시간이 초과되었습니다.' ,
92- [ ERROR_CODES . UNAUTHORIZED ] : '인증이 필요합니다.' ,
93- [ ERROR_CODES . FORBIDDEN ] : '접근 권한이 없습니다.' ,
137+ [ ERROR_CODES . INVALID_RESPONSE ] : '서버 응답 형식이 올바르지 않습니다.'
94138 } ;
95139
96140 // ========== API 요청 옵션 ==========
0 commit comments