Skip to content

Latest commit

 

History

49 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

디딤돌 (Didimdol) Back-End

AI 기반 맞춤형 취업 준비 도우미 서버입니다. 이력서와 채용공고를 분석해 기업별 준비 로드맵, 자소서 문항 첨삭, 예상 면접 질문을 생성해줍니다.

주요 기능

  • 회원가입 / 로그인: JWT 기반 인증 (/api/v1/auth)
  • 이력서 관리: 이력서 등록 및 조회 (/api/v1/user)
  • 채용공고 관리: 공고 URL 자동 파싱(회사명/직무/마감일/요구역량 추출), 자소서 문서 CRUD (/api/v1/documents)
  • 커리어 컨설팅: 이력서·직무 기반 취업 로드맵 생성, 기업 리포트, 자소서 문항 조회, 문항별/전체 첨삭 스트리밍, 면접 질문 생성 (/api/v1/career)
  • 준비 기업 관리: 관심 기업 등록/삭제, 기업별 준비 로드맵 생성 (/api/v1/prep)
  • 백그라운드에서 6시간마다 기업 리포트를 자동 갱신

기술 스택

  • Framework: FastAPI, Uvicorn
  • DB: Supabase (PostgreSQL)
  • AI: OpenRouter(GPT-5.4), LangChain, LangGraph, ChromaDB(RAG)
  • Auth: python-jose(JWT), passlib
  • 기타: BeautifulSoup(채용공고 크롤링), pdfplumber

프로젝트 구조

web/
├── main.py                # FastAPI 앱 엔트리포인트, 라우터 등록, CORS, 백그라운드 리포트 갱신 루프
├── dependencies.py        # 공통 의존성(get_current_user 등)
├── routers/                # API 엔드포인트
│   ├── auth_router.py      # 회원가입/로그인
│   ├── user_router.py      # 유저 정보/이력서
│   ├── document_router.py  # 자소서 문서 CRUD, 공고 URL 파싱
│   ├── career_router.py    # 로드맵, 기업 리포트, 자소서 첨삭, 면접 질문
│   └── prep_router.py      # 준비 기업 관리 및 로드맵
├── schemas/                 # Pydantic 요청/응답 모델
├── services/                 # 비즈니스 로직 (Supabase 연동 등)
└── ai/                        # LLM/에이전트 로직
    ├── llm.py                 # OpenRouter 모델 클라이언트
    ├── rag.py                 # ChromaDB 기반 RAG
    ├── company_agent.py       # 기업 정보 수집 에이전트
    ├── posting_parser.py      # 채용공고 크롤링/파싱
    ├── essay_questions.py     # 자소서 문항 조회
    ├── interview_questions.py # 기출 면접 질문 조회
    ├── news.py                # 기업 뉴스 수집
    └── prompts.py             # 프롬프트 템플릿

run.py                        # 로컬 실행 스크립트
requirements.txt

시작하기

1. 환경 설정

python -m venv .venv
source .venv/bin/activate      # Windows: .venv\Scripts\activate
pip install -r requirements.txt

2. 환경 변수

.env.example을 참고해 .env 파일을 작성합니다.

OPENROUTER_API_KEY=
SUPABASE_URL=
SUPABASE_KEY=
SECRET_KEY=

3. 서버 실행

python run.py

기본 포트는 8001이며, PORT 환경 변수로 변경할 수 있습니다. 실행 후 http://127.0.0.1:8001/docs에서 API 문서를 확인할 수 있습니다.

배포 참고사항

  • Render 등 시스템 sqlite3 버전이 낮은 환경에서는 chromadb import 시 오류가 발생할 수 있어, web/main.py에서 pysqlite3-binarysqlite3 모듈을 교체합니다(로컬 환경에는 영향 없음).
  • CORS는 로컬 개발(http://localhost:5173)과 배포된 프론트엔드 도메인만 허용합니다. 새 프론트엔드 도메인을 추가하려면 web/main.pyallow_origins를 수정하세요.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages