From c31d66536696499a4cfb3bd63554f5d42caa26f9 Mon Sep 17 00:00:00 2001 From: nthanhtoan61 Date: Sat, 18 Jul 2026 11:44:36 +0700 Subject: [PATCH 1/3] fix(home): update agende & carousel --- TASK_LOG.md | 25 ++++++++++++++++++++++++ app/components/home/PartnersCarousel.tsx | 2 +- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 TASK_LOG.md diff --git a/TASK_LOG.md b/TASK_LOG.md new file mode 100644 index 0000000..2bab71b --- /dev/null +++ b/TASK_LOG.md @@ -0,0 +1,25 @@ +# IPv6 Enhanced 2026 — Task & Feedback Log + +> **Ngày tạo:** 2026-07-14 +> **Cập nhật lần cuối:** 2026-07-15 + +--- + +## Quy định chung (Definition of Done - DoD) + +- [X] Code đã được review +- [X] Test pass trên môi trường staging +- [X] Không có lỗi console +- [ ] Đã thông báo QA sau khi deploy + +--- + +## Bảng Task / Feedback + +| Mã Task | Sprint | Type | Component | Module/Page | Summary | AC | Status | Assignee | +| :------: | :----: | :--: | :-------- | :---------------- | :-------------------------------------------------- | :------------------------------------------------------------------------------------------------------ | :-----: | :------: | +| 3155 | — | Task | Home | Hero Section | Chuyển vị trí tổ chức sang Hà Nội | Hiển thị đúng "Hà Nội / Hanoi" trên trang chủ và sponsor (cả Anh/Việt) | `[x]` | Toàn | +| 3155 | — | Task | Home | Partners Carousel | Bổ sung đối tác IEAS vào carousel | Logo IEAS hiển thị ở vị trí đầu tiên hàng 1 carousel | `[x]` | Toàn | +| 3155 | — | Task | Home | Agenda Section | Bổ sung hình đại diện của người phát biểu | Avatar hiển thị đối xứng theo timeline, căn giữa dọc với text mô tả, responsive trên mobile | `[x]` | Toàn | +| 3155 | — | Task | Home | Feedback Page | Generate QR Code trang feedback | Sinh 2 ảnh QR (local+prod) trỏ vào đúng URL. Lưu vào public/assets/img và 1 bản gửi qua email | `[x]` | Toàn | +| 3168 | — | Task | Home | Agenda Section | Cập nhật thông tin agenda, speaker | Cập nhật đúng thời gian biểu, bổ sung các bài phát biểu mới và hình ảnh đại diện của diễn giả (cả Anh/Việt) | `[x]` | Toàn | diff --git a/app/components/home/PartnersCarousel.tsx b/app/components/home/PartnersCarousel.tsx index ba427c2..eb85d46 100644 --- a/app/components/home/PartnersCarousel.tsx +++ b/app/components/home/PartnersCarousel.tsx @@ -2,7 +2,7 @@ // Tên file chính xác trong public/assets/img/carousel/ const ROW_1 = [ - { name: "IEAS", file: "ieas.png" }, +// { name: "IEAS", file: "ieas.png" }, { name: "NVIDIA", file: "Nvidia_logo.svg.png" }, { name: "Maxis", file: "Maxis-logo.png" }, { name: "Singtel", file: "Singtel_logo.svg.png" }, From e9ef9f475b69c4d3ead7419972c66ae46e8f1226 Mon Sep 17 00:00:00 2001 From: nthanhtoan61 Date: Sat, 18 Jul 2026 11:59:42 +0700 Subject: [PATCH 2/3] Update TASK_LOG.md --- TASK_LOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/TASK_LOG.md b/TASK_LOG.md index 2bab71b..73ba644 100644 --- a/TASK_LOG.md +++ b/TASK_LOG.md @@ -1,7 +1,7 @@ # IPv6 Enhanced 2026 — Task & Feedback Log > **Ngày tạo:** 2026-07-14 -> **Cập nhật lần cuối:** 2026-07-15 +> **Cập nhật lần cuối:** 2026-07-18 --- @@ -23,3 +23,5 @@ | 3155 | — | Task | Home | Agenda Section | Bổ sung hình đại diện của người phát biểu | Avatar hiển thị đối xứng theo timeline, căn giữa dọc với text mô tả, responsive trên mobile | `[x]` | Toàn | | 3155 | — | Task | Home | Feedback Page | Generate QR Code trang feedback | Sinh 2 ảnh QR (local+prod) trỏ vào đúng URL. Lưu vào public/assets/img và 1 bản gửi qua email | `[x]` | Toàn | | 3168 | — | Task | Home | Agenda Section | Cập nhật thông tin agenda, speaker | Cập nhật đúng thời gian biểu, bổ sung các bài phát biểu mới và hình ảnh đại diện của diễn giả (cả Anh/Việt) | `[x]` | Toàn | +| 3168 | — | Task | Home | Agenda Section | Khôi phục cấu trúc Agenda cũ (loại bỏ IEAS) | Gỡ bỏ các bài phát biểu của đối tác IEAS và đưa khung giờ sự kiện về 8:30 AM | `[x]` | Toàn | +| 3155 | — | Task | Home | Partners Carousel | Tạm ẩn logo đối tác IEAS khỏi carousel | Comment out logo IEAS, không hiển thị trên trang chủ | `[x]` | Toàn | From 25d3995f9d5ea9aaaa3b19a2d3a8d3717eee72a1 Mon Sep 17 00:00:00 2001 From: nthanhtoan61 Date: Sat, 18 Jul 2026 12:17:10 +0700 Subject: [PATCH 3/3] update task log --- TASK_LOG.csv | 8 ++++++ TASK_LOG.md | 18 ++++++------ package.json | 1 + scripts/export-tasks.ts | 63 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 81 insertions(+), 9 deletions(-) create mode 100644 TASK_LOG.csv create mode 100644 scripts/export-tasks.ts diff --git a/TASK_LOG.csv b/TASK_LOG.csv new file mode 100644 index 0000000..e094193 --- /dev/null +++ b/TASK_LOG.csv @@ -0,0 +1,8 @@ +"Mã Task","Sprint","Type","Component","Module/Page","Summary","AC","Deadline","Status","Note","Assignee" +"3155","—","Task","Home","Hero Section","Chuyển vị trí tổ chức sang Hà Nội","Hiển thị đúng ""Hà Nội / Hanoi"" trên trang chủ và sponsor (cả Anh/Việt)","14/7/2026","hoàn thành","—","Toàn" +"3155","—","Task","Home","Partners Carousel","Bổ sung đối tác IEAS vào carousel","Logo IEAS hiển thị ở vị trí đầu tiên hàng 1 carousel","14/7/2026","hoàn thành","—","Toàn" +"3155","—","Task","Home","Agenda Section","Bổ sung hình đại diện của người phát biểu","Avatar hiển thị đối xứng theo timeline, căn giữa dọc với text mô tả, responsive trên mobile","14/7/2026","hoàn thành","—","Toàn" +"3155","—","Task","Home","Feedback Page","Generate QR Code trang feedback","Sinh 2 ảnh QR (local+prod) trỏ vào đúng URL. Lưu vào public/assets/img và 1 bản gửi qua email","14/7/2026","hoàn thành","—","Toàn" +"3168","—","Task","Home","Agenda Section","Cập nhật thông tin agenda, speaker","Cập nhật đúng thời gian biểu, bổ sung các bài phát biểu mới và hình ảnh đại diện của diễn giả (cả Anh/Việt)","18/7/2026","hoàn thành","—","Toàn" +"3168","—","Task","Home","Agenda Section","Khôi phục cấu trúc Agenda cũ (loại bỏ IEAS)","Gỡ bỏ các bài phát biểu của đối tác IEAS và đưa khung giờ sự kiện về 8:30 AM","18/7/2026","hoàn thành","—","Toàn" +"3168","—","Task","Home","Partners Carousel","Tạm ẩn logo đối tác IEAS khỏi carousel","Comment out logo IEAS, không hiển thị trên trang chủ","18/7/2026","hoàn thành","—","Toàn" \ No newline at end of file diff --git a/TASK_LOG.md b/TASK_LOG.md index 73ba644..2688216 100644 --- a/TASK_LOG.md +++ b/TASK_LOG.md @@ -16,12 +16,12 @@ ## Bảng Task / Feedback -| Mã Task | Sprint | Type | Component | Module/Page | Summary | AC | Status | Assignee | -| :------: | :----: | :--: | :-------- | :---------------- | :-------------------------------------------------- | :------------------------------------------------------------------------------------------------------ | :-----: | :------: | -| 3155 | — | Task | Home | Hero Section | Chuyển vị trí tổ chức sang Hà Nội | Hiển thị đúng "Hà Nội / Hanoi" trên trang chủ và sponsor (cả Anh/Việt) | `[x]` | Toàn | -| 3155 | — | Task | Home | Partners Carousel | Bổ sung đối tác IEAS vào carousel | Logo IEAS hiển thị ở vị trí đầu tiên hàng 1 carousel | `[x]` | Toàn | -| 3155 | — | Task | Home | Agenda Section | Bổ sung hình đại diện của người phát biểu | Avatar hiển thị đối xứng theo timeline, căn giữa dọc với text mô tả, responsive trên mobile | `[x]` | Toàn | -| 3155 | — | Task | Home | Feedback Page | Generate QR Code trang feedback | Sinh 2 ảnh QR (local+prod) trỏ vào đúng URL. Lưu vào public/assets/img và 1 bản gửi qua email | `[x]` | Toàn | -| 3168 | — | Task | Home | Agenda Section | Cập nhật thông tin agenda, speaker | Cập nhật đúng thời gian biểu, bổ sung các bài phát biểu mới và hình ảnh đại diện của diễn giả (cả Anh/Việt) | `[x]` | Toàn | -| 3168 | — | Task | Home | Agenda Section | Khôi phục cấu trúc Agenda cũ (loại bỏ IEAS) | Gỡ bỏ các bài phát biểu của đối tác IEAS và đưa khung giờ sự kiện về 8:30 AM | `[x]` | Toàn | -| 3155 | — | Task | Home | Partners Carousel | Tạm ẩn logo đối tác IEAS khỏi carousel | Comment out logo IEAS, không hiển thị trên trang chủ | `[x]` | Toàn | +| Mã Task | Sprint | Type | Component | Module/Page | Summary | AC | Deadline | Status | Note | Assignee | +| :---: | :---: | :---: | :--- | :--- | :--- | :--- | :---: | :---: | :--- | :---: | +| 3155 | — | Task | Home | Hero Section | Chuyển vị trí tổ chức sang Hà Nội | Hiển thị đúng "Hà Nội / Hanoi" trên trang chủ và sponsor (cả Anh/Việt) | 14/7/2026 | `[x]` | — | Toàn | +| 3155 | — | Task | Home | Partners Carousel | Bổ sung đối tác IEAS vào carousel | Logo IEAS hiển thị ở vị trí đầu tiên hàng 1 carousel | 14/7/2026 | `[x]` | — | Toàn | +| 3155 | — | Task | Home | Agenda Section | Bổ sung hình đại diện của người phát biểu | Avatar hiển thị đối xứng theo timeline, căn giữa dọc với text mô tả, responsive trên mobile | 14/7/2026 | `[x]` | — | Toàn | +| 3155 | — | Task | Home | Feedback Page | Generate QR Code trang feedback | Sinh 2 ảnh QR (local+prod) trỏ vào đúng URL. Lưu vào public/assets/img và 1 bản gửi qua email | 14/7/2026 | `[x]` | — | Toàn | +| 3168 | — | Task | Home | Agenda Section | Cập nhật thông tin agenda, speaker | Cập nhật đúng thời gian biểu, bổ sung các bài phát biểu mới và hình ảnh đại diện của diễn giả (cả Anh/Việt) | 18/7/2026 | `[x]` | — | Toàn | +| 3168 | — | Task | Home | Agenda Section | Khôi phục cấu trúc Agenda cũ (loại bỏ IEAS) | Gỡ bỏ các bài phát biểu của đối tác IEAS và đưa khung giờ sự kiện về 8:30 AM | 18/7/2026 | `[x]` | — | Toàn | +| 3168 | — | Task | Home | Partners Carousel | Tạm ẩn logo đối tác IEAS khỏi carousel | Comment out logo IEAS, không hiển thị trên trang chủ | 18/7/2026 | `[x]` | — | Toàn | diff --git a/package.json b/package.json index a6ff85b..567357b 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "test:watch": "vitest", "lint": "eslint", "db:seed": "tsx scripts/seed-summit-requests.ts", + "task:export": "tsx scripts/export-tasks.ts", "scss:build": "sass public/assets/scss/main.scss public/assets/css/main.css --style=expanded --source-map", "scss:watch": "sass --watch public/assets/scss/main.scss:public/assets/css/main.css --style=expanded --source-map" }, diff --git a/scripts/export-tasks.ts b/scripts/export-tasks.ts new file mode 100644 index 0000000..f4cd170 --- /dev/null +++ b/scripts/export-tasks.ts @@ -0,0 +1,63 @@ +import fs from 'fs'; +import path from 'path'; + +function convertMarkdownTableToCsv() { + const mdPath = path.join(__dirname, '../TASK_LOG.md'); + const csvPath = path.join(__dirname, '../TASK_LOG.csv'); + + if (!fs.existsSync(mdPath)) { + console.error('Không tìm thấy file TASK_LOG.md'); + return; + } + + const content = fs.readFileSync(mdPath, 'utf-8'); + const lines = content.split(/\r?\n/); + const csvRows: string[] = []; + + for (const line of lines) { + const trimmed = line.trim(); + // Bảng Markdown bắt đầu bằng '|' + if (trimmed.startsWith('|')) { + // Bỏ qua dòng separator (ví dụ: | :---: | :---: |) + if (trimmed.includes('---')) { + continue; + } + + // Cắt dòng bằng kí tự '|' + const cells = trimmed.split('|'); + // split '|' của '| A | B |' sẽ ra ['', ' A ', ' B ', ''] + // Bỏ đi phần tử đầu tiên và cuối cùng + const dataCells = cells.slice(1, cells.length - 1); + + // Trim khoảng trắng và format lại từng cell + const formattedCells = dataCells.map((cell, index) => { + let value = cell.trim(); + + // Tự động chuyển đổi Status từ ký hiệu Markdown sang chữ thuần Tiếng Việt cho Excel (Cột Status có index là 8) + if (index === 8) { + if (value.includes('[x]')) { + value = 'hoàn thành'; + } else if (value.includes('[/]')) { + value = 'đang làm'; + } else if (value.includes('[ ]')) { + value = 'chưa làm'; + } + } + + // Escape dấu nháy kép nếu có + if (value.includes('"')) { + value = value.replace(/"/g, '""'); + } + // Bao quanh cell bằng dấu nháy kép để tránh lỗi dấu phẩy trong nội dung + return `"${value}"`; + }); + + csvRows.push(formattedCells.join(',')); + } + } + + fs.writeFileSync(csvPath, '\uFEFF' + csvRows.join('\n'), 'utf-8'); // Thêm BOM để Excel đọc đúng tiếng Việt có dấu + console.log(`Đã chuyển đổi thành công sang file: ${csvPath}`); +} + +convertMarkdownTableToCsv();