From 666d1445df33459427929545eb46febe5e508ca2 Mon Sep 17 00:00:00 2001
From: Phongxuan123 <158146102+Phongxuan123@users.noreply.github.com>
Date: Sat, 25 Jul 2026 08:34:39 +0700
Subject: [PATCH] =?UTF-8?q?chore:=20lo=E1=BA=A1i=20b=E1=BB=8F=20emoji=20kh?=
=?UTF-8?q?=E1=BB=8Fi=20giao=20di=E1=BB=87n,=20thay=20b=E1=BA=B1ng=20icon?=
=?UTF-8?q?=20nh=E1=BA=A5t=20qu=C3=A1n?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Rà soát toàn bộ codebase (frontend, admin, backend, data) tìm ký tự emoji.
Xử lý 23/26 điểm phát hiện:
- Nhãn tab (Khu luyện tập, Góc tranh luận, Nodes admin): bỏ emoji prefix,
giữ text thuần.
- Trạng thái flashcard Khó/Dễ: bỏ emoji, giữ text.
- Icon cúp/thất bại mang tính hiển thị chính (MatchingQuiz, WarmupSection,
FinalQuiz): thay bằng Material Symbols (emoji_events, cancel,
sentiment_very_dissatisfied) đã dùng sẵn trong toàn app, thay vì bỏ trống.
Giữ nguyên 3 điểm không phải emoji trang trí UI:
- backend/README.md: `emoji: 🧠` là field bắt buộc trong frontmatter cấu
hình Hugging Face Space, không phải nội dung sản phẩm.
- BannerSlider.jsx: ❮/❯ là ký tự mũi tên chức năng cho nút chuyển slide.
---
admin/src/pages/Nodes.jsx | 12 ++++++------
admin/src/pages/Philosofun.jsx | 2 +-
admin/src/pages/Practice.jsx | 6 +++---
.../src/components/practice/SpacedRepetitionDeck.jsx | 4 ++--
frontend/src/pages/DebateCorner.jsx | 4 ++--
frontend/src/pages/MatchingQuiz.jsx | 6 ++++--
frontend/src/pages/Practice.jsx | 6 +++---
frontend/src/pages/lesson/components/FinalQuiz.jsx | 8 +++++---
.../src/pages/lesson/components/WarmupSection.jsx | 10 +++++++---
9 files changed, 33 insertions(+), 25 deletions(-)
diff --git a/admin/src/pages/Nodes.jsx b/admin/src/pages/Nodes.jsx
index d1550b5..4bf079f 100644
--- a/admin/src/pages/Nodes.jsx
+++ b/admin/src/pages/Nodes.jsx
@@ -1271,7 +1271,7 @@ export default function Nodes() {
: "bg-slate-905 text-slate-400 hover:text-slate-200"
}`}
>
- 🔥 Làm nóng (Warmups)
+ Làm nóng (Warmups)
- ⚡ Lesson Flow
+ Lesson Flow
- 🎴 Thẻ nhớ
+ Thẻ nhớ
- 📝 Quiz bài tập
+ Quiz bài tập
- 🎙️ Podcast
+ Podcast
- 📦 Tài liệu PDF
+ Tài liệu PDF
diff --git a/admin/src/pages/Philosofun.jsx b/admin/src/pages/Philosofun.jsx
index 83ab81a..c206540 100644
--- a/admin/src/pages/Philosofun.jsx
+++ b/admin/src/pages/Philosofun.jsx
@@ -199,7 +199,7 @@ export default function Philosofun() {
- 🔗 {video.videoUrl}
+ {video.videoUrl}
{new Date(video.createdAt).toLocaleDateString('vi-VN')}
diff --git a/admin/src/pages/Practice.jsx b/admin/src/pages/Practice.jsx
index 59ed378..fc9e177 100644
--- a/admin/src/pages/Practice.jsx
+++ b/admin/src/pages/Practice.jsx
@@ -350,7 +350,7 @@ export default function Practice() {
: 'border-transparent text-slate-400 hover:text-slate-200'
}`}
>
- 🎴 Flashcard Ôn Tập
+ Flashcard Ôn Tập
setActiveTab('matching')}
@@ -360,7 +360,7 @@ export default function Practice() {
: 'border-transparent text-slate-400 hover:text-slate-200'
}`}
>
- 🧩 Ghép Cặp (Shinkei)
+ Ghép Cặp (Shinkei)
setActiveTab('quiz')}
@@ -370,7 +370,7 @@ export default function Practice() {
: 'border-transparent text-slate-400 hover:text-slate-200'
}`}
>
- 📝 Quiz Tổng Hợp
+ Quiz Tổng Hợp
diff --git a/frontend/src/components/practice/SpacedRepetitionDeck.jsx b/frontend/src/components/practice/SpacedRepetitionDeck.jsx
index 2bde387..51fe49b 100644
--- a/frontend/src/components/practice/SpacedRepetitionDeck.jsx
+++ b/frontend/src/components/practice/SpacedRepetitionDeck.jsx
@@ -166,7 +166,7 @@ export default function SpacedRepetitionDeck({
}}
className="bg-amber-55 hover:bg-amber-100 text-amber-900 border-2 border-amber-300 px-6 py-3 rounded-3xl text-sm font-bold transition-all shadow-sm flex flex-col items-center justify-center gap-0.5"
>
- 🟡 Khó
+ Khó
Học lại
- 🟢 Dễ
+ Dễ
Thuộc bài
diff --git a/frontend/src/pages/DebateCorner.jsx b/frontend/src/pages/DebateCorner.jsx
index ed3e0da..dbd5f13 100644
--- a/frontend/src/pages/DebateCorner.jsx
+++ b/frontend/src/pages/DebateCorner.jsx
@@ -185,7 +185,7 @@ const DebateCorner = () => {
: "text-gray-600 hover:text-gray-800 dark:text-primary-350 dark:hover:text-primary-100"
}`}
>
- 🎭 Kịch bản có sẵn
+ Kịch bản có sẵn
{
: "text-gray-600 hover:text-gray-800 dark:text-primary-350 dark:hover:text-primary-100"
}`}
>
- 📚 Khái niệm bài học
+ Khái niệm bài học
diff --git a/frontend/src/pages/MatchingQuiz.jsx b/frontend/src/pages/MatchingQuiz.jsx
index 1f8bce7..2327566 100644
--- a/frontend/src/pages/MatchingQuiz.jsx
+++ b/frontend/src/pages/MatchingQuiz.jsx
@@ -284,7 +284,7 @@ export default function MatchingQuiz() {
đúng đem lại 20 điểm. Trả lời sai bị trừ 5 điểm!
- ✨ Rèn Luyện Tư Duy Hệ Thống ✨
+ Rèn Luyện Tư Duy Hệ Thống
- 🏆
+
+ emoji_events
+
HOÀN THÀNH THỬ THÁCH!
diff --git a/frontend/src/pages/Practice.jsx b/frontend/src/pages/Practice.jsx
index d1ecc0a..b55edce 100644
--- a/frontend/src/pages/Practice.jsx
+++ b/frontend/src/pages/Practice.jsx
@@ -263,7 +263,7 @@ export default function Practice() {
: "text-gray-600 dark:text-slate-400 hover:text-gray-800 dark:hover:text-slate-200"
}`}
>
- 🎴 Flashcard Ôn Tập
+ Flashcard Ôn Tập
setActiveTab("shinkei")}
@@ -273,7 +273,7 @@ export default function Practice() {
: "text-gray-600 dark:text-slate-400 hover:text-gray-800 dark:hover:text-slate-200"
}`}
>
- 🧩 Ghép Cặp (Shinkei)
+ Ghép Cặp (Shinkei)
setActiveTab("quiz")}
@@ -283,7 +283,7 @@ export default function Practice() {
: "text-gray-600 dark:text-slate-400 hover:text-gray-800 dark:hover:text-slate-200"
}`}
>
- 📝 Quiz Tổng Hợp
+ Quiz Tổng Hợp
diff --git a/frontend/src/pages/lesson/components/FinalQuiz.jsx b/frontend/src/pages/lesson/components/FinalQuiz.jsx
index b197ebb..a0c93a6 100644
--- a/frontend/src/pages/lesson/components/FinalQuiz.jsx
+++ b/frontend/src/pages/lesson/components/FinalQuiz.jsx
@@ -115,9 +115,11 @@ export function FinalQuiz({ dbFlashcards, onComplete }) {
? "bg-gradient-to-br from-emerald-50 to-green-50/30 border-green-200 text-green-950"
: "bg-gradient-to-br from-rose-50 to-red-50/30 border-primary-200 dark:border-primary-800 text-primary-950"
}`}>
-
- {passed ? "🏆" : "❌"}
-
+
+ {passed ? "emoji_events" : "cancel"}
+
{passed ? "VƯỢT QUA KỲ KIỂM TRA!" : "KẾT QUẢ KHÔNG ĐẠT!"}
diff --git a/frontend/src/pages/lesson/components/WarmupSection.jsx b/frontend/src/pages/lesson/components/WarmupSection.jsx
index 4286365..9ccec04 100644
--- a/frontend/src/pages/lesson/components/WarmupSection.jsx
+++ b/frontend/src/pages/lesson/components/WarmupSection.jsx
@@ -138,7 +138,7 @@ function WorldviewFilterGame({ data, onDone }) {
Đồng chí hãy nhập vai thành một nhà biện chứng thực tế! Nhiệm vụ của đồng chí là phân loại đúng 5 tình huống/phát ngôn thực tế vào 3 nhóm thế giới quan khác nhau trong vòng 60 giây để mở khóa danh hiệu huyền thoại:
- ✨ Bậc Thầy Nhìn Thấu Nhân Sinh ✨
+ Bậc Thầy Nhìn Thấu Nhân Sinh
- 🏆
+
+ emoji_events
+
CHÚC MỪNG CHIẾN THẮNG!
@@ -194,7 +196,9 @@ function WorldviewFilterGame({ data, onDone }) {
if (isGameOver) {
return (
-
☠️
+
+ sentiment_very_dissatisfied
+
THỬ THÁCH THẤT BẠI!
{feedback ? feedback.text : "Đồng chí đã hết thời gian hoặc lựa chọn nhầm thế giới quan cảm tính!"}