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/#46 [πŸ’‘ FEAT] AI μ½”λ“œ 리뷰 λ„μž… V2 #47

Closed
wants to merge 22 commits into from

Conversation

LuizyHub
Copy link
Member

@LuizyHub LuizyHub commented Aug 13, 2024

πŸš€ μž‘μ—… λ‚΄μš©

  • μƒˆλ‘œμš΄ AI λ„μž…

πŸ“Έ 이슈 번호

✍ κΆκΈˆν•œ 점

  • μ „μ²΄μ½”λ“œμ— λŒ€ν•œ μš”μ•½μ΄ μ œκ³΅λ©λ‹ˆλ‹€
  • μ˜μ–΄λ‘œ λ¦¬λ·°λ©λ‹ˆλ‹€

tidavid1 and others added 18 commits August 12, 2024 17:00
- PR Template을 μ—…λ°μ΄νŠΈν–ˆμŠ΅λ‹ˆλ‹€.
* feat: 둜그 λ ˆλ²¨μ„ λ‚˜νƒ€λ‚΄λŠ” Level enum 생성

- Level은 ERRORκ³Ό, INFOλ₯Ό κ°€μ§‘λ‹ˆλ‹€.

* feat: 둜그 데이터λ₯Ό λ‹΄λŠ” LogData VO 생성

- LogData VO λ‚΄μ—μ„œ data에 λŒ€ν•œ μœ νš¨μ„± 검사λ₯Ό μ§„ν–‰ν•©λ‹ˆλ‹€.

* test: 둜그 데이터에 κ΄€ν•œ ν…ŒμŠ€νŠΈ μž‘μ„±

- μ •μƒμ μœΌλ‘œ LogDataλ₯Ό λ§Œλ“€ 수 μžˆλ‹€.
- 빈 λ¬Έμžμ—΄λ‘œ LogDataλ₯Ό λ§Œλ“€λ©΄ μ˜ˆμ™Έκ°€ λ°œμƒν•œλ‹€.
- null둜 LogDataλ₯Ό λ§Œλ“€λ©΄ μ˜ˆμ™Έκ°€ λ°œμƒν•œλ‹€.

* feat: Level enum에 from λ©”μ„œλ“œ μΆ”κ°€

- level λ¬Έμžμ—΄λ‘œλΆ€ν„° enum을 λ§Œλ“€ 수 μžˆλŠ” from 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œλ₯Ό μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.

* test: Level enum에 from λ©”μ„œλ“œμ— κ΄€ν•œ ν…ŒμŠ€νŠΈ μΆ”κ°€

- level λ¬Έμžμ—΄λ‘œλΆ€ν„° enum을 λ§Œλ“€ 수 μžˆλŠ” from 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œμ— κ΄€ν•œ ν…ŒμŠ€νŠΈλ₯Ό μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.

* feat: Log 도메인 객체 생성

- LogλŠ” applicationIdλ₯Ό λ°˜λ“œμ‹œ κ°€μ Έμ•Όν•©λ‹ˆλ‹€.
- LogλŠ” Level을 κ°€μ Έμ•Όν•˜λ©°, Level VO λ‚΄μ—μ„œ μœ νš¨μ„± 검사λ₯Ό μ§„ν–‰ν•©λ‹ˆλ‹€.
- LogλŠ” logDataλ₯Ό 가지며, LogData VO λ‚΄μ—μ„œ μœ νš¨μ„± 검사λ₯Ό μ§„ν–‰ν•©λ‹ˆλ‹€.
- LogλŠ” λ‘œκ·Έκ°€ μƒμ„±λœ timestampλ₯Ό λ°˜λ“œμ‹œ κ°€μ Έμ•Όν•©λ‹ˆλ‹€.

* test: Log 도메인 객체에 λŒ€ν•œ λ‹¨μœ„ ν…ŒμŠ€νŠΈ μΆ”κ°€

- Log 도메인 객체 생성에 λŒ€ν•œ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€ κ΅¬ν˜„
  - μƒˆλ‘œμš΄ Log 도메인 객체 생성 ν…ŒμŠ€νŠΈ
  - DB에 μ €μž₯된 Log 도메인 객체 생성 ν…ŒμŠ€νŠΈ
- 정상 μΌ€μ΄μŠ€ 및 μ˜ˆμ™Έ μΌ€μ΄μŠ€(null κ°’ 처리) ν…ŒμŠ€νŠΈ 포함

* refactor: domainν•˜μœ„ values, enums νŒ¨ν‚€μ§€ μΆ”κ°€ 및 이동

- Level을 enums ν•˜μœ„λ‘œ 이동
- LogDataλ₯Ό values ν•˜μœ„λ‘œ 이동
- Testμ½”λ“œλ₯Ό ν•΄λ‹Ή νŒ¨ν‚€μ§€ ꡬ쑰에 맞게 λ³€κ²½

* test: LevelTest에 Dispalyname μΆ”κ°€

* test: LogDataTest에 Displayname μΆ”κ°€

- LogData VO ν…ŒμŠ€νŠΈ 메세지 μΆ”κ°€

* refactor: LogData VOλ₯Ό 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λ„λ‘ μˆ˜μ •

- 상속에 μ˜ν•œ ν™•μž₯을 λ°©μ§€ν•˜κ³ μž VOλ₯Ό 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œλ₯Ό μ΄μš©ν•˜λ„λ‘ λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€.
- LogDataTest의 createLogData ν…ŒμŠ€νŠΈ ν•„λ“œ λͺ…을 λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€.

* refactor: Level fromλ©”μ„œλ“œ μˆ˜μ •

- from λ©”μ„œλ“œμ—μ„œ valuesλ₯Ό μ‚¬μš©ν•˜κ³ , 없을 경우 μ˜ˆμ™Έλ₯Ό λ°œμƒμ‹œν‚€λ„λ‘ μˆ˜μ •ν•¨
- level의 upperCase 확인 μ‹œ NPE λ°œμƒ κ°€λŠ₯μ„±μœΌλ‘œ null checkλ₯Ό 상단에 μΆ”κ°€

* test: Level enum ν…ŒμŠ€νŠΈ μΆ”κ°€

- Level λ¬Έμžμ—΄μ΄ μ•ž λ’€λ‘œ 곡백을 ν¬ν•¨ν•˜λŠ” κ²½μš°λŠ” μ •μƒμ μœΌλ‘œ enum을 λ°˜ν™˜ν•˜λŠ” 것을 ν…ŒμŠ€νŠΈ μΆ”κ°€
- 잘λͺ»λœ λ¬Έμžμ—΄μ΄ λ“€μ–΄μ˜€λŠ” 경우 μ˜ˆμ™Έλ₯Ό λ°œμƒμ‹œν‚€λŠ” ν…ŒμŠ€νŠΈ μΆ”κ°€
* feat: Project 도메인 μ—”ν‹°ν‹° κ΅¬ν˜„

- Project 도메인 μ—”ν‹°ν‹°λ₯Ό κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.
  - Project 생성 μ‹œ 전달받은 이름이 κ³΅λ°±μ΄κ±°λ‚˜ 없을 경우 μ˜ˆμ™Έλ₯Ό λ°˜ν™˜ν•˜λŠ” κ²€μ¦λ‘œμ§μ„ μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.
  - 이에 λ”°λ₯Έ ν…ŒμŠ€νŠΈλ₯Ό μ§„ν–‰ν–ˆμŠ΅λ‹ˆλ‹€.

* chore: ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ λͺ… λ³€κ²½

- 일뢀 ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ λͺ…을 λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€.

* feat: 검증 둜직 μΆ”κ°€

- VARCHAR(100) μ΄μƒμ˜ 값을 μ €μž₯ν•  수 μ—†κ²Œ 검증 λ‘œμ§μ„ μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.
* refactor: Log νŒ¨ν‚€μ§€ μœ„μΉ˜ λ³€κ²½

- 도메인 μ½”λ“œμ™€ testμ½”λ“œλ₯Ό domain/log ν•˜μœ„λ‘œ μ΄λ™ν–ˆμŠ΅λ‹ˆλ‹€.

* feat: LogRepository μΆ”κ°€

- Logλ₯Ό μ €μž₯ν•˜λŠ” save λ©”μ„œλ“œ μΆ”κ°€
- LogIdλ₯Ό κΈ°μ€€μœΌλ‘œ Logλ₯Ό μ°ΎλŠ” findById λ©”μ„œλ“œ μΆ”κ°€

* feat: LogRepository ν…ŒμŠ€νŠΈ μΆ”κ°€

- Logλ₯Ό μ €μž₯ν•˜λŠ” save λ©”μ„œλ“œλ₯Ό ν…ŒμŠ€νŠΈ
- LogIdλ₯Ό κΈ°μ€€μœΌλ‘œ Logλ₯Ό μ°ΎλŠ” findByIdλ₯Ό ν…ŒμŠ€νŠΈ

* refactor: rowMapper μƒμˆ˜ν™”

- 맀번 λ©”μ„œλ“œλ‘œ μƒμ„±λ˜λŠ” rowMapperλ₯Ό μƒμˆ˜λ‘œ λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€.

* refactor: key에 null이 μ˜€λŠ” 경우λ₯Ό Optional chaining으둜 λ³€κ²½

* test: Repository Test μ‹œ Test Profile을 μ‚¬μš©ν•˜λ„λ‘ λ³€κ²½

* fix: findByIdμ—μ„œ 데이터가 μ—†λŠ” 경우 μ—μ™Έμ²˜λ¦¬ μΆ”κ°€

- EmptyResultDataAccessException λ°œμƒ μ‹œ Optional empty λ°˜ν™˜

* test: μ—†λŠ” Log에 λŒ€ν•œ ν…ŒμŠ€νŠΈ μΆ”κ°€

- findNonexistentLog ν…ŒμŠ€νŠΈ μΆ”κ°€
* feat: Project 생성 둜직 κ΅¬ν˜„ - μ„œλΉ„μŠ€

- Project 생성을 μ§„ν–‰ν•˜κ³  DB μ €μž₯ν›„ κ²°κ³Όλ₯Ό λ°˜ν™˜ν•˜λŠ” μ„œλΉ„μŠ€ λ‘œμ§μ„ κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.
  - μš”μ²­μ— λŒ€ν•œ λ°˜ν™˜μ€ `ProjectCreateResponse` DTOλ₯Ό 톡해 λ°˜ν™˜λ©λ‹ˆλ‹€.

- 이에 λ”°λ₯Έ ν…ŒμŠ€νŠΈλ₯Ό μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.

* chore: 클래슀 이름 λ³€κ²½

- ProjectCreateResponse -> ProjectCommonResponse

* feat: Project 쑰회 둜직 κ΅¬ν˜„ - μ„œλΉ„μŠ€

- Project μ‘°νšŒμ„ μ§„ν–‰ν•˜κ³  κ²°κ³Όλ₯Ό λ°˜ν™˜ν•˜λŠ” μ„œλΉ„μŠ€ λ‘œμ§μ„ κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.
  - 이름에 μ˜ν•œ μ‘°νšŒκ°€ μ£Όλ₯Ό 이루기 λ•Œλ¬Έμ— 인덱싱을 μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.
  - μš”μ²­μ— λŒ€ν•œ λ°˜ν™˜μ€ `ProjectCommonResponse` DTOλ₯Ό 톡해 λ°˜ν™˜λ©λ‹ˆλ‹€.
- 이에 λ”°λ₯Έ ν…ŒμŠ€νŠΈλ₯Ό μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.

* feat: Project 이름 μ—…λ°μ΄νŠΈ κΈ°λŠ₯ μΆ”κ°€

- Project 이름 μ—…λ°μ΄νŠΈ κΈ°λŠ₯을 μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.
  - 이름 검증 둜직이 μ€‘λ³΅λ˜μ–΄ `validateName` λ©”μ„œλ“œλ‘œ μΆ”μΆœν–ˆμŠ΅λ‹ˆλ‹€.
- 이에 λ”°λ₯Έ ν…ŒμŠ€νŠΈλ₯Ό μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.
- `@CreatedDate`, `@LastModifiedDate` ν™œμ„±ν™”λ₯Ό μœ„ν•œ Configuration Classλ₯Ό μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.

* feat: Project μˆ˜μ • 둜직 κ΅¬ν˜„ - μ„œλΉ„μŠ€

- Project μˆ˜μ •μ„ μ§„ν–‰ν•˜κ³  κ²°κ³Όλ₯Ό λ°˜ν™˜ν•˜λŠ” μ„œλΉ„μŠ€ λ‘œμ§μ„ κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.
  - μš”μ²­μ— λŒ€ν•œ λ°˜ν™˜μ€ `ProjectCommonResponse` DTOλ₯Ό 톡해 λ°˜ν™˜λ©λ‹ˆλ‹€.
- 이에 λ”°λ₯Έ ν…ŒμŠ€νŠΈλ₯Ό μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.

* feat: Project μ‚­μ œ 둜직 κ΅¬ν˜„ - μ„œλΉ„μŠ€

- Project μ‚­μ œλ₯Ό μ§„ν–‰ν•˜κ³  μ‚­μ œν•œ IDλ₯Ό λ°˜ν™˜ν•˜λŠ” μ„œλΉ„μŠ€ λ‘œμ§μ„ κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.
  - id 기반 쑰회 쀑볡 둜직이 μ‘΄μž¬ν•΄ λ©”μ„œλ“œλ₯Ό μΆ”μΆœν–ˆμŠ΅λ‹ˆλ‹€.
- 이에 λ”°λ₯Έ ν…ŒμŠ€νŠΈλ₯Ό μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.

* feat: Project μ„œλΉ„μŠ€ νŠΈλžœμ μ…˜ μΆ”κ°€

- Project μ„œλΉ„μŠ€ λ©”μ„œλ“œλ“€μ— λŒ€ν•΄ `@Transactional`을 μ μš©ν–ˆμŠ΅λ‹ˆλ‹€.
* config: ν”„λ‘œμ νŠΈ μ„ΈνŒ…

- npm init
- 배포λ₯Ό μœ„ν•œ wepack bundler μΆ”κ°€
- κ°œλ°œμ„ μœ„ν•œ νƒ€μž…μŠ€ν¬λ¦½νŠΈ μΆ”κ°€

* config: gitignore 파일 μΆ”κ°€

- λΉŒλ“œ 디렉터리
- node modules
- IDEA μ„€μ •νŒŒμΌ

* feat: LogBat sdk μΆ”κ°€

- κΈ°μ‘΄ console.log, console.errorλ₯Ό μž¬μ •μ˜
- app_id λ₯Ό μ΄ˆκΈ°ν™” ν•  수 μžˆλ„λ‘ μ„€μ •
- μ‚¬μš© μ˜ˆμ‹œλŠ” λ¬Έμ„œν™” μ˜ˆμ •

* fix: cosole 바인딩 문제 ν•΄κ²°

- μ΄ˆκΈ°ν™” ν•¨μˆ˜κ°€ μ—¬λŸ¬λ²ˆ ν˜ΈμΆœλ˜μ–΄ μ—¬λŸ¬λ²ˆ μ΄ˆκΈ°ν™” λ˜λŠ”κ²ƒμ„ 방지
- μ œλŒ€λ‘œ console이 μ˜€λ²„λΌμ΄λ“œ λ˜μ§€ μ•ŠλŠ” 문제 ν•΄κ²°

* cofing: ν…ŒμŠ€νŠΈ 라이브러리 μΆ”κ°€

- Jest λ„μž…

* test: SDK ν…ŒμŠ€νŠΈ μΆ”κ°€

* docs: README.md μΆ”κ°€

* fix: sdk 초기회 μ˜ˆμ‹œ λ³€κ²½
* chore: LogRepository에 잘λͺ» μ‚¬μš©ν•œ μƒμ„±μž λ³€κ²½

- AllArgsConstructorμ—μ„œ RequiredArgsConstructor둜 λ³€κ²½

* feat: CreateLogServiceRequest λ ˆμ½”λ“œ μΆ”κ°€

- Service μš”μ²­μ„ λ‹΄λ‹Ήν•˜λŠ” CreateLogServiceRequestλ₯Ό μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€γ….

* feat: Logλ₯Ό μ €μž₯ν•˜λŠ” LogService μΆ”κ°€

- Logλ₯Ό λ§Œλ“€κ³  μ €μž₯ν•˜λŠ” LogServiceλ₯Ό μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.
- AppId 검증 둜직이 이후에 μΆ”κ°€λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

* test: Logλ₯Ό μ €μž₯ν•˜λŠ” LogService에 λŒ€ν•œ ν…ŒμŠ€νŠΈ μΆ”κ°€

- Logλ₯Ό λ§Œλ“€κ³  μ €μž₯ν•˜λŠ” LogService에 λŒ€ν•œ ν…ŒμŠ€νŠΈλ₯Ό μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.
- AppId 검증 λ‘œμ§μ— λŒ€ν•œ ν…ŒμŠ€νŠΈκ°€ μΆ”κ°€λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

* feat: Controller의 μš”μ²­μ„ λ°›κΈ° μœ„ν•΄ CreateLogRequestλ₯Ό μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.

- logLevel은 `@NotBlank`λ₯Ό 톡해 κ²€μ¦ν–ˆμŠ΅λ‹ˆλ‹€.
- logDataλ₯Ό `@NotBlank`λ₯Ό 톡해 κ²€μ¦ν–ˆμŠ΅λ‹ˆλ‹€.
- LocalDateTime을 `@NotNull`λ₯Ό 톡해 κ²€μ¦ν–ˆμŠ΅λ‹ˆλ‹€.

* feat: 컨트둀러 Requestμ—μ„œ CreateLogServiceRequestλ³€ν™˜ν•˜λŠ” 정적 νŒ©ν† λ¦¬ λ©”μ„œλ“œ μΆ”κ°€

- Headerμ—μ„œ λ°›μ•„μ˜¨ applicationId와 Controller Requestλ₯Ό νŒŒλΌλ―Έν„°λ‘œ λ°›μ•„μ„œ λ§Œλ“€λ„λ‘ κ΅¬ν˜„

* refactor: CreateLogRequestλ₯Ό λ ˆμ½”λ“œλ₯Ό μ‚¬μš©ν•˜λ„λ‘ λ³€κ²½

- CreateLogRequestλ₯Ό λ ˆμ½”λ“œλ‘œ λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€.
- CreateLogServiceRequest의 ofλ©”μ„œλ“œλ₯Ό νŒŒλΌλ―Έν„° λ³€κ²½

* config: build.gradle에 validation μΆ”κ°€

* feat: LogController μΆ”κ°€

- applicationId에 λŒ€ν•΄ Positive, NotNull Validation μΆ”κ°€
- CreateLogRequest에 λŒ€ν•΄ Validation μΆ”κ°€

* test: Cntroller ν…ŒμŠ€νŠΈ ν™˜κ²½ 톡합을 μœ„ν•΄ ControllerTestSupport μΆ”κ°€

* test: LogController에 λŒ€ν•œ λ‹¨μœ„ ν…ŒμŠ€νŠΈ μΆ”κ°€

- μœ νš¨ν•œ μž…λ ₯ κ°’μœΌλ‘œ 둜그 생성 성곡 ν…ŒμŠ€νŠΈ.
- app_id λˆ„λ½ μ‹œ 400 Bad Request λ°˜ν™˜ ν…ŒμŠ€νŠΈ.
- 음수 app_id에 λŒ€ν•œ 400 Bad Request λ°˜ν™˜ ν…ŒμŠ€νŠΈ.
- logLevel 및 logData ν•„λ“œμ— λŒ€ν•œ null 및 빈 λ¬Έμžμ—΄ μž…λ ₯ μ‹œ 400 Bad Request λ°˜ν™˜ ν…ŒμŠ€νŠΈ.
- timestamp λˆ„λ½ μ‹œ 400 Bad Request λ°˜ν™˜ ν…ŒμŠ€νŠΈ.

* refactor: Transactional importλ₯Ό jakartaμ—μ„œ springframework둜 λ³€κ²½

* refactor: logControllerμ—μ„œ prefix logsλŠ” RequestMapping을 μ‚¬μš©ν•˜λ„λ‘ μˆ˜μ •

- `@RequestMapping("/logs")`와 `@PostMapping`을 μ‚¬μš©ν•˜κ²Œ μˆ˜μ •

* feat: Validationμ—μ„œ message μΆ”κ°€ν•˜λ„λ‘ λ³€κ²½

- LogController의  applicationId에 메세지 μΆ”κ°€
- CreateLogRequest의 Validation에 메세지 μΆ”κ°€

* feat: Logλ₯Ό μƒμ„±ν•˜λŠ” of 정적 νŒ©ν„°λ¦¬ λ©”μ„œλ“œ μΆ”κ°€

- LogServiceμ—μ„œ Logλ₯Ό 생성 μ‹œ of νŒ©ν„°λ¦¬ λ©”μ„œλ“œλ₯Ό μ΄μš©ν•˜λ„λ‘ λ³€κ²½
* feat: AppType Enum κ΅¬ν˜„

- App Type ꡬ뢄을 μœ„ν•œ Enum을 κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.
- ν…ŒμŠ€νŠΈλ₯Ό μ§„ν–‰ν–ˆμŠ΅λ‹ˆλ‹€.

* feat: App 도메인 μ—”ν‹°ν‹° κ΅¬ν˜„

- App 도메인 μ—”ν‹°ν‹°λ₯Ό κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.
  - App 생성 μ‹œ 전달받은 μΈμžκ°€ 없을 경우 μ˜ˆμ™Έλ₯Ό λ°˜ν™˜ν•˜λŠ” κ²€μ¦λ‘œμ§μ„ μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.
  - 이에 λ”°λ₯Έ ν…ŒμŠ€νŠΈλ₯Ό μ§„ν–‰ν–ˆμŠ΅λ‹ˆλ‹€.
* fix: λΈŒλΌμš°μ €μ—μ„œ λ™μž‘ κ°€λŠ₯ν•˜κ²Œ κ°œμ„ 

- λΈŒλΌμš°μ € ν˜Έν™˜

* fix: endpoint λ³€κ²½
* fix: http header에 언더바 λŒ€μ‹  ν•˜μ΄ν”ˆ μ‚¬μš©ν•˜λ„λ‘ μˆ˜μ •

- nginxμ—μ„œ μ–Έλ”λ°”λŠ” 걸러짐

* test: http header에 언더바 λŒ€μ‹  ν•˜μ΄ν”ˆ μ‚¬μš©ν•˜λ„λ‘ μˆ˜μ •

- nginxμ—μ„œ μ–Έλ”λ°”λŠ” 걸러짐

* fix: Http header에 "_"κ°€ ν¬ν•¨λ˜μ§€ μ•Šλ„λ‘ λ³€κ²½

- "app_id" -> "app-id"

---------

Co-authored-by: luizy <[email protected]>
* feat: App token μΆ”κ°€

- App μƒμ„±μ‹œ UUID 기반 토큰이 μƒμ„±λ˜λ„λ‘ ν–ˆμŠ΅λ‹ˆλ‹€.
- 이에 λ”°λ₯Έ ν…ŒμŠ€νŠΈλ₯Ό μˆ˜μ •ν–ˆμŠ΅λ‹ˆλ‹€.

* feat: App 생성 둜직 κ΅¬ν˜„ - μ„œλΉ„μŠ€

- App 생성을 μ§„ν–‰ν•˜κ³  DB μ €μž₯ν›„ κ²°κ³Όλ₯Ό λ°˜ν™˜ν•˜λŠ” μ„œλΉ„μŠ€ λ‘œμ§μ„ κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.
  - μš”μ²­μ— λŒ€ν•œ λ°˜ν™˜μ€ `AppCommonResponse` DTOλ₯Ό 톡해 λ°˜ν™˜λ©λ‹ˆλ‹€.

* feat: App 쑰회 둜직 κ΅¬ν˜„ - μ„œλΉ„μŠ€

- Token을 ν™œμš©ν•΄ App을 μ‘°νšŒν•˜λŠ” λ‘œμ§μ„ κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.
- IDλ₯Ό ν™œμš©ν•΄ App을 μ‘°νšŒν•˜λŠ” λ‘œμ§μ„ κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.
- 이에 λ”°λ₯Έ ν…ŒμŠ€νŠΈλ₯Ό μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.

* chore: 인덱싱 μΆ”κ°€

- 토큰 기반 쑰회 쿼리 μ„±λŠ₯ ν–₯상을 μœ„ν•΄ 인덱싱을 λͺ…μ‹œν–ˆμŠ΅λ‹ˆλ‹€.

* feat: App μ‚­μ œ 둜직 κ΅¬ν˜„ - μ„œλΉ„μŠ€

- App μ‚­μ œλ₯Ό μ§„ν–‰ν•˜κ³  μ„±κ³΅μ‹œ μ‚­μ œν•œ App Idλ₯Ό λ°˜ν™˜ν•˜λ„λ‘ ν–ˆμŠ΅λ‹ˆλ‹€.

* feat: App μ„œλΉ„μŠ€ νŠΈλžœμ μ…˜ μΆ”κ°€

- App μ„œλΉ„μŠ€ λ©”μ„œλ“œλ“€μ— λŒ€ν•΄ `@Transactional`을 μ μš©ν–ˆμŠ΅λ‹ˆλ‹€.
* chore: λ©”μ„œλ“œ νŒŒλΌλ―Έν„° λ³€κ²½

- ProjectService.updateProjectValues의 νŒŒλΌλ―Έν„°λ₯Ό λ³€κ²½ν–ˆμŠ΅λ‹ˆλ‹€.

* feat: 곡톡 응닡 규격 κ΅¬ν˜„

- 곡톡 응닡 규격인 ApiCommonResponseλ₯Ό κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.

* feat: Project Controller κ΅¬ν˜„

- Project API Controllerλ₯Ό κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€. (URI: `/v1/projects`)
  - GET `/{name}`: ν”„λ‘œμ νŠΈ 쑰회
  - POST `/`: ν”„λ‘œμ νŠΈ 생성
  - PUT `/{id}`: ν”„λ‘œμ νŠΈ μˆ˜μ •
  - DELETE `/{id}`: ν”„λ‘œμ νŠΈ 제거

* test: Project Controller ν…ŒμŠ€νŠΈ

- `@WebMvcTest` 기반 ProjectController ν…ŒμŠ€νŠΈλ₯Ό μ§„ν–‰ν–ˆμŠ΅λ‹ˆλ‹€.

* chore: ControllerTestSupport μˆ˜μ •

- ProjectService MockBean 이동
Copy link

github-actions bot commented Aug 13, 2024

Risk Level 4 - /home/runner/work/Team5-Guys/Team5-Guys/index_test.ts

  1. API Key Exposure: The appId is being set as a static property and can be exposed if not handled properly. Consider using environment variables or a secure vault to manage sensitive information.

  2. Error Handling: The error handling in the sendLog method could be improved. Instead of just logging the error, consider implementing a retry mechanism or a fallback strategy to ensure logs are not lost.

  3. Console Method Override: The overridden console methods could lead to unexpected behavior if other parts of the application rely on the original console methods. Ensure that this is well-documented and consider providing a way to restore the original methods if needed.


πŸ”’πŸ“ˆβš οΈ


Powered by Code Review GPT

@tidavid1 tidavid1 deleted the branch dev August 14, 2024 03:55
@tidavid1 tidavid1 closed this Aug 14, 2024
@LuizyHub LuizyHub changed the title Test PR [πŸ’‘ FEAT] AI μ½”λ“œ 리뷰 λ„μž… V2 #46 Aug 14, 2024
@LuizyHub LuizyHub changed the title [πŸ’‘ FEAT] AI μ½”λ“œ 리뷰 λ„μž… V2 #46 Feat#46 [πŸ’‘ FEAT] AI μ½”λ“œ 리뷰 λ„μž… V2 Aug 14, 2024
@LuizyHub LuizyHub changed the title Feat#46 [πŸ’‘ FEAT] AI μ½”λ“œ 리뷰 λ„μž… V2 Feat/#46 [πŸ’‘ FEAT] AI μ½”λ“œ 리뷰 λ„μž… V2 Aug 14, 2024
@LuizyHub LuizyHub requested a review from a team August 14, 2024 07:18
@LuizyHub LuizyHub self-assigned this Aug 14, 2024
@LuizyHub LuizyHub added πŸš€ Config μ˜μ‘΄μ„± 관리, λΉŒλ“œ, 배포 λ“± 개발 ν™˜κ²½μ— κ΄€λ ¨λœ μž‘μ—… ⭐️ Feat μƒˆλ‘œμš΄ κΈ°λŠ₯μ΄λ‚˜ μš”μ²­ labels Aug 14, 2024
@LuizyHub LuizyHub reopened this Aug 14, 2024
Copy link
Member

@miiiinju1 miiiinju1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good

Copy link
Member

@tidavid1 tidavid1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

πŸ‘πŸ»

@LuizyHub LuizyHub closed this Aug 14, 2024
@LuizyHub LuizyHub deleted the Feat/#46 branch August 14, 2024 08:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
πŸš€ Config μ˜μ‘΄μ„± 관리, λΉŒλ“œ, 배포 λ“± 개발 ν™˜κ²½μ— κ΄€λ ¨λœ μž‘μ—… ⭐️ Feat μƒˆλ‘œμš΄ κΈ°λŠ₯μ΄λ‚˜ μš”μ²­
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants