벌크 이메일 초대 기능
ID: c2083743-9c69-4d77-9f90-8f60afde36b7
## 목표
여러 이메일을 한 번에 등록하고 초대 발송하는 벌크 초대 기능 구현
## 구현 내용
1. InvitationsController에 bulk_create 액션 추가
- POST /workspaces/:workspace_id/invitations/bulk_create
- 여러 이메일을 쉼표/줄바꿈으로 구분하여 받음
- 각 이메일에 대해 초대 생성 + 이메일 발송
- 성공/실패 카운트 flash 메시지
2. InvitationService에 bulk_create! 메서드 추가
- emails 배열, workspace, params(role, expires, group 등), created_by
- 이메일 유효성 검사 (형식, 중복, 이미 초대된 이메일)
- 각 이메일에 대해 create! 호출 (개별 에러 처리)
- 결과 반환: { success: [...], failed: [...] }
3. 벌크 입력 UI (index.html.erb의 Email Invite 탭 수정)
- textarea로 다수 이메일 입력 (쉼표 또는 줄바꿈 구분)
- 기존 단일 이메일 입력도 유지
- "벌크 초대" 토글/탭으로 전환
- 입력된 이메일 수 실시간 카운트 표시 (Stimulus)
4. Stimulus 컨트롤러 (bulk_invite_controller.js)
- textarea 입력 시 이메일 수 카운트
- 이메일 유효성 클라이언트 검증
5. 라우트 추가
- config/routes.rb에 collection route: post :bulk_create
6. 테스트 작성
- test/controllers/workspaces/invitations_controller_bulk_test.rb
- InvitationService bulk_create! 테스트
## 담당 파일 (이 파일만 수정)
- MODIFY: app/controllers/workspaces/invitations_controller.rb (bulk_create 액션 추가)
- MODIFY: app/views/workspaces/invitations/index.html.erb (벌크 UI 추가)
- MODIFY: config/routes.rb (bulk_create route만)
- NEW: app/javascript/controllers/bulk_invite_controller.js
- MODIFY: app/services/workspaces/invitation_service.rb (bulk_create! 메서드만 추가)
- NEW: test/controllers/workspaces/invitations_controller_bulk_test.rb
## 주의사항
- mailer-dev가 InvitationService.create!에 이메일 발송을 추가하므로, bulk_create!는 기존 create!를 내부적으로 호출하면 됨
- config/locales는 수정하지 마세요 (status-dev가 담당)
## 완료 기준
- 여러 이메일을 한 번에 입력하여 초대 생성 가능
- 각 이메일에 개별적으로 초대 이메일 발송됨
- 유효하지 않은 이메일은 건너뛰고 결과 보고
- 테스트 통과
첨부 이미지
이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)
JPEG, PNG, GIF, WebP / 최대 10MB
활동 로그
-
팀팀리드 상태 변경: 리뷰 → 완료
2026년 02월 28일 07:40:40
-
Bbulk-dev 상태 변경: 할 일 → 리뷰
2026년 02월 28일 07:22:54
-
Bbulk-dev 벌크 이메일 초대 기능 구현 완료
2026년 02월 28일 07:22:53
상세 보기
## 변경 사항
### 1. InvitationService (app/services/workspaces/invitation_service.rb)
- `bulk_create!` 메서드 추가: 여러 이메일을 한번에 초대, 성공/실패 결과 반환
- `parse_emails` 메서드 추가: 쉼표/세미콜론/줄바꿈/공백으로 이메일 파싱, 중복 제거, 형식 검증### 2. InvitationsController (app/controllers/workspaces/invitations_controller.rb)
- `bulk_create` 액션 추가: bulk_create! 호출 후 결과에 따른 flash 메시지 표시### 3. 라우트 (config/routes.rb)
- `post :bulk_create, on: :collection` 추가### 4. UI (app/views/workspaces/invitations/index.html.erb)
- 이메일 탭 내 "Or bulk invite" 구분선 추가
- textarea로 여러 이메일 입력 가능
- 역할/그룹 선택 옵션
- 이메일 카운트 실시간 표시### 5. Stimulus (app/javascript/controllers/bulk_invite_controller.js)
- textarea 입력 시 이메일 수 실시간 카운트
- 이메일 없으면 제출 버튼 비활성화### 6. 테스트 (test/controllers/workspaces/invitations_controller_bulk_test.rb)
- 8개 테스트 모두 통과
- 다중 이메일, 줄바꿈/세미콜론 구분, 중복 제거, 무효 이메일 무시, 빈 텍스트, 권한 검증, 역할 지정 -
Bbulk-dev 벌크 이메일 초대 기능 작업 시작
2026년 02월 28일 07:19:08
상세 보기
## 작업 범위
- InvitationService에 bulk_create! 메서드 추가
- InvitationsController에 bulk_create 액션 추가
- 라우트 추가
- 벌크 UI (textarea + 카운트)
- Stimulus 컨트롤러
- 테스트 작성