기도 동역자 시스템 (PrayerPartner + 검색/요청/수락)

ID: 95ca71a8-3c7d-41ae-88e6-aa8fcbcfd21a

높음 완료

## 목표
PrayerPartner 모델을 생성하고 동역자 검색, 요청 보내기, 수락/거절, 동역자 기도제목 공유 기능 구현

## 모델
### PrayerPartnership (중간 테이블)
- requester_id: UUID FK → users (요청 보낸 사람)
- receiver_id: UUID FK → users (요청 받은 사람)
- status: integer enum (pending: 0, accepted: 1, rejected: 2)
- INDEX: (requester_id, receiver_id) UNIQUE
- 자기 자신 요청 방지: validate requester != receiver

## 컨트롤러
### PrayerPartnersController
- index: 내 동역자 목록 (accepted) + 받은 요청 (pending)
- search: 동역자 검색 (params[:q] → email/nickname LIKE)
- create: 동역자 요청 보내기 (requester=current_user, receiver=params[:user_id])
- accept: 요청 수락 (status → accepted)
- reject: 요청 거절 (status → rejected)
- destroy: 동역자 관계 삭제
- partner_prayers: 특정 동역자의 공개 기도제목 조회

## 뷰
- index: 동역자 목록 + 받은 요청 + 검색
- _partner_card: 동역자 카드 (아바타, 닉네임, 상태)
- _request_card: 요청 카드 (수락/거절 버튼)
- partner_prayers: 동역자 기도제목 목록

## 파일 담당
- 수정 가능: app/models/prayer_partnership.rb, app/models/user.rb (has_many 추가), db/migrate/*, app/controllers/prayer_partners_controller.rb, app/views/prayer_partners/*, test/*
- 수정 금지: config/routes.rb (social-dev가 관리)

## 테스트
- 모델: PrayerPartnership validations, self-request 방지
- 컨트롤러: index, search, create, accept, reject, destroy, partner_prayers

첨부 이미지

이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)

JPEG, PNG, GIF, WebP / 최대 10MB

담당자: partner-dev
생성일: 2026년 03월 02일 04:00

활동 로그

  • 팀리드 상태 변경: 리뷰 → 완료

    2026년 03월 02일 04:07:23

  • P
    partner-dev 상태 변경: 진행 중 → 리뷰

    2026년 03월 02일 04:06:08

  • P
    partner-dev 기도 동역자 시스템 구현 완료

    2026년 03월 02일 04:06:08

    상세 보기

    ## 생성된 파일
    - `db/migrate/20260302140000_create_prayer_partnerships.rb` - 마이그레이션 (UUID PK, unique index)
    - `app/models/prayer_partnership.rb` - 모델 (enum, validations, scopes, partner_of)
    - `app/controllers/prayer_partners_controller.rb` - 컨트롤러 (index, search, create, accept, reject, destroy, prayers)
    - `app/views/prayer_partners/index.html.erb` - 동역자 목록 (받은 요청, 보낸 요청, 내 동역자)
    - `app/views/prayer_partners/search.html.erb` - 동역자 검색 (이메일/닉네임)
    - `app/views/prayer_partners/prayers.html.erb` - 동역자 기도제목 조회
    - `app/views/prayer_partners/_partner_card.html.erb` - 동역자 카드 파셜
    - `app/views/prayer_partners/_request_card.html.erb` - 요청 카드 파셜
    - `test/fixtures/prayer_partnerships.yml` - 테스트 fixture
    - `test/models/prayer_partnership_test.rb` - 모델 테스트 13개
    - `test/controllers/prayer_partners_controller_test.rb` - 컨트롤러 테스트 15개

    ## 수정된 파일
    - `app/models/user.rb` - sent_partnerships, received_partnerships 연관관계 추가
    - `test/fixtures/prayer_requests.yml` - admin_partners_prayer fixture 추가

    ## 테스트 결과
    - 전체: 297 runs, 677 assertions
    - 신규 테스트 28개 전부 통과
    - 기존 실패 1개 (Qt::MeditationsControllerTest - 기존 이슈, 본 작업과 무관)

    ## 주요 기능
    - 동역자 검색 (이메일/닉네임 LIKE, SQL injection 방지)
    - 동역자 요청 보내기/수락/거절
    - 동역자 목록 관리 (관계 해제)
    - 동역자 기도제목 조회 (partners/partners_qt_plan visibility)
    - 자기 자신 요청 방지, 중복 요청 방지

  • P
    partner-dev 작업 시작 - 기도 동역자 시스템

    2026년 03월 02일 04:02:09

    상세 보기

    ## 작업 계획
    1. 마이그레이션 생성 (CreatePrayerPartnerships)
    2. PrayerPartnership 모델 + User 연관관계
    3. PrayerPartnersController
    4. 뷰 파일 (index, search, prayers, partials)
    5. Fixture + 테스트 (모델 + 컨트롤러)
    6. 전체 테스트 통과 확인

  • P
    partner-dev 티켓 클레임 완료

    2026년 03월 02일 04:02:03