멤버 승인 상태 표시 및 i18n
ID: 1bcfa5ea-4a91-479d-8ac5-96678a22388b
## 목표
이메일 초대 목록에서 해당 멤버의 수락(승인) 여부를 표시
## 구현 내용
1. WorkspaceInvitation 모델에 승인 상태 확인 헬퍼 추가
- accepted? 메서드: target_email의 사용자가 해당 워크스페이스의 멤버인지 확인
- accepted_member 메서드: 수락한 멤버 객체 반환
- 로직: User.find_by(email: target_email) → workspace.workspace_members.exists?(user: user)
2. _invitation.html.erb 수정 - 승인 상태 배지 추가
- "Pending" (노란색 배지): 아직 수락하지 않음
- "Accepted" (초록색 배지): 멤버로 수락됨
- 수락한 경우 사용자 이름도 표시
- 상태에 따른 아이콘 표시 (체크마크 / 시계)
3. i18n 키 추가 (모든 로케일 파일)
- config/locales/en.yml
- config/locales/ko.yml
- config/locales/zh.yml
- config/locales/vi.yml
추가할 키:
- invitations.status.pending: "대기 중" / "Pending" / "待处理" / "Đang chờ"
- invitations.status.accepted: "수락됨" / "Accepted" / "已接受" / "Đã chấp nhận"
- invitations.resend: "재발송" / "Resend" / "重新发送" / "Gửi lại"
- invitations.bulk_invite: "벌크 초대" / "Bulk Invite" / "批量邀请" / "Mời hàng loạt"
- invitations.bulk_placeholder: 적절한 안내 텍스트
- invitations.bulk_submit: "벌크 발송" / "Send Bulk" / "批量发送" / "Gửi hàng loạt"
- invitations.flash.bulk_result: "N건 성공, M건 실패"
- invitations.flash.resent: "초대 이메일을 재발송했습니다"
4. 테스트 작성
- test/models/workspace_invitation_test.rb에 accepted? 테스트 추가
## 담당 파일 (이 파일만 수정)
- MODIFY: app/models/workspace_invitation.rb
- MODIFY: app/views/workspaces/invitations/_invitation.html.erb
- MODIFY: config/locales/en.yml
- MODIFY: config/locales/ko.yml
- MODIFY: config/locales/zh.yml
- MODIFY: config/locales/vi.yml
- MODIFY: test/models/workspace_invitation_test.rb
## 완료 기준
- 이메일 초대 목록에서 각 초대의 수락 상태가 표시됨
- Pending/Accepted 배지가 올바르게 표시됨
- 4개 언어 i18n 키 추가됨
- 테스트 통과
첨부 이미지
이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)
JPEG, PNG, GIF, WebP / 최대 10MB
활동 로그
-
팀팀리드 상태 변경: 리뷰 → 완료
2026년 02월 28일 07:40:42
-
Sstatus-dev 상태 변경: 진행 중 → 리뷰
2026년 02월 28일 07:25:14
-
Sstatus-dev 멤버 승인 상태 표시 및 i18n 구현 완료
2026년 02월 28일 07:25:08
상세 보기
## 변경 사항
### 1. WorkspaceInvitation 모델 (`app/models/workspace_invitation.rb`)
- `accepted?` 메서드 추가: target_email의 사용자가 워크스페이스 멤버인지 확인
- `accepted_member` 메서드 추가: 수락한 멤버 객체 반환### 2. _invitation.html.erb 뷰 수정
- 이메일 초대에 승인 상태 배지 추가
- Accepted: 초록색 배지 + 체크 아이콘 + 사용자 이름
- Pending: 주황색 배지 + 시계 아이콘
- N+1 방지를 위해 accepted_member 로컬 변수 캐싱### 3. i18n 키 추가 (en/ko/zh/vi)
- `invitations.status.pending` / `accepted`
- `invitations.resend`, `resend_tooltip`
- `invitations.bulk_invite`, `bulk_placeholder`, `bulk_submit`, `bulk_email_count`
- `invitations.flash.bulk_result`, `resent`
- `invitations.mailer.invitation_email.*` (subject, greeting, body, action, expiry)### 4. 테스트 추가 (`test/models/workspace_invitation_test.rb`)
- accepted? 테스트 4건 (멤버/비멤버/blank/존재하지만비멤버)
- accepted_member 테스트 3건 (멤버/비수락/blank)
- 전체 25건 통과 -
Sstatus-dev 멤버 승인 상태 표시 및 i18n 작업 시작
2026년 02월 28일 07:19:40
-
Sstatus-dev 티켓 클레임 완료
2026년 02월 28일 07:19:36