Repository navigation
fix: 수정 심사 승인 시 승인자 언어로 잘못된 번역 컬럼이 덮어써지는 문제 수정 - #59
Merged
Merged
Conversation
modeltranslation의 원본 필드(nickname, title, summary, description, biography)는 현재 활성 언어로 라우팅되는 descriptor다. 수정 요청 시 저장되는 diff에는 원본 필드와 언어별 컬럼이 함께 담기는데, apply_diff_to_model이 원본 필드까지 setattr 하면서 '승인 시점의 언어'로 값이 적용되고 있었다. 어드민 클라이언트는 language를 넘기지 않아 Accept-Language가 항상 ko이고 (useAdminAPI.ts의 useBackendAdminClient), 참가자 포탈은 사용자가 선택한 언어를 보낸다. 그래서 영문 UI로 수정을 요청한 참가자의 심사를 승인하면 영문 값이 한글 컬럼을 덮어썼다. - apply_diff_to_model이 modeltranslation 원본 필드를 건너뛰고 언어별 실제 컬럼 (nickname_ko/nickname_en 등)만 적용하도록 수정 - 승인 처리를 transaction.atomic으로 묶어, 여러 모델에 걸친 수정이 중간에 실패했을 때 일부만 반영된 채 심사 상태가 requested로 남는 문제 방지 diff 스냅샷 자체는 그대로 두어 심사 미리보기(fake_modified_instance) 동작에는 영향이 없다. Signed-off-by: JaehyuckSa <jaehyuck.sa.dev@gmail.com>
- 자명한 주석 제거, 핵심 근거 주석만 한 줄로 축약 - participant_portal_api/test에 누락된 __init__.py 추가 - 테스트 내 지역 import를 상위로 이동, 불필요한 db fixture 제거 Signed-off-by: JaehyuckSa <jaehyuck.sa.dev@gmail.com>
수정 전에도 통과하던(= 이 버그를 잡지 못하는) 테스트 6건 제거하고, 회귀 감지에 필요한 4건만 남긴다. - 헬퍼 반환값만 단언하던 테스트 2건 제거 - 승인 후 상태 전이/타 언어 무관 반영 등 기존 동작 테스트 4건 제거 - 테스트 및 헬퍼 docstring 전부 제거 Signed-off-by: JaehyuckSa <jaehyuck.sa.dev@gmail.com>
Signed-off-by: JaehyuckSa <jaehyuck.sa.dev@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
배경
modeltranslation의 원본 필드(nickname,title,summary,description,biography)는 현재 활성 언어로 라우팅되는 descriptor입니다. 수정 요청 시 저장되는 diff에는 원본 필드와 언어별 컬럼이 함께 담기는데,apply_diff_to_model이 원본 필드까지setattr하면서 diff를 만든 시점의 언어가 아니라 승인 시점의 언어로 값이 적용되고 있었습니다.useAdminAPI.ts의useBackendAdminClient)는language를 넘기지 않아Accept-Language가 항상ko이고, 참가자 포탈(useParticipantPortalAPI.ts)은 사용자가 선택한 언어(ko/en)를 보냅니다. 따라서 영문 UI로 수정을 요청한 참가자의 심사를 승인할 때 상시 발생합니다.재현 절차
en)으로 전환 후 영문 닉네임만 수정 요청nickname_en은 정상 반영되지만nickname_ko까지 영문 값으로 덮어써짐영향 범위
프로필(
UserExt.nickname)뿐 아니라 발표 심사 전체에 해당합니다 —Presentation.title/summary/description,PresentationSpeaker.biography모두 번역 등록 필드입니다.참고: 본 PR은 위와 같이 재현·검증된 로케일 의존 버그를 수정합니다. Slack으로 제보된 특정 심사 건이 이 원인인지는 프로덕션 데이터 확인 전까지 미확정이며, 해당 건은 별도로 확인이 필요합니다.
AS-IS
apply_diff_to_model이 diff의 모든 필드를 그대로setattr하여, 번역 원본 필드가 승인자의 활성 언어 컬럼에 기록됩니다.ko로 승인한글이름→NewEnglish❌NewEnglish✅en으로 승인새한글이름✅EnglishName→새한글이름❌또한 승인 처리에 트랜잭션이 없어, 발표+발표자처럼 여러 모델에 걸친 수정이 중간에 실패하면 일부만 반영된 채 심사 상태가
requested로 남습니다.TO-BE
nickname_ko/nickname_en등)만 적용합니다.transaction.atomic으로 묶어 부분 반영을 방지합니다.fake_original_instance/fake_modified_instance) 동작에는 영향이 없습니다.