From 04c7549934d288cb10dd3adf0a59eb20d29d9c13 Mon Sep 17 00:00:00 2001 From: wooh Date: Mon, 6 Jul 2026 19:11:44 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[Fix]=20=EB=B6=84=EC=84=9D=20=ED=94=84?= =?UTF-8?q?=EB=A1=AC=ED=94=84=ED=8A=B8=20=ED=8D=BC=EC=84=BC=ED=8A=B8=20?= =?UTF-8?q?=EB=A6=AC=ED=84=B0=EB=9F=B4=20escape=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - AnalysisAiClient formatted prompt의 점수 가중치 퍼센트 값을 %%로 escape - STATUS_AND_WRITING_RULES의 X% 예시도 formatter-safe하게 수정 - AnalysisServiceTest로 컴파일 및 분석 흐름 회귀 검증 --- .github/workflows/ci.yml | 4 ++-- .github/workflows/deploy.yml | 1 + .../jobdri_api/domain/analysis/service/AnalysisAiClient.java | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 26d8c32..ff85d09 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,11 +4,11 @@ on: pull_request: branches: - main - - develop + - dev push: branches: - main - - develop + - dev permissions: contents: read diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 5e5ef1e..ff29774 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -4,6 +4,7 @@ on: push: branches: - main + - dev workflow_dispatch: permissions: diff --git a/src/main/java/com/jobdri/jobdri_api/domain/analysis/service/AnalysisAiClient.java b/src/main/java/com/jobdri/jobdri_api/domain/analysis/service/AnalysisAiClient.java index dffff39..9f8e4ed 100644 --- a/src/main/java/com/jobdri/jobdri_api/domain/analysis/service/AnalysisAiClient.java +++ b/src/main/java/com/jobdri/jobdri_api/domain/analysis/service/AnalysisAiClient.java @@ -161,7 +161,7 @@ public class AnalysisAiClient { - 반드시 한국어 평서문으로 작성한다. - "추가하세요", "보완하세요", "수정해주세요", "필요합니다" 같은 지시문을 사용하지 않는다. - 사용자가 언급하지 않은 경험, 기술, 도구명, 인원수, 금액, 성과 수치를 임의로 만들지 않는다. - - 수치가 필요하지만 원문에 없다면 N건, X%, 약 N시간 같은 빈칸 표현을 사용한다. + - 수치가 필요하지만 원문에 없다면 N건, X%%, 약 N시간 같은 빈칸 표현을 사용한다. - 원래 경험과 맥락을 최대한 유지한다. - 가능하면 행동, 역할, 결과가 드러나도록 개선한다. - 너무 길거나 과도하게 화려한 문장으로 만들지 않는다. @@ -278,7 +278,7 @@ private String buildPrompt( - 원문에 없는 경험, 기술, 도구명, 인원수, 금액, 성과 수치를 만들지 않았는지 확인한다. - fabricated를 단순 근거 부족에 사용하지 않았는지 확인한다. - jobFit, impact, completeness는 0~100 정수로 출력한다. - - 총점 score는 서버가 jobFit 50%, impact 30%, completeness 20%로 계산하므로 출력하지 않는다. + - 총점 score는 서버가 jobFit 50%%, impact 30%%, completeness 20%%로 계산하므로 출력하지 않는다. """.formatted( OUTPUT_SCHEMA, EVALUATION_CRITERIA, From 528cb31012a8862a28ad4c0cbecb6cc5c8938b7c Mon Sep 17 00:00:00 2001 From: wooh Date: Mon, 6 Jul 2026 19:18:34 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[Fix]=20RabbitMQ=20=EB=B8=8C=EB=A1=9C?= =?UTF-8?q?=EC=BB=A4=20=EB=B6=80=EC=9E=AC=20=EC=8B=9C=20=ED=86=B5=ED=95=A9?= =?UTF-8?q?=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20skip=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - RabbitPublishSupportIntegrationTest 실행 전 localhost:5672 연결 가능 여부 확인 - RabbitMQ가 없는 CI clean test 환경에서는 JUnit assumption으로 테스트 skip - RabbitMQ가 준비된 환경에서는 기존 publisher confirm/return 통합 테스트 유지 - ./gradlew --no-daemon clean test 통과 확인 --- .../RabbitPublishSupportIntegrationTest.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/test/java/com/jobdri/jobdri_api/global/mq/service/RabbitPublishSupportIntegrationTest.java b/src/test/java/com/jobdri/jobdri_api/global/mq/service/RabbitPublishSupportIntegrationTest.java index ed55bdf..e40bc56 100644 --- a/src/test/java/com/jobdri/jobdri_api/global/mq/service/RabbitPublishSupportIntegrationTest.java +++ b/src/test/java/com/jobdri/jobdri_api/global/mq/service/RabbitPublishSupportIntegrationTest.java @@ -18,8 +18,13 @@ import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.TestPropertySource; +import java.io.IOException; +import java.net.InetSocketAddress; +import java.net.Socket; + import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.jupiter.api.Assumptions.assumeTrue; @SpringBootTest @ActiveProfiles("test") @@ -33,6 +38,9 @@ "spring.rabbitmq.template.mandatory=true" }) class RabbitPublishSupportIntegrationTest { + private static final String RABBITMQ_HOST = "localhost"; + private static final int RABBITMQ_PORT = 5672; + private static final int RABBITMQ_CONNECT_TIMEOUT_MILLIS = 500; @Autowired private RabbitPublishSupport rabbitPublishSupport; @@ -54,9 +62,25 @@ class RabbitPublishSupportIntegrationTest { @BeforeEach void purgeQueue() { + assumeTrue( + isRabbitMqAvailable(), + "RabbitMQ is not available on localhost:5672. Skipping RabbitMQ integration test." + ); rabbitAdmin.purgeQueue(queueName, true); } + private boolean isRabbitMqAvailable() { + try (Socket socket = new Socket()) { + socket.connect( + new InetSocketAddress(RABBITMQ_HOST, RABBITMQ_PORT), + RABBITMQ_CONNECT_TIMEOUT_MILLIS + ); + return true; + } catch (IOException e) { + return false; + } + } + @Test @DisplayName("RabbitMQ publisher confirm이 오면 메시지가 큐에 적재된다") void publishStoresMessageInQueue() {