Chrome Extension hỗ trợ người dùng học chủ động từ một video YouTube: đọc transcript, tạo quiz/flashcard, chấm kết quả, xác định phần đã hiểu và phần cần cải thiện, sau đó đưa người dùng về đúng timestamp nên xem lại.
Luồng nghiệm thu chính:
YouTube video
-> Chrome Extension
-> Google OAuth (khi người dùng chủ động đăng nhập)
-> Lấy transcript có timestamp
-> Local RAG Service xử lý transcript
-> Embedding + ChromaDB cục bộ
-> Gemini tạo quiz/flashcard từ context RAG
-> Người dùng làm bài
-> Chấm điểm và phân tích chủ đề
-> Gợi ý timestamp cần xem lại trong chính video
V1 bao gồm:
PersistentClient lưu chunk, embedding và timestamp trên máy người dùng.V1 không bao gồm:
┌──────────────────────────────┐
│ YouTube page │
│ Video ID + transcript + time │
└──────────────┬───────────────┘
│
v
┌──────────────────────────────┐ ┌──────────────────────────┐
│ Chrome Extension │──────>│ Google OAuth + Gemini │
│ UI, OAuth, scoring, playback │ │ Quiz/flashcard/feedback │
└──────────────┬───────────────┘ └──────────────────────────┘
│ localhost
v
┌──────────────────────────────┐
│ Local RAG Service │
│ Process, embed, retrieve │
└──────────────┬───────────────┘
│
v
┌──────────────────────────────┐
│ ChromaDB PersistentClient │
│ Chunk + embedding + timestamp│
└──────────────────────────────┘
OAuth token chỉ nằm trong luồng xác thực của extension. Token không được chuyển cho Local RAG Service, không ghi vào ChromaDB và không xuất hiện trong log.
.
├── extension/
│ ├── public/
│ │ └── icons/
│ └── src/
│ ├── background/
│ ├── content/
│ ├── sidebar/
│ ├── features/
│ │ ├── authentication/
│ │ ├── video/
│ │ ├── quiz/
│ │ ├── flashcard/
│ │ └── learning-assessment/
│ ├── integrations/
│ │ ├── local-service/
│ │ ├── google-oauth/
│ │ └── gemini/
│ ├── ai-content/
│ ├── session/
│ ├── types/
│ └── tests/
├── local-rag-service/
│ ├── app/
│ │ ├── core/
│ │ ├── transport/
│ │ ├── transcript/
│ │ ├── chunking/
│ │ ├── embedding/
│ │ ├── vector_store/
│ │ ├── retrieval/
│ │ └── assessment/
│ └── tests/
│ ├── service/
│ └── rag/
├── shared/
│ └── contracts/
├── scripts/
├── tests/
│ └── e2e/
├── docs/
│ ├── architecture/
│ ├── project-management/
│ └── testing/
├── outputs/
├── work/
├── CONTRIBUTING.md
├── OWNERS.md
└── .gitignore
Các thư mục thể hiện ranh giới runtime và quyền sở hữu hiện tại. Không đổi công nghệ hoặc hợp đồng dùng chung một cách đơn phương.
| Thành viên | Phạm vi chính | Không tự thay đổi |
|---|---|---|
| Thành viên 1 — Extension Frontend | extension/, trừ extension/src/ai-content/ |
Pipeline RAG, ChromaDB schema, prompt và assessment logic |
| Thành viên 2 — Local Service & Integration | local-rag-service/app/core/, transport/, local-rag-service/tests/service/, scripts/ |
Chunking, embedding, retrieval và ChromaDB schema |
| Thành viên 3 — AI/RAG Lead | extension/src/ai-content/, các module AI/RAG trong local service, local-rag-service/tests/rag/ |
UI/lifecycle extension và khung vận hành service ngoài giao diện đã thống nhất |
| Thành viên 4 — QA/Integration | tests/e2e/, docs/testing/ |
Source của thành viên khác; lỗi được sửa qua issue/PR của owner |
Chi tiết quyền sở hữu và điểm cần review chéo nằm trong OWNERS.md.
main.feat/tv1-sidebar, feat/tv2-health-check, feat/tv3-rag-retrieval, test/tv4-oauth-e2e.README.md, CONTRIBUTING.md, OWNERS.md, manifest, file dependency/lock, schema trong shared/contracts/ và tài liệu kiến trúc..env, dữ liệu ChromaDB hoặc transcript của người dùng.Quy trình đầy đủ xem tại CONTRIBUTING.md.
Trước khi hai phía triển khai song song, nhóm cần chốt schema trong shared/contracts/ cho các đối tượng tối thiểu:
videoId, text, startSec, endSec.Mọi thay đổi schema phải cập nhật contract trước, sau đó mới cập nhật producer và consumer trong cùng pull request hoặc các pull request được liên kết.
Lệnh cài đặt, build và chạy thật được duy trì tại:
Không ghi lệnh giả vào README. Mỗi lệnh chỉ được thêm sau khi đã chạy thử trên một máy mới hoặc môi trường sạch.
videoId.docs/project-management/plan.txt.docs/project-management/phan_cong_chi_tiet.txt.docs/architecture/SDS_YouTube_AI_Learning_Assistant_V1.docx.docs/testing/.