# Cert Study Lab 확장 프롬프트 아래 프롬프트는 현재 `cert-study-app`을 새로 만들지 않고, 기존 문제풀이 웹을 유지하면서 `Cert Study Lab`이라는 이론 학습 + 퀴즈 + 자격증 대비 웹앱으로 점진 확장하기 위한 개발 지시서입니다. ## 개선된 프롬프트 너는 기존 `cert-study-app` 프로젝트를 분석하고, 이를 `Cert Study Lab`이라는 개인 학습용 자격증 공부 웹앱으로 점진 확장하는 개발 도우미다. ### 1. 핵심 원칙 - 기존 프로젝트를 새로 만들지 않는다. - 기존 Streamlit 기반 문제풀이 웹 구조를 최대한 유지한다. - 대규모 리팩토링보다 기존 기능을 깨지 않는 점진적 확장을 우선한다. - 기존 기능인 PDF 업로드, 문제 풀이, 오답/복습, 개념 정리, AI 색인, 처리 현황 화면은 유지한다. - 이번 목표는 문제풀이 앱을 `이어서 공부 -> 집중 학습 -> 시험 대비 -> 오답 복습 -> 진도 확인`이 가능한 학습 플랫폼으로 확장하는 것이다. - 로그인 기능은 이번 단계에서 구현하지 않는다. 다만 나중에 사용자별 진도/오답을 분리할 수 있도록 데이터 구조는 확장 가능하게 둔다. - 모바일 사용성을 우선한다. 사용자가 앱을 켰을 때 오늘 무엇을 공부하면 되는지 바로 보여야 한다. ### 2. 서비스 방향 서비스명은 `Cert Study Lab`이다. 이 앱은 아래 흐름을 목표로 한다. 1. 이어서 공부에서 이전에 보던 Track을 계속 학습 2. 집중 학습에서 이론/퀴즈/실습을 원하는 만큼 진행 3. 시험 대비에서 자격증 문제풀이와 모의시험 진행 4. 틀린 문제 오답/복습 저장 5. Track별 진도와 누적 학습량 확인 6. 필요 시 실습 페이지로 이동 초기에는 개인 공부용 MVP로 시작하고, 이후 일반 사용자도 사용할 수 있는 서비스로 확장할 수 있게 설계한다. 계위는 `Track -> Certification -> Domain/Skill Area -> Subcategory -> Lesson/Quiz/Question` 순서로 둔다. 예를 들어 `Azure`와 `Linux`는 같은 상위 Track이고, `AZ-104`는 Azure 하위 Certification, `LFCS`는 Linux 하위 Certification이다. AZ-104는 5개 큰 Skill Area 아래에 세부 개념을 두고, 사용자가 약한 세부 개념 문제를 반복해서 풀 수 있어야 한다. ### 3. 우선 학습 분야 Track 우선순위는 아래와 같다. 1. Azure 2. Linux 3. Python 4. Git 5. SQL 6. Cloud / Oracle Cloud 7. AI / RAG / LLM 초기 구현은 `Azure`와 `Linux`를 같은 상위 Track으로 실제 화면에 노출하고, 각 Track 아래에 `AZ-104`, `LFCS`를 목표 자격증으로 연결한다. 기본 집중 Track은 `Linux · LFCS`로 둔다. 이후 `Git`, `Python`, `SQL`, `Docker`, `Kubernetes`는 같은 Track 계위로 확장할 수 있게 구조만 먼저 둔다. 공식 문서 기반 학습도 확장 후보로 둔다. 예를 들어 Ollama, LangChain, Streamlit, Hugging Face 공식 docs를 Source로 등록하고, 요약 이론 카드와 확인 퀴즈를 만들 수 있게 설계한다. 단, 원문 복사가 아니라 출처가 연결된 요약/재구성 콘텐츠로 관리한다. `Tool Docs` Track은 자격증 Track과 분리한다. 이 Track은 특정 시험 합격보다는 도구 공식 문서를 꾸준히 읽고, 요약 카드와 확인 퀴즈로 익히는 용도다. ### 4. 기존 기능과 연결 현재 앱에는 이미 아래 기능이 있다. - PDF 업로드 - 문제 풀이 - 오답/복습 - 취약 개념 학습 - 비슷한 유형 학습 - 개념 정리 - 시험 현황 - 처리 현황 - AI 색인 따라서 새 메뉴를 만들 때 기존 기능을 대체하지 말고, 아래처럼 이름과 역할을 정리한다. | 새 방향 | 기존 기능과 연결 | | --- | --- | | 홈 | 기존 홈을 `이어서 공부`, `집중 학습`, `시험 대비` 중심으로 개선 | | 로드맵 | 신규 추가. Azure와 Linux를 같은 상위 계위로 표시 | | 이론 학습 | 기존 `개념 정리`를 확장 | | 퀴즈 | 신규 Linux 확인 퀴즈 추가 | | 자격증 문제 | 기존 `문제 풀이` 유지 및 이름 보강 | | 시험 모드 | 신규 기본 화면 추가 | | 실습하기 | 신규 fake terminal MVP 추가 | | 오답노트 | 기존 `오답/복습` 유지 및 Track 확장 | | 진도율 | 신규 기본 화면 추가 | | 콘텐츠 관리 | 기존 `PDF 업로드`, `처리 현황`, `AI 색인`, `문제 검수`와 연결 | ### 5. 메뉴 구조 모바일에서 너무 많은 메뉴가 한 번에 보이지 않도록, 홈에는 핵심 행동 버튼을 먼저 보여준다. 권장 메뉴: 1. 홈 2. 로드맵 3. 이론 학습 4. 퀴즈 5. 자격증 문제 6. 시험 모드 7. 실습하기 8. 오답노트 9. 진도율 10. 콘텐츠 관리 단, 초기 구현에서는 홈을 대시보드로 만들지 않는다. 홈은 바로 행동을 고르는 런처로 두고, 진도와 추천 복습은 별도 `대시보드` 화면에서 확인한다. - 이어서 공부: 이론 카드, 확인 퀴즈, 오답 복습을 시작점으로 두고 계속 진행 - 집중 학습: 이론 학습, 퀴즈, 실습, 로드맵 - 시험 대비: 자격증 문제, 세부개념 반복, 시험 모드 - 복습: 오답노트, 취약 개념 학습 - 관리: PDF 업로드, 처리 현황, AI 색인 ### 6. 홈 화면 요구사항 홈 화면 제목은 `Cert Study Lab`로 표시한다. 홈에는 아래 내용을 보여준다. - 이어서 공부 - 집중 학습 - 시험 대비 - 대시보드 - 현재 등록된 시험 수와 전체 문항 수 대시보드 화면에는 아래 내용을 보여준다. - 현재 선택한 Track - 기본 학습 흐름 진행률 - 오늘 누적: 학습 단위 기준으로 얼마나 이어서 공부했는지 표시 - 연속 학습일과 주간 학습량 - 오답 기반 추천 복습 Linux/Azure 같은 Track 선택은 홈에서 강제하지 않고, 이어서 공부, 집중 학습, 이론 학습, 퀴즈, 로드맵, 대시보드 등 각 화면에 들어가서 선택한다. 한 번 선택한 Track은 저장해서 다음 접속에도 이어서 공부할 수 있게 한다. 사용자가 앱을 켰을 때 다음 행동이 분명해야 한다. ### 7. 로드맵 요구사항 로드맵은 Track별 학습 순서를 보여준다. 초기에는 Linux와 Azure/AZ-104만 구현한다. Linux 로드맵: 1. 터미널 기본 2. 파일/디렉터리 명령어 3. 파일 내용 확인 4. 권한과 소유자 5. 프로세스 6. 패키지 관리 7. 서비스 관리 8. 네트워크 기초 9. 로그 확인 10. LFCS 스타일 실습 Azure/AZ-104 로드맵: 1. Azure 계정과 리소스 그룹 2. Storage Account 3. Virtual Network 4. VM 5. Entra ID 6. Monitor / Log Analytics 7. Backup / Recovery 8. Governance 9. AZ-104 문제풀이 ### 8. 이론 학습 요구사항 이론 학습은 긴 문서가 아니라 카드형으로 만든다. 각 이론 카드는 아래 필드를 가진다. - 제목 - 핵심 설명 - 예시 - 자주 틀리는 포인트 - 관련 명령어 또는 키워드 - 관련 Track - 관련 자격증 - Source ID - 상태: `generated`, `reviewed`, `approved`, `rejected` 초기 샘플 Linux 카드: - `pwd` - `ls` - `cd` - `mkdir` - `touch` - `cat` - `grep` - `chmod` 초기 샘플 Azure/AZ-104 카드: - Resource Group - Storage Account - Blob Storage - Virtual Network - Network Security Group - Virtual Machine - Entra ID - Log Analytics ### 9. 확인 퀴즈 요구사항 확인 퀴즈는 이론 카드 학습 직후 풀 수 있는 쉬운 문제다. 지원할 유형: - 객관식 - OX - 단답형 - 명령어 입력형 - 빈칸 채우기 초기 MVP에서는 객관식과 명령어 입력형만 구현해도 된다. 정답 제출 후 바로 해설을 보여준다. 틀린 문제는 기존 오답/복습 구조와 연결한다. ### 10. 자격증 문제 요구사항 자격증 문제는 기존 AZ-104 문제풀이 기능을 유지한다. 새로 구현할 때는 기존 문제 데이터를 삭제하거나 변환하지 않는다. 대신 문제에 아래 메타데이터를 확장할 수 있게 고려한다. - 자격증명 - Track - 문제 유형 - 난이도 - 관련 이론 카드 - Source ID - 검수 상태 ### 11. 시험 모드 요구사항 시험 모드는 초기에는 기본 화면만 구현한다. 초기 기능: - 시험 종류 선택 - 문제 수 선택 - 제한 시간 표시 - 시작 버튼 - 결과 요약 영역 실제 랜덤 출제와 세션 저장은 이후 단계로 미룰 수 있다. ### 12-1. 반복 풀이 필터 자격증 문제는 큰 영역과 세부 개념으로 필터링할 수 있어야 한다. AZ-104 대분류: - Identity & Governance - Storage - Compute - Networking - Monitor & Recovery 각 대분류 아래에는 `Entra ID`, `RBAC`, `Storage Account`, `VM`, `VNet/Subnet`, `Azure Monitor` 같은 세부 개념을 둔다. 오답/취약 개념 학습은 이 세부 개념 단위로 반복할 수 있어야 한다. ### 12. 실습하기 요구사항 실습은 초기에는 fake terminal 방식으로 구현한다. Docker 기반 실제 터미널은 이번 단계에서 구현하지 않는다. 초기 Linux 실습 예시: 1. 현재 위치를 확인하세요. 정답 예: `pwd` 2. `practice` 디렉터리를 생성하세요. 정답 예: `mkdir practice` 3. `hello.txt` 파일을 생성하세요. 정답 예: `touch hello.txt` 4. `hello.txt` 내용을 출력하세요. 정답 예: `cat hello.txt` 5. 현재 디렉터리 파일 목록을 자세히 확인하세요. 정답 예: `ls -al` 또는 `ls -la` 채점은 처음에는 단순 조건식으로 한다. 예: - 입력에 `mkdir` 포함 - 입력에 `practice` 포함 ### 13. 데이터 구조 방향 현재 DB 모델을 먼저 확인하고, 기존 테이블을 깨지 않는 방식으로 확장한다. 초기에는 새 테이블을 전부 만들기보다 JSON 샘플 데이터와 서비스 클래스로 시작해도 된다. DB 확장은 화면과 데이터 구조가 안정된 후 진행한다. 필요한 엔티티 후보: - Track - Certification - RoadmapStep - Lesson - Quiz - PracticeTask - Source - WrongNote - Progress - ExamSession 단, 첫 구현에서는 아래만 우선한다. - Track 샘플 데이터 - RoadmapStep 샘플 데이터 - Lesson 카드 샘플 데이터 - Quiz 샘플 데이터 - PracticeTask 샘플 데이터 ### 14. 콘텐츠 생성과 검수 공식 문서 URL 기반 콘텐츠 생성은 나중에 붙인다. 이번 단계에서는 구조만 고려한다. 콘텐츠 상태값: - `generated` - `reviewed` - `approved` - `rejected` 원칙: - 공식 문서를 그대로 복사하지 않는다. - 공식 문서를 바탕으로 학습용 요약/재구성 콘텐츠를 만든다. - 생성 콘텐츠에는 반드시 Source ID를 연결한다. - LLM 생성 결과는 틀릴 수 있으므로 검수 상태를 둔다. ### 15. 초기 MVP 구현 범위 이번 작업의 실제 구현 범위는 아래로 제한한다. 1. 앱 이름을 `Cert Study Lab`로 반영 2. 홈 화면을 `이어서 공부`, `집중 학습`, `시험 대비` 중심으로 개선 3. Linux/Azure 로드맵 화면 추가 4. 이론 학습 카드 화면 추가 5. Linux/Azure 샘플 이론 카드 추가 6. Linux 확인 퀴즈 샘플 추가 7. 실습하기 메뉴와 fake terminal 기본 화면 추가 8. 시험 모드 기본 화면 추가 9. 진도율 기본 화면 추가 10. 기존 문제 풀이, 오답/복습, PDF 업로드, 처리 현황, AI 색인 기능 유지 11. README와 docs 업데이트 이번 작업에서 하지 않을 것: - 로그인 구현 - 실제 Docker 터미널 구현 - 대규모 DB 마이그레이션 - 모든 문제 유형 완성 - 콘텐츠 생성 자동화 완성 - GPT API 기반 자동 생성 깊은 연동 ### 16. 완료 기준 - 앱 제목이 `Cert Study Lab`로 보인다. - 홈에서 이어서 공부 버튼이 보인다. - 이어서 공부에는 자격증 문제풀이가 강제되지 않는다. - 이론, 퀴즈, 실습, 자격증 문제풀이, 오답 복습을 더 하면 `오늘 누적 n단위`로 기록된다. - Linux 로드맵을 볼 수 있다. - Azure/AZ-104 로드맵을 볼 수 있다. - Linux/Azure 이론 카드를 볼 수 있다. - Linux 확인 퀴즈 샘플을 풀 수 있다. - 기존 AZ-104 문제풀이 화면이 유지된다. - 기존 오답/복습 화면이 유지된다. - 실습하기 메뉴에서 fake terminal 실습을 할 수 있다. - 시험 모드 기본 화면이 보인다. - 진도율 기본 화면이 보인다. - PDF 업로드와 처리 현황 화면이 유지된다. - README 또는 docs에 변경 내용이 기록된다. ### 17. 개발 절차 1. 현재 코드 구조를 먼저 분석한다. 2. 기존 기능과 메뉴 이름을 확인한다. 3. 새 기능을 작은 서비스/데이터 파일로 분리한다. 4. Streamlit 화면은 기존 `streamlit_app.py` 흐름에 맞춰 최소 변경한다. 5. 모바일에서 버튼과 카드가 너무 길어지지 않게 한다. 6. 샘플 데이터로 먼저 동작하게 만든다. 7. 간단한 컴파일 체크 또는 테스트를 실행한다. 8. 변경 요약과 다음 단계 TODO를 남긴다. ## 원본 프롬프트 대비 수정 포인트 - 한 번에 모든 데이터 모델과 DB 마이그레이션을 요구하지 않도록 범위를 줄였다. - 현재 앱에 이미 있는 `개념 정리`, `문제 풀이`, `오답/복습`, `AI 색인` 기능과 연결되도록 수정했다. - `Cert Study Lab` 확장을 홈/로드맵/이론/퀴즈/실습/시험/진도 화면 중심의 MVP로 나눴다. - 이어서 공부는 별도 화면에서 체크리스트형 시작 흐름으로 관리한다. - 추가 학습은 날짜별 활동량으로 저장하고, 대시보드에서 연속 학습일과 주간 학습량을 보여준다. - 대시보드에는 세부개념 오답 기반 추천 복습을 작게 보여주어 사용자가 바로 복습할 수 있게 한다. - AZ-104 분류 검수는 일반 학습 화면이 아니라 관리 화면 안쪽에 숨겨 둔다. - 로그인, Docker 실습, 콘텐츠 자동 생성, 완전한 시험 세션 저장은 후순위로 명확히 분리했다. - 모바일-first 사용성을 더 강하게 반영했다.