AI 기반 맞춤형 취업 준비 도우미 서버입니다. 이력서와 채용공고를 분석해 기업별 준비 로드맵, 자소서 문항 첨삭, 예상 면접 질문을 생성해줍니다.
- Frontend: https://didimdol-front.vercel.app
- Backend(배포): https://back-end-turw.onrender.com
- API 문서(Swagger, 배포): https://back-end-turw.onrender.com/docs
- API 문서(Swagger, 로컬): 서버 실행 후
http://127.0.0.1:8001/docs
- 회원가입 / 로그인: 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
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt.env.example을 참고해 .env 파일을 작성합니다.
OPENROUTER_API_KEY=
SUPABASE_URL=
SUPABASE_KEY=
SECRET_KEY=
python run.py기본 포트는 8001이며, PORT 환경 변수로 변경할 수 있습니다. 실행 후 http://127.0.0.1:8001/docs에서 API 문서를 확인할 수 있습니다.
- Render 등 시스템
sqlite3버전이 낮은 환경에서는chromadbimport 시 오류가 발생할 수 있어,web/main.py에서pysqlite3-binary로sqlite3모듈을 교체합니다(로컬 환경에는 영향 없음). - CORS는 로컬 개발(
http://localhost:5173)과 배포된 프론트엔드 도메인만 허용합니다. 새 프론트엔드 도메인을 추가하려면web/main.py의allow_origins를 수정하세요.