Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
.idea
api.txt
db.txt
log.txt
log.txt

# Claude Code
CLAUDE.md
3 changes: 3 additions & 0 deletions back/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,6 @@ out/

### VS Code ###
.vscode/

### Environment Variables ###
.env
37 changes: 32 additions & 5 deletions back/src/main/java/com/back/domain/scenario/entity/Scenario.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,14 @@
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.springframework.data.annotation.LastModifiedDate;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
* 시나리오 엔티티.
* AI를 통해 추출된 시나리오의 상세 정보를 저장합니다.
* AI를 통해 생성된 시나리오의 상세 정보와 처리 상태를 저장합니다.
*/
@Entity
@Table(name = "scenarios")
Expand All @@ -25,32 +27,57 @@
@Builder
public class Scenario extends BaseEntity {

@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "scenario_request_id", nullable = false, unique = true)
private ScenarioRequest scenarioRequest;

// 시나리오 소유자
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id", nullable = false)
private User user;

// 사용자가 선택한 옵션 ID (인생 선택지)
@Column(nullable = false)
private Long optionId;

// AI 생성 시 적용된 제약 조건들 (JSON 형태로 저장)
@Column(columnDefinition = "jsonb")
private String constraintsJson;

// 시나리오 처리 상태 (PENDING, PROCESSING, COMPLETED, FAILED)
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private ScenarioStatus status;

// 시나리오 생성 실패 시 오류 메시지
@Column(columnDefinition = "TEXT")
private String errorMessage;

// 시나리오 상태 변경 시점 추적용
@LastModifiedDate
private LocalDateTime updatedAt;

// 시나리오와 연결된 게시글 (시나리오 공유 시 생성)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "post_id")
private Post post;

// AI가 생성한 직업 정보
@Column(length = 200)
private String job;

// 종합 점수 (5개 지표의 합계)
private BigDecimal total;

// AI가 생성한 시나리오 요약
@Column(columnDefinition = "TEXT")
private String summary;

// AI가 생성한 상세 시나리오 내용
@Column(columnDefinition = "TEXT")
private String description;

// 시나리오 비교 결과 (다른 시나리오와의 비교 분석)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "scene_compare_id")
private SceneCompare sceneCompare;

// 시나리오 대표 이미지 URL
private String img;
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@
* 시나리오 요청의 처리 상태를 정의하는 Enum.
*/
public enum ScenarioStatus {
QUEUED, RUNNING, READY, FAILED
PENDING, PROCESSING, COMPLETED, FAILED
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,20 +1,18 @@
package com.back.domain.scenario.service;

import com.back.domain.scenario.repository.ScenarioRepository;
import com.back.domain.scenario.repository.ScenarioRequestRepository;
import com.back.domain.scenario.repository.SceneTypeRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

/**
* 시나리오 관련 비즈니스 로직을 처리하는 서비스.
* 시나리오 추출, 상세 조회, 비교 등의 기능을 제공합니다.
* 시나리오 생성, 상세 조회, 비교 등의 기능을 제공합니다.
*/
@Service
@RequiredArgsConstructor
public class ScenarioService {

private final ScenarioRequestRepository scenarioRequestRepository;
private final ScenarioRepository scenarioRepository;
private final SceneTypeRepository sceneTypeRepository;

Expand Down