ParseNoteLM은 AI 기반 문서 분석 및 질의응답 서비스입니다. 대학생과 대학원생을 위한 PDF/TXT 문서 분석 도구로, OpenAI GPT-3.5-turbo와 RAG(Retrieval-Augmented Generation) 기술을 활용합니다.
- 백엔드: Python 3.11, FastAPI 0.95.1, SQLAlchemy 2.0
- 프론트엔드: React 18, TypeScript, Tailwind CSS
- 데이터베이스: SQLite (개발), PostgreSQL (프로덕션 예정)
- AI/ML: OpenAI API (GPT-3.5-turbo, text-embedding-ada-002), FAISS
- 인증: JWT + BCrypt
ParseNoteLM/
├── backend/
│ ├── app/
│ │ ├── core/ # 핵심 기능 (인증, 설정, 보안)
│ │ ├── models/ # SQLAlchemy 모델
│ │ ├── routes/ # API 엔드포인트
│ │ ├── schemas/ # Pydantic 스키마
│ │ └── services/ # 비즈니스 로직
│ ├── data/
│ │ └── vector_stores/ # FAISS 벡터 저장소
│ ├── uploads/ # 업로드된 파일
│ └── main.py # FastAPI 앱 진입점
├── frontend/
│ ├── src/
│ │ ├── components/ # React 컴포넌트
│ │ ├── pages/ # 페이지 컴포넌트
│ │ ├── services/ # API 통신 서비스
│ │ └── types/ # TypeScript 타입 정의
│ └── public/
└── scripts/ # 실행 스크립트
프로젝트에는 다음 실행 스크립트들이 포함되어 있습니다:
-
setup.sh - 초기 환경 설정
- Python/Node.js 환경 확인
- 가상환경 생성 및 패키지 설치
- .env 파일 생성
- 데이터베이스 초기화
-
run-backend.sh - 백엔드 서버 실행
- 포트 8000 자동 정리
- Python 가상환경 활성화
- FastAPI 서버 실행
-
run-frontend.sh - 프론트엔드 서버 실행
- 포트 3000 자동 정리
- npm 패키지 확인
- React 개발 서버 실행
-
run-all.sh - 전체 서비스 실행
- tmux/screen을 사용한 동시 실행
- 기존 프로세스 자동 종료
-
stop-all.sh - 모든 서비스 종료
- 포트 8000, 3000 프로세스 종료
- tmux/screen 세션 정리
- 사용자 인증: JWT 기반 인증, 비밀번호 재설정, RBAC 권한 관리
- 프로젝트 관리: 사용자당 3개 프로젝트, 프로젝트당 5개 문서
- 문서 처리: PDF/TXT 파일 업로드, 자동 텍스트 추출, 청킹
- RAG 시스템: 벡터 검색, 컨텍스트 기반 답변, 소스 추적
- 마인드맵: 문서 내용의 시각적 표현
- 프로젝트 멤버: 역할 기반 권한 (OWNER, ADMIN, EDITOR, VIEWER)
- 인증:
/auth/register,/auth/login,/auth/me - 프로젝트:
/api/projects(CRUD) - 문서:
/api/projects/{id}/documents(업로드, 목록, 삭제) - RAG:
/api/rag/projects/{id}/chat,/api/rag/projects/{id}/search - 멤버:
/api/projects/{id}/members(초대, 관리)
백엔드 .env 파일 필수 설정:
DATABASE_URL=sqlite:///./parsenotelm.db
SECRET_KEY=your-secret-key-here
OPENAI_API_KEY=your-openai-api-key-here
프론트엔드 .env 파일:
REACT_APP_API_URL=http://localhost:8000
-
프로젝트 정리
- 47,184개의 macOS 메타데이터 파일 삭제 (276MB 공간 확보)
- pycache, .pyc, .DS_Store 파일 정리
-
실행 스크립트 추가
- 포트 자동 정리 기능
- tmux/screen 지원
- 환경 설정 자동화
-
프론트엔드 오류 수정
- ESLint jest 환경 설정 문제 해결
- reactflow Background 컴포넌트 제거
- lucide-react 타입 정의 파일 추가
- 모든 주요 문제는 해결된 상태
- 자세한 내용은 KNOWN_ISSUES.md 참조
- 프로젝트 시작:
./setup.sh실행 후./run-all.sh - 기본 관리자 계정: admin@parsenotelm.com / admin123!
- API 문서: http://localhost:8000/docs
- 프론트엔드: http://localhost:3000
- Task 13: 사용량 추적 및 제한 시스템
- Task 14: 성능 최적화 (캐싱, 인덱싱)
- PostgreSQL + pgvector 마이그레이션
- 클라우드 스토리지 연동
- Docker 컨테이너화