# 01. 프로젝트 개요 ## 한 줄 소개 Cert Study Lab은 자격증 시험 문제 PDF를 업로드하고, 문제를 구조화한 뒤 웹에서 풀고 복습할 수 있게 만드는 개인 개발 프로젝트입니다. ## 왜 만들었나 자격증 공부를 할 때 PDF 문제집이나 기출문제를 많이 사용합니다. 하지만 PDF 안의 문제를 직접 복사해서 정리하고, 정답과 오답을 따로 관리하는 일은 시간이 많이 듭니다. 이 프로젝트의 목표는 아래 과정을 최대한 자동화하는 것입니다. 1. PDF를 업로드한다. 2. PDF에서 문제와 보기, 정답, 해설을 추출한다. 3. 추출 결과가 이상하지 않은지 검증한다. 4. 문제를 데이터베이스에 저장한다. 5. 웹에서 문제를 풀고 복습한다. ## 현재 앱에서 다루는 흐름 현재 Streamlit 앱은 다음과 같은 화면 흐름을 가지고 있습니다. - 홈 - 이어서 공부 - 집중 학습 - 시험 대비 - 대시보드 - 자격증 문제 - 이론 학습 - 확인 퀴즈 - 실습하기 - 로드맵 - 취약 개념 학습 - 오답/복습 - 개념 정리 - PDF 업로드 - 처리 현황 - 시험 현황 - AI 색인 홈은 대시보드가 아니라 학습 시작점을 고르는 화면입니다. 진도, 연속 학습일, 추천 복습은 별도 대시보드에서 확인합니다. 이 중 핵심은 PDF 업로드, 문제 저장, 문제 풀이, 복습 흐름이고, 최근에는 이론 학습과 확인 퀴즈를 붙여 계속 공부하기 쉬운 구조로 다듬고 있습니다. ## 주요 기능 ### PDF 업로드 시험명과 PDF를 지정해 문제 처리 작업을 시작합니다. 업로드된 PDF는 파싱 파이프라인을 거쳐 문제 데이터로 변환됩니다. ### 문제 구조화 PDF에서 추출한 텍스트를 문제 단위로 나누고, 문제 본문, 보기, 정답, 해설, 페이지 정보 등을 가능한 한 구조화합니다. ### 파싱 품질 검증 문제가 제대로 나뉘었는지, 보기나 정답이 비어 있지 않은지 같은 기본 품질을 확인합니다. 품질이 낮으면 바로 저장하지 않고 검토가 필요한 상태로 볼 수 있게 하는 방향입니다. ### 문제 풀이 저장된 문제를 시험별로 선택해 풀 수 있습니다. 사용자의 선택과 정답 여부는 풀이 기록으로 저장할 수 있는 구조를 가지고 있습니다. 현재 문제풀이 화면은 일반 객관식뿐 아니라 공통 지문 문제, 원문 이미지 보기, Yes/No 진술형 문제, 항목별 선택 문제를 구분해서 표시하는 방향으로 개선하고 있습니다. ### 이어서 공부 마지막으로 선택한 Track을 기억하고, 사용자가 다음 접속 때 이어서 공부할 수 있게 구성합니다. Track은 `Linux`, `Azure`, `Tool Docs`처럼 나뉘며, 각 Track 안에서 이론 카드, 확인 퀴즈, 오답 복습으로 자연스럽게 이어집니다. ### 대시보드 첫 화면을 무겁게 만들지 않기 위해 대시보드는 별도 화면으로 분리했습니다. 대시보드에서는 현재 선택한 Track, 기본 학습 흐름 진행률, 오늘 누적 학습 단위, 주간 누적 학습량, 오답 기반 추천 복습을 확인합니다. ### 오답/복습 틀린 문제를 다시 확인하고, 복습 흐름으로 이어갈 수 있도록 구성하고 있습니다. ### 개념 정리 문제에서 자주 등장하는 개념을 요약하고, 시험 포인트와 헷갈리기 쉬운 포인트를 정리하는 기능을 목표로 합니다. ### 유사 문제 검색 Chroma에 문제 임베딩을 저장해, 현재 문제와 비슷한 문제를 찾을 수 있는 구조를 사용합니다. ## 현재 개발 상태 이 프로젝트는 아직 운영 중인 완성 서비스가 아니라 개발 중인 개인 프로젝트입니다. 현재는 다음 부분에 집중하고 있습니다. - PDF 파싱 결과를 더 안정적으로 만들기 - 파싱 품질을 자동으로 검증하기 - 공통 지문과 원문 이미지가 문제풀이 화면에서 누락되지 않게 하기 - Yes/No 진술형 문제를 객관식이 아니라 진술별 선택 UI로 제공하기 - PostgreSQL과 Chroma의 역할을 명확히 나누기 - Airflow로 긴 PDF 처리 작업을 관리하기 - Streamlit 화면을 실제 공부하기 편한 흐름으로 다듬기 - Track별 이론/퀴즈/실습 흐름을 계속 이어서 공부할 수 있게 만들기 Hugging Face Space 배포용으로는 로컬 DB나 PDF 원본 대신 `questions_seed.json`과 필요한 정적 이미지를 사용합니다. 현재 seed에는 321문항이 포함되어 있습니다. ## 앞으로 개선할 기능 - 북마크 기능 - 시험별 학습 진도율 - 정답률과 취약 유형 통계 - 파싱 실패 문제 검수 화면 - 중복 문제 감지 - 배포 환경 정리 - 테스트 자동화