From fecbeea34be10973a3baf6b088ed7460c815553c Mon Sep 17 00:00:00 2001 From: frombunny Date: Fri, 22 Aug 2025 16:39:46 +0900 Subject: [PATCH 01/10] =?UTF-8?q?:green=5Fheart:=20ci:=20Dockerfile?= =?UTF-8?q?=EC=97=90=20=EB=AA=A8=EB=8D=B8=20=ED=95=99=EC=8A=B5=20=EA=B3=BC?= =?UTF-8?q?=EC=A0=95=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cicd.yml | 1 - Dockerfile | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml index bb3170e..7e8aa04 100644 --- a/.github/workflows/cicd.yml +++ b/.github/workflows/cicd.yml @@ -45,7 +45,6 @@ jobs: name: Deploy to Server needs: docker-build-push runs-on: ubuntu-latest - if: github.ref == 'refs/heads/main' steps: - name: Deploy via SSH diff --git a/Dockerfile b/Dockerfile index 7a7cca2..c3eae8f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,4 +6,5 @@ COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . +RUN python app/domain/recommend/service/train.py CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] From b497e39b782b1b52525f585c80ad3a323daf48c2 Mon Sep 17 00:00:00 2001 From: frombunny Date: Fri, 22 Aug 2025 16:43:50 +0900 Subject: [PATCH 02/10] =?UTF-8?q?:bug:=20fix:=20Dockerfile=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index c3eae8f..ebfe251 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,5 +6,5 @@ COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . -RUN python app/domain/recommend/service/train.py +RUN python -m app.domain.recommend.service.train CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] From cf87810db05f3bf1c9c460d70eb0509ba3c91c9e Mon Sep 17 00:00:00 2001 From: frombunny Date: Fri, 22 Aug 2025 16:58:26 +0900 Subject: [PATCH 03/10] =?UTF-8?q?:bug:=20fix:=20Dockerfile=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index ebfe251..c900cfb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM python:3.11-slim -WORKDIR /app +WORKDIR /menu-ai COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt From b5c8360057fecbbf587f1a3c1c292ad8c599b43f Mon Sep 17 00:00:00 2001 From: frombunny Date: Fri, 22 Aug 2025 17:10:43 +0900 Subject: [PATCH 04/10] =?UTF-8?q?:bug:=20fix:=20Dockerfile=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index c900cfb..ac7229b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,12 @@ FROM python:3.11-slim -WORKDIR /menu-ai +WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt -COPY . . +COPY app ./app +COPY main.py . + RUN python -m app.domain.recommend.service.train CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] From ee5fa12a3c75f3923ce191e05b367ac994a31228 Mon Sep 17 00:00:00 2001 From: frombunny Date: Fri, 22 Aug 2025 17:22:06 +0900 Subject: [PATCH 05/10] =?UTF-8?q?:bug:=20fix:=20=EA=B2=BD=EB=A1=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index ac7229b..d87e769 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt -COPY app ./app +COPY app . COPY main.py . RUN python -m app.domain.recommend.service.train From 0513dfb961ca4506b4f802c082622b4783de449b Mon Sep 17 00:00:00 2001 From: frombunny Date: Fri, 22 Aug 2025 17:32:29 +0900 Subject: [PATCH 06/10] =?UTF-8?q?:bug:=20fix:=20=EA=B2=BD=EB=A1=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 3 +-- {app => leftovers}/__init__.py | 0 {app => leftovers}/core/config/config.py | 0 .../core/exception/global_error_handler.py | 2 +- {app => leftovers}/core/external/open_ai_client.py | 2 +- {app => leftovers}/core/response/api_response.py | 0 {app => leftovers}/domain/__init__.py | 0 {app => leftovers}/domain/recommend/__init__.py | 0 .../domain/recommend/api/recommend_api.py | 8 ++++---- .../domain/recommend/data/foodData1.xlsx | Bin .../domain/recommend/data/foodData2.xlsx | Bin .../domain/recommend/schemas/recommend_request.py | 0 .../domain/recommend/schemas/recommend_response.py | 0 .../domain/recommend/service/__init__.py | 0 .../domain/recommend/service/evaluator.py | 6 +++--- .../domain/recommend/service/food_kfda_loader.py | 0 .../domain/recommend/service/loader.py | 6 +++--- .../domain/recommend/service/matcher.py | 2 +- .../domain/recommend/service/scoring.py | 0 .../domain/recommend/service/train.py | 8 ++++---- {app => leftovers}/domain/tip/api/tip_api.py | 8 ++++---- .../domain/tip/schemas/tip_request.py | 0 .../domain/tip/schemas/tip_response.py | 0 {app => leftovers}/domain/tip/service/prompt.py | 4 ++-- main.py | 8 ++++---- 25 files changed, 28 insertions(+), 29 deletions(-) rename {app => leftovers}/__init__.py (100%) rename {app => leftovers}/core/config/config.py (100%) rename {app => leftovers}/core/exception/global_error_handler.py (94%) rename {app => leftovers}/core/external/open_ai_client.py (85%) rename {app => leftovers}/core/response/api_response.py (100%) rename {app => leftovers}/domain/__init__.py (100%) rename {app => leftovers}/domain/recommend/__init__.py (100%) rename {app => leftovers}/domain/recommend/api/recommend_api.py (78%) rename {app => leftovers}/domain/recommend/data/foodData1.xlsx (100%) rename {app => leftovers}/domain/recommend/data/foodData2.xlsx (100%) rename {app => leftovers}/domain/recommend/schemas/recommend_request.py (100%) rename {app => leftovers}/domain/recommend/schemas/recommend_response.py (100%) rename {app => leftovers}/domain/recommend/service/__init__.py (100%) rename {app => leftovers}/domain/recommend/service/evaluator.py (91%) rename {app => leftovers}/domain/recommend/service/food_kfda_loader.py (100%) rename {app => leftovers}/domain/recommend/service/loader.py (85%) rename {app => leftovers}/domain/recommend/service/matcher.py (93%) rename {app => leftovers}/domain/recommend/service/scoring.py (100%) rename {app => leftovers}/domain/recommend/service/train.py (91%) rename {app => leftovers}/domain/tip/api/tip_api.py (89%) rename {app => leftovers}/domain/tip/schemas/tip_request.py (100%) rename {app => leftovers}/domain/tip/schemas/tip_response.py (100%) rename {app => leftovers}/domain/tip/service/prompt.py (91%) diff --git a/Dockerfile b/Dockerfile index d87e769..43fb8b2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,8 +5,7 @@ WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt -COPY app . -COPY main.py . +COPY . . RUN python -m app.domain.recommend.service.train CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] diff --git a/app/__init__.py b/leftovers/__init__.py similarity index 100% rename from app/__init__.py rename to leftovers/__init__.py diff --git a/app/core/config/config.py b/leftovers/core/config/config.py similarity index 100% rename from app/core/config/config.py rename to leftovers/core/config/config.py diff --git a/app/core/exception/global_error_handler.py b/leftovers/core/exception/global_error_handler.py similarity index 94% rename from app/core/exception/global_error_handler.py rename to leftovers/core/exception/global_error_handler.py index 037ca8f..2d4322a 100644 --- a/app/core/exception/global_error_handler.py +++ b/leftovers/core/exception/global_error_handler.py @@ -2,7 +2,7 @@ from fastapi.responses import JSONResponse from pydantic import ValidationError -from app.core.response.api_response import fail +from leftovers.core.response.api_response import fail # 공통 응답 포맷 생성기 def error_response(status: int, message: str, extra: dict = None): diff --git a/app/core/external/open_ai_client.py b/leftovers/core/external/open_ai_client.py similarity index 85% rename from app/core/external/open_ai_client.py rename to leftovers/core/external/open_ai_client.py index 1b248d8..71536b2 100644 --- a/app/core/external/open_ai_client.py +++ b/leftovers/core/external/open_ai_client.py @@ -1,5 +1,5 @@ from openai import OpenAI -from app.core.config.config import settings # 환경설정 로더 가져오기 +from leftovers.core.config.config import settings # 환경설정 로더 가져오기 _cfg = settings() # settings diff --git a/app/core/response/api_response.py b/leftovers/core/response/api_response.py similarity index 100% rename from app/core/response/api_response.py rename to leftovers/core/response/api_response.py diff --git a/app/domain/__init__.py b/leftovers/domain/__init__.py similarity index 100% rename from app/domain/__init__.py rename to leftovers/domain/__init__.py diff --git a/app/domain/recommend/__init__.py b/leftovers/domain/recommend/__init__.py similarity index 100% rename from app/domain/recommend/__init__.py rename to leftovers/domain/recommend/__init__.py diff --git a/app/domain/recommend/api/recommend_api.py b/leftovers/domain/recommend/api/recommend_api.py similarity index 78% rename from app/domain/recommend/api/recommend_api.py rename to leftovers/domain/recommend/api/recommend_api.py index df3cab3..1e3d82b 100644 --- a/app/domain/recommend/api/recommend_api.py +++ b/leftovers/domain/recommend/api/recommend_api.py @@ -1,8 +1,8 @@ from fastapi import APIRouter -from app.core.response.api_response import Envelope, ok, fail -from app.domain.recommend.schemas.recommend_request import RecommendReq -from app.domain.recommend.schemas.recommend_response import RecommendRes -from app.domain.recommend.service import evaluator, loader +from leftovers.core.response.api_response import Envelope, ok, fail +from leftovers.domain.recommend.schemas.recommend_request import RecommendReq +from leftovers.domain.recommend.schemas.recommend_response import RecommendRes +from leftovers.domain.recommend.service import evaluator, loader router = APIRouter(prefix="/menus") diff --git a/app/domain/recommend/data/foodData1.xlsx b/leftovers/domain/recommend/data/foodData1.xlsx similarity index 100% rename from app/domain/recommend/data/foodData1.xlsx rename to leftovers/domain/recommend/data/foodData1.xlsx diff --git a/app/domain/recommend/data/foodData2.xlsx b/leftovers/domain/recommend/data/foodData2.xlsx similarity index 100% rename from app/domain/recommend/data/foodData2.xlsx rename to leftovers/domain/recommend/data/foodData2.xlsx diff --git a/app/domain/recommend/schemas/recommend_request.py b/leftovers/domain/recommend/schemas/recommend_request.py similarity index 100% rename from app/domain/recommend/schemas/recommend_request.py rename to leftovers/domain/recommend/schemas/recommend_request.py diff --git a/app/domain/recommend/schemas/recommend_response.py b/leftovers/domain/recommend/schemas/recommend_response.py similarity index 100% rename from app/domain/recommend/schemas/recommend_response.py rename to leftovers/domain/recommend/schemas/recommend_response.py diff --git a/app/domain/recommend/service/__init__.py b/leftovers/domain/recommend/service/__init__.py similarity index 100% rename from app/domain/recommend/service/__init__.py rename to leftovers/domain/recommend/service/__init__.py diff --git a/app/domain/recommend/service/evaluator.py b/leftovers/domain/recommend/service/evaluator.py similarity index 91% rename from app/domain/recommend/service/evaluator.py rename to leftovers/domain/recommend/service/evaluator.py index 085230b..b580df9 100644 --- a/app/domain/recommend/service/evaluator.py +++ b/leftovers/domain/recommend/service/evaluator.py @@ -1,7 +1,7 @@ import numpy as np -from app.domain.recommend.service.scoring import compute_score -from app.domain.recommend.schemas.recommend_response import MatchItem -from app.domain.recommend.service import loader, matcher +from leftovers.domain.recommend.service.scoring import compute_score +from leftovers.domain.recommend.schemas.recommend_response import MatchItem +from leftovers.domain.recommend.service import loader, matcher # 음식 영양 성분을 딕셔너리에서 numpy 배열로 변환(ML 모델 입력은 항상 숫자여야 하므로) def to_feat(n: dict) -> np.ndarray: diff --git a/app/domain/recommend/service/food_kfda_loader.py b/leftovers/domain/recommend/service/food_kfda_loader.py similarity index 100% rename from app/domain/recommend/service/food_kfda_loader.py rename to leftovers/domain/recommend/service/food_kfda_loader.py diff --git a/app/domain/recommend/service/loader.py b/leftovers/domain/recommend/service/loader.py similarity index 85% rename from app/domain/recommend/service/loader.py rename to leftovers/domain/recommend/service/loader.py index 4774785..4fa7488 100644 --- a/app/domain/recommend/service/loader.py +++ b/leftovers/domain/recommend/service/loader.py @@ -1,10 +1,10 @@ from typing import List import joblib -from app.domain.recommend.service.food_kfda_loader import load_kfda_excels +from leftovers.domain.recommend.service.food_kfda_loader import load_kfda_excels -FOOD_FILES = ["app/domain/recommend/data/foodData1.xlsx", "app/domain/recommend/data/foodData2.xlsx"] -MODEL_DIR = "app/domain/recommend/model_store" +FOOD_FILES = ["leftovers/domain/recommend/data/foodData1.xlsx", "leftovers/domain/recommend/data/foodData2.xlsx"] +MODEL_DIR = "leftovers/domain/recommend/model_store" # 컨셉 CONCEPTS = {"diet", "keto", "low_sodium", "glycemic", "bulking"} diff --git a/app/domain/recommend/service/matcher.py b/leftovers/domain/recommend/service/matcher.py similarity index 93% rename from app/domain/recommend/service/matcher.py rename to leftovers/domain/recommend/service/matcher.py index 53a79ab..eef839c 100644 --- a/app/domain/recommend/service/matcher.py +++ b/leftovers/domain/recommend/service/matcher.py @@ -1,6 +1,6 @@ import numpy as np from sklearn.metrics.pairwise import cosine_similarity -from app.domain.recommend.service import loader +from leftovers.domain.recommend.service import loader # 메뉴 이름이 유사한 것 찾기 def match_top1(query: str): diff --git a/app/domain/recommend/service/scoring.py b/leftovers/domain/recommend/service/scoring.py similarity index 100% rename from app/domain/recommend/service/scoring.py rename to leftovers/domain/recommend/service/scoring.py diff --git a/app/domain/recommend/service/train.py b/leftovers/domain/recommend/service/train.py similarity index 91% rename from app/domain/recommend/service/train.py rename to leftovers/domain/recommend/service/train.py index 263a078..9bc2e13 100644 --- a/app/domain/recommend/service/train.py +++ b/leftovers/domain/recommend/service/train.py @@ -8,11 +8,11 @@ from sklearn.metrics import mean_absolute_error from sklearn.impute import SimpleImputer -from app.domain.recommend.service.food_kfda_loader import load_kfda_excels -from app.domain.recommend.service.scoring import fit_calibration, compute_score +from leftovers.domain.recommend.service.food_kfda_loader import load_kfda_excels +from leftovers.domain.recommend.service.scoring import fit_calibration, compute_score -FOOD_FILES = ["app/domain/recommend/data/foodData1.xlsx", "app/domain/recommend/data/foodData2.xlsx"] -MODEL_DIR = Path("app/domain/recommend/model_store") +FOOD_FILES = ["leftovers/domain/recommend/data/foodData1.xlsx", "leftovers/domain/recommend/data/foodData2.xlsx"] +MODEL_DIR = Path("leftovers/domain/recommend/model_store") MODEL_DIR.mkdir(parents=True, exist_ok=True) # 컨셉 diff --git a/app/domain/tip/api/tip_api.py b/leftovers/domain/tip/api/tip_api.py similarity index 89% rename from app/domain/tip/api/tip_api.py rename to leftovers/domain/tip/api/tip_api.py index c6411c6..36135f6 100644 --- a/app/domain/tip/api/tip_api.py +++ b/leftovers/domain/tip/api/tip_api.py @@ -1,10 +1,10 @@ from fastapi import APIRouter, HTTPException from typing import List -from app.core.response.api_response import Envelope, ok -from app.domain.tip.schemas.tip_request import TipRequest -from app.domain.tip.schemas.tip_response import TipItem -from app.domain.tip.service.prompt import chatForTip +from leftovers.core.response.api_response import Envelope, ok +from leftovers.domain.tip.schemas.tip_request import TipRequest +from leftovers.domain.tip.schemas.tip_response import TipItem +from leftovers.domain.tip.service.prompt import chatForTip import json from json import JSONDecodeError diff --git a/app/domain/tip/schemas/tip_request.py b/leftovers/domain/tip/schemas/tip_request.py similarity index 100% rename from app/domain/tip/schemas/tip_request.py rename to leftovers/domain/tip/schemas/tip_request.py diff --git a/app/domain/tip/schemas/tip_response.py b/leftovers/domain/tip/schemas/tip_response.py similarity index 100% rename from app/domain/tip/schemas/tip_response.py rename to leftovers/domain/tip/schemas/tip_response.py diff --git a/app/domain/tip/service/prompt.py b/leftovers/domain/tip/service/prompt.py similarity index 91% rename from app/domain/tip/service/prompt.py rename to leftovers/domain/tip/service/prompt.py index 97d011d..c25e348 100644 --- a/app/domain/tip/service/prompt.py +++ b/leftovers/domain/tip/service/prompt.py @@ -1,5 +1,5 @@ -from app.core.external.open_ai_client import client -from app.core.config.config import settings +from leftovers.core.external.open_ai_client import client +from leftovers.core.config.config import settings # OpenAI Responses API의 structured outputs 기능에서 쓰는 JSON Schema # TIp SCHEMA의 형태로 응답을 제공함 diff --git a/main.py b/main.py index fc65eb0..5dedc77 100644 --- a/main.py +++ b/main.py @@ -2,10 +2,10 @@ from pydantic import ValidationError from contextlib import asynccontextmanager -from app.domain.recommend.service import loader -from app.domain.tip.api import tip_api -from app.domain.recommend.api import recommend_api -from app.core.exception.global_error_handler import ( +from leftovers.domain.recommend.service import loader +from leftovers.domain.tip.api import tip_api +from leftovers.domain.recommend.api import recommend_api +from leftovers.core.exception.global_error_handler import ( validation_error_handler, http_exception_handler, global_exception_handler, From 34d5d4f0135cbe1f9af5e475d011ee6710748b33 Mon Sep 17 00:00:00 2001 From: frombunny Date: Fri, 22 Aug 2025 17:35:26 +0900 Subject: [PATCH 07/10] =?UTF-8?q?:bug:=20fix:=20=EA=B2=BD=EB=A1=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 43fb8b2..9ccf8df 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,5 +7,5 @@ RUN pip install --no-cache-dir -r requirements.txt COPY . . -RUN python -m app.domain.recommend.service.train +RUN python -m leftovers.domain.recommend.service.train CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] From 8f969851165bf6d77081c6b0cefc9935e02fccd8 Mon Sep 17 00:00:00 2001 From: frombunny Date: Fri, 22 Aug 2025 18:00:54 +0900 Subject: [PATCH 08/10] =?UTF-8?q?:green=5Fheart:=20ci:=20=EC=9B=8C?= =?UTF-8?q?=ED=81=AC=ED=94=8C=EB=A1=9C=EC=9A=B0=EC=97=90=20=EC=9D=B4?= =?UTF-8?q?=EB=AF=B8=EC=A7=80=20=EC=A0=95=EB=A6=AC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cicd.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml index 7e8aa04..21b1b1c 100644 --- a/.github/workflows/cicd.yml +++ b/.github/workflows/cicd.yml @@ -61,4 +61,6 @@ jobs: -p 8000:8000 \ -e OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }} \ -e OPENAI_MODEL=${{ secrets.OPENAI_MODEL }} \ - ${{ env.IMAGE }}:latest \ No newline at end of file + ${{ env.IMAGE }}:latest + + docker image prune -af || true \ No newline at end of file From 311ddabf4a46c7f81c2204c54d1ac7219831045b Mon Sep 17 00:00:00 2001 From: frombunny Date: Fri, 22 Aug 2025 21:06:13 +0900 Subject: [PATCH 09/10] =?UTF-8?q?:green=5Fheart:=20ci:=20=EC=9B=8C?= =?UTF-8?q?=ED=81=AC=ED=94=8C=EB=A1=9C=EC=9A=B0=EC=97=90=20=EC=BA=90?= =?UTF-8?q?=EC=8B=9C=EB=A5=BC=20=EC=82=AC=EC=9A=A9=ED=95=98=EC=A7=80=20?= =?UTF-8?q?=EC=95=8A=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/cicd.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/cicd.yml b/.github/workflows/cicd.yml index 21b1b1c..eafd0f2 100644 --- a/.github/workflows/cicd.yml +++ b/.github/workflows/cicd.yml @@ -37,6 +37,7 @@ jobs: context: . file: ./Dockerfile push: true + no-cache: true tags: | ${{ env.IMAGE }}:latest ${{ env.IMAGE }}:${{ github.sha }} From 73d021ea4aea0071b88aa9e4bbd93e47262871d8 Mon Sep 17 00:00:00 2001 From: frombunny Date: Fri, 22 Aug 2025 21:35:30 +0900 Subject: [PATCH 10/10] =?UTF-8?q?:bug:=20fix:=20=EC=A4=91=EB=B3=B5=20?= =?UTF-8?q?=EB=A1=9C=EB=94=A9=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 0 -> 6148 bytes .github/.DS_Store | Bin 0 -> 6148 bytes leftovers/.DS_Store | Bin 0 -> 6148 bytes main.py | 1 - 4 files changed, 1 deletion(-) create mode 100644 .DS_Store create mode 100644 .github/.DS_Store create mode 100644 leftovers/.DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a2e5ec1a10bd3de3d17cae0d8c6f8f8e3c4e4433 GIT binary patch literal 6148 zcmeHKJx?1!5Pb`WVz?ktq;Po^0V#?CLWJ@HPD4wV24YAslFeCsMRZrvq(+Fx2t_m2?mN%N&bw#btrvh>+~1f1CID181d}mNeN5sq zdTc0qo)Mj_(cGL_Sua}co=kI?0;a%YR6w5H1TV3PE$r#%H>uuy(y>-itJRxDoxaMi z>hZhf7vJ7=$2abbw;P>zLo!*i6i@#2MFab&>+V2$*_)v`oSrRRJP#cHS*KNWm<-O+ ze1KQNXM}tX@B!O6&|GGZcD{Ea^3%p4*72UB zK`!)YE)@Uu;7rZyeEj5iD(Ev{UCr_SY|S_97Z^p83_oHIh1YEdyP9h{wD6Q%`($aJ zw>dTUXNy(RfHs=~rhqB%R{?oHWE_Hd#4@0Nb#U@W z0AfP7H(twGLTa*zdBidxBQzIEiJ{cRBZdp*^k*?Ik5~o_<#4_;*NL57JfS$>o&LkJjj>EFh<>;e(=xc76Z(1xX{W-FsKB>{f z7%&EmflXk5JzFH+Q8a4|7z4(@f&qCyBvipPV5#U|9W?$3Ky1|elnXcCDS1yH@mN=L}MZK@7<$`A7|JW(>+HyO6TCSm>2`bfHCl&7(mZvDM~?GjR9l8 z7}zkt-vYy~Bq zoDLsOD?6P~T&j-y`xH(t2-<247z2F