SCKorea / sc-backend

스타시티즌에 대한 한국어 패치를 배포하고 게임 뉴스를 DeepL 기반으로 번역하여 제공하는 서비스
https://sc.galaxyhub.kr/
1 stars 0 forks source link

feat: 번역 도메인 API, 엔티티 설계 (#54) #55

Closed seokjin8678 closed 11 months ago

seokjin8678 commented 11 months ago

관련 이슈

PR 세부 내용

번역 도메인의 API와 엔티티를 우선 설계했습니다.

엔티티

번역 요청을 비동기로 처리하기 위해 엔티티의 이름을 TranslateProgression로 하였습니다. TranslateProgression을 한글로 풀어서 표현한다면 번역 진행 상태가 어울릴 것 같은데, 어떤 이름으로 부르는게 좋을까요..?

또한 뉴스가 중복으로 번역되는 것을 막기 위해 newsId, destinationLanguage를 복합 유니크 인덱스로 설정하였습니다.

message 컬럼은 번역에 실패했을 때 어떤 사유로 번역에 실패했는지 알려주기 위한 컬럼이라고 보시면 됩니다. (타임아웃, 연결 실패, 비용 초과 등)

translationStatus 컬럼으로 번역의 상태를 나타내었습니다. (진행중, 완료, 에러) 에러 보다는 실패(failure)로 할 걸 그랬나 싶네요. 😂

번역 재요청을 하려면 번역의 상태가 실패일때만 진행할 수 있게 비즈니스 로직을 작성할 수 있을 것 같습니다!

API

/api/v1/translation/{newsId} URI로 번역할 언어(destinationLanguage)를 Body에 담아 POST 요청을 보내면 번역 진행 상태의 식별자를 반환합니다. 이때 응답은 200 OK가 아닌, 201 CREATE로 하였습니다. (새로운 자원이 생성되므로)

/api/v1/translation/{translateProgressionId}에 GET 요청을 보내면, 번역 진행 상태의 정보를 반환합니다.


결론은 번역 요청을 보내는 기능을 구현하기 전에 도메인 용어부터 확실하게 정하고 가면 좋을 것 같습니다!

github-actions[bot] commented 11 months ago

Test Results

17 files  17 suites   2s :stopwatch: 46 tests 46 :white_check_mark: 0 :zzz: 0 :x: 58 runs  58 :white_check_mark: 0 :zzz: 0 :x:

Results for commit dfcfb3f1.

Laeng commented 11 months ago

저는 TranslateProgression도 마음에 듭니다! 도메인 용어는 정해주시는 대로 따라가겠습니다! 헤헤