Skip to content

[Backend] 설문 복사 API #474

Description

@won005

개요

기존 설문을 복사하여 새로운 설문을 생성하는 API를 구현합니다.

상위 에픽: #406
의존성: #428 (설문 CRUD API)

API 엔드포인트

  • POST /api/v1/surveys/{surveyId}/copy - 설문 복사 (OPERATOR 이상)

비즈니스 규칙 (검증 기준서 기반)

INV-21: 설문 복사 시 상태 초기화

  • 복사된 설문 상태: (UNPUBLISHED, NOT_STARTED, active) 로 초기화
  • 복사 대상: 활성 설문만 (trashedAt == null && deleted == false)
  • 복사되는 필드: title (+ " (복사본)" 접미사), description, accessLevel
  • 초기화되는 필드: visibility → UNPUBLISHED, responseStatus → NOT_STARTED, deadline → null

INV-22: 복사 시 응답 데이터 제외

  • SurveyResponse, SurveyAnswer는 복사 대상에서 제외
  • 복사된 설문은 응답 0건 상태로 시작

INV-23: 복사 시 soft delete된 요소 제외

  • deleted = true인 질문·선택지·행은 복사 대상에서 제외

INV-25: 복사된 엔티티는 새로운 ID 부여

  • 복사된 설문·질문·선택지·행 모두 새로운 ID 부여
  • cascade를 활용한 persist

테스트 시나리오

  • F17: 설문 복사 기본 동작
  • F18: 설문 복사 후 수정 → 발행 흐름
  • SEC-10: 비운영진(MEMBER) 설문 복사 시도 → 403

참조

  • 검증 기준서: docs/criteria/survey/survey-criteria-v1.md (INV-21, INV-22, INV-23, INV-25)

Metadata

Metadata

Assignees

Labels

backend백엔드 작업

Type

No type
No fields configured for issues without a type.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions