Skip to content

Repository files navigation

Job-Cheat Backend

ChatGPT 대화 내역을 기반으로 개인화된 취업 준비 경험을 만드는 Django 백엔드입니다.

Job-Cheat는 취업 준비 과정에서 반복되는 정보 정리와 자기소개서·면접 준비 부담을 줄이는 AI 기반 플랫폼입니다. 사용자가 업로드한 ChatGPT 대화 내역에서 경험과 역량의 맥락을 분석해 페르소나를 만들고, 맞춤 채용공고 추천, 자기소개서, 텍스트·음성 모의면접으로 연결합니다.

✨ 주요 기능

기능 설명
대화 기반 페르소나 생성 ChatGPT 대화 HTML을 업로드하면 대화 데이터를 변환·저장하고, 역량 분석에 필요한 페르소나를 생성합니다.
RAG 역량 분석 사용자 발화를 중심으로 검색 가능한 대화 컨텍스트를 구성해 실제 경험에 근거한 역량 평가를 지원합니다.
맞춤 공고 추천과 스크랩 페르소나의 기술·역량·직무 맥락에 맞춰 공고를 추천하고, 관심 공고를 페르소나별로 관리합니다.
AI 자기소개서 페르소나와 지원 정보에 맞춰 자기소개서 초안을 만들고, 생성 결과를 보관·조회합니다.
텍스트·음성 모의면접 개인화된 질문을 생성하고, 텍스트 또는 음성 답변을 평가해 질문별 피드백과 면접 이력을 제공합니다.

🧭 설계 방향

  • 대화 맥락 보존: 사용자 발화만 임베딩하고 이전 Assistant 응답을 메타데이터로 연결해, AI의 문장보다 사용자의 경험과 표현을 중심으로 분석합니다.
  • 사용자별 데이터 격리: Firebase 인증을 기준으로 Firestore·Firebase Storage 데이터를 관리하고, Pinecone namespace로 대화 벡터를 분리합니다.
  • 비동기 대용량 처리: HTML 업로드 요청은 저장·변환 후 처리 작업을 큐잉하며, 대용량 업로드에는 ASGI 실행 경로를 제공합니다.

🛠 기술 스택

Category 기술
Backend Python 3.12, Django 5, Django REST framework
Data & Storage Firebase Authentication, Cloud Firestore, Firebase Storage, SQLite (Django 기본 DB)
AI & Vector Google Gemini, Cohere, Pinecone, SentenceTransformers
Speech OpenAI Whisper, Google Cloud Text-to-Speech
Runtime & Build uv, Uvicorn, Gunicorn, django-cors-headers

🗄️ 데이터 모델

사용자별 Firestore 컬렉션에 페르소나, 자기소개서, 면접 세션·질문, 추천 결과를 저장합니다. ChatGPT 대화의 임베딩은 Pinecone에 사용자 namespace 단위로 보관하며, HTML·변환 JSON·면접 음성 파일은 Firebase Storage에 저장합니다.

📁 프로젝트 구조

server/
├── job_cheat/
│   ├── api/                    # Firebase 인증 검증·사용자 동기화 API
│   ├── core/                   # Firebase, RAG, AI, TTS/STT 등 공통 서비스
│   ├── personas/               # 대화 HTML 입력과 페르소나 생성
│   ├── cover_letters/          # 자기소개서 생성·조회
│   ├── interviews/             # 텍스트·음성 모의면접
│   ├── job_search/             # 공고 추천·상세·스크랩
│   ├── job_cheat/              # Django 설정, URL, ASGI/WSGI 엔트리포인트
│   ├── docs/                   # 데이터 모델 문서
│   ├── manage.py               # Django 관리 명령
│   └── runserver_asgi.py       # 대용량 업로드용 ASGI 실행 스크립트
├── pyproject.toml              # Python 의존성과 런타임 설정
└── uv.lock                     # 잠긴 의존성 버전

🚀 시작하기

요구 사항

  • Python 3.12 이상
  • uv
  • Firebase 서비스 계정 정보 및 Firebase Storage 버킷 접근 권한
  • Gemini, Cohere, Pinecone API 키
  • 음성 면접을 사용할 경우 OpenAI API 키와 Google Cloud Text-to-Speech 인증 설정

1. 저장소 내려받기

git clone https://github.com/C4-job-cheat/server.git
cd server

2. 설정하기

프로젝트 루트에 로컬 전용 .env 파일을 만들고, 운영 환경에 맞는 자격 증명 경로와 API 키를 설정합니다. .env와 인증서 파일은 저장소에 커밋하지 않습니다.

DJANGO_SECRET_KEY=generate-a-unique-secret-for-this-environment
DEBUG=false
DJANGO_ALLOWED_HOSTS=api.example.com
CORS_ALLOWED_ORIGINS=https://app.example.com
CSRF_TRUSTED_ORIGINS=https://app.example.com
FIREBASE_CREDENTIALS=/path/to/firebase-service-account.json
FIREBASE_STORAGE_BUCKET=your-project.appspot.com
GEMINI_API_KEY=...
COHERE_API_KEY=...
PINECONE_API_KEY=...
OPENAI_API_KEY=...

Google Cloud 인증이 별도로 필요한 환경에서는 GOOGLE_APPLICATION_CREDENTIALS도 설정합니다. 개발 환경의 로컬 Origin은 기본 허용 목록에 포함되어 있으며, ngrok 등 추가 Origin은 CORS_ALLOWED_ORIGINS 또는 CORS_ALLOWED_ORIGIN_REGEXES로 명시합니다. Pinecone과 모델 설정은 PINECONE_INDEX_NAME, PINECONE_INDEX_DIMENSION, COHERE_EMBED_MODEL, GEMINI_TEXT_MODEL 환경 변수로 조정할 수 있습니다.

uv sync
uv run python job_cheat/manage.py migrate

3. 실행하기

일반 개발 서버는 다음 명령으로 실행합니다.

uv run python job_cheat/manage.py runserver 0.0.0.0:8000

대용량 ChatGPT HTML 업로드를 처리할 때는 ASGI 실행 스크립트를 사용합니다.

uv run python job_cheat/runserver_asgi.py 0.0.0.0:8000

4. 검증하기

uv run python job_cheat/manage.py check
uv run python job_cheat/manage.py test

📚 문서

문서 내용
Core Services Firebase, AI, RAG, 벡터 저장소 등 공통 서비스
Conversation RAG System 대화 청크 처리, 임베딩, 검색 컨텍스트 구성
Personas App 페르소나 입력·처리 흐름
Cover Letters App 자기소개서 생성과 관리
Interviews App 면접 질문, 음성 답변, 평가와 이력
Job Search App 공고 추천, 상세 조회, 스크랩
Database Schema Firestore, Storage, Pinecone 데이터 구조
API App 인증 검증과 도메인 API를 연결하는 앱 개요

About

ChatGPT 대화 기반 AI 취업 준비 플랫폼의 Django 백엔드

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages