IT 직군 멀티모달 AI 면접 시뮬레이터. 본 문서는 전체 오버뷰 + 모든 컨텍스트 문서의 인덱스다. 작업 디렉토리에서 가장 가까운
CLAUDE.md를 먼저 읽고, 필요한 횡단 관심사는docs/에서 찾는다.
GitHub 레포 + 이력서 → AI가 분석 → 개인 맞춤 모의 면접 → 음성·비언어적 분석 포함 종합 피드백.
상세 비전·페르소나·메트릭: docs/product-overview.md
Frontend (React)
↓
Nginx Gateway
↓
┌────────────────┐ ┌──────────────────────┐
│ Core (Spring) │ ←→ │ RealTime (Go) │
└─────┬──────────┘ └──────────────────────┘
│ RabbitMQ
↓
┌──────────────────────────────┐
│ AI (FastAPI/LangChain) │
└──────────────────────────────┘
PostgreSQL+pgvector · S3/MinIO
자세한 다이어그램과 책임 매트릭스: docs/architecture.md
| 레이어 | 위치 | 기술 |
|---|---|---|
| 프론트엔드 | frontend/CLAUDE.md |
React 19 + TypeScript + Vite, FSD 구조 |
| 백엔드 (Core) | backend/CLAUDE.md |
Java 21 + Spring Boot 4 + JPA + QueryDSL |
| AI 서버 | ai/CLAUDE.md |
Python 3.13 + FastAPI + LangChain |
| 인프라 | infra/CLAUDE.md |
Docker Compose: PG(+pgvector), RabbitMQ, MinIO |
RealTime Server (Go) 는 아직 구현 디렉토리 없음. 추가 시
realtime/CLAUDE.md생성.
각 레이어 하위 슬라이스/도메인 패키지에도 CLAUDE.md가 배치되어 있을 수 있다. 작업할 디렉토리에서 가장 가까운 것을 우선 읽는다.
| 분류 | 문서 |
|---|---|
| 제품 비전 | docs/product-overview.md |
| 시스템 아키텍처 | docs/architecture.md |
| 데이터 흐름 (시나리오) | docs/data-flow.md |
| 데이터베이스 (DDL, ENUM, 인덱스) | docs/database.md |
| REST API 규약 | docs/api-conventions.md |
| RabbitMQ 메시징 | docs/messaging.md |
| 객체 스토리지 (S3/MinIO) | docs/storage.md |
| SSE 이벤트 스펙 | docs/event-stream.md |
| 디자인 시스템 | docs/design-system.md |
| UI 패턴 (4-state, 폼, 토스트, 키보드) | docs/ui-patterns.md |
| 보안 (인증, 암호화, 개인정보) | docs/security.md |
| 옵저버빌리티 (trace, 로그, AI 비용) | docs/observability.md |
| 환경 변수 카탈로그 | docs/environment.md |
| 코딩 컨벤션 | docs/coding-conventions.md |
| Git 컨벤션 (브랜치·커밋·PR) | docs/git-conventions.md |
| 테스트 전략 | docs/testing-strategy.md |
| 용어집 (한↔영, ENUM) | docs/glossary.md |
전체 인덱스: docs/README.md
산출물 (학교 제출용 PDF):
docs/1조(StackUp)UserStory (1).pdfdocs/1조(StackUp)Product Backlog (1).pdf
- PostgreSQL 단독 접근 — Core 서버만 직접 접근. AI/RealTime은 API 또는 RabbitMQ 경유. (architecture §4.1)
- Hybrid Storage — 관계형 → PG, 임베딩 → pgvector, 대용량 → S3. (Redis 사용 안 함 — 휘발성 데이터는 DB short-lived 레코드 또는 Core 인메모리)
- LLM 이중 모델 — 세션 시작은 Pro(품질), 꼬리질문은 Flash + RAG(저지연 < 3s).
- 분산 추적 — 모든 요청에
X-Trace-Id전파. RabbitMQ 메시지 헤더에도 동일. - MVP 우선 — 필요해질 때 추가, 미래 가정 테이블/기능 만들지 않음.
- 도메인 우선 패키징 — 백엔드는 layered가 아닌 도메인 패키지로 구성.
- 레이어별 컨텍스트 — 작업 시 가장 가까운
CLAUDE.md부터 읽는다.
| 이름 | 역할 |
|---|---|
| 박상우 (SM) | Backend Core (Spring Boot, OAuth, 세션·리포트 API, DB) |
| 정준모 | AI 서빙 (LangChain/RAG, STT/TTS, 프롬프트) |
| 조서현 (PO) | RealTime 서버 (Go), Core-AI 연동, GitHub 분석 |
| 신재호 | Frontend (React UI, 미디어 스트림, 웹캠) |
# 1. 환경 변수
cp .env.example .env
cp frontend/.env.example frontend/.env.local # 도입 후
cp ai/.env.example ai/.env
# 2. 인프라 부팅
docker compose up -d
# 3. 각 서버 실행
cd backend && ./gradlew bootRun
cd ai && uv sync && uv run uvicorn ai_server.main:app --reload
cd frontend && npm install && npm run dev상세: infra/CLAUDE.md §3, docs/environment.md §10
신규 기능 PR 머지 전:
- 가장 가까운
CLAUDE.md의 규약 준수 - 단위 테스트 추가 (해피 + 경계값)
- DB 스키마 변경 시 Flyway 마이그레이션 +
docs/database.md갱신 - 새 API 시
docs/api-conventions.md준수 + OpenAPI 자동 생성 - 새 메시지 시
docs/messaging.md§1, §5 갱신 +infra/rabbitmq/definitions.json - 새 환경변수 시
.env.example동기화 +docs/environment.md - 보안 체크리스트 통과
docs/security.md §10 - PR 본문 템플릿 채우기 (
.github/PULL_REQUEST_TEMPLATE.md)
- Phase 1 (MVP) 진행 중. US-01 ~ US-20 우선.
- 디자인 시스템 토큰 파일 미생성 — 디자인 적용 첫 PR에서
frontend/src/app/styles/tokens.css생성. - Spring Security, RabbitMQ starter, Flyway는 백엔드 기능 작성 PR과 함께 도입.
infra/rabbitmq/definitions.json은 현재 큐 6개 정의 (resume/repo 분석, questions/followup 생성, 콜백 2개). 피드백 큐는 US-24 작업 시 추가.- Redis 미사용 — 휘발성 데이터(OAuth state, 멱등 키, 질문 풀 캐시)는 PostgreSQL의 short-lived 레코드 또는 Core 서버 인메모리로 처리.
- 실시간 푸시는 SSE 단일화 (양방향 WebSocket 미사용). 미디어 스트림만 WebRTC.
RealTime Server (Go)는 아직 디렉토리 없음. SSE/WebRTC가 필요한 시점에 작성.
문서 변경 원칙: 코드와 함께 같은 PR에 포함. 단일 출처 원칙(SSOT) 유지.