cert-study-app / ARCHITECTURE.md
Kentlo's picture
Sync from GitHub b098d17dbed1a6386c212d28b4bfa6138ad59d75
88c7275 verified
|
Raw
History Blame Contribute Delete
3 kB
# Cert Study Lab Architecture
์ด ํŒŒ์ผ์€ ๊ฐœ๋ฐœ ์ค‘ ๋น ๋ฅด๊ฒŒ ๋ณด๋Š” ์š”์•ฝ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์„ค๋ช…์€ `docs/02_architecture.md`๋ฅผ ๊ธฐ์ค€ ๋ฌธ์„œ๋กœ ๋ด…๋‹ˆ๋‹ค.
## Current Shape
```text
Streamlit UI
-> QuizService / LearningLabService / LearningProgressService
-> ConceptNoteService / IngestionJobService / QuestionVectorStore
-> PostgreSQL app DB
-> Chroma vector index
-> data/learning_progress.json
Airflow DAGs
-> PDF ingestion DAG
-> visual analysis DAG
-> PostgreSQL app DB
Ollama
-> text/study assistant
-> visual question parsing
```
## User-Facing Pages
Keep the first screen light. The home page is a launcher, not a dashboard.
```text
Home
Continue Study
Focus Study
Exam Study
Dashboard
Roadmap
Theory Learning
Learning Quiz
Certification Questions
Wrong/Review
Concept Notes
Processing Status
Content Management
PDF Upload
Exam Overview
AI Index
```
## Study Flow
`Continue Study` remembers the selected Track and lets the learner keep going instead of stopping at a fixed daily quota.
```text
Track
-> Certification
-> Roadmap / Lesson / Quiz / Practice
-> Certification Questions
-> Wrong Review
-> Dashboard
```
The current active Tracks are:
- `Linux -> LFCS`
- `Azure -> AZ-104`
- `Tool Docs -> Docs Study`
Future Tracks such as Git, Python, SQL, Docker, and Kubernetes are represented in the service data but hidden until ready.
## Data Ownership
```text
PostgreSQL
Canonical app data: questions, answers, attempts, concept notes, ingestion jobs.
Chroma
Search index: embeddings for similar question and document retrieval.
data/learning_progress.json
Local learner state: preferred Track, study steps, activity counts.
cert_study_app/demo_data/questions_seed.json
Deployable seed for Hugging Face Space.
```
Do not commit runtime data such as local DB files, Chroma indexes, Airflow logs, uploaded PDFs, or private `.env` files.
## Question Statuses
```text
approved
Stable enough for normal quiz use.
needs_visual
Requires visual analysis or has a failed visual-analysis result.
needs_review
Needs human definition or correction.
draft
Waiting for processing.
rejected
Excluded from quiz flow.
```
The quiz repository treats only `approved` as playable.
## Metadata Split
```text
question_type
How the UI should render the answer interaction.
Examples: mcq, multi_select, yes_no, hotspot, table_choice, ordering.
category / subcategory / concept_tags
What the learner is studying.
Examples: az104_networking / vnet_subnet, az104_compute / vm.
```
Weak study should prefer `subcategory` because it is more precise than broad `category`.
## Cleanup Priorities
- Move learning progress from JSON to PostgreSQL when multi-user support starts.
- Keep Streamlit page routing names aligned with user-facing labels.
- Keep long PDF/image processing in Airflow, not inside direct Streamlit requests.
- Add more tests around Track progress, question category filters, and PWA/static file behavior.