프로젝트

일반

사용자정보

Actions

오류 #66

완료됨
백대 백대

[DEF-iOS-TGFU-019] 알림 내역에 영문/국문이 혼용으로 표시되는 현상

오류 #66: [DEF-iOS-TGFU-019] 알림 내역에 영문/국문이 혼용으로 표시되는 현상

백대선이(가) 21일 전에 추가함. 19일 전에 수정됨.

상태:
완료
우선순위:
보통
담당자:
시작일:
2026/05/06
완료일:
진척도:

100%

추정시간:

설명

결함 ID: DEF-iOS-TGFU-019
환경: iPhone Air
화면: 홈 > 알림
원본 등록일: 2026-05-03 (QA: 품생품사)
QA 우선순위: Major

사전 조건

트래커 연결된 상태

시나리오

  1. 임의 트래커 상태를 변경한다.
  2. 수신된 알림을 확인한다.

실제 결과

알림 내역에 영문/국문 혼용으로 표시됩니다.

기대 결과

시스템 설정 언어로만 표시되어야 합니다.

비고

  • Minor 010 (인증 완료 토스트 영문), Minor 022 (기기 연결 영문)와 함께 묶어 일괄 처리 가능

백대 백대선이(가) 20일 전에 변경 Actions #1

분석 결과 — 백엔드 의존 결함으로 별도 처리 필요합니다.

클라이언트 현황:

  • lib/screens/settings/push_history.dartpushHistoryService.dart 가 서버 알림 title / body 를 가공 없이 그대로 표시
  • FCM RemoteMessage.notification.titlebody 를 받아 SQLite 에 저장 후 알림 내역 화면에서 그대로 출력

필요한 백엔드 변경:

  • 알림 발송 시 사용자 언어 설정 (예: users.preferred_language) 을 참조하여
    title / body 를 해당 언어로 발송
  • 또는 다국어 키 구조 (예: notification_type: 'tracker_status', params: {...}) 를 페이로드에 포함해
    클라이언트가 locale 매핑

대안 (클라이언트 layer):

  • LanguageController 에 영문 알림 키워드 → 한국어 매핑 테이블 추가 (rule-based)
  • 단, 알림 종류가 많아 유지보수 부담 큼 → 백엔드 측 처리 권장

현재 status: 보고 유지 (백엔드 협업 대기)

백대 백대선이(가) 20일 전에 변경 Actions #2

백엔드와 옵션 2 (notification_type + params 페이로드) 합의 완료 — 다음 sprint 작업 예정.

합의 내역 (2026-05-07):

  • 옵션 A (Backend i18n): 발송 시점 사용자 언어 기준 다국어 발송 — 이미 ~90% 구현됨 (백엔드 커밋 6f94053)
  • 옵션 2 (notification_type + params): 알림 내역 (tbl_push_history) 영문 저장 정책 → 페이로드에 type/params 추가하여 클라이언트 i18n 전환

작업 분담:
백엔드 (즉시 — 현 sprint):

  • sos.ts:80, 97, 114 FIND ME 영문 하드코딩 픽스 → getTranslatedMessage() 통일
  • dev 배포 후 커밋 해시 공유

백엔드 (다음 sprint):

  • tbl_push_history 스키마 확장 (notificationType String?, params Json?)
  • N개 발송 코드 수정 (notificationType + params 함께 저장)
  • GET /api/users/push/history 응답에 두 필드 추가
  • (선택) GET /api/admin/push-log/:userSeq 신설 — tbl_push_notification_log 조회 디버깅용

클라이언트 (현 sprint):

  • 클라이언트 sync 로직은 100% 구현됨 (추가 작업 불필요)
    • lib/controllers/language_controller.dart 가 PUT /api/user/language 호출 시점 모두 처리:
      • 앱 시작 (첫 실행) _loadSavedLanguage:110-112
      • 앱 시작 (매 실행) idempotent sync _loadSavedLanguage:115-116
      • 사용자 명시 변경 changeLanguage:211
  • 4개 언어 회귀 검증 시나리오 준비 (claudedocs/2026-05-07-def019-final-agreement.md 4번 항목)

클라이언트 (다음 sprint):

  • lib/models/pushHistory.dart 모델 확장
  • push_history.dart 표시 로직: notificationType 있으면 locale 키 변환, 없으면 fallback
  • assets/languages/*.json 4개 파일에 pushHistory.<type>.{title,body} 키 추가

제안 notificationType 후보 (백엔드 SPEC 작성 시 참조):
trackerBatteryLow, intrusionDetected, theftDetected, findMeReceived, findMeArrived, sosActivated, sosDeactivated, roadlineDeparted, friendRequest, guardianLocationShared, senderConfirmFindme/Theft/Intrusion

다음 액션:

  1. 백엔드 sos.ts 픽스 dev 배포 → 클라이언트 회귀 검증
  2. 다음 sprint 시작 전 옵션 2 SPEC 미팅 (디스코드/미팅 일정 협의)
  3. SPEC 확정 후 양측 동시 작업

본 이슈 status 보고 유지 — 양측 작업 완료 후 개발서버 → 완료 전환 예정.

전체 분석 + 합의 내용은 다음 문서 참조:

  • claudedocs/2026-05-07-def019-backend-i18n-request.md (1차 요청)
  • claudedocs/2026-05-07-def019-frontend-reply.md (회신)
  • claudedocs/2026-05-07-def019-final-agreement.md (최종 합의)

백대 백대선이(가) 20일 전에 변경 Actions #3

  • 상태을(를) 보고에서 완료(으)로 변경되었습니다.
  • 진척도을(를) 0에서 100(으)로 변경되었습니다.

백엔드에서 처리 완료 (알림 다국어 처리). 완료 처리합니다.

Actions

내보내기 PDF Atom