이 이슈는 이미지 업로드·워터마크 파이프라인의 4차 작업입니다.
선행 작업: #40 이미지 자산 DB·도메인 구조 → 업로드 API → 워터마크 처리·조회 API
어떤 기능인가요?
기존 API 계약 이슈 #23을 기반으로 POST /api/v1/prompts의 실제 비즈니스 로직과 영속성을 구현합니다.
인증된 사용자가 프롬프트 본문, 공개 범위, 태그, 업로드 및 워터마크 처리가 완료된 이미지를 제출하면 서버가 가격과 게시 상태를 결정하고 프롬프트·태그·이미지·초기 통계를 하나의 트랜잭션으로 저장합니다. 현재 NotImplementedException으로 반환되는 501 응답을 실제 201 Created 응답으로 교체합니다.
관련 도메인
선행 조건
요구사항
생성 및 권한
콘텐츠 및 가격 정책
태그
이미지
영속성 및 트랜잭션
오류 응답
TODO
완료 조건
참고 자료
제출 전 확인사항
어떤 기능인가요?
기존 API 계약 이슈 #23을 기반으로
POST /api/v1/prompts의 실제 비즈니스 로직과 영속성을 구현합니다.인증된 사용자가 프롬프트 본문, 공개 범위, 태그, 업로드 및 워터마크 처리가 완료된 이미지를 제출하면 서버가 가격과 게시 상태를 결정하고 프롬프트·태그·이미지·초기 통계를 하나의 트랜잭션으로 저장합니다. 현재
NotImplementedException으로 반환되는501응답을 실제201 Created응답으로 교체합니다.관련 도메인
선행 조건
READY상태여야 한다.요구사항
생성 및 권한
AuthenticatedUserPrincipal에서 추출한다.ACTIVE로 저장한다.visibility미입력 시PUBLIC을 적용하고PUBLIC | PRIVATE만 허용한다.201 Created와PromptCommandResponse를 반환한다.콘텐츠 및 가격 정책
title,promptBody,outputType,contentType필수값과 기존 Bean Validation 계약을 검증한다.contentType은FREE | PREMIUM만 허용한다.FREE가격은 서버에서0으로 결정한다.PREMIUM가격은 서버 설정값에서 조회한다.pricePoint에는 서버에서 결정한 값을 반환한다.태그
jobTagIds,taskTagIds,aiModelTagIds에 전달된 태그의 존재 여부와 타입 일치를 검증한다.customAiModel은 소문자 변환 및 모든 공백 제거 후 정규화된 이름을 기준으로 조회·생성한다.이미지
imageId가READY상태이며 현재 요청자가 사용할 수 있는 이미지인지 서버에서 확인한다.영속성 및 트랜잭션
CreatePromptCommand,CreatePromptUseCase, Command Service를 정의한다.@Transactional경계에서 처리한다.PromptVisibility등 현재 API 계약과 DB 모델 간 누락 필드를 반영하고 필요한 DB 마이그레이션을 추가한다.오류 응답
401 Unauthorized를 반환한다.400 Bad Request를 반환한다.404 Not Found를 반환한다.TODO
PromptController#createPrompt를 UseCase에 연결501기대값을 실제 생성 계약으로 변경완료 조건
201 Created와 생성된promptId,ACTIVE,visibility,pricePoint,updatedAt을 반환한다.참고 자료
PromptController#createPromptCreatePromptRequest제출 전 확인사항