diff --git a/TASK_LOG.csv b/TASK_LOG.csv new file mode 100644 index 0000000..8d13a10 --- /dev/null +++ b/TASK_LOG.csv @@ -0,0 +1,10 @@ +"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" +"3210","—","Task","Home","Agenda Section","Nâng cấp Agenda 21 phiên, Timeline gốc, Table View rút gọn kèm Modal, Múi giờ & Maps Direct","Hiển thị 21 phiên chuẩn, Timeline gốc so le, Table View rút gọn line-clamp kèm Modal chi tiết, Timezone ICT/UTC/Local, Print PDF, Google Maps","04/8/2026","hoàn thành","Hoàn thành","Toàn" +"3276","—","Task","Home / Global","Hero, Agenda & Meta","Cập nhật tiêu đề Cloud, địa điểm Lotte Center và đồng bộ Agenda theo apacv6.org","Đổi tiêu đề sang ""IPv6 Enhanced for AI & Cloud Summit 2026"", cập nhật địa điểm Lotte Center Hanoi, đồng bộ đầy đủ 21 phiên Agenda (EN/VI) theo live website","17/8/2026","chưa làm","Nguồn: https://apacv6.org/ai-summit-2026/","Toàn" \ No newline at end of file diff --git a/TASK_LOG.md b/TASK_LOG.md new file mode 100644 index 0000000..5405fa9 --- /dev/null +++ b/TASK_LOG.md @@ -0,0 +1,30 @@ +# IPv6 Enhanced 2026 — Task & Feedback Log + +> **Ngày tạo:** 2026-07-14 +> **Cập nhật lần cuối:** 2026-08-16 + +--- + +## 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 | 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 | +| 3210 | — | Task | Home | Agenda Section | Nâng cấp Agenda 21 phiên, Timeline gốc, Table View rút gọn kèm Modal, Múi giờ & Maps Direct | Hiển thị 21 phiên chuẩn, Timeline gốc so le, Table View rút gọn line-clamp kèm Modal chi tiết, Timezone ICT/UTC/Local, Print PDF, Google Maps | 04/8/2026 | `[x]` | Hoàn thành | Toàn | +| 3276 | — | Task | Home / Global | Hero, Agenda & Meta | Cập nhật tiêu đề Cloud, địa điểm Lotte Center và đồng bộ Agenda theo apacv6.org | Đổi tiêu đề sang "IPv6 Enhanced for AI & Cloud Summit 2026", cập nhật địa điểm Lotte Center Hanoi, đồng bộ đầy đủ 21 phiên Agenda (EN/VI) theo live website | 17/8/2026 | `[ ]` | Nguồn: https://apacv6.org/ai-summit-2026/ | Toàn | + diff --git a/agenda_website_requirements.md b/agenda_website_requirements.md new file mode 100644 index 0000000..51feb16 --- /dev/null +++ b/agenda_website_requirements.md @@ -0,0 +1,310 @@ +# IPv6 Enhanced for AI & Cloud Summit 2026 - Website Requirements & Agenda Data + +Tài liệu này tổng hợp toàn bộ cấu trúc Filter/UI và danh sách chi tiết các phiên (Agenda) trích xuất từ tài liệu PDF để làm dữ liệu đầu vào cho việc cập nhật/phát triển Website và tích hợp AI. + +--- + +## 1. Cấu Trúc Bộ Lọc & Giao Diện (Filter & UI Features) + +### 1.1. Thanh Tìm Kiếm (Search Bar) +* **Placeholder:** `Search sessions, speaker` +* **Chức năng:** Cho phép người dùng tìm kiếm theo từ khóa trong tên phiên (Session Title), nội dung mô tả (Description), hoặc tên diễn giả (Speaker/Presenter). + +### 1.2. Thẻ Lọc Theo Chủ Đề (Filter Tracks / Categories) +Các Tag filter hỗ trợ chọn theo từng danh mục: +* **All Sessions** (Tất cả các phiên) +* **Ceremonies** (Lễ / Khai mạc - Bế mạc) +* **Keynotes & Address** (Bài phát biểu chính & Toạ đàm) +* **Technical & Infrastructure** (Kỹ thuật & Hạ tầng) +* **Forums & Panels** (Diễn đàn & Thảo luận bàn tròn) +* **Breaks & Networking** (Nghỉ giải lao & Kết nối) + +### 1.3. Chế Độ Hiển Thị (View Modes) +* **Table View:** Hiển thị danh sách Agenda dưới dạng bảng chi tiết. +* **Card View:** Hiển thị danh sách Agenda dưới dạng thẻ (Card UI). + +### 1.4. Quản Lý Lịch Cá Nhân (My Schedule) +* **Nút bấm My Schedule:** Hiển thị số lượng phiên đã chọn, ví dụ: `My Schedule (0)`. +* **Hành động Lưu (Action Save):** Mỗi phiên trong danh sách có biểu tượng `Star` (☆ / ★) ở cột Action để người dùng click thêm/xóa phiên vào lịch trình cá nhân (`My Schedule`). + +--- + +## 2. Cấu Trúc Bảng Agenda (Agenda Table Structure) + +Bảng dữ liệu Agenda bao gồm các thuộc tính chính: +1. **Time (ICT / UTC):** Thời gian diễn ra theo giờ ICT và giờ UTC. +2. **Category:** Phân loại chủ đề của phiên. +3. **Session Title & Description:** Tên phiên chủ đề và nội dung chi tiết. +4. **Speaker / Presenter:** Tên, chức danh và đơn vị công tác của diễn giả/người trình bày. +5. **Location:** Địa điểm diễn ra (VD: Main Stage). +6. **Action:** Biểu tượng đánh dấu lưu vào lịch cá nhân (Bookmark / Star). + +--- + +## 3. Danh Sách Chi Tiết Toàn Bộ Agenda (Full Event Schedule) + +| Time (ICT / UTC) | Category | Session Title & Description | Speaker / Presenter | Location | Action | +| :--- | :--- | :--- | :--- | :--- | :---: | +| **9.00 am - 9.15 am ICT**
2.00 am - 2.15 am UTC | NETWORKING & BREAK | **Registration & Networking**
Welcome to APAC IPv6, AI & Cloud Summit 2026. Collect your badge. | *(N/A)* | Main Stage | ☆ | +| **9.15 am - 9.30 am ICT**
2.15 am - 2.30 am UTC | CEREMONIES | **Arrival of VIPs**
Reception of government dignitaries, international delegates, and VIPs. | *(N/A)* | Main Stage | ☆ | +| **9.30 am - 9.50 am ICT**
2.30 am - 2.50 am UTC | KEYNOTE | **Welcome Address & Keynote Address: National Sovereign Cloud in the Intelligent Era: Shaping Independent and Resilient Digital Infrastructure**
Opening greeting and keynote address detailing national sovereign cloud... | **Prof Emeritus Dr Sureswaran Ramadass**
Chairman, APAC IPv6 Council | Main Stage | ☆ | +| **9.50 am - 10.00 am ICT**
2.50 am - 3.00 am UTC | KEYNOTE | **Keynote Address: Viet Nam's IPv6 Journey: Bridging the Gaps, Accelerating IPv6-Only, and Driving Robust and Intelligent Network Evolution**
Keynote detailing Viet Nam's strategic progress, bridging technical gaps, accelerating IPv6-Only... | **Mr. Nguyen Truong Giang**
Acting Director General, VNNIC | Main Stage | ☆ | +| **10.00 am - 10.10 am ICT**
3.00 am - 3.10 am UTC | KEYNOTE | **Keynote Address: Navigating the Global Digital Landscape: European-American Practices and Strategic Insights for Viet Nam in Intelligent Era**
Keynote insights comparing European and American digital infrastructure practices... | **Nguyen Chien Thang**
Director General, Institute for European and American Studies | Main Stage | ☆ | +| **10.10 am - 10.20 am ICT**
3.10 am - 3.20 am UTC | CEREMONIES | **Launch Ceremony "IPv6-First & IPv6 Enhanced National Implementation Strategy Guideline"**
Inaugural launch ceremony of the National Implementation Strategy Guidelines. | *(N/A)* | Main Stage | ☆ | +| **10.20 am - 10.40 am ICT**
3.20 am - 3.40 am UTC | KEYNOTE | **Keynote Address: AI WAN: Empowering Carriers into the New Era of Token Monetization**
Keynote presentation detailing AI WAN architectures, network transformation, and tokenization. | **Mr. Jun Cai**
Vice President, Data Communication Product Line | Main Stage | ☆ | +| **10.40 am - 11.00 am ICT**
3.40 am - 4.00 am UTC | NETWORKING & BREAK | **Morning Coffee Break / Press Conference + Photos**
Morning refreshment break. VIPs and media gather for press briefings and photo opportunities. | *(N/A)* | Main Stage | ☆ | +| **11.00 am - 11.20 am ICT**
4.00 am - 4.20 am UTC | TECHNICAL | **Carrier Perspectives: IPv6-Driven Robust Infrastructure Fueling Enterprise Cloud and Computing Networks**
Carrier presentation analyzing how IPv6-driven robust infrastructure fuels enterprise cloud... | **Speaker from Vietnam ISP / Data Centre Operator**
Technical Representative | Main Stage | ☆ | +| **11.20 am - 11.40 am ICT**
4.20 am - 4.40 am UTC | TECHNICAL | **Pioneering the AI Era: Building Secure and Smart Digital Ecosystems with IPv6 and AI**
Technical presentation on cybersecurity vulnerabilities, digital readiness, and smart ecosystems. | **Dr. Navaneethan C Arjuman**
Chair of IPv6 and SG Working Group | Main Stage | ☆ | +| **11.40 am - 12.00 pm ICT**
4.40 am - 5.00 am UTC | TECHNICAL | **Building AI-Ready Network Infrastructure**
Case studies and structural designs for building AI-ready network infrastructure. | **Mr. Bayu Hanantasena**
Strategic Advisor to CEO, Indosat | Main Stage | ☆ | +| **12.00 pm - 12.20 pm ICT**
5.00 am - 5.20 am UTC | TECHNICAL | **Navigating ASEAN's Digital Future: Aligning Next-Gen Networking, AI, and Cloud Strategy**
Strategic sharing on policy frameworks, digital economy, and cloud strategy alignment. | **Mr. Sivaram Superamanian**
Assistant Director, Digital Economy | Main Stage | ☆ | +| **12.20 pm - 12.40 pm ICT**
5.20 am - 5.40 am UTC | TECHNICAL | **Insights and Operational Perspectives from Local Network Operators**
Operational perspectives and network deployment insights from local network operators. | **Speaker from Vietnam ISP / Network Operator**
Network Operator Representative | Main Stage | ☆ | +| **12.40 pm - 1.30 pm ICT**
5.40 am - 6.30 am UTC | NETWORKING & BREAK | **Lunch**
Lunch and networking recess for all registered delegates and speakers. | *(N/A)* | Main Stage | ☆ | +| **1.30 pm - 2.30 pm ICT**
6.30 am - 7.30 am UTC | FORUM & PANEL | **Forum: AI Regulation & Data Sovereignty**
A high-level panel discussion on policy frameworks governing data sovereignty and AI regulation. | **Moderator from Council / Panellists from Gov Officials or ISPs** | Main Stage | ☆ | +| **2.30 pm - 2.50 pm ICT**
7.30 am - 7.50 am UTC | TECHNICAL | **AI & Cloud (IPv6) - Developments in China**
A technical overview of global IPv6 adoption patterns, protocol implementations, and AI-cloud integration. | **Mr. Liu Shuai**
Vice President, MII, China | Main Stage | ☆ | +| **2.50 pm - 3.10 pm ICT**
7.50 am - 8.10 am UTC | TECHNICAL | **Technical Presentation (TBD)**
Technical presentation session slot. Specific presentation topic and details to be announced. | **TBD**
Speaker To Be Announced | Main Stage | ☆ | +| **3.10 pm - 3.30 pm ICT**
8.10 am - 8.30 am UTC | NETWORKING & BREAK | **Afternoon Coffee Break**
Afternoon tea and coffee, networking with cloud partners, and exhibition viewing. | *(N/A)* | Main Stage | ☆ | +| **3.30 pm - 4.00 pm ICT**
8.30 am - 9.00 am UTC | TECHNICAL | **IEC Standards Between Powermeter and Distributed Energy Resource**
Technical presentation on IEC standards between powermeters and distributed energy resources. | **Dr. Masaki Umejima**
Convener of Energy Resource Aggregation | Main Stage | ☆ | +| **4.00 pm - 5.30 pm ICT**
9.00 am - 10.30 am UTC | TECHNICAL | **Technical Sharing & Demo (TBD by Local Partner - SIMS)**
Hands-on lab showcase and technical integration demo led by local partner SIMS. | **TBD by Local Partner (SIMS)**
Technical Lead Specialists | Main Stage | ☆ | +| **5.30 pm - 6.00 pm ICT**
10.30 am - 11.00 am UTC | CEREMONIES | **Conference Adjourns**
Final wrap-up, thanks to hosts and sponsors, and distribution of event closing remarks. | *(N/A)* | Main Stage | ☆ | + +--- + +## 4. Dữ Liệu JSON Thô (JSON Data Format) + +Dành cho AI/Developer dễ dàng import trực tiếp vào database hoặc làm Mock Data: + +```json +[ + { + "id": 1, + "time_ict": "9.00 am - 9.15 am", + "time_utc": "2.00 am - 2.15 am", + "category": "Breaks & Networking", + "title": "Registration & Networking", + "description": "Welcome to APAC IPv6, AI & Cloud Summit 2026. Collect your badge.", + "speaker": "", + "speaker_title": "", + "location": "Main Stage" + }, + { + "id": 2, + "time_ict": "9.15 am - 9.30 am", + "time_utc": "2.15 am - 2.30 am", + "category": "Ceremonies", + "title": "Arrival of VIPs", + "description": "Reception of government dignitaries, international delegates, and VIPs.", + "speaker": "", + "speaker_title": "", + "location": "Main Stage" + }, + { + "id": 3, + "time_ict": "9.30 am - 9.50 am", + "time_utc": "2.30 am - 2.50 am", + "category": "Keynotes & Address", + "title": "Welcome Address & Keynote Address: National Sovereign Cloud in the Intelligent Era: Shaping Independent and Resilient Digital Infrastructure", + "description": "Opening greeting and keynote address detailing national sovereign cloud in the intelligent era.", + "speaker": "Prof Emeritus Dr Sureswaran Ramadass", + "speaker_title": "Chairman, APAC IPv6 Council", + "location": "Main Stage" + }, + { + "id": 4, + "time_ict": "9.50 am - 10.00 am", + "time_utc": "2.50 am - 3.00 am", + "category": "Keynotes & Address", + "title": "Keynote Address: Viet Nam's IPv6 Journey: Bridging the Gaps, Accelerating IPv6-Only, and Driving Robust and Intelligent Network Evolution", + "description": "Keynote detailing Viet Nam's strategic progress, bridging technical gaps, accelerating IPv6-Only...", + "speaker": "Mr. Nguyen Truong Giang", + "speaker_title": "Acting Director General, VNNIC", + "location": "Main Stage" + }, + { + "id": 5, + "time_ict": "10.00 am - 10.10 am", + "time_utc": "3.00 am - 3.10 am", + "category": "Keynotes & Address", + "title": "Keynote Address: Navigating the Global Digital Landscape: European-American Practices and Strategic Insights for Viet Nam in Intelligent Era", + "description": "Keynote insights comparing European and American digital infrastructure practices...", + "speaker": "Nguyen Chien Thang", + "speaker_title": "Director General, Institute for European and American Studies", + "location": "Main Stage" + }, + { + "id": 6, + "time_ict": "10.10 am - 10.20 am", + "time_utc": "3.10 am - 3.20 am", + "category": "Ceremonies", + "title": "Launch Ceremony "IPv6-First & IPv6 Enhanced National Implementation Strategy Guideline"", + "description": "Inaugural launch ceremony of the National Implementation Strategy Guidelines.", + "speaker": "", + "speaker_title": "", + "location": "Main Stage" + }, + { + "id": 7, + "time_ict": "10.20 am - 10.40 am", + "time_utc": "3.20 am - 3.40 am", + "category": "Keynotes & Address", + "title": "Keynote Address: AI WAN: Empowering Carriers into the New Era of Token Monetization", + "description": "Keynote presentation detailing AI WAN architectures, network transformation, and tokenization.", + "speaker": "Mr. Jun Cai", + "speaker_title": "Vice President, Data Communication Product Line", + "location": "Main Stage" + }, + { + "id": 8, + "time_ict": "10.40 am - 11.00 am", + "time_utc": "3.40 am - 4.00 am", + "category": "Breaks & Networking", + "title": "Morning Coffee Break / Press Conference + Photos", + "description": "Morning refreshment break. VIPs and media gather for press briefings and photo opportunities.", + "speaker": "", + "speaker_title": "", + "location": "Main Stage" + }, + { + "id": 9, + "time_ict": "11.00 am - 11.20 am", + "time_utc": "4.00 am - 4.20 am", + "category": "Technical & Infrastructure", + "title": "Carrier Perspectives: IPv6-Driven Robust Infrastructure Fueling Enterprise Cloud and Computing Networks", + "description": "Carrier presentation analyzing how IPv6-driven robust infrastructure fuels enterprise cloud...", + "speaker": "Speaker from Vietnam ISP / Data Centre Operator", + "speaker_title": "Technical Representative", + "location": "Main Stage" + }, + { + "id": 10, + "time_ict": "11.20 am - 11.40 am", + "time_utc": "4.20 am - 4.40 am", + "category": "Technical & Infrastructure", + "title": "Pioneering the AI Era: Building Secure and Smart Digital Ecosystems with IPv6 and AI", + "description": "Technical presentation on cybersecurity vulnerabilities, digital readiness, and smart ecosystems.", + "speaker": "Dr. Navaneethan C Arjuman", + "speaker_title": "Chair of IPv6 and SG Working Group", + "location": "Main Stage" + }, + { + "id": 11, + "time_ict": "11.40 am - 12.00 pm", + "time_utc": "4.40 am - 5.00 am", + "category": "Technical & Infrastructure", + "title": "Building AI-Ready Network Infrastructure", + "description": "Case studies and structural designs for building AI-ready network infrastructure.", + "speaker": "Mr. Bayu Hanantasena", + "speaker_title": "Strategic Advisor to CEO, Indosat", + "location": "Main Stage" + }, + { + "id": 12, + "time_ict": "12.00 pm - 12.20 pm", + "time_utc": "5.00 am - 5.20 am", + "category": "Technical & Infrastructure", + "title": "Navigating ASEAN's Digital Future: Aligning Next-Gen Networking, AI, and Cloud Strategy", + "description": "Strategic sharing on policy frameworks, digital economy, and cloud strategy alignment.", + "speaker": "Mr. Sivaram Superamanian", + "speaker_title": "Assistant Director, Digital Economy", + "location": "Main Stage" + }, + { + "id": 13, + "time_ict": "12.20 pm - 12.40 pm", + "time_utc": "5.20 am - 5.40 am", + "category": "Technical & Infrastructure", + "title": "Insights and Operational Perspectives from Local Network Operators", + "description": "Operational perspectives and network deployment insights from local network operators.", + "speaker": "Speaker from Vietnam ISP / Network Operator", + "speaker_title": "Network Operator Representative", + "location": "Main Stage" + }, + { + "id": 14, + "time_ict": "12.40 pm - 1.30 pm", + "time_utc": "5.40 am - 6.30 am", + "category": "Breaks & Networking", + "title": "Lunch", + "description": "Lunch and networking recess for all registered delegates and speakers.", + "speaker": "", + "speaker_title": "", + "location": "Main Stage" + }, + { + "id": 15, + "time_ict": "1.30 pm - 2.30 pm", + "time_utc": "6.30 am - 7.30 am", + "category": "Forums & Panels", + "title": "Forum: AI Regulation & Data Sovereignty", + "description": "A high-level panel discussion on policy frameworks governing data sovereignty and AI regulation.", + "speaker": "Moderator from Council / Panellists from Gov Officials or ISPs", + "speaker_title": "", + "location": "Main Stage" + }, + { + "id": 16, + "time_ict": "2.30 pm - 2.50 pm", + "time_utc": "7.30 am - 7.50 am", + "category": "Technical & Infrastructure", + "title": "AI & Cloud (IPv6) - Developments in China", + "description": "A technical overview of global IPv6 adoption patterns, protocol implementations, and AI-cloud integration.", + "speaker": "Mr. Liu Shuai", + "speaker_title": "Vice President, MII, China", + "location": "Main Stage" + }, + { + "id": 17, + "time_ict": "2.50 pm - 3.10 pm", + "time_utc": "7.50 am - 8.10 am", + "category": "Technical & Infrastructure", + "title": "Technical Presentation (TBD)", + "description": "Technical presentation session slot. Specific presentation topic and details to be announced.", + "speaker": "TBD", + "speaker_title": "Speaker To Be Announced", + "location": "Main Stage" + }, + { + "id": 18, + "time_ict": "3.10 pm - 3.30 pm", + "time_utc": "8.10 am - 8.30 am", + "category": "Breaks & Networking", + "title": "Afternoon Coffee Break", + "description": "Afternoon tea and coffee, networking with cloud partners, and exhibition viewing.", + "speaker": "", + "speaker_title": "", + "location": "Main Stage" + }, + { + "id": 19, + "time_ict": "3.30 pm - 4.00 pm", + "time_utc": "8.30 am - 9.00 am", + "category": "Technical & Infrastructure", + "title": "IEC Standards Between Powermeter and Distributed Energy Resource", + "description": "Technical presentation on IEC standards between powermeters and distributed energy resources.", + "speaker": "Dr. Masaki Umejima", + "speaker_title": "Convener of Energy Resource Aggregation", + "location": "Main Stage" + }, + { + "id": 20, + "time_ict": "4.00 pm - 5.30 pm", + "time_utc": "9.00 am - 10.30 am", + "category": "Technical & Infrastructure", + "title": "Technical Sharing & Demo (TBD by Local Partner - SIMS)", + "description": "Hands-on lab showcase and technical integration demo led by local partner SIMS.", + "speaker": "TBD by Local Partner (SIMS)", + "speaker_title": "Technical Lead Specialists", + "location": "Main Stage" + }, + { + "id": 21, + "time_ict": "5.30 pm - 6.00 pm", + "time_utc": "10.30 am - 11.00 am", + "category": "Ceremonies", + "title": "Conference Adjourns", + "description": "Final wrap-up, thanks to hosts and sponsors, and distribution of event closing remarks.", + "speaker": "", + "speaker_title": "", + "location": "Main Stage" + } +] +``` diff --git a/app/components/home/HeroSection.tsx b/app/components/home/HeroSection.tsx index 3c64ed4..f513050 100644 --- a/app/components/home/HeroSection.tsx +++ b/app/components/home/HeroSection.tsx @@ -16,13 +16,25 @@ export default function HeroSection({
-
+
{data.badgeIcon} {data.badgeText} + + 📍 Google Maps + + + +

{data.title.includes(" AI") ? ( @@ -57,4 +69,3 @@ export default function HeroSection({

); } - 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" }, diff --git a/app/data/members.json b/app/data/members.json index 80cc1ba..d32972e 100644 --- a/app/data/members.json +++ b/app/data/members.json @@ -11,62 +11,246 @@ "government": { "title": "Government & Forums", "items": [ - { "name": "APNIC", "logo": "/assets/img/gov-forums/APNIC.png", "subtitle": "Asia-Pacific Network Information Centre" }, - { "name": "VNNIC", "logo": "/assets/img/gov-forums/VNNIC.png", "subtitle": "Vietnam Internet Network Information Center" }, - { "name": "IPv6 Forum", "logo": "/assets/img/gov-forums/IPv6-Forum.png", "subtitle": "Global IPv6 Forum" }, - { "name": "APAN", "logo": "/assets/img/gov-forums/APAN.png", "subtitle": "Asia Pacific Advanced Network" }, - { "name": "Bharat IPv6 Forum", "logo": "/assets/img/gov-forums/Bharat-IPv6-Forum.jpg", "subtitle": "India IPv6 Forum" }, - { "name": "IDNIC", "logo": "/assets/img/gov-forums/IDNIC.png", "subtitle": "Indonesian Network Information Center" }, - { "name": "ISOC Kazakhstan", "logo": "/assets/img/gov-forums/ISOC-Kazakhstan.png", "subtitle": "Internet Society Kazakhstan Chapter" }, - { "name": "ITU-APT", "logo": "/assets/img/gov-forums/ITU-APT.jpg", "subtitle": "ITU-APT Foundation of India" }, - { "name": "LANIC", "logo": "/assets/img/gov-forums/LANIC.jpg", "subtitle": "Laos National Internet Centre" }, - { "name": "Malawi Revenue Authority", "logo": "/assets/img/gov-forums/Malawi-Revenue-Authority.jpg", "subtitle": "Malawi Revenue Authority" }, - { "name": "NAv6", "logo": "/assets/img/gov-forums/NAv6.jpg", "subtitle": "National Advanced IPv6 Centre" }, - { "name": "NIDA", "logo": "/assets/img/gov-forums/NIDA.png", "subtitle": "National Institute of Development Administration" }, - { "name": "NIXI", "logo": "/assets/img/gov-forums/NIXI.png", "subtitle": "National Internet Exchange of India" }, - { "name": "TRC Sri Lanka", "logo": "/assets/img/gov-forums/TRC-Sri-Lanka.png", "subtitle": "Telecommunications Regulatory Commission of Sri Lanka" }, - { "name": "World Broadband Association", "logo": "/assets/img/gov-forums/World-Broadband-Association.png", "subtitle": "World Broadband Association" }, - { "name": "APJII", "logo": "/assets/img/gov-forums/APJII.png", "subtitle": "Indonesia Internet Service Provider Association" } + { + "name": "APNIC", + "logo": "/assets/img/gov-forums/APNIC.png", + "subtitle": "Asia-Pacific Network Information Centre" + }, + { + "name": "VNNIC", + "logo": "/assets/img/gov-forums/VNNIC.png", + "subtitle": "Vietnam Internet Network Information Center" + }, + { + "name": "IPv6 Forum", + "logo": "/assets/img/gov-forums/IPv6-Forum.png", + "subtitle": "Global IPv6 Forum" + }, + { + "name": "APAN", + "logo": "/assets/img/gov-forums/APAN.png", + "subtitle": "Asia Pacific Advanced Network" + }, + { + "name": "Bharat IPv6 Forum", + "logo": "/assets/img/gov-forums/Bharat-IPv6-Forum.jpg", + "subtitle": "India IPv6 Forum" + }, + { + "name": "IDNIC", + "logo": "/assets/img/gov-forums/IDNIC.png", + "subtitle": "Indonesian Network Information Center" + }, + { + "name": "ISOC Kazakhstan", + "logo": "/assets/img/gov-forums/ISOC-Kazakhstan.png", + "subtitle": "Internet Society Kazakhstan Chapter" + }, + { + "name": "ITU-APT", + "logo": "/assets/img/gov-forums/ITU-APT.jpg", + "subtitle": "ITU-APT Foundation of India" + }, + { + "name": "LANIC", + "logo": "/assets/img/gov-forums/LANIC.jpg", + "subtitle": "Laos National Internet Centre" + }, + { + "name": "Malawi Revenue Authority", + "logo": "/assets/img/gov-forums/Malawi-Revenue-Authority.jpg", + "subtitle": "Malawi Revenue Authority" + }, + { + "name": "NAv6", + "logo": "/assets/img/gov-forums/NAv6.jpg", + "subtitle": "National Advanced IPv6 Centre" + }, + { + "name": "NIDA", + "logo": "/assets/img/gov-forums/NIDA.png", + "subtitle": "National Institute of Development Administration" + }, + { + "name": "NIXI", + "logo": "/assets/img/gov-forums/NIXI.png", + "subtitle": "National Internet Exchange of India" + }, + { + "name": "TRC Sri Lanka", + "logo": "/assets/img/gov-forums/TRC-Sri-Lanka.png", + "subtitle": "Telecommunications Regulatory Commission of Sri Lanka" + }, + { + "name": "World Broadband Association", + "logo": "/assets/img/gov-forums/World-Broadband-Association.png", + "subtitle": "World Broadband Association" + }, + { + "name": "APJII", + "logo": "/assets/img/gov-forums/APJII.png", + "subtitle": "Indonesia Internet Service Provider Association" + } ] }, "universities": { "title": "Universities", "items": [ - { "name": "APU Malaysia", "logo": "/assets/img/universities/APU Malaysia.png", "subtitle": "Asia Pacific University of Technology & Innovation" }, - { "name": "COMSATS University", "logo": "/assets/img/universities/COMSATS Uni.jpg", "subtitle": "COMSATS University Islamabad" }, - { "name": "Dr. MGR University", "logo": "/assets/img/universities/Dr. MGR University.png", "subtitle": "Dr. M.G.R. Educational and Research Institute" }, - { "name": "IEC", "logo": "/assets/img/universities/IEC.png", "subtitle": "International Education Centre" }, - { "name": "ITS", "logo": "/assets/img/universities/ITS.webp", "subtitle": "Sepuluh Nopember Institute of Technology" }, - { "name": "Keio University", "logo": "/assets/img/universities/Keio University.png", "subtitle": "Keio University" }, - { "name": "MSEC", "logo": "/assets/img/universities/MSEC.jpg", "subtitle": "Meenakshi Sundararajan Engineering College" }, - { "name": "MUST", "logo": "/assets/img/universities/MUST.jpg", "subtitle": "Malaysia University of Science and Technology" }, - { "name": "SIMS", "logo": "/assets/img/universities/SIMS.jpg", "subtitle": "Saigon Institute for Management Studies" }, - { "name": "SUST", "logo": "/assets/img/universities/SUST.jpg", "subtitle": "Shahjalal University of Science and Technology" }, - { "name": "UNSW", "logo": "/assets/img/universities/UNSW.jpg", "subtitle": "University of New South Wales" } + { + "name": "APU Malaysia", + "logo": "/assets/img/universities/APU Malaysia.png", + "subtitle": "Asia Pacific University of Technology & Innovation" + }, + { + "name": "COMSATS University", + "logo": "/assets/img/universities/COMSATS Uni.jpg", + "subtitle": "COMSATS University Islamabad" + }, + { + "name": "Dr. MGR University", + "logo": "/assets/img/universities/Dr. MGR University.png", + "subtitle": "Dr. M.G.R. Educational and Research Institute" + }, + { + "name": "IEC", + "logo": "/assets/img/universities/IEC.png", + "subtitle": "International Education Centre" + }, + { + "name": "ITS", + "logo": "/assets/img/universities/ITS.webp", + "subtitle": "Sepuluh Nopember Institute of Technology" + }, + { + "name": "Keio University", + "logo": "/assets/img/universities/Keio University.png", + "subtitle": "Keio University" + }, + { + "name": "MSEC", + "logo": "/assets/img/universities/MSEC.jpg", + "subtitle": "Meenakshi Sundararajan Engineering College" + }, + { + "name": "MUST", + "logo": "/assets/img/universities/MUST.jpg", + "subtitle": "Malaysia University of Science and Technology" + }, + { + "name": "SIMS", + "logo": "/assets/img/universities/SIMS.jpg", + "subtitle": "Swiss Institute for Management Studies" + }, + { + "name": "SUST", + "logo": "/assets/img/universities/SUST.jpg", + "subtitle": "Shahjalal University of Science and Technology" + }, + { + "name": "UNSW", + "logo": "/assets/img/universities/UNSW.jpg", + "subtitle": "University of New South Wales" + } ] }, "privateSector": { "title": "Organizations", "items": [ - { "name": "Agile Consultancy", "logo": "/assets/img/organizations/Agile Consultancy.jpg", "subtitle": "Agile Consultancy Pvt. Ltd." }, - { "name": "BII Group", "logo": "/assets/img/organizations/BII Group.png", "subtitle": "BII Group Holdings" }, - { "name": "Bhutan Telecom", "logo": "/assets/img/organizations/Bhutan Telecom.png", "subtitle": "Bhutan Telecom" }, - { "name": "CERT Tonga", "logo": "/assets/img/organizations/CERT Tonga.jpg", "subtitle": "Computer Emergency Response Team Tonga" }, - { "name": "CNLabs", "logo": "/assets/img/organizations/CNLabs.jpg", "subtitle": "CNLabs (IPv6 Ready Logo Lab)" }, - { "name": "Digital Bridge Institute", "logo": "/assets/img/organizations/Digital Bridge Institute.png", "subtitle": "Digital Bridge Institute Nigeria" }, - { "name": "Edgepoint", "logo": "/assets/img/organizations/Edgepoint.png", "subtitle": "Edgepoint Infrastructure" }, - { "name": "Hassan Solutions", "logo": "/assets/img/organizations/Hassan Solutions.png", "subtitle": "Hassan Solutions Pakistan" }, - { "name": "Huawei", "logo": "/assets/img/organizations/Huawei.png", "subtitle": "Huawei Technologies Co., Ltd." }, - { "name": "IPv6 Forum Malaysia", "logo": "/assets/img/organizations/IPv6 Forum Malaysia.png", "subtitle": "IPv6 Forum Malaysia Chapter" }, - { "name": "InfinIT ComTech", "logo": "/assets/img/organizations/InfinIT ComTech.jpg", "subtitle": "InfinIT ComTech Vietnam" }, - { "name": "MPT", "logo": "/assets/img/organizations/MPT.svg", "subtitle": "Myanma Posts and Telecommunications" }, - { "name": "Nokia", "logo": "/assets/img/organizations/NOKIA.jpg", "subtitle": "Nokia Corporation" }, - { "name": "RICHAT Partners", "logo": "/assets/img/organizations/RICHAT Partners.jpg", "subtitle": "RICHAT Partners Vietnam" }, - { "name": "SAIM Enterprises", "logo": "/assets/img/organizations/SAIM Enterprises.jpg", "subtitle": "SAIM Enterprises India" }, - { "name": "Smart Industry Malaysia", "logo": "/assets/img/organizations/Smart Industry Malaysia.jpg", "subtitle": "Smart Industry Malaysia" }, - { "name": "Subisu Nepal", "logo": "/assets/img/organizations/Subisu Nepal.png", "subtitle": "Subisu Cablenet Nepal" }, - { "name": "Tonga", "logo": "/assets/img/organizations/Tonga.png", "subtitle": "Tonga Communications Corporation" }, - { "name": "Wexa Consulting", "logo": "/assets/img/organizations/Wexa Consulting.png", "subtitle": "Wexa Consulting Malaysia" } + { + "name": "Agile Consultancy", + "logo": "/assets/img/organizations/Agile Consultancy.jpg", + "subtitle": "Agile Consultancy Pvt. Ltd." + }, + { + "name": "BII Group", + "logo": "/assets/img/organizations/BII Group.png", + "subtitle": "BII Group Holdings" + }, + { + "name": "Bhutan Telecom", + "logo": "/assets/img/organizations/Bhutan Telecom.png", + "subtitle": "Bhutan Telecom" + }, + { + "name": "CERT Tonga", + "logo": "/assets/img/organizations/CERT Tonga.jpg", + "subtitle": "Computer Emergency Response Team Tonga" + }, + { + "name": "CNLabs", + "logo": "/assets/img/organizations/CNLabs.jpg", + "subtitle": "CNLabs (IPv6 Ready Logo Lab)" + }, + { + "name": "Digital Bridge Institute", + "logo": "/assets/img/organizations/Digital Bridge Institute.png", + "subtitle": "Digital Bridge Institute Nigeria" + }, + { + "name": "Edgepoint", + "logo": "/assets/img/organizations/Edgepoint.png", + "subtitle": "Edgepoint Infrastructure" + }, + { + "name": "Hassan Solutions", + "logo": "/assets/img/organizations/Hassan Solutions.png", + "subtitle": "Hassan Solutions Pakistan" + }, + { + "name": "Huawei", + "logo": "/assets/img/organizations/Huawei.png", + "subtitle": "Huawei Technologies Co., Ltd." + }, + { + "name": "IPv6 Forum Malaysia", + "logo": "/assets/img/organizations/IPv6 Forum Malaysia.png", + "subtitle": "IPv6 Forum Malaysia Chapter" + }, + { + "name": "InfinIT ComTech", + "logo": "/assets/img/organizations/InfinIT ComTech.jpg", + "subtitle": "InfinIT ComTech Vietnam" + }, + { + "name": "MPT", + "logo": "/assets/img/organizations/MPT.svg", + "subtitle": "Myanma Posts and Telecommunications" + }, + { + "name": "Nokia", + "logo": "/assets/img/organizations/NOKIA.jpg", + "subtitle": "Nokia Corporation" + }, + { + "name": "RICHAT Partners", + "logo": "/assets/img/organizations/RICHAT Partners.jpg", + "subtitle": "RICHAT Partners Vietnam" + }, + { + "name": "SAIM Enterprises", + "logo": "/assets/img/organizations/SAIM Enterprises.jpg", + "subtitle": "SAIM Enterprises India" + }, + { + "name": "Smart Industry Malaysia", + "logo": "/assets/img/organizations/Smart Industry Malaysia.jpg", + "subtitle": "Smart Industry Malaysia" + }, + { + "name": "Subisu Nepal", + "logo": "/assets/img/organizations/Subisu Nepal.png", + "subtitle": "Subisu Cablenet Nepal" + }, + { + "name": "Tonga", + "logo": "/assets/img/organizations/Tonga.png", + "subtitle": "Tonga Communications Corporation" + }, + { + "name": "Wexa Consulting", + "logo": "/assets/img/organizations/Wexa Consulting.png", + "subtitle": "Wexa Consulting Malaysia" + } ] } } @@ -75,23 +259,74 @@ "title": "Contributing Members", "description": "Distinguished individuals who have contributed to the success of the Council's initiatives.", "items": [ - { "name": "Prof Emeritus Dr. Sureswaran Ramadass", "title": "Chairman, APAC IPv6 Council" }, - { "name": "Dr Muhammad Asyraf Mohammad Naim", "title": "Director for Training & Consultancy, IPv6 Forum Malaysia" }, - { "name": "Ms. Vallikkannu Nagappan", "title": "Chief Secretary, APAC IPv6 Council" }, - { "name": "Mr. Hong Thang", "title": "Executive, VNNIC" }, - { "name": "Mr. Nguyen Truong Giang", "title": "Executive, VNNIC" }, - { "name": "Mr. Bayu Hanantasena", "title": "Strategic Advisor to CEO, Indosat" }, - { "name": "Saysomvang Souvannavong", "title": "Deputy Director, Laos National Internet Centre" }, - { "name": "Dr. Will Liu", "title": "Head of Europe Datacom Standard & Industry Development, Huawei" }, - { "name": "Dr. Gopinath Rao", "title": "Chair of AI Standards Task Force, MTFSB" }, - { "name": "Dr. Navaneethan C Arjuman", "title": "Global Coordinator, IPv6 Forum Logo Programme" }, - { "name": "Prof. Ts. Dr. Salman Yussof", "title": "Technical Specialist, APAC IPv6 Council" }, - { "name": "Mr. Zulfadli Hasan", "title": "Network Engineer, IPv6 Forum Malaysia" }, - { "name": "Dr. Suresh Liew", "title": "Research Coordinator, APAC IPv6 Council" }, - { "name": "Mr. Mohamad Shukur", "title": "Operations Manager, IPv6 Forum Malaysia" }, - { "name": "Assoc. Prof. Dr. Angela Amphawan", "title": "Academic Advisor, APAC IPv6 Council" }, - { "name": "Mr. Azizi A. Hadi", "title": "Industry Specialist, Indosat" }, - { "name": "Prof. Dr. Abdul Rahman", "title": "Advisor, APAC IPv6 Council" } + { + "name": "Prof Emeritus Dr. Sureswaran Ramadass", + "title": "Chairman, APAC IPv6 Council" + }, + { + "name": "Dr Muhammad Asyraf Mohammad Naim", + "title": "Director for Training & Consultancy, IPv6 Forum Malaysia" + }, + { + "name": "Ms. Vallikkannu Nagappan", + "title": "Chief Secretary, APAC IPv6 Council" + }, + { + "name": "Mr. Hong Thang", + "title": "Executive, VNNIC" + }, + { + "name": "Mr. Nguyen Truong Giang", + "title": "Executive, VNNIC" + }, + { + "name": "Mr. Bayu Hanantasena", + "title": "Strategic Advisor to CEO, Indosat" + }, + { + "name": "Saysomvang Souvannavong", + "title": "Deputy Director, Laos National Internet Centre" + }, + { + "name": "Dr. Will Liu", + "title": "Head of Europe Datacom Standard & Industry Development, Huawei" + }, + { + "name": "Dr. Gopinath Rao", + "title": "Chair of AI Standards Task Force, MTFSB" + }, + { + "name": "Dr. Navaneethan C Arjuman", + "title": "Global Coordinator, IPv6 Forum Logo Programme" + }, + { + "name": "Prof. Ts. Dr. Salman Yussof", + "title": "Technical Specialist, APAC IPv6 Council" + }, + { + "name": "Mr. Zulfadli Hasan", + "title": "Network Engineer, IPv6 Forum Malaysia" + }, + { + "name": "Dr. Suresh Liew", + "title": "Research Coordinator, APAC IPv6 Council" + }, + { + "name": "Mr. Mohamad Shukur", + "title": "Operations Manager, IPv6 Forum Malaysia" + }, + { + "name": "Assoc. Prof. Dr. Angela Amphawan", + "title": "Academic Advisor, APAC IPv6 Council" + }, + { + "name": "Mr. Azizi A. Hadi", + "title": "Industry Specialist, Indosat" + }, + { + "name": "Prof. Dr. Abdul Rahman", + "title": "Advisor, APAC IPv6 Council" + } ] }, "join": { @@ -100,4 +335,4 @@ "registerBtn": "Register Now", "viewMembersBtn": "View Event Agenda" } -} +} \ No newline at end of file diff --git a/app/data/members.vi.json b/app/data/members.vi.json index b685c87..0a2ccea 100644 --- a/app/data/members.vi.json +++ b/app/data/members.vi.json @@ -139,7 +139,7 @@ { "name": "SIMS", "logo": "/assets/img/universities/SIMS.jpg", - "subtitle": "Saigon Institute for Management Studies" + "subtitle": "Swiss Institute for Management Studies" }, { "name": "SUST", 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/public/assets/img/speakers/bayu-hanatasena.jpg b/public/assets/img/speakers/bayu-hanatasena.jpg new file mode 100644 index 0000000..2459a52 Binary files /dev/null and b/public/assets/img/speakers/bayu-hanatasena.jpg differ diff --git a/public/assets/img/speakers/dr.liushucheng.jpg b/public/assets/img/speakers/dr.liushucheng.jpg new file mode 100644 index 0000000..9249702 Binary files /dev/null and b/public/assets/img/speakers/dr.liushucheng.jpg differ diff --git a/public/assets/img/speakers/dr.navaneethan-c-arjuman.png b/public/assets/img/speakers/dr.navaneethan-c-arjuman.png new file mode 100644 index 0000000..e83fefa Binary files /dev/null and b/public/assets/img/speakers/dr.navaneethan-c-arjuman.png differ diff --git a/public/assets/img/speakers/mr.shine.jpg b/public/assets/img/speakers/mr.shine.jpg new file mode 100644 index 0000000..b8733c1 Binary files /dev/null and b/public/assets/img/speakers/mr.shine.jpg differ 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();