diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 051c3d4..edf8752 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -8,14 +8,19 @@ on: env: - DOCKER_IMAGE: ${{ secrets.ECR_REPO }} - ECR_REGISTRY: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ secrets.AWS_REGION }}.amazon.com + IMAGE_NAME: ${{ secrets.ECR_REPO }} + ECR_REGISTRY: ${{ secrets.AWS_ACCOUNT_ID }}.dkr.ecr.${{ secrets.AWS_REGION }}.amazonaws.com jobs: deploy: runs-on: ubuntu-latest + env: + AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + AWS_REGION: ${{ secrets.AWS_REGION }} + steps: # 소스코드 체크아웃 - name: Checkout source @@ -27,7 +32,7 @@ jobs: # 이전에 빌드한 캐시 불러오기 - name: Cache Docker layers - uses: actions/cache@v2 + uses: actions/cache@v4 with: key: ${{ runner.os }}-buildx-${{ github.sha }} path: /tmp/.buildx-cache @@ -54,8 +59,7 @@ jobs: username: ec2-user key: ${{ secrets.EC2_SSH_KEY }} script: | - docker pull ${{ env.ECR_REGISTRY }}/${{ env.IMAGE_NAME }}:latest - docker stop app || true - docker rm app || true - docker run -d --name app -p 3000:3000 --restart always ${{ env.ECR_REGISTRY }}/${{ env.IMAGE_NAME }}:latest - # 기존 컨테이너 중지, 삭제 후 새 컨테이너 실행 ( port 3000, restart ) \ No newline at end of file + aws ecr get-login-password --region ${{ secrets.AWS_REGION }} | docker login --username AWS --password-stdin ${{ env.ECR_REGISTRY }} + docker-compose -f docker-compose.prod.yml down + docker-compose -f docker-compose.prod.yml pull + docker-compose -f docker-compose.prod.yml up -d \ No newline at end of file diff --git a/api/v1/test/test_router.py b/api/v1/test/test_router.py index 1449a84..965a1de 100644 --- a/api/v1/test/test_router.py +++ b/api/v1/test/test_router.py @@ -1,7 +1,7 @@ from fastapi import APIRouter, Depends, Path, Query from sqlalchemy.orm import Session -from core.dependency import get_db +from database.dependency import get_db from app.test.dto.request.test_request import TestRequest from app.test.dto.response.test_response import TestResponse from app.test.usecase.test_usecase import create_test_usecae, get_tests_usecase @@ -20,7 +20,6 @@ # 문제 풀기 (쉬엄 모드) from app.test.usecase.rest_mode_usecase import rest_mode_usecase from app.test.dto.response.rest_mode_response import RestModeResponse -from core.dependency import get_db # 문제 풀기 (오늘의 문제) from domain.user.entity.user import User from app.test.dto.response.today_questions_response import TodayQuestionsResponse @@ -31,7 +30,6 @@ # 개발자에게 피드백 제출하기 from app.test.dto.request.send_answer_feedback_request import SendAnswerFeedbackRequest from app.test.dto.response.send_answer_feedback_response import SendAnswerFeedbackResponse -from app.test.usecase.send_answer_feedback_usecase import send_answer_feedback_usecase router = APIRouter(prefix="/test", tags=["test"]) @@ -103,9 +101,3 @@ async def create_ai_explanation( current_user: User = Depends(get_current_user) ): return await create_ai_explanation_usecase(exam_id, db, current_user) - - -# 개발자에게 피드백 제출하기 -@router.post("/send-answer-feedback", response_model=SendAnswerFeedbackResponse) -def send_answer_feedback(request: SendAnswerFeedbackRequest, db: Session = Depends(get_db)): - return send_answer_feedback_usecase(db, request) diff --git a/app/test/dto/response/test_response.py b/app/test/dto/response/test_response.py index e69de29..2725fd2 100644 --- a/app/test/dto/response/test_response.py +++ b/app/test/dto/response/test_response.py @@ -0,0 +1,5 @@ +from pydantic import BaseModel + + +class TestResponse(BaseModel): + pass \ No newline at end of file diff --git a/app/test/usecase/send_answer_feedback_usecase.py b/app/test/usecase/send_answer_feedback_usecase.py deleted file mode 100644 index 2381050..0000000 --- a/app/test/usecase/send_answer_feedback_usecase.py +++ /dev/null @@ -1,32 +0,0 @@ -from sqlalchemy.orm import Session -from app.test.dto.request.send_answer_feedback_request import SendAnswerFeedbackRequest -from domain.test.entity.feedback import Feedback - -from exception.client_exception import BadRequestException -from exception.server_exception import InternalServerErrorException -from exception.success import ok - - -async def send_answer_feedback_usecase(db: Session, request: SendAnswerFeedbackRequest): - if not request.test_id or not request.question_id or not request.ai_explanation or not request.feedback: - raise BadRequestException("누락된 필드가 존재합니다.") - - try: - feedback = Feedback( - test_id=request.test_id, - question_id=request.question_id, - ai_explanation=request.ai_explanation, - feedback=request.feedback - ) - db.add(feedback) - db.commit() - db.refresh(feedback) - - return ok( - data=None, - message="피드백이 성공적으로 제출되었습니다." - ) - - except Exception: - db.rollback() - raise InternalServerErrorException("서버 오류") diff --git a/app/test/usecase/test_usecase.py b/app/test/usecase/test_usecase.py index a1c436e..7316a2f 100644 --- a/app/test/usecase/test_usecase.py +++ b/app/test/usecase/test_usecase.py @@ -11,4 +11,10 @@ # def get_tests_usecase(db: Session) -> list[TestResponse]: # service = TestService(db) # tests = service.get_tests() -# return [TestResponse.model_validate(t) for t in tests] \ No newline at end of file +# return [TestResponse.model_validate(t) for t in tests] +def create_test_usecae(): + return None + + +def get_tests_usecase(): + return None \ No newline at end of file diff --git a/domain/test/entity/feedback.py b/domain/test/entity/feedback.py deleted file mode 100644 index 85fef30..0000000 --- a/domain/test/entity/feedback.py +++ /dev/null @@ -1,12 +0,0 @@ -from sqlalchemy import Column, Integer, String -from database.base import Base - - -class Feedback(Base): - __tablename__ = "feedbacks" - - id = Column(Integer, primary_key=True, index=True) - test_id = Column(String, nullable=False) - question_id = Column(String, nullable=False) - ai_explanation = Column(String, nullable=False) - feedback = Column(String, nullable=False)