Skip to content

Commit ea1bf96

Browse files
authored
[Feat] (Proxy) 문서 제목에서 업로드한 파일에 따른 추천 카테고리 요청으로 수정 (#13)
## 작업 내역 (관련 이슈) - #8 ## 특이 사항 -
2 parents a930aab + 81e2ac1 commit ea1bf96

10 files changed

Lines changed: 41 additions & 41 deletions

src/main/ai/data/CategoryRecommendationQueue.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ def __init__(self, sqs_client: boto3.client, queue_url: str):
1111
self.sqs = sqs_client
1212
self.queue_url = queue_url
1313

14-
def send_message(self, request_id: str, title: str, user_id: str):
14+
def send_message(self, request_id: str, file_id: str, user_id: str):
1515
try:
1616
message_body = {
1717
'request_type': 'category_recommendation',
1818
'request_id': request_id,
1919
'user_id': str(user_id),
2020
'payload': {
21-
'title': title
21+
'file_id': file_id
2222
}
2323
}
2424

src/main/ai/data/CategoryRecommendationRepository.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ def __init__(self, client: MongoClient):
1010
self.db = client.get_database()
1111
self.collection: Collection = self.db.get_collection('category_recommendations')
1212

13-
def create_recommendation_request(self, title: str, user_id: str) -> dict:
13+
def create_recommendation_request(self, file_id: str, user_id: str) -> dict:
1414
document = {
15-
"title": title,
15+
"file_id": file_id,
1616
"user_id": user_id,
1717
"is_completed": False,
1818
"created_at": self.get_current_time()

src/main/ai/models/CategoryRecommendation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55

66
class CategoryRecommendationRequest(BaseModel):
7-
title: str
7+
file_id: str
88

99

1010
class CategoryRecommendationResponse(BaseModel):

src/main/ai/router/AIPublicAPIRouter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ async def create_category_recommendation_request(
2222
service: CategoryRecommendationService = Depends(get_category_recommendation_service)
2323
):
2424
"""
25-
자료 제목에 따른 추천 카테고리 요청
25+
업로드한 파일에 따른 추천 카테고리 요청
2626
"""
2727
return service.create_recommendation_request(request, user_id)
2828

@@ -34,7 +34,7 @@ async def get_category_recommendation_status(
3434
service: CategoryRecommendationService = Depends(get_category_recommendation_service)
3535
):
3636
"""
37-
자료 제목에 따른 추천 카테고리 조회
37+
업로드한 파일에 따른 추천 카테고리 조회
3838
"""
3939
result = service.get_recommendation_status(request_id, user_id)
4040

src/main/ai/service/CategoryRecommendationService.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def __init__(self, repository: CategoryRecommendationRepository, queue: Category
2020
def create_recommendation_request(self, request: CategoryRecommendationRequest, user_id: uuid.UUID) -> CategoryRecommendationResponse:
2121
# MongoDB에 저장 - ObjectId 자동 생성
2222
document = self.repository.create_recommendation_request(
23-
title=request.title,
23+
file_id=request.file_id,
2424
user_id=str(user_id)
2525
)
2626

@@ -30,7 +30,7 @@ def create_recommendation_request(self, request: CategoryRecommendationRequest,
3030
# 메시지 발행
3131
self.queue.send_message(
3232
request_id=request_id,
33-
title=request.title,
33+
file_id=request.file_id,
3434
user_id=str(user_id)
3535
)
3636

src/tests/ai/data/test_category_recommendation_queue.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,23 @@ def setup_method(self):
1616
def test_send_message_success(self):
1717
# given
1818
request_id = "test-request-id"
19-
title = "테스트 제목"
19+
file_id = "67dd86ac60a0a6d929904d47"
2020
user_id = "test-user-id"
2121

2222
# SQS 응답 설정
2323
expected_response = {"MessageId": "1234567890"}
2424
self.mock_sqs_client.send_message.return_value = expected_response
2525

2626
# when
27-
result = self.queue.send_message(request_id, title, user_id)
27+
result = self.queue.send_message(request_id, file_id, user_id)
2828

2929
# then
3030
expected_message_body = {
3131
'request_type': 'category_recommendation',
3232
'request_id': request_id,
3333
'user_id': user_id,
3434
'payload': {
35-
'title': title
35+
'file_id': file_id
3636
}
3737
}
3838

@@ -47,15 +47,15 @@ def test_send_message_success(self):
4747
def test_send_message_with_exception(self):
4848
# given
4949
request_id = "test-request-id"
50-
title = "테스트 제목"
50+
file_id = "67dd86ac60a0a6d929904d47"
5151
user_id = "test-user-id"
5252

5353
# SQS 예외 발생 설정
5454
self.mock_sqs_client.send_message.side_effect = Exception("SQS error")
5555

5656
# when/then
5757
with pytest.raises(Exception) as e:
58-
self.queue.send_message(request_id, title, user_id)
58+
self.queue.send_message(request_id, file_id, user_id)
5959

6060
assert "SQS error" in str(e.value)
6161

@@ -64,7 +64,7 @@ def test_send_message_with_exception(self):
6464
'request_id': request_id,
6565
'user_id': user_id,
6666
'payload': {
67-
'title': title
67+
'file_id': file_id
6868
}
6969
}
7070

src/tests/ai/data/test_category_recommendation_repository.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,19 +32,19 @@ def teardown_method(self):
3232

3333
def test_create_recommendation_request(self):
3434
# given
35-
title = "테스트 제목"
35+
file_id = "67dd86ac60a0a6d929904d47"
3636
user_id = "test-user-id"
3737
mock_id = ObjectId("6123456789abcdef01234567")
3838

3939
# MongoDB insert_one의 응답 설정
4040
self.mock_collection.insert_one.return_value = MagicMock(inserted_id=mock_id)
4141

4242
# when
43-
result = self.repository.create_recommendation_request(title, user_id)
43+
result = self.repository.create_recommendation_request(file_id, user_id)
4444

4545
# then
4646
expected_doc = {
47-
"title": title,
47+
"file_id": file_id,
4848
"user_id": user_id,
4949
"is_completed": False,
5050
"created_at": datetime(2023, 1, 1, tzinfo=timezone.utc),
@@ -61,7 +61,7 @@ def test_get_recommendation_by_id(self):
6161
user_id = "test-user-id"
6262
expected_result = {
6363
"_id": ObjectId(request_id),
64-
"title": "테스트 제목",
64+
"file_id": "67dd86ac60a0a6d929904d47",
6565
"user_id": user_id,
6666
"is_completed": False,
6767
"created_at": datetime(2023, 1, 1, tzinfo=timezone.utc)
@@ -102,7 +102,7 @@ def test_update_recommendation_result(self):
102102

103103
expected_doc = {
104104
"_id": ObjectId(request_id),
105-
"title": "테스트 제목",
105+
"file_id": "67dd86ac60a0a6d929904d47",
106106
"user_id": "test-user-id",
107107
"is_completed": True,
108108
"predicted_category": predicted_category,

src/tests/ai/models/test_category_recommendation_models.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,16 @@
1313
class TestCategoryRecommendationModels:
1414
def test_category_recommendation_request_valid(self):
1515
# given
16-
title = "테스트 제목"
16+
file_id = "67dd86ac60a0a6d929904d47"
1717

1818
# when
19-
model = CategoryRecommendationRequest(title=title)
19+
model = CategoryRecommendationRequest(file_id=file_id)
2020

2121
# then
22-
assert model.title == title
22+
assert model.file_id == file_id
2323

2424
def test_category_recommendation_request_invalid(self):
25-
# when/then - 제목이 없는 경우 검증 오류
25+
# when/then - 파일 ID가 없는 경우 검증 오류
2626
with pytest.raises(ValidationError):
2727
CategoryRecommendationRequest()
2828

src/tests/ai/router/test_ai_public_api_router.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,15 @@ def client():
3434
class TestAIPublicAPIRouter:
3535
def setup_method(self):
3636
# 테스트 공통 데이터
37-
self.test_title = "테스트 제목"
37+
self.test_file_id = "67dd86ac60a0a6d929904d47"
3838
self.test_user_id = uuid.UUID("12345678-1234-5678-1234-567812345678")
3939
self.test_request_id = "6123456789abcdef01234567"
40-
self.test_file_id = "7123456789abcdef01234567"
40+
self.test_check_file_id = "7123456789abcdef01234567"
4141

4242
def test_create_category_recommendation_request(self, client):
4343
# given
4444
request_data = {
45-
"title": self.test_title
45+
"file_id": self.test_file_id
4646
}
4747

4848
# 서비스 응답 모의 설정
@@ -107,23 +107,23 @@ def test_get_file_duplicate_check_status_exists(self, client):
107107
# 서비스 응답 설정
108108
mock_service.return_value = FileDuplicateCheckStatusResponse(
109109
request_id=self.test_request_id,
110-
file_id=self.test_file_id,
110+
file_id=self.test_check_file_id,
111111
is_completed=True,
112112
is_duplicated=False
113113
)
114114

115115
# when
116-
response = client.get(f"/ai/file-duplicate-checks?file_id={self.test_file_id}")
116+
response = client.get(f"/ai/file-duplicate-checks?file_id={self.test_check_file_id}")
117117

118118
# then
119119
assert response.status_code == 200
120120
assert response.json() == {
121121
"request_id": self.test_request_id,
122-
"file_id": self.test_file_id,
122+
"file_id": self.test_check_file_id,
123123
"is_completed": True,
124124
"is_duplicated": False
125125
}
126-
mock_service.assert_called_once_with(self.test_file_id, str(self.test_user_id))
126+
mock_service.assert_called_once_with(self.test_check_file_id, str(self.test_user_id))
127127

128128
def test_get_file_duplicate_check_status_not_found(self, client):
129129
# given
@@ -133,11 +133,11 @@ def test_get_file_duplicate_check_status_not_found(self, client):
133133
mock_service.return_value = None
134134

135135
# when
136-
response = client.get(f"/ai/file-duplicate-checks?file_id={self.test_file_id}")
136+
response = client.get(f"/ai/file-duplicate-checks?file_id={self.test_check_file_id}")
137137

138138
# then
139139
assert response.status_code == 404
140140
assert response.json() == {
141141
"detail": "요청을 찾을 수 없습니다. 존재하지 않는 ID입니다."
142142
}
143-
mock_service.assert_called_once_with(self.test_file_id, str(self.test_user_id))
143+
mock_service.assert_called_once_with(self.test_check_file_id, str(self.test_user_id))

src/tests/ai/service/test_category_recommendation_service.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,19 @@ def setup_method(self):
2323
self.service = CategoryRecommendationService(self.mock_repository, self.mock_queue)
2424

2525
# 테스트 공통 데이터
26-
self.test_title = "테스트 제목"
26+
self.test_file_id = "67dd86ac60a0a6d929904d47"
2727
self.test_user_id = uuid.UUID("12345678-1234-5678-1234-567812345678")
2828
self.test_request_id = "6123456789abcdef01234567"
2929
self.test_object_id = ObjectId(self.test_request_id)
3030

3131
def test_create_recommendation_request(self):
3232
# given
33-
request = CategoryRecommendationRequest(title=self.test_title)
33+
request = CategoryRecommendationRequest(file_id=self.test_file_id)
3434

3535
# 리포지토리 응답 설정
3636
mongo_document = {
3737
"_id": self.test_object_id,
38-
"title": self.test_title,
38+
"file_id": self.test_file_id,
3939
"user_id": str(self.test_user_id),
4040
"is_completed": False,
4141
"created_at": datetime(2023, 1, 1, tzinfo=timezone.utc)
@@ -47,13 +47,13 @@ def test_create_recommendation_request(self):
4747

4848
# then
4949
self.mock_repository.create_recommendation_request.assert_called_once_with(
50-
title=self.test_title,
50+
file_id=self.test_file_id,
5151
user_id=str(self.test_user_id)
5252
)
5353

5454
self.mock_queue.send_message.assert_called_once_with(
5555
request_id=self.test_request_id,
56-
title=self.test_title,
56+
file_id=self.test_file_id,
5757
user_id=str(self.test_user_id)
5858
)
5959

@@ -65,7 +65,7 @@ def test_get_recommendation_status_exists(self):
6565
# 리포지토리 응답 설정 - 완료되지 않은 추천
6666
mongo_document = {
6767
"_id": self.test_object_id,
68-
"title": self.test_title,
68+
"file_id": self.test_file_id,
6969
"user_id": str(self.test_user_id),
7070
"is_completed": False,
7171
"created_at": datetime(2023, 1, 1, tzinfo=timezone.utc)
@@ -90,7 +90,7 @@ def test_get_recommendation_status_completed(self):
9090
# 리포지토리 응답 설정 - 완료된 추천
9191
mongo_document = {
9292
"_id": self.test_object_id,
93-
"title": self.test_title,
93+
"file_id": self.test_file_id,
9494
"user_id": str(self.test_user_id),
9595
"is_completed": True,
9696
"predicted_category": "기술",
@@ -134,7 +134,7 @@ def test_update_recommendation_result_success(self):
134134
# 리포지토리 응답 설정
135135
updated_document = {
136136
"_id": self.test_object_id,
137-
"title": self.test_title,
137+
"file_id": self.test_file_id,
138138
"user_id": str(self.test_user_id),
139139
"is_completed": True,
140140
"predicted_category": "기술",

0 commit comments

Comments
 (0)