{"id":30454495,"url":"https://github.com/isho-0/passcheckers","last_synced_at":"2026-04-07T08:01:46.388Z","repository":{"id":309351486,"uuid":"1035452736","full_name":"isho-0/PassCheckers","owner":"isho-0","description":"AI 이미지 분석 기반 수하물 분류 및 여행 도우미 애플리케이션","archived":false,"fork":false,"pushed_at":"2025-08-11T10:45:16.000Z","size":6990,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-11T12:26:36.144Z","etag":null,"topics":["flask","image-classification","mysql","nuxt","python","pytorch","redis","tensorrt","vuejs","yolov11"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/isho-0.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-10T12:39:04.000Z","updated_at":"2025-08-11T10:45:21.000Z","dependencies_parsed_at":"2025-08-11T12:36:46.472Z","dependency_job_id":null,"html_url":"https://github.com/isho-0/PassCheckers","commit_stats":null,"previous_names":["isho-0/passcheckers"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/isho-0/PassCheckers","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isho-0%2FPassCheckers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isho-0%2FPassCheckers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isho-0%2FPassCheckers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isho-0%2FPassCheckers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/isho-0","download_url":"https://codeload.github.com/isho-0/PassCheckers/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isho-0%2FPassCheckers/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271755407,"owners_count":24815398,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-23T02:00:09.327Z","response_time":69,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flask","image-classification","mysql","nuxt","python","pytorch","redis","tensorrt","vuejs","yolov11"],"created_at":"2025-08-23T16:01:44.386Z","updated_at":"2026-04-07T08:01:46.381Z","avatar_url":"https://github.com/isho-0.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🎯 PassCheckers\n\n\u003e **AI 이미지 분석 기반 수하물 분류 및 여행 도우미 웹 애플리케이션**  \n\u003e 2025 캡스톤디자인 팀 프로젝트\n\n![Python](https://img.shields.io/badge/python-3.10-blue?logo=python)\n![Flask](https://img.shields.io/badge/flask-3.1-black?logo=flask)\n![MySQL](https://img.shields.io/badge/mysql-8.0-orange?logo=mysql)\n![YOLOv11](https://img.shields.io/badge/YOLO-v11-yellow)\n![Vue](https://img.shields.io/badge/vue.js-3-brightgreen?logo=vue.js)\n![Redis](https://img.shields.io/badge/redis-7-red?logo=redis)\n![PyTorch](https://img.shields.io/badge/pytorch-2.3.1-orange?logo=pytorch)\n\n---\n\n## 📌 프로젝트 소개\n\n**PassCheckers**는 사용자가 업로드한 수하물 이미지를 분석하여  \nYOLOv11 기반 **커스텀 객체 탐지 모델**로 수하물 항목을 자동 인식하고,  \n무게 추정, 패킹 추천, 다중 분류 기능 등을 제공하는 **웹 기반 여행 도우미 시스템**입니다.\n\n---\n\n## ✨ 주요 기능\n\n### 🤖 AI 이미지 분석\n- 📤 **이미지 업로드 및 YOLO 추론 요청**\n- 🧠 **YOLOv11 기반 수하물 분류** (단일/다중 객체 탐지)\n- 🎯 **SKU 모델 기반 바운딩 박스 탐지**\n- ⚖️ **무게 추정** (클래스별 평균 무게 기반)\n- 🏷️ **미탐지 항목 수동 태그 기능**\n\n### 🧳 여행 도우미\n- 🌍 **여행지별 맞춤 패킹 추천** (날씨 기반)\n- 📅 **실시간 날씨 예보 연동** (14일 이내)\n- 📊 **과거 날씨 데이터 분석** (14일 이후)\n- 👥 **동반자별 맞춤 추천** (혼자/연인/가족/친구/아이와 함께)\n- 🎨 **테마별 추천** (힐링/맛집/쇼핑/액티비티/문화)\n- ✈️ **비행 조건별 추천** (장거리/단거리 비행)\n\n### 👤 사용자 관리\n- 🔐 **JWT 기반 인증 시스템**\n- 📊 **분석 기록 저장 및 조회**\n- 👤 **프로필 관리**\n- 🔄 **실시간 세션 관리** (Redis)\n\n---\n\n## 📁 프로젝트 구조\n\n```bash\nPassCheckers/\n├── frontend/                          # ✅ Nuxt 3 프론트엔드\n│   ├── pages/                         # Vue 페이지 컴포넌트\n│   │   ├── index.vue                  # 메인 페이지 (풀페이지)\n│   │   ├── classification.vue         # 이미지 분류 페이지\n│   │   ├── recommend.vue              # 여행 추천 페이지\n│   │   ├── packing.vue                # 패킹 도우미 페이지\n│   │   ├── profile.vue                # 사용자 프로필\n│   │   ├── login.vue                  # 로그인 페이지\n│   │   └── ...\n│   ├── components/                    # Vue 컴포넌트\n│   │   ├── classification/            # 분류 관련 컴포넌트\n│   │   ├── packing/                   # 패킹 관련 컴포넌트\n│   │   ├── recommend/                 # 추천 관련 컴포넌트\n│   │   ├── profile/                   # 프로필 관련 컴포넌트\n│   │   └── ...\n│   ├── composables/                   # Vue 3 컴포저블\n│   ├── middleware/                    # Nuxt 미들웨어\n│   ├── layouts/                       # 레이아웃 템플릿\n│   ├── assets/                        # 정적 자산\n│   ├── public/                        # 공개 리소스\n│   ├── server/                        # 서버사이드 렌더링\n│   ├── app.vue                        # 메인 Vue 컴포넌트\n│   ├── nuxt.config.ts                 # Nuxt 설정\n│   ├── package.json                   # 프론트엔드 의존성\n│   └── tsconfig.json                  # TypeScript 설정\n│\n├── backend/                           # ✅ Flask 백엔드 서버\n│   ├── models/                        # 데이터 모델\n│   │   ├── user.py                    # 사용자 모델\n│   │   ├── item_model.py              # 아이템 모델\n│   │   ├── detected_item_model.py     # 탐지된 아이템 모델\n│   │   └── pytorch/                   # AI 모델 파일\n│   │       ├── YOLOv11_model.pt       # YOLO 모델\n│   │       └── SKU_model.pt           # SKU 모델\n│   ├── repository/                    # DB 접근 계층\n│   │   └── user_repo.py               # 사용자 데이터 접근\n│   ├── service/                       # 서비스 로직\n│   │   └── user_service.py            # 사용자 서비스\n│   ├── services/                      # 외부 서비스\n│   │   ├── amadeus_service.py         # 항공편 정보 API\n│   │   ├── gemini_service.py          # Gemini AI 서비스\n│   │   ├── weather_service.py         # 날씨 API 서비스\n│   │   └── recommendation_service.py  # 추천 서비스\n│   ├── routes/                        # API 라우트\n│   │   ├── user.py                    # 사용자 관련 API\n│   │   ├── classify.py                # 이미지 분류 API\n│   │   ├── recommend.py               # 추천 API\n│   │   ├── items.py                   # 아이템 관리 API\n│   │   ├── analysis.py                # 분석 결과 API\n│   │   ├── locations.py               # 여행지 정보 API\n│   │   ├── flights.py                 # 항공편 정보 API\n│   │   ├── packing.py                 # 패킹 관련 API\n│   │   ├── weight.py                  # 무게 관련 API\n│   │   ├── share.py                   # 공유 관련 API\n│   │   ├── community.py               # 커뮤니티 API\n│   │   └── category.py                # 카테고리 API\n│   ├── matching/                      # 매칭 관련 모듈\n│   │   ├── matcher.py                 # 매칭 로직\n│   │   ├── item_service.py            # 아이템 서비스\n│   │   └── recommend_matching_service.py # 추천 매칭\n│   ├── sku/                           # SKU 관련 모듈\n│   │   └── detect.py                  # SKU 탐지\n│   ├── yolo/                          # YOLO 관련 모듈\n│   │   └── detect.py                  # YOLO 탐지\n│   ├── db/                            # 데이터베이스 유틸\n│   │   └── database_utils.py          # DB 연결 및 유틸리티\n│   ├── data_import/                   # 데이터 가져오기\n│   │   ├── import_csv_to_mysql.py     # CSV → MySQL\n│   │   ├── 1_locations.csv            # 여행지 데이터\n│   │   ├── 2_budgets.csv              # 예산 데이터\n│   │   ├── 3_cost_breakdowns.csv      # 비용 상세 데이터\n│   │   ├── 4_location_content.csv     # 여행지 콘텐츠\n│   │   ├── items_weight.csv           # 아이템 무게 데이터\n│   │   ├── recommend/                 # 추천 관련 데이터\n│   │   │   ├── airline_code.csv       # 항공사 코드\n│   │   │   ├── location_details.csv   # 여행지 상세 정보\n│   │   │   └── weather_data.csv       # 날씨 데이터\n│   │   └── README.md                  # 데이터 가져오기 가이드\n│   ├── static/                        # 정적 파일\n│   │   └── thumbnails/                # 썸네일 이미지\n│   ├── app.py                         # Flask 앱 메인 파일\n│   ├── config.py                      # 환경 설정\n│   ├── requirements.txt               # Python 패키지 목록\n│   ├── env.example                    # 환경 변수 예시\n│   └── README.md                      # 백엔드 문서\n│\n├── logs/                              # ✅ 로그 파일 (Git 무시)\n│   ├── backend.log                    # 백엔드 로그\n│   └── frontend.log                   # 프론트엔드 로그\n│\n├── README.md                          # ✅ 프로젝트 메인 문서\n├── DEVELOPMENT.md                     # ✅ 개발 가이드\n├── db_tables.md                       # ✅ 데이터베이스 스키마 문서\n├── check_tables.sql                   # DB 테이블 확인 쿼리\n└── package.json                       # 루트 패키지 설정\n```\n\n---\n\n## 🧪 실행 방법\n\n### 1️⃣ 프론트엔드 실행\n\n#### 🔧 개발 모드 (권장)\n개발 중 테스트 및 디버깅용으로 핫 리로드 기능 포함\n\n```bash\ncd frontend\nnpm install\nnpm run dev\n```\n\n- **자동 재시작**: 코드 수정 시 자동으로 새로고침\n- **외부 접속**: 자동으로 `0.0.0.0:80`으로 실행되어 외부 접속 가능\n- **디버깅**: 상세한 에러 메시지 및 경고 표시\n\n#### 🚀 프로덕션 모드 (배포)\n실제 서비스 배포 시 사용 (빌드 후 최적화된 파일 실행)\n\n```bash\ncd frontend\n\n# 1. 프로덕션 빌드\nnpm run build\n\n# 2. 프로덕션 서버 실행 (외부 접속 허용)\n# Windows PowerShell\n$env:HOST=\"0.0.0.0\"\n$env:PORT=\"80\"\nnpm run start:prod\n\n# Linux/Mac\nHOST=0.0.0.0 PORT=80 npm run start:prod\n```\n\n- **최적화**: 코드 압축 및 최소화 (약 1/3~1/5 크기)\n- **성능**: 더 빠른 로딩 속도\n- **외부 접속**: 환경변수로 `0.0.0.0` 설정 시 외부 IP로 접속 가능\n\n---\n\n### 2️⃣ 백엔드 실행\n\n#### 🔧 개발 모드 (권장)\n개발 중 테스트 및 디버깅용\n\n```bash\ncd backend\n\n# Windows\n.venv\\Scripts\\activate\n\n# Linux/Mac\nsource .venv/bin/activate\n\n# 실행\npython app.py\n```\n\n- **자동 재시작**: 코드 수정 시 자동으로 서버 재시작\n- **디버그 모드**: 상세한 에러 트레이스 표시\n- **포트**: http://0.0.0.0:5001\n\n#### 🚀 프로덕션 모드 (배포)\n실제 서비스 배포 시 사용 - 멀티 워커로 높은 성능 제공\n\n```bash\ncd backend\n\n# Windows\n.venv\\Scripts\\activate\npip install -r requirements.txt  # waitress 설치 확인\n\n# Waitress 프로덕션 서버 실행\nwaitress-serve --host=0.0.0.0 --port=5001 app:app\n```\n\n**Linux/Mac의 경우 Gunicorn 사용 (더 높은 성능)**:\n```bash\n# Linux/Mac\nsource .venv/bin/activate\npip install -r requirements.txt  # gunicorn 설치 확인\n\n# Gunicorn 실행 (워커 4개)\ngunicorn -w 4 -b 0.0.0.0:5001 app:app\n```\n\n- **Waitress (Windows)**: 안정적인 WSGI 서버\n- **Gunicorn (Linux/Mac)**: 멀티 워커로 동시 요청 처리\n- **성능**: 개발 서버 대비 수백~수천 배 빠름\n- **안정성**: 워커 크래시 시 자동 재시작\n\n⚠️ **주의사항**:\n- `requirements.txt`에 OS별 서버가 자동으로 설치됩니다\n- `config.py`의 CORS 설정에서 실제 서버 IP를 적용하세요\n- 프로덕션에서는 반드시 `DEBUG = False` 설정\n\n---\n\n### 3️⃣ Redis 확인\n\n```bash\nredis-cli\nkeys *\nkeys refresh_token:*\nget refresh_token:1\n```\n\n---\n\n### 4️⃣ MySQL 설정\n\n```bash\n(세부 설정은 추후 업데이트 예정)\n```\n\n---\n\n## 🔧 기술 스택\n\n|  분류   | 기술 |\n|:--------:|:-----:|\n| 프론트엔드 | Nuxt 3, Vue 3, TypeScript, Quasar UI |\n| 백엔드 | Python 3.10, Flask 3.1 |\n| 모델 | YOLOv11 (커스텀 학습) |\n| 데이터베이스 | MySQL 8.0 |\n| 인프라 | Nginx |\n| 기타 | OpenCV, Numpy, Pillow, Redis, PyTorch, TensorRT |\n\n---\n\n## 🧭 시스템 아키텍처\n\n```mermaid\ngraph TB\n    A[사용자] --\u003e B[Nuxt 3 프론트엔드]\n    B --\u003e C[Flask 백엔드 API]\n    C --\u003e D[YOLOv11 모델]\n    C --\u003e E[SKU 모델]\n    C --\u003e F[MySQL 데이터베이스]\n    C --\u003e G[Redis 세션]\n    C --\u003e H[날씨 API]\n    C --\u003e I[Gemini AI]\n    \n    D --\u003e J[객체 분류]\n    E --\u003e K[바운딩 박스 탐지]\n    F --\u003e L[사용자 데이터]\n    F --\u003e M[물품 규정]\n    F --\u003e N[여행지 정보]\n    G --\u003e O[인증 토큰]\n    H --\u003e P[실시간 예보]\n    I --\u003e Q[패킹 추천]\n```\n\n---\n\n## 📸 주요 화면\n\n### 🏠 메인 페이지\n- **풀페이지 디자인**으로 각 기능을 직관적으로 안내\n- **반응형 UI**로 모든 디바이스에서 최적화된 경험\n\n### 📸 이미지 분류\n- **드래그 앤 드롭** 이미지 업로드\n- **실시간 AI 분석** 결과 표시\n- **바운딩 박스** 시각화 및 수정 가능\n\n### 🧳 패킹 추천\n- **설문 기반** 맞춤 추천\n- **날씨 데이터** 연동\n- **동반자/테마별** 개인화\n\n### 👤 사용자 프로필\n- **분석 기록** 관리\n- **프로필 편집** 기능\n- **계정 관리** 시스템\n\n---\n\n## 👥 팀원 소개\n\n|  이름   | 역할 |\n|:--------:|-----|\n| 김민한 | 🧠 **YOLOv11 커스텀 모델 설계·학습**\u003cbr\u003e· 학습 데이터셋 전처리 및 어노테이션 설계\u003cbr\u003e· 하이퍼파라미터 튜닝 및 성능 최적화\u003cbr\u003e· 프론트엔드 UI/UX 시안 설계 |\n| 이상민 | ⚙️ **모델 고도화 및 알고리즘 개발**\u003cbr\u003e· YOLOv11 다중 객체 분류 로직 구현\u003cbr\u003e· 수하물 무게 예측 알고리즘 개발 (클래스별 평균 무게 기반)\u003cbr\u003e· 패킹 추천 알고리즘 설계 |\n| 이상호 | 💻 **풀스택 및 시스템 아키텍처 개발**\u003cbr\u003e· Flask 기반 REST API 서버 구현\u003cbr\u003e· Vue/Nuxt 프론트엔드 연동 및 상태관리\u003cbr\u003e· Redis 세션 관리, MySQL DB 설계 및 쿼리 최적화\u003cbr\u003e· 전체 시스템 설계 및 배포 환경 구성 |\n\n---\n\n## 🎯 프로젝트 완성 현황\n\n### ✅ 완성된 기능들\n\n#### 🤖 AI 모델 시스템\n- **YOLOv11 커스텀 모델**: 수하물 객체 탐지 및 분류\n- **SKU 모델**: 바운딩 박스 정확한 탐지\n- **이중 모델 파이프라인**: SKU 탐지 → YOLO 분류\n- **무게 예측 알고리즘**: 클래스별 평균 무게 기반\n\n#### 🌍 여행 도우미 시스템\n- **날씨 기반 추천**: 실시간 예보 + 과거 데이터\n- **개인화 추천**: 동반자/테마/비행조건별 맞춤\n- **여행지 데이터**: 20개 테이블로 구성된 종합 데이터베이스\n- **Gemini AI 연동**: 지능형 패킹 추천\n\n#### 💻 웹 애플리케이션\n- **프론트엔드**: Nuxt 3 + Vue 3 + TypeScript\n- **백엔드**: Flask + MySQL + Redis\n- **인증 시스템**: JWT + Redis 세션 관리\n- **API**: RESTful API 30+ 엔드포인트\n\n#### 📊 데이터 관리\n- **사용자 관리**: 회원가입/로그인/프로필\n- **분석 기록**: 이미지 분석 결과 저장/조회\n- **물품 규정**: 수하물 규정 데이터베이스\n- **여행지 정보**: 위치/날씨/예산/콘텐츠 데이터\n\n### 🚀 배포 준비 완료\n\n- **프로덕션 서버**: Gunicorn/Waitress 지원\n- **환경 설정**: 개발/프로덕션 분리\n- **데이터베이스**: MySQL 스키마 완성\n- **문서화**: API 문서 및 사용 가이드 완성\n\n---\n\n## 📝 개발 가이드\n\n### 프로젝트 구조 개선 완료 ✅\n\n1. **프론트엔드 분리**: ✅ 완료\n2. **로그 파일 정리**: ✅ 완료  \n3. **문서화 개선**: ✅ 완료\n4. **백엔드 통합**: ✅ 완료\n\n### 주의사항\n\n- 프로젝트가 **완성 상태**로 모든 핵심 기능이 구현됨\n- `backend/` 폴더에서 모든 백엔드 로직 관리\n- `frontend/` 폴더에서 모든 프론트엔드 로직 관리 ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisho-0%2Fpasscheckers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fisho-0%2Fpasscheckers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisho-0%2Fpasscheckers/lists"}