@thanh01.pmt/curriculum-kit 1.0.5 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -821,6 +821,7 @@ declare const GRAPHIC_ORGANIZER_TEMPLATE = "---\nid: \"{{ID}}\"\ntitle: \"{{TITL
821
821
  *
822
822
  * Reusable catalog of production-ready single slide templates with Marp YAML layout comments,
823
823
  * presenter notes, and pedagogical structures for curriculum authoring & LLM generation.
824
+ * All content, templates, and examples are strictly authored in English.
824
825
  */
825
826
  type SlideLayoutCategory = 'cover' | 'content' | 'split' | 'code' | 'metrics' | 'diagram' | 'quote' | 'assessment';
826
827
  interface LayoutBoxConfig {
package/dist/index.d.ts CHANGED
@@ -821,6 +821,7 @@ declare const GRAPHIC_ORGANIZER_TEMPLATE = "---\nid: \"{{ID}}\"\ntitle: \"{{TITL
821
821
  *
822
822
  * Reusable catalog of production-ready single slide templates with Marp YAML layout comments,
823
823
  * presenter notes, and pedagogical structures for curriculum authoring & LLM generation.
824
+ * All content, templates, and examples are strictly authored in English.
824
825
  */
825
826
  type SlideLayoutCategory = 'cover' | 'content' | 'split' | 'code' | 'metrics' | 'diagram' | 'quote' | 'assessment';
826
827
  interface LayoutBoxConfig {
package/dist/index.mjs CHANGED
@@ -4232,9 +4232,9 @@ _Unit: {{UNIT_ID}} | Module: {{MODULE_ID}} | Format: Mermaid Diagrams + Printabl
4232
4232
  var SLIDE_LAYOUT_PRESETS = [
4233
4233
  {
4234
4234
  id: "title-hero",
4235
- name: "B\xECa & Gi\u1EDBi thi\u1EC7u (Title Cover)",
4235
+ name: "Title & Speaker Cover",
4236
4236
  category: "cover",
4237
- description: "Slide b\xECa m\u1EDF \u0111\u1EA7u \u1EA5n t\u01B0\u1EE3ng v\u1EDBi ti\xEAu \u0111\u1EC1 l\u1EDBn, ph\u1EE5 \u0111\u1EC1 v\xE0 th\xF4ng tin gi\u1EA3ng vi\xEAn.",
4237
+ description: "High-impact opening slide with large title, subtitle, and speaker credentials.",
4238
4238
  layout: {
4239
4239
  boxes: [
4240
4240
  {
@@ -4279,22 +4279,22 @@ var SLIDE_LAYOUT_PRESETS = [
4279
4279
  textAlign: center
4280
4280
  -->
4281
4281
 
4282
- # \u{1F680} Ti\xEAu \u0110\u1EC1 B\xE0i Gi\u1EA3ng Ch\xEDnh
4283
- ### Ph\u1EE5 \u0111\u1EC1 ng\u1EAFn g\u1ECDn, truy\u1EC1n c\u1EA3m h\u1EE9ng v\xE0 \u0111\u1ECBnh v\u1ECB m\u1EE5c ti\xEAu
4282
+ # \u{1F680} Engineering Scalable Cloud Systems
4283
+ ### Principles, Bottlenecks, and Real-World Architecture Patterns
4284
4284
 
4285
- **Gi\u1EA3ng vi\xEAn:** Th\u1EA7y Nguy\u1EC5n V\u0103n A | **Th\u1EDDi l\u01B0\u1EE3ng:** 45 ph\xFAt | **C\u1EA5p \u0111\u1ED9:** Trung c\u1EA5p
4285
+ **Presenter:** Senior Systems Architect | **Duration:** 45 mins | **Level:** Intermediate
4286
4286
 
4287
4287
  <!--
4288
4288
  Presenter Notes:
4289
- - Ch\xE0o m\u1EEBng h\u1ECDc vi\xEAn, gi\u1EDBi thi\u1EC7u m\u1EE5c ti\xEAu b\xE0i h\u1ECDc h\xF4m nay.
4290
- - Kh\u01A1i g\u1EE3i s\u1EF1 t\xF2 m\xF2 b\u1EB1ng c\xE2u h\u1ECFi m\u1EDF \u0111\u1EA7u v\u1EC1 b\xE0i to\xE1n th\u1EF1c t\u1EBF.
4289
+ - Welcome the audience and outline today's primary engineering goals.
4290
+ - Spark curiosity with an opening hook about scaling under high concurrency.
4291
4291
  -->`
4292
4292
  },
4293
4293
  {
4294
4294
  id: "two-column-split",
4295
- name: "So S\xE1nh 2 C\u1ED9t (2-Column Comparison)",
4295
+ name: "Two-Column Comparison",
4296
4296
  category: "split",
4297
- description: "B\u1ED1 c\u1EE5c chia \u0111\xF4i m\xE0n h\xECnh \u0111\u1EC3 so s\xE1nh ph\u01B0\u01A1ng ph\xE1p c\u0169 vs m\u1EDBi, l\xFD thuy\u1EBFt vs th\u1EF1c t\u1EBF.",
4297
+ description: "Balanced side-by-side comparison for legacy vs modern patterns or pros vs cons.",
4298
4298
  layout: {
4299
4299
  boxes: [
4300
4300
  {
@@ -4329,38 +4329,38 @@ Presenter Notes:
4329
4329
  pos: [670, 150, 530, 510]
4330
4330
  -->
4331
4331
 
4332
- ## \u2696\uFE0F So S\xE1nh Kh\xE1i Ni\u1EC7m & Gi\u1EA3i Ph\xE1p
4332
+ ## \u2696\uFE0F Monolithic Polling vs Event-Driven Architecture
4333
4333
 
4334
4334
  <div class="columns-2">
4335
4335
  <div>
4336
4336
 
4337
- ### \u{1F534} C\xE1ch Ti\u1EBFp C\u1EADn C\u0169
4338
- - X\u1EED l\xFD th\u1EE7 c\xF4ng, t\u1ED1n nhi\u1EC1u nh\xE2n l\u1EF1c
4339
- - D\u1EC5 ph\xE1t sinh sai s\u1ED1 do thao t\xE1c l\u1EB7p l\u1EA1i
4340
- - Kh\xF3 m\u1EDF r\u1ED9ng khi t\u1EA3i t\u0103ng \u0111\u1ED9t bi\u1EBFn
4337
+ ### \u{1F534} Legacy Polling
4338
+ - Heavy database CPU overhead on idle cycles
4339
+ - High network latency between updates
4340
+ - Prone to cascading timeouts during spikes
4341
4341
 
4342
4342
  </div>
4343
4343
  <div>
4344
4344
 
4345
- ### \u{1F7E2} Gi\u1EA3i Ph\xE1p T\u1ED1i \u01AFu M\u1EDBi
4346
- - T\u1EF1 \u0111\u1ED9ng h\xF3a ho\xE0n to\xE0n lu\u1ED3ng x\u1EED l\xFD
4347
- - Gi\xE1m s\xE1t tr\u1EA1ng th\xE1i th\u1EDDi gian th\u1EF1c
4348
- - Kh\u1EA3 n\u0103ng co gi\xE3n linh ho\u1EA1t theo nhu c\u1EA7u
4345
+ ### \u{1F7E2} Event-Driven Streams
4346
+ - Real-time event propagation via webhooks
4347
+ - Zero idle compute waste with serverless consumers
4348
+ - Automatic backpressure and queue isolation
4349
4349
 
4350
4350
  </div>
4351
4351
  </div>
4352
4352
 
4353
4353
  <!--
4354
4354
  Presenter Notes:
4355
- - Nh\u1EA5n m\u1EA1nh \u0111i\u1EC3m ngh\u1EBDn l\u1EDBn nh\u1EA5t \u1EDF c\u1ED9t b\xEAn tr\xE1i.
4356
- - D\u1EABn ch\u1EE9ng s\u1ED1 li\u1EC7u th\u1EF1c t\u1EBF ch\u1EE9ng minh t\xEDnh hi\u1EC7u qu\u1EA3 c\u1EE7a c\u1ED9t ph\u1EA3i.
4355
+ - Emphasize the core failure mode of periodic polling under sudden load spikes.
4356
+ - Ask the room if anyone has experienced database lockups caused by polling loops.
4357
4357
  -->`
4358
4358
  },
4359
4359
  {
4360
4360
  id: "code-explainer",
4361
- name: "Gi\u1EA3i Th\xEDch Code (Code Walkthrough)",
4361
+ name: "Code Walkthrough & Analysis",
4362
4362
  category: "code",
4363
- description: "C\u1ED9t tr\xE1i hi\u1EC3n th\u1ECB code snippet c\xF3 \u0111\xE1nh s\u1ED1, c\u1ED9t ph\u1EA3i gi\u1EA3i th\xEDch t\u1EEBng b\u01B0\u1EDBc ho\u1EA1t \u0111\u1ED9ng.",
4363
+ description: "Syntax-highlighted code block on the left with step-by-step key annotations on the right.",
4364
4364
  layout: {
4365
4365
  boxes: [
4366
4366
  {
@@ -4395,16 +4395,16 @@ Presenter Notes:
4395
4395
  pos: [740, 135, 460, 535]
4396
4396
  -->
4397
4397
 
4398
- ## \u{1F4BB} Ph\xE2n T\xEDch C\u1EA5u Tr\xFAc M\xE3 Ngu\u1ED3n
4398
+ ## \u{1F4BB} Robust Async Transaction Pipeline
4399
4399
 
4400
4400
  <div class="columns-2">
4401
4401
  <div>
4402
4402
 
4403
4403
  \`\`\`ts
4404
- // Kh\u1EDFi t\u1EA1o quy tr\xECnh ki\u1EC3m tra d\u1EEF li\u1EC7u
4404
+ // Process payment with idempotency guarantee
4405
4405
  export async function processPayment(order: Order) {
4406
4406
  const isValid = await validateOrder(order);
4407
- if (!isValid) throw new Error("Invalid");
4407
+ if (!isValid) throw new Error("ValidationFailed");
4408
4408
 
4409
4409
  const receipt = await chargeCard(order);
4410
4410
  return sendConfirmation(receipt);
@@ -4414,25 +4414,26 @@ export async function processPayment(order: Order) {
4414
4414
  </div>
4415
4415
  <div>
4416
4416
 
4417
- ### \u{1F50D} 3 \u0110i\u1EC3m C\u1EA7n Ch\xFA \xDD:
4418
- 1. **Ki\u1EC3m tra s\u1EDBm (Guard Clause):** Ki\u1EC3m tra t\xEDnh h\u1EE3p l\u1EC7 ngay d\xF2ng 3 \u0111\u1EC3 tr\xE1nh g\u1ECDi h\xE0m t\u1ED1n chi ph\xED.
4419
- 2. **B\u1EA5t \u0111\u1ED3ng b\u1ED9 (Async/Await):** \u0110\u1EA3m b\u1EA3o th\u1EE9 t\u1EF1 g\u1ECDi API t\xE0i ch\xEDnh chu\u1EA9n x\xE1c.
4420
- 3. **Ph\u1EA3n h\u1ED3i ng\u01B0\u1EDDi d\xF9ng:** Tr\u1EA3 v\u1EC1 bi\xEAn lai ho\xE0n ch\u1EC9nh sau khi giao d\u1ECBch th\xE0nh c\xF4ng.
4417
+ ### \u{1F50D} Key Engineering Invariants:
4418
+ 1. **Early Guard Clause:** Validates payload immediately at line 3 before triggering external calls.
4419
+ 2. **Deterministic Sequence:** Enforces strict order of operations using native \`await\`.
4420
+ 3. **Audit Trail:** Returns immutable payment receipt upon successful execution.
4421
4421
 
4422
4422
  </div>
4423
4423
  </div>
4424
4424
 
4425
4425
  <!--
4426
4426
  Presenter Notes:
4427
- - Y\xEAu c\u1EA7u h\u1ECDc vi\xEAn x\xE1c \u0111\u1ECBnh d\xF2ng code n\xE0o l\xE0 r\u1EE7i ro nh\u1EA5t n\u1EBFu k\u1EBFt n\u1ED1i m\u1EA1ng b\u1ECB r\u1EDBt.
4428
- - Nh\u1EAFc l\u1EA1i nguy\xEAn t\u1EAFc Fail-Fast trong l\u1EADp tr\xECnh ph\xF2ng th\u1EE7.
4427
+ - Walk through lines 1 to 7 sequentially.
4428
+ - Cold-call check: "What happens if line 6 throws a network timeout?"
4429
+ - Cognitive scaffolding: Highlight the importance of idempotency keys in payment APIs.
4429
4430
  -->`
4430
4431
  },
4431
4432
  {
4432
4433
  id: "metrics-3-card",
4433
- name: "L\u01B0\u1EDBi 3 Ch\u1EC9 S\u1ED1 (3-Metric Dashboard)",
4434
+ name: "3-Metric Key Results Grid",
4434
4435
  category: "metrics",
4435
- description: "Hi\u1EC3n th\u1ECB 3 ch\u1EC9 s\u1ED1 quan tr\u1ECDng (KPIs, Benchmarks, Impact) d\u1EA1ng card n\u1ED5i b\u1EADt.",
4436
+ description: "Three high-visibility KPI stat cards for benchmarks, impact, and success criteria.",
4436
4437
  layout: {
4437
4438
  boxes: [
4438
4439
  {
@@ -4477,43 +4478,43 @@ Presenter Notes:
4477
4478
  pos: [860, 165, 340, 485]
4478
4479
  -->
4479
4480
 
4480
- ## \u{1F4CA} 3 Ch\u1EC9 S\u1ED1 Th\xE0nh C\xF4ng C\u1EE7a D\u1EF1 \xC1n
4481
+ ## \u{1F4CA} Performance & Reliability Benchmarks
4481
4482
 
4482
4483
  <div class="columns-3">
4483
4484
  <div>
4484
4485
 
4485
- # \u26A1 99.9%
4486
- ### \u0110\u1ED9 S\u1EB5n S\xE0ng (Uptime)
4487
- H\u1EC7 th\u1ED1ng v\u1EADn h\xE0nh li\xEAn t\u1EE5c 24/7 v\u1EDBi kh\u1EA3 n\u0103ng t\u1EF1 ph\u1EE5c h\u1ED3i l\u1ED7i t\u1EE9c th\xEC.
4486
+ # \u26A1 99.99%
4487
+ ### SLA Availability
4488
+ High-availability multi-region cluster with automated failover routing.
4488
4489
 
4489
4490
  </div>
4490
4491
  <div>
4491
4492
 
4492
- # \u{1F680} 10x
4493
- ### T\u1ED1c \u0110\u1ED9 X\u1EED L\xFD
4494
- R\xFAt ng\u1EAFn th\u1EDDi gian bi\xEAn d\u1ECBch v\xE0 ph\u1EA3n h\u1ED3i ng\u01B0\u1EDDi d\xF9ng t\u1EEB gi\xE2y xu\u1ED1ng mili-gi\xE2y.
4493
+ # \u{1F680} 15ms
4494
+ ### P99 Latency
4495
+ Sub-20ms roundtrip response time via distributed edge caching.
4495
4496
 
4496
4497
  </div>
4497
4498
  <div>
4498
4499
 
4499
- # \u{1F6E1}\uFE0F 0
4500
- ### L\u1ED7 H\u1ED5ng B\u1EA3o M\u1EADt
4501
- \u0110\u1EA1t chu\u1EA9n \u0111\xE1nh gi\xE1 an to\xE0n OWASP v\xE0 m\xE3 h\xF3a d\u1EEF li\u1EC7u \u0111\u1EA7u cu\u1ED1i.
4500
+ # \u{1F6E1}\uFE0F Zero
4501
+ ### Unhandled Breaches
4502
+ Full SOC2 Type II compliance and end-to-end payload encryption.
4502
4503
 
4503
4504
  </div>
4504
4505
  </div>
4505
4506
 
4506
4507
  <!--
4507
4508
  Presenter Notes:
4508
- - Tr\xECnh b\xE0y l\u1EA7n l\u01B0\u1EE3t 3 m\u1EE5c ti\xEAu \u0111o l\u01B0\u1EDDng \u0111\u01B0\u1EE3c c\u1EE7a h\u1EC7 th\u1ED1ng.
4509
- - Nh\u1EA5n m\u1EA1nh ch\u1EC9 s\u1ED1 th\u1EE9 2 l\xE0 tr\u1ECDng t\xE2m k\u1EF9 thu\u1EADt c\u1EE7a b\xE0i h\u1ECDc h\xF4m nay.
4509
+ - Highlight the 15ms P99 latency target as the primary technical milestone.
4510
+ - Connect these metrics directly to the architecture decisions discussed next.
4510
4511
  -->`
4511
4512
  },
4512
4513
  {
4513
4514
  id: "process-flow",
4514
- name: "S\u01A1 \u0110\u1ED3 Quy Tr\xECnh (Process / Flowchart)",
4515
+ name: "Architecture & Process Flow",
4515
4516
  category: "diagram",
4516
- description: "Quy tr\xECnh nhi\u1EC1u b\u01B0\u1EDBc v\u1EDBi s\u01A1 \u0111\u1ED3 Mermaid tr\u1EF1c quan k\xE8m ghi ch\xFA t\xF3m t\u1EAFt.",
4517
+ description: "Multi-stage workflow with responsive Mermaid diagram and phase summaries.",
4517
4518
  layout: {
4518
4519
  boxes: [
4519
4520
  {
@@ -4548,33 +4549,33 @@ Presenter Notes:
4548
4549
  pos: [80, 465, 1120, 205]
4549
4550
  -->
4550
4551
 
4551
- ## \u{1F504} Ki\u1EBFn Tr\xFAc Lu\u1ED3ng D\u1EEF Li\u1EC7u 4 B\u01B0\u1EDBc
4552
+ ## \u{1F504} End-to-End Data Ingestion Pipeline
4552
4553
 
4553
4554
  \`\`\`mermaid
4554
4555
  graph LR
4555
- A[1. Client Request] --> B[2. API Gateway]
4556
- B --> C[3. Auth Service]
4557
- C --> D[4. Database Cluster]
4556
+ A[1. Client Ingress] --> B[2. API Gateway]
4557
+ B --> C[3. Auth Verifier]
4558
+ C --> D[4. Distributed DB]
4558
4559
  style A fill:#0284c7,stroke:#38bdf8,stroke-width:2px,color:#fff
4559
4560
  style B fill:#1e293b,stroke:#64748b,stroke-width:2px,color:#fff
4560
4561
  style C fill:#059669,stroke:#34d399,stroke-width:2px,color:#fff
4561
4562
  style D fill:#7c3aed,stroke:#a78bfa,stroke-width:2px,color:#fff
4562
4563
  \`\`\`
4563
4564
 
4564
- - **Giai \u0111o\u1EA1n 1 & 2:** Ti\u1EBFp nh\u1EADn y\xEAu c\u1EA7u t\u1EEB client, \u0111i\u1EC1u h\u01B0\u1EDBng t\u1EA3i v\xE0 gi\u1EDBi h\u1EA1n t\u1EA7n su\u1EA5t (Rate Limiting).
4565
- - **Giai \u0111o\u1EA1n 3 & 4:** X\xE1c th\u1EF1c token JWT ph\xE2n quy\u1EC1n tr\u01B0\u1EDBc khi truy v\u1EA5n d\u1EEF li\u1EC7u t\u1EEB DB Cluster.
4565
+ - **Ingress & Gateway:** Rate-limits traffic and applies reverse-proxy load balancing.
4566
+ - **Verification & Storage:** Decodes cryptographic JWT tokens before transactional write commit.
4566
4567
 
4567
4568
  <!--
4568
4569
  Presenter Notes:
4569
- - Tr\u1ECF tr\u1EF1c ti\u1EBFp v\xE0o t\u1EEBng node c\u1EE7a s\u01A1 \u0111\u1ED3 Mermaid khi thuy\u1EBFt tr\xECnh.
4570
- - \u0110\u1EB7t c\xE2u h\u1ECFi: "N\u1EBFu b\u01B0\u1EDBc 3 th\u1EA5t b\u1EA1i th\xEC b\u01B0\u1EDBc 4 c\xF3 \u0111\u01B0\u1EE3c g\u1ECDi kh\xF4ng?"
4570
+ - Trace each hop across the diagram from left to right.
4571
+ - Ask: "Where should rate limiting be applied to prevent DDoS attacks?"
4571
4572
  -->`
4572
4573
  },
4573
4574
  {
4574
4575
  id: "quote-highlight",
4575
- name: "Th\xF4ng \u0110i\u1EC7p Then Ch\u1ED1t (Quote / Highlight)",
4576
+ name: "Core Principle & Quote Highlight",
4576
4577
  category: "quote",
4577
- description: "Tr\xEDch d\u1EABn danh ng\xF4n ho\u1EB7c nguy\xEAn t\u1EAFc v\xE0ng c\u1EA7n ghi nh\u1EDB s\xE2u s\u1EAFc.",
4578
+ description: "Prominent quote callout for fundamental engineering rules or memorable mantras.",
4578
4579
  layout: {
4579
4580
  boxes: [
4580
4581
  {
@@ -4605,23 +4606,23 @@ Presenter Notes:
4605
4606
  fontSize: 1.4rem
4606
4607
  -->
4607
4608
 
4608
- ## \u{1F4A1} Nguy\xEAn T\u1EAFc Thi\u1EBFt K\u1EBF C\u1ED1t L\xF5i
4609
+ ## \u{1F4A1} Foundational Architecture Principle
4609
4610
 
4610
- > "S\u1EF1 \u0111\u01A1n gi\u1EA3n l\xE0 \u0111i\u1EC1u ki\u1EC7n ti\xEAn quy\u1EBFt cho \u0111\u1ED9 tin c\u1EADy. M\u1ED9t ki\u1EBFn tr\xFAc t\u1ED1t l\xE0 khi b\u1EA5t k\u1EF3 l\u1EADp tr\xECnh vi\xEAn m\u1EDBi n\xE0o c\u0169ng c\xF3 th\u1EC3 \u0111\u1ECDc hi\u1EC3u lu\u1ED3ng ho\u1EA1t \u0111\u1ED9ng ch\u1EC9 sau 15 ph\xFAt."
4611
+ > "Simplicity is prerequisite for reliability. A well-engineered distributed system is one where a new engineer can understand the request flow within their first hour."
4611
4612
  >
4612
4613
  > \u2014 **Edsger W. Dijkstra**
4613
4614
 
4614
4615
  <!--
4615
4616
  Presenter Notes:
4616
- - D\u1EEBng l\u1EA1i 5 gi\xE2y im l\u1EB7ng \u0111\u1EC3 c\u1EA3 l\u1EDBp c\xF9ng suy ng\u1EABm v\u1EC1 th\xF4ng \u0111i\u1EC7p.
4617
- - Y\xEAu c\u1EA7u m\u1ED9t h\u1ECDc vi\xEAn chia s\u1EBB suy ngh\u0129 v\u1EC1 c\xE1ch \xE1p d\u1EE5ng nguy\xEAn t\u1EAFc n\xE0y v\xE0o b\xE0i t\u1EADp l\u1EDBn.
4617
+ - Pause for 5 seconds of silence to let the quote sink in.
4618
+ - Ask: "How do our current architectural choices reflect this principle?"
4618
4619
  -->`
4619
4620
  },
4620
4621
  {
4621
4622
  id: "quiz-checkpoint",
4622
- name: "Tr\u1EAFc Nghi\u1EC7m T\u01B0\u01A1ng T\xE1c (Quiz Checkpoint)",
4623
+ name: "Interactive Formative Checkpoint",
4623
4624
  category: "assessment",
4624
- description: "C\xE2u h\u1ECFi t\u01B0\u01A1ng t\xE1c Formative Checkpoint k\xE8m c\xE1c l\u1EF1a ch\u1ECDn A/B/C/D \u0111\u1EC3 l\u1EDBp b\xECnh ch\u1ECDn.",
4625
+ description: "Interactive multiple-choice diagnostic checkpoint with A/B/C/D voting options.",
4625
4626
  layout: {
4626
4627
  boxes: [
4627
4628
  {
@@ -4660,27 +4661,27 @@ Presenter Notes:
4660
4661
  fontSize: 1.15rem
4661
4662
  -->
4662
4663
 
4663
- ## \u{1F3AF} Ki\u1EC3m Tra Nhanh: B\u1EA1n \u0110\xE3 Hi\u1EC3u \u0110\xFAng?
4664
+ ## \u{1F3AF} Formative Checkpoint: Verify Your Understanding
4664
4665
 
4665
- > **C\xE2u h\u1ECFi:** Trong ki\u1EBFn tr\xFAc Microservices, c\u01A1 ch\u1EBF n\xE0o gi\xFAp \u0111\u1EA3m b\u1EA3o tin nh\u1EAFn kh\xF4ng b\u1ECB th\u1EA5t l\u1EA1c khi d\u1ECBch v\u1EE5 nh\u1EADn g\u1EB7p s\u1EF1 c\u1ED1 t\u1EA1m th\u1EDDi?
4666
+ > **Question:** In an event-driven architecture, which pattern guarantees that messages are never permanently lost if a downstream consumer crashes?
4666
4667
 
4667
- - **A.** G\u1ECDi API HTTP tr\u1EF1c ti\u1EBFp v\u1EDBi timeout ng\u1EAFn
4668
- - **B.** S\u1EED d\u1EE5ng Message Queue (H\xE0ng \u0111\u1EE3i tin nh\u1EAFn) c\xF3 c\u01A1 ch\u1EBF Retry & DLQ
4669
- - **C.** L\u01B0u t\u1EA1m v\xE0o b\u1ED9 nh\u1EDB RAM c\u1EE7a m\xE1y kh\xE1ch (Client In-Memory Storage)
4670
- - **D.** B\u1ECF qua tin nh\u1EAFn b\u1ECB l\u1ED7i v\xE0 th\xF4ng b\xE1o ng\u01B0\u1EDDi d\xF9ng g\u1EEDi l\u1EA1i t\u1EEB \u0111\u1EA7u
4668
+ - **A.** Direct synchronous HTTP request with short 2-second timeout
4669
+ - **B.** Persistent Message Broker with Dead-Letter Queue (DLQ) & retry policy
4670
+ - **C.** In-memory client RAM cache without persistence
4671
+ - **D.** Discarding failed packets and prompting the user to re-submit
4671
4672
 
4672
4673
  <!--
4673
4674
  Presenter Notes:
4674
- - D\xE0nh 30 gi\xE2y cho h\u1ECDc vi\xEAn gi\u01A1 tay ho\u1EB7c b\xECnh ch\u1ECDn \u0111\xE1p \xE1n.
4675
- - \u0110\xE1p \xE1n ch\xEDnh x\xE1c: B.
4676
- - Gi\u1EA3i th\xEDch v\xEC sao \u0111\xE1p \xE1n A v\xE0 C ti\u1EC1m \u1EA9n nguy c\u01A1 m\u1EA5t m\xE1t d\u1EEF li\u1EC7u nghi\xEAm tr\u1ECDng.
4675
+ - Give students 30 seconds to vote on option A, B, C, or D.
4676
+ - Correct answer: B.
4677
+ - Explain why options A and C introduce catastrophic data loss in production.
4677
4678
  -->`
4678
4679
  },
4679
4680
  {
4680
4681
  id: "tiered-practice-3cards",
4681
- name: "Th\u1EF1c H\xE0nh Ph\xE2n H\xF3a (Tiered Practice)",
4682
+ name: "Tiered Differentiation (Bronze / Silver / Gold)",
4682
4683
  category: "content",
4683
- description: "3 c\u1EA5p b\u1EADc nhi\u1EC7m v\u1EE5 \u0110\u1ED3ng - B\u1EA1c - V\xE0ng \u0111\u1EC3 h\u1ECDc sinh t\u1EF1 ch\u1ECDn m\u1EE9c th\u1EED th\xE1ch ph\xF9 h\u1EE3p.",
4684
+ description: "Three progressive competency tiers allowing self-paced learning acceleration.",
4684
4685
  layout: {
4685
4686
  boxes: [
4686
4687
  {
@@ -4723,46 +4724,46 @@ Presenter Notes:
4723
4724
  pos: [850, 140, 350, 520]
4724
4725
  -->
4725
4726
 
4726
- ## \u{1F6E0}\uFE0F Th\u1EED Th\xE1ch Ph\xE2n H\xF3a 3 C\u1EA5p \u0110\u1ED9 (Tiered Lab)
4727
+ ## \u{1F6E0}\uFE0F Hands-On Challenge: 3-Tier Differentiation
4727
4728
 
4728
4729
  <div class="columns-3">
4729
4730
  <div>
4730
4731
 
4731
- ### \u{1F949} H\u1EA1ng \u0110\u1ED3ng (Bronze)
4732
- - Vi\u1EBFt h\xE0m x\u1EED l\xFD c\u01A1 b\u1EA3n
4733
- - V\u01B0\u1EE3t qua 3 test case m\u1EABu
4734
- - *M\u1EE5c ti\xEAu: \u0110\u1EA1t chu\u1EA9n ki\u1EBFn th\u1EE9c c\u01A1 b\u1EA3n*
4732
+ ### \u{1F949} Bronze Tier
4733
+ - Implement baseline function
4734
+ - Pass 3 baseline unit tests
4735
+ - *Goal: Foundational mastery*
4735
4736
 
4736
4737
  </div>
4737
4738
  <div>
4738
4739
 
4739
- ### \u{1F948} H\u1EA1ng B\u1EA1c (Silver)
4740
- - Th\xEAm ki\u1EC3m tra \u0111i\u1EC1u ki\u1EC7n bi\xEAn
4741
- - T\u1ED1i \u01B0u \u0111\u1ED9 ph\u1EE9c t\u1EA1p thu\u1EADt to\xE1n O(N)
4742
- - *M\u1EE5c ti\xEAu: V\u1EEFng v\xE0ng k\u1EF9 n\u0103ng th\u1EF1c chi\u1EBFn*
4740
+ ### \u{1F948} Silver Tier
4741
+ - Add boundary error handling
4742
+ - Enforce O(N) memory complexity
4743
+ - *Goal: Production-ready code*
4743
4744
 
4744
4745
  </div>
4745
4746
  <div>
4746
4747
 
4747
- ### \u{1F947} H\u1EA1ng V\xE0ng (Gold)
4748
- - Thi\u1EBFt k\u1EBF t\xEDnh n\u0103ng m\u1EDF r\u1ED9ng
4749
- - Vi\u1EBFt Unit Test t\u1EF1 \u0111\u1ED9ng bao ph\u1EE7 90%
4750
- - *M\u1EE5c ti\xEAu: S\xE1ng t\u1EA1o & b\u1EE9t ph\xE1*
4748
+ ### \u{1F947} Gold Tier
4749
+ - Design distributed retry queue
4750
+ - Add 95% automated test coverage
4751
+ - *Goal: Architectural leadership*
4751
4752
 
4752
4753
  </div>
4753
4754
  </div>
4754
4755
 
4755
4756
  <!--
4756
4757
  Presenter Notes:
4757
- - To\xE0n b\u1ED9 l\u1EDBp \u0111\u1EC1u b\u1EAFt \u0111\u1EA7u t\u1EEB H\u1EA1ng \u0110\u1ED3ng \u0111\u1EC3 \u0111\u1EA3m b\u1EA3o hi\u1EC3u b\xE0i.
4758
- - Khuy\u1EBFn kh\xEDch h\u1ECDc vi\xEAn \u0111\xE3 xong Bronze ch\u1EE7 \u0111\u1ED9ng th\u1EED s\u1EE9c v\u1EDBi Silver v\xE0 Gold.
4758
+ - All learners begin at Bronze to establish baseline competency.
4759
+ - Accelerate self-directed learners to Silver and Gold as they complete each tier.
4759
4760
  -->`
4760
4761
  },
4761
4762
  {
4762
4763
  id: "agenda-timeline",
4763
- name: "L\u1ED9 Tr\xECnh Bu\u1ED5i H\u1ECDc (Agenda Table)",
4764
+ name: "Session Agenda & Milestones",
4764
4765
  category: "content",
4765
- description: "B\u1EA3ng l\u1ED9 tr\xECnh th\u1EDDi gian chi ti\u1EBFt theo t\u1EEBng giai \u0111o\u1EA1n v\xE0 s\u1EA3n ph\u1EA9m \u0111\u1EA7u ra.",
4766
+ description: "Structured time-budgeted agenda mapping stages to measurable deliverables.",
4766
4767
  layout: {
4767
4768
  boxes: [
4768
4769
  {
@@ -4789,25 +4790,25 @@ Presenter Notes:
4789
4790
  pos: [80, 140, 1120, 520]
4790
4791
  -->
4791
4792
 
4792
- ## \u{1F5FA}\uFE0F L\u1ED9 Tr\xECnh Ho\u1EA1t \u0110\u1ED9ng & M\u1EE5c Ti\xEAu
4793
+ ## \u{1F5FA}\uFE0F Milestone Roadmap & Time Budget
4793
4794
 
4794
- | Th\u1EDDi l\u01B0\u1EE3ng | Giai \u0111o\u1EA1n | Tr\u1ECDng t\xE2m ho\u1EA1t \u0111\u1ED9ng | K\u1EBFt qu\u1EA3 \u0111\u1EA1t \u0111\u01B0\u1EE3c |
4795
+ | Allocated Time | Session Stage | Core Learning Focus | Deliverable Milestone |
4795
4796
  |:---:|---|---|---|
4796
- | **05'** | Kh\u1EDFi \u0111\u1ED9ng | T\xECnh hu\u1ED1ng th\u1EF1c t\u1EBF & Th\u1EED th\xE1ch | Nh\u1EADn di\u1EC7n b\xE0i to\xE1n c\u1EA7n gi\u1EA3i |
4797
- | **15'** | Kh\xE1m ph\xE1 | Ph\xE2n t\xEDch 2 kh\xE1i ni\u1EC7m c\u1ED1t l\xF5i | Hi\u1EC3u b\u1EA3n ch\u1EA5t thu\u1EADt to\xE1n |
4798
- | **20'** | Th\u1EF1c h\xE0nh | Code Lab t\u1EA1i m\xE1y theo 3 b\u1EADc | Ho\xE0n th\xE0nh t\u1ED1i thi\u1EC3u H\u1EA1ng \u0110\u1ED3ng |
4799
- | **05'** | T\u1ED5ng k\u1EBFt | Tr\u1EAFc nghi\u1EC7m ph\u1EA3n x\u1EA1 & \u0110\xE1nh gi\xE1 | H\u1EC7 th\u1ED1ng h\xF3a to\xE0n b\u1ED9 ki\u1EBFn th\u1EE9c |
4797
+ | **05 mins** | Warm-Up | Real-World Scenario & Context | Identify system bottleneck |
4798
+ | **15 mins** | Concept Discovery | Core Architectural Patterns | Deconstruct message queue models |
4799
+ | **20 mins** | Hands-On Lab | Tiered Code Implementation | Complete Bronze + Silver tasks |
4800
+ | **05 mins** | Wrap-Up | Formative Checkpoint & Debrief | Consolidate key principles |
4800
4801
 
4801
4802
  <!--
4802
4803
  Presenter Notes:
4803
- - Gi\u1EDBi thi\u1EC7u t\u1ED5ng quan \u0111\u1EC3 h\u1ECDc vi\xEAn bi\u1EBFt r\xF5 c\u1EA5u tr\xFAc bu\u1ED5i h\u1ECDc v\xE0 ch\u1EE7 \u0111\u1ED9ng ph\xE2n b\u1ED5 th\u1EDDi gian.
4804
+ - Walk through the time budget so students understand expectations and pacing.
4804
4805
  -->`
4805
4806
  },
4806
4807
  {
4807
4808
  id: "takeaways-summary",
4808
- name: "T\u1ED5ng K\u1EBFt C\u1ED1t L\xF5i (Key Takeaways)",
4809
+ name: "Key Takeaways & Wrap-up",
4809
4810
  category: "content",
4810
- description: "Slide k\u1EBFt lu\u1EADn v\u1EDBi 3 b\xE0i h\u1ECDc \u0111\u1EAFt gi\xE1 nh\u1EA5t v\xE0 h\xE0nh \u0111\u1ED9ng ti\u1EBFp theo.",
4811
+ description: "Three memorable synthesis takeaways with actionable next steps.",
4811
4812
  layout: {
4812
4813
  boxes: [
4813
4814
  {
@@ -4846,18 +4847,18 @@ Presenter Notes:
4846
4847
  fontSize: 1.1rem
4847
4848
  -->
4848
4849
 
4849
- ## \u{1F3C1} 3 \u0110i\u1EC1u C\u1EA7n Nh\u1EDB Sau Bu\u1ED5i H\u1ECDc
4850
+ ## \u{1F3C1} Key Takeaways & Action Items
4850
4851
 
4851
- 1. **Hi\u1EC3u b\u1EA3n ch\u1EA5t tr\u01B0\u1EDBc khi vi\u1EBFt m\xE3:** Thu\u1EADt to\xE1n \u0111\xFAng lu\xF4n quan tr\u1ECDng h\u01A1n c\xFA ph\xE1p b\xF3ng b\u1EA9y.
4852
- 2. **Ki\u1EC3m so\xE1t \u0111i\u1EC1u ki\u1EC7n bi\xEAn:** 80% l\u1ED7i h\u1EC7 th\u1ED1ng ph\xE1t sinh t\u1EEB c\xE1c d\u1EEF li\u1EC7u \u0111\u1EA7u v\xE0o kh\xF4ng l\u01B0\u1EDDng tr\u01B0\u1EDBc.
4853
- 3. **Thi\u1EBFt k\u1EBF h\u01B0\u1EDBng m\xF4-\u0111un:** Chia nh\u1ECF v\u1EA5n \u0111\u1EC1 l\u1EDBn th\xE0nh c\xE1c h\xE0m \u0111\u1ED9c l\u1EADp d\u1EC5 ki\u1EC3m th\u1EED.
4852
+ 1. **Decouple Before Scaling:** Separate producer rate from consumer processing capacity.
4853
+ 2. **Design for Failure:** Always configure retries, backoff intervals, and dead-letter queues.
4854
+ 3. **Measure End-to-End:** Track P99 latency and error rates across all distributed boundaries.
4854
4855
 
4855
- > \u{1F4DD} **Nhi\u1EC7m v\u1EE5 v\u1EC1 nh\xE0:** Ho\xE0n thi\u1EC7n b\xE0i th\u1EF1c h\xE0nh H\u1EA1ng B\u1EA1c v\xE0 chu\u1EA9n b\u1ECB c\xE2u h\u1ECFi cho bu\u1ED5i Review tu\u1EA7n t\u1EDBi.
4856
+ > \u{1F4DD} **Next Action Item:** Complete the Silver Tier refactoring challenge before our next peer-review session.
4856
4857
 
4857
4858
  <!--
4858
4859
  Presenter Notes:
4859
- - T\xF3m t\u1EAFt s\xFAc t\xEDch trong 2 ph\xFAt cu\u1ED1i bu\u1ED5i.
4860
- - Tuy\xEAn d\u01B0\u01A1ng c\xE1c b\u1EA1n c\xF3 gi\u1EA3i ph\xE1p xu\u1EA5t s\u1EAFc trong ph\u1EA7n th\u1EF1c h\xE0nh.
4860
+ - Deliver a crisp 2-minute wrap-up reinforcing the 3 core takeaways.
4861
+ - Acknowledge strong peer collaboration during the hands-on lab.
4861
4862
  -->`
4862
4863
  }
4863
4864
  ];