Skip to content

Commit c462b84

Browse files
[REFACTOR]: Scenario Entity 분석 및 보완 (#10)
* [Refactor] Scenariest를 scenario에 통합 * [Refactor] Scenario 엔티티 주석 추가 및 상태명 의미명확화
1 parent a8a3e33 commit c462b84

File tree

7 files changed

+41
-69
lines changed

7 files changed

+41
-69
lines changed

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
.idea
22
api.txt
33
db.txt
4-
log.txt
4+
log.txt
5+
6+
# Claude Code
7+
CLAUDE.md

back/.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,6 @@ out/
3535

3636
### VS Code ###
3737
.vscode/
38+
39+
### Environment Variables ###
40+
.env

back/src/main/java/com/back/domain/scenario/entity/Scenario.java

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,14 @@
99
import lombok.Getter;
1010
import lombok.NoArgsConstructor;
1111
import lombok.Setter;
12+
import org.springframework.data.annotation.LastModifiedDate;
1213

1314
import java.math.BigDecimal;
15+
import java.time.LocalDateTime;
1416

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

28-
@OneToOne(fetch = FetchType.LAZY)
29-
@JoinColumn(name = "scenario_request_id", nullable = false, unique = true)
30-
private ScenarioRequest scenarioRequest;
31-
30+
// 시나리오 소유자
3231
@ManyToOne(fetch = FetchType.LAZY)
3332
@JoinColumn(name = "user_id", nullable = false)
3433
private User user;
3534

35+
// 사용자가 선택한 옵션 ID (인생 선택지)
36+
@Column(nullable = false)
37+
private Long optionId;
38+
39+
// AI 생성 시 적용된 제약 조건들 (JSON 형태로 저장)
40+
@Column(columnDefinition = "jsonb")
41+
private String constraintsJson;
42+
43+
// 시나리오 처리 상태 (PENDING, PROCESSING, COMPLETED, FAILED)
44+
@Enumerated(EnumType.STRING)
45+
@Column(nullable = false)
46+
private ScenarioStatus status;
47+
48+
// 시나리오 생성 실패 시 오류 메시지
49+
@Column(columnDefinition = "TEXT")
50+
private String errorMessage;
51+
52+
// 시나리오 상태 변경 시점 추적용
53+
@LastModifiedDate
54+
private LocalDateTime updatedAt;
55+
56+
// 시나리오와 연결된 게시글 (시나리오 공유 시 생성)
3657
@ManyToOne(fetch = FetchType.LAZY)
3758
@JoinColumn(name = "post_id")
3859
private Post post;
3960

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

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

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

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

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

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

back/src/main/java/com/back/domain/scenario/entity/ScenarioRequest.java

Lines changed: 0 additions & 47 deletions
This file was deleted.

back/src/main/java/com/back/domain/scenario/entity/ScenarioStatus.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@
44
* 시나리오 요청의 처리 상태를 정의하는 Enum.
55
*/
66
public enum ScenarioStatus {
7-
QUEUED, RUNNING, READY, FAILED
7+
PENDING, PROCESSING, COMPLETED, FAILED
88
}

back/src/main/java/com/back/domain/scenario/repository/ScenarioRequestRepository.java

Lines changed: 0 additions & 12 deletions
This file was deleted.

back/src/main/java/com/back/domain/scenario/service/ScenarioService.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,18 @@
11
package com.back.domain.scenario.service;
22

33
import com.back.domain.scenario.repository.ScenarioRepository;
4-
import com.back.domain.scenario.repository.ScenarioRequestRepository;
54
import com.back.domain.scenario.repository.SceneTypeRepository;
65
import lombok.RequiredArgsConstructor;
76
import org.springframework.stereotype.Service;
87

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

17-
private final ScenarioRequestRepository scenarioRequestRepository;
1816
private final ScenarioRepository scenarioRepository;
1917
private final SceneTypeRepository sceneTypeRepository;
2018

0 commit comments

Comments
 (0)