sales-frontend-gemini-cli 0.4.1 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/common/helper.cjs +674 -68
  2. package/dist/common/helper.cjs.map +1 -1
  3. package/dist/common/helper.d.cts +106 -4
  4. package/dist/common/helper.d.ts +106 -4
  5. package/dist/common/helper.js +659 -70
  6. package/dist/common/helper.js.map +1 -1
  7. package/dist/common/types.d.cts +24 -1
  8. package/dist/common/types.d.ts +24 -1
  9. package/dist/pr-review/claude/claude-commander.cjs +58 -10
  10. package/dist/pr-review/claude/claude-commander.cjs.map +1 -1
  11. package/dist/pr-review/claude/claude-commander.js +58 -10
  12. package/dist/pr-review/claude/claude-commander.js.map +1 -1
  13. package/dist/pr-review/claude/installation-claude.cjs +219 -13
  14. package/dist/pr-review/claude/installation-claude.cjs.map +1 -1
  15. package/dist/pr-review/claude/installation-claude.js +218 -13
  16. package/dist/pr-review/claude/installation-claude.js.map +1 -1
  17. package/dist/pr-review/codex/codex-commander.cjs +55 -9
  18. package/dist/pr-review/codex/codex-commander.cjs.map +1 -1
  19. package/dist/pr-review/codex/codex-commander.js +55 -9
  20. package/dist/pr-review/codex/codex-commander.js.map +1 -1
  21. package/dist/pr-review/codex/installation-codex.cjs +219 -13
  22. package/dist/pr-review/codex/installation-codex.cjs.map +1 -1
  23. package/dist/pr-review/codex/installation-codex.js +218 -13
  24. package/dist/pr-review/codex/installation-codex.js.map +1 -1
  25. package/dist/pr-review/gemini/gemini-commander.cjs +82 -16
  26. package/dist/pr-review/gemini/gemini-commander.cjs.map +1 -1
  27. package/dist/pr-review/gemini/gemini-commander.js +82 -16
  28. package/dist/pr-review/gemini/gemini-commander.js.map +1 -1
  29. package/dist/pr-review/gemini/installation-gemini.cjs +219 -13
  30. package/dist/pr-review/gemini/installation-gemini.cjs.map +1 -1
  31. package/dist/pr-review/gemini/installation-gemini.js +218 -13
  32. package/dist/pr-review/gemini/installation-gemini.js.map +1 -1
  33. package/dist/pr-review/review-one-by-one.cjs +838 -184
  34. package/dist/pr-review/review-one-by-one.cjs.map +1 -1
  35. package/dist/pr-review/review-one-by-one.js +839 -185
  36. package/dist/pr-review/review-one-by-one.js.map +1 -1
  37. package/dist/pr-review/review.cjs +815 -156
  38. package/dist/pr-review/review.cjs.map +1 -1
  39. package/dist/pr-review/review.js +815 -156
  40. package/dist/pr-review/review.js.map +1 -1
  41. package/package.json +4 -7
  42. package/src/common/rules/coding-convention.md +393 -0
  43. package/src/common/rules/coding-convention.pdf +0 -0
  44. package/src/common/rules/naming-rule.md +347 -0
  45. package/src/common/rules/naming-rule.pdf +0 -0
@@ -0,0 +1,347 @@
1
+ # 03-1. 명명규칙
2
+
3
+ ## 기본 명명 규칙
4
+
5
+ | 구분 | 표기법 | 예 |
6
+ | :------------------------- | :--------------- | :---------------------------- |
7
+ | 1. 프로젝트명 | kebab case | hli-nxl-dsp-{업무구분코드}-fe |
8
+ | 2. 경로명(pathname 포함) | kebab case | /user-info/user-name |
9
+ | 3. 컴포넌트 함수명 | Pascal case | UserName |
10
+ | 4. 클래스명 / 네임스페이스 | Pascal case | DataUtil, StringUtil |
11
+ | 5. 함수명(일반) | camel case | getUserName |
12
+ | 6. 변수명(일반) | camel case | userName |
13
+ | 7. 상수명 | upper snake case | BASE_URL |
14
+ | 8. type명 | Pascal case | NetworkStatus |
15
+ | 9. interface명 | Pascal case | UserName, ProductName |
16
+ | 10. enum | Pascal case | |
17
+
18
+ ## 파일 명명 규칙
19
+
20
+ | 구분 | 표기법 | 확장자 | 예 |
21
+ | :----------- | :----------------- | :------------ | :-------------------------------------------------------------------------------------- |
22
+ | 1. 컴포넌트 | kebab case | .tsx | user-name.tsx |
23
+ | 2. 커스텀 훅 | kebab case | .tsx | use-user-name.tsx |
24
+ | 3. 스타일 | kebab case | .scss or .css | user-name.module.scss<br>global.css |
25
+ | 4. 스토리북 | kebab case or 한글 | .stories.tsx | user-name.stories.tsx or 1\_개인정보처리동의.stories.tsx<br>(관리하기 쉬운 네이밍) |
26
+ | 5. 유틸리티 | kebab case | .ts | user-name-utils.ts<br>{유틸리티명}-utils.ts |
27
+ | 6. 타입 | kebab case | .ts | user-name.types.ts<br>{이름}.types.ts<br>(외부 사용이 필요한 부분은 별도의 파일로 분리) |
28
+ | 7. dto 타입 | kebab case | .ts | user-name.dto.ts<br>{백엔드 주제영역명}.dto.ts |
29
+ | 8. declare | kebab case | .d.ts | user-name.d.ts |
30
+
31
+ - \*\* 리액트와 관련된 것들은 .tsx로 통일 (커스텀 훅, 컨텍스트 등)
32
+
33
+ ## 컴포넌트 명명 규칙
34
+
35
+ - 표기법: Pascal case
36
+ - 단일 책임 원칙을 기반으로 한 컴포넌트 이름(특히 공통)
37
+ - 숫자, 특수문자 사용 X, 의미와 목적이 들어나는 네이밍, 두문자어도 파스칼 케이스 사용
38
+
39
+ ```javascript
40
+ 1 // ✅ 목적/의미 분명, Full Name
41
+ 2 export const LoginForm = ({}: LoginFormProps) => {
42
+ 3 ...
43
+ 4 }
44
+ 5
45
+ 6 // ❌ 숫자
46
+ 7 export const UserView1 = () => {
47
+ 8 ...
48
+ 9 }
49
+ 10
50
+ 11 // ✅ 두문자어
51
+ 12 export const HtmlEdidor = () => {
52
+ 13 ...
53
+ 14 }
54
+ 15 // ❌ 두문자어
55
+ 16 export const HTMLEdidor = () => {
56
+ 17 ...
57
+ 18 }
58
+ 19
59
+ 20
60
+ 21 // ❌ 약어, 축약형
61
+ 22 export const UsrPrfl = () => {
62
+ 23 ...
63
+ 24 }
64
+ 25
65
+ 26 // ❌ 특수문자
66
+ 27 export const User_Profile = () => {
67
+ 28 ...
68
+ 29 }
69
+ ```
70
+
71
+ ## 함수 명명 규칙
72
+
73
+ - 표기법: camel case
74
+
75
+ ```javascript
76
+ 1 // ✅ camel case
77
+ 2 const getCamelCase = () => { ... }
78
+ 3
79
+ 4 // ❌
80
+ 5 const Get_Camel_Case = () => { ... }
81
+ 6
82
+ 7 // ❌
83
+ 8 const GetCamelCase = () => { ... }
84
+ ```
85
+
86
+ - 동사로 시작
87
+
88
+ ```javascript
89
+ 1 // ✅ 동사로 시작
90
+ 2 const getCamelCase = () => { ... }
91
+ 3
92
+ 4 // ❌ non 동사
93
+ 5 const camelCase = () => { ... }
94
+ ```
95
+
96
+ - 최대한 구체적 + 목표분명 + 한 가지 책임을 담당하는 함수명
97
+ - 함수의 역할을 명확히 알 수 있도록 하고 로직이 과도하게 몰리는 걸 방지하기 위함
98
+
99
+ ```javascript
100
+ 1 // ✅ 구체적이고 단일목적
101
+ 2 const formatDateToKorean = () => { ... }
102
+ 3
103
+ 4 // ❌ 추상, 줄임
104
+ 5 const format = () => { ... }
105
+ ```
106
+
107
+ - 조건부
108
+ - is/has/should + 조건
109
+
110
+ ```javascript
111
+ 1 // ✅ 조건부 (is/has/should + 대상)
112
+ 2 const isTablet = () => { ... }
113
+ 3 const hasChildren = () => { ... }
114
+ 4 const shouldPreventEvent = () => { ... }
115
+ ```
116
+
117
+ - API 호출함수
118
+ - C(create): create + 대상 + (상세정보) (예: createUserProfile)
119
+ - R(read): 단건: get + 대상 + (상세정보) (예: getUserProfile), 다건: getList + 대상 + (상세정보) (예: getListUserProfile)
120
+ - U(update): update + 대상 + (상세정보) (예: updateUserProfile)
121
+ - D(delete): delete + 대상 + (상세정보) (예: deleteUserProfile)
122
+
123
+ ```javascript
124
+ 1 // ✅ 단건 조회 API 호출 (get + 대상)
125
+ 2 const getUserName = () => { ... }
126
+ 3
127
+ 4 // ✅ 다건 조회 API 호출 (getList + 대상)
128
+ 5 const getListrUserName = () => { ... }
129
+ 6
130
+ 7 // ✅ update 성격의 API 호출 (update + 대상)
131
+ 8 const updateUserName = () => { ... }
132
+ 9
133
+ 10 // ✅ 삭제 성격의 API 호출 (delete + 대상)
134
+ 11 const deleteUserName = () => { ... }
135
+ 12
136
+ 13 // ✅ insert 성격의 API 호출 (create + 대상)
137
+ 14 const createUserName = () => { ... }
138
+ ```
139
+
140
+ - 데이터 변환
141
+ - convert / format / parse + 대상
142
+
143
+ ```javascript
144
+ 1 // ✅ 변환 함수 (convert/format/parse + 대상)
145
+ 2 const convertUserName = () => { ... }
146
+ 3 const formatUserName = () => { ... }
147
+ 4 const parseUserName = () => { ... }
148
+ ```
149
+
150
+ - 검증
151
+ - validate + 대상
152
+
153
+ ```javascript
154
+ 1 // ✅ 데이터 검증 (validate + 대상)
155
+ 2 const validateUserName = () => { ... }
156
+ ```
157
+
158
+ - 이벤트 핸들러
159
+ - handle + 대상
160
+
161
+ ```javascript
162
+ 1 // ✅ 이벤트 핸들러 (handle + 이벤트타입 + 대상)
163
+ 2 const handleUserNameClick = () => { ... }
164
+ 3 const handleModalClose = () => { ... }
165
+ 4
166
+ 5 // ✅ 이벤트 핸들러를 Props로 넘길 땐(on + 핸들러 함수)
167
+ 6 <UserName onUserNameClick={handleUserNameClick} onModalClose={handleModalClose}/>
168
+ ```
169
+
170
+ - 초기화 / 생성
171
+ - create / initialize + 대상
172
+
173
+ ```javascript
174
+ 1 // ✅ 초기화 및 객체 생성(create/initialize + 대상)
175
+ 2 const createApiInstance = () => { ... }
176
+ 3 const initializeLoginInfomation = () => { ... }
177
+ ```
178
+
179
+ ## 변수 명명 규칙
180
+
181
+ - \*\* 단, 백엔드에서 정의된 필드는 그대로 따른다.
182
+ - 기본 표기법: camel case (object 포함)
183
+ - 상수: Upper Snake case
184
+
185
+ ```javascript
186
+ 1 // ✅ camel case
187
+ 2 const userName = '김한화';
188
+ 3
189
+ 4 // ✅ 상수 case
190
+ 5 const USER_NAME = '김한화';
191
+ 6
192
+ 7 // ✅ object case
193
+ 8 const testUtils = {
194
+ 9 convertCurrency() {...}
195
+ 10 }
196
+ 11
197
+ 12
198
+ 13 // ❌
199
+ 14 const user_name = '';
200
+ 15 const UserName = '';
201
+ 16 const User_Name = '';
202
+ 17 const TestUtils = {...};
203
+ ```
204
+
205
+ - 의미 있고 구체적인 이름
206
+
207
+ ```javascript
208
+ 1 // ✅ 구체적
209
+ 2 const userName = '김한화';
210
+ 3 const isEmailValidated = false;
211
+ 4
212
+ 5 // ❌
213
+ 6 const un = ''
214
+ 7 const total = 0;
215
+ 8 const item = [];
216
+ 9
217
+ 10 // ❌ ❌ ❌ 진짜 금지
218
+ 11 const flag = false;
219
+ ```
220
+
221
+ - 숫자
222
+
223
+ ```javascript
224
+ 1 // ✅ 개수 관련 count, total, num 접두사/접미사 활용
225
+ 2 const userCount = 100;
226
+ 3 const totalUsers = 1000;
227
+ 4 const numPages = 100;
228
+ 5
229
+ 6
230
+ 7 // ✅ 크기/양 관련 size, amount, length 접미사 활용
231
+ 8 const fileSize = 100;
232
+ 9 const fileAmount = 100;
233
+ 10 const fileLength = 100;
234
+ ```
235
+
236
+ - 배열
237
+
238
+ ```javascript
239
+ 1 // ✅ 복수형으로 내용을 정확하게 표현
240
+ 2 const selectedUsers = [];
241
+ 3 const errorMessages = [];
242
+ 4
243
+ 5
244
+ 6 // ❌ 단수, 추상적 영문명
245
+ 7 const user = [];
246
+ 8 const data = [];
247
+ ```
248
+
249
+ - boolean
250
+
251
+ ```javascript
252
+ 1 // ✅ is/has/should 접두사 활용
253
+ 2
254
+ 3 // ~이다 ,아니다
255
+ 4 const isLoading = false;
256
+ 5 const isValid = false;
257
+ 6
258
+ 7 // 갖다, 아니다
259
+ 8 const hasError = false;
260
+ 9
261
+ 10 // 해야할지, 말아야할지
262
+ 11 const shouldUpdate = false;
263
+ ```
264
+
265
+ - Class
266
+
267
+ ```javascript
268
+ 1 // ✅ pascal case
269
+ 2 class BridgeCore {}
270
+ 3
271
+ 4 // ❌
272
+ 5 class bridgeCore {}
273
+ ```
274
+
275
+ ## Type, Interface 명명 규칙
276
+
277
+ - 기본 표기법: Pascal Case
278
+
279
+ ```typescript
280
+ 1 // ✅ Pascal case
281
+ 2 interface UserInfo {
282
+ 3 id: string;
283
+ 4 name: string;
284
+ 5 }
285
+ 6
286
+ 7 // ✅ Swagger DTO 명 그대로 승계
287
+ 8 interface ApiResponse<T> {
288
+ 9 data: T;
289
+ 10 messaege: string;
290
+ 11 }
291
+ 12
292
+ 13 // ❌
293
+ 14 interface User_Info {}
294
+ 15
295
+ 16 // ❌
296
+ 17 interface I_User_ {}
297
+ ```
298
+
299
+ - Type: Pascal Case
300
+
301
+ ```typescript
302
+ 1 // ✅ Pascal case
303
+ 2 type UserName = 'user' | 'admin';
304
+ 3
305
+ 4 // ✅
306
+ 5 type ApiStatus = 'sucess' | 'loading' | 'error';
307
+ 6
308
+ 7 // ❌
309
+ 8 type TUserName = 'user' | 'admin';
310
+ 9
311
+ 10 // ❌
312
+ 11 type API_STATUS = 'sucess' | 'loading' | 'error';
313
+ ```
314
+
315
+ - interface 사용 case
316
+ - DTO: Swagger에 정의된 Request/Response 명을 그대로 따른다.
317
+
318
+ ```typescript
319
+ 1 // ✅ 객체 구조 정의
320
+ 2 interface UserInfo {
321
+ 3 }
322
+ 4
323
+ 5 // ✅ class 구현을 위한 정의
324
+ 6 interface BridgeController {
325
+ 7 call() => void;
326
+ 8 open() => void;
327
+ 9 }
328
+ 10
329
+ 11 // ✅ 확장 가능한 구조
330
+ 12 interface BaseConfig {}
331
+ 13 interface ApiClient extends BaseConfig {}
332
+ 14
333
+ 15
334
+ 16 // ✅ Swagger에 UserInfoRequest/UserInfoResponse 라고 정의된 경우
335
+ 17 interface UserInfoRequest {}
336
+ 18 interface UserInfoResponse {}
337
+ ```
338
+
339
+ - Type 사용 case
340
+
341
+ ```typescript
342
+ 1 // 유니온 타입
343
+ 2 type Status = 'sucess' | 'loading' | 'reject';
344
+ 3
345
+ 4 // 조건 케이스
346
+ 5 type NonNullable<T> = T extends null | undefined ? never : T;
347
+ ```
Binary file