@thanh01.pmt/curriculum-kit 1.0.3 → 1.0.5
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.cjs +1732 -21
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +158 -1
- package/dist/index.d.ts +158 -1
- package/dist/index.mjs +1707 -22
- package/dist/index.mjs.map +1 -1
- package/dist/workflow/index.cjs +11 -6
- package/dist/workflow/index.cjs.map +1 -1
- package/dist/workflow/index.mjs +11 -6
- package/dist/workflow/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -2992,6 +2992,336 @@ This lab focuses on the practical implementation of core technical concepts, bri
|
|
|
2992
2992
|
{{CHECKLIST_ITEMS}}
|
|
2993
2993
|
`.trim();
|
|
2994
2994
|
|
|
2995
|
+
// src/templates/handoutTemplate.ts
|
|
2996
|
+
var HANDOUT_TEMPLATE = `
|
|
2997
|
+
---
|
|
2998
|
+
id: "{{ID}}"
|
|
2999
|
+
title: "{{TITLE}}"
|
|
3000
|
+
type: "HANDOUT"
|
|
3001
|
+
created_by: "Curriculum OS Builder"
|
|
3002
|
+
phase: "{{PHASE}}"
|
|
3003
|
+
deliverable: "P3-T6"
|
|
3004
|
+
version: "{{VERSION}}"
|
|
3005
|
+
date: "{{DATE}}"
|
|
3006
|
+
---
|
|
3007
|
+
|
|
3008
|
+
# STUDENT HANDOUT: {{TITLE}}
|
|
3009
|
+
**Quick-Reference Cheat Sheet & Concept Summary**
|
|
3010
|
+
|
|
3011
|
+
> **For Students:** This document summarizes the core concepts and the most important syntax following the **5-Second Rule** (instant look-up). Use it as a quick reference during your lab tasks or projects.
|
|
3012
|
+
|
|
3013
|
+
## \u{1F4D6} 1. Core Concepts
|
|
3014
|
+
{{CORE_CONCEPTS_SUMMARY}}
|
|
3015
|
+
|
|
3016
|
+
## \u26A1 2. Common Syntax & Configurations
|
|
3017
|
+
| Syntax / Config | Meaning & Function | Example / Snippet |
|
|
3018
|
+
| :--- | :--- | :--- |
|
|
3019
|
+
{{SYNTAX_TABLE_ROWS}}
|
|
3020
|
+
|
|
3021
|
+
## \u{1F680} 3. General Problem-Solving Procedure
|
|
3022
|
+
*Three general thinking steps when tackling problems in this domain:*
|
|
3023
|
+
1. **Step 1 (Input/Trigger):** {{STEP1_TRIGGER}}
|
|
3024
|
+
2. **Step 2 (Logic/Transform):** {{STEP2_LOGIC}}
|
|
3025
|
+
3. **Step 3 (Output/Verify):** {{STEP3_OUTPUT}}
|
|
3026
|
+
|
|
3027
|
+
---
|
|
3028
|
+
|
|
3029
|
+
### \u{1F4A1} Pro-tip
|
|
3030
|
+
{{PRO_TIPS}}
|
|
3031
|
+
`.trim();
|
|
3032
|
+
|
|
3033
|
+
// src/templates/slideTemplate.ts
|
|
3034
|
+
var SLIDE_TEMPLATE = `
|
|
3035
|
+
---
|
|
3036
|
+
marp: true
|
|
3037
|
+
theme: {{THEME}}
|
|
3038
|
+
paginate: true
|
|
3039
|
+
header: "{{HEADER_TITLE}}"
|
|
3040
|
+
footer: "LearnWell Platform | {{LESSON_ID}}"
|
|
3041
|
+
---
|
|
3042
|
+
|
|
3043
|
+
# \u{1F680} {{TITLE}}
|
|
3044
|
+
### {{SUBTITLE}}
|
|
3045
|
+
|
|
3046
|
+
**Audience:** {{AUDIENCE}}
|
|
3047
|
+
**Tech Stack:** {{TECH_STACK}}
|
|
3048
|
+
**Estimated Time:** {{DURATION_MINS}} mins
|
|
3049
|
+
|
|
3050
|
+
<!--
|
|
3051
|
+
Presenter Notes:
|
|
3052
|
+
{{TITLE_PRESENTER_NOTES}}
|
|
3053
|
+
-->
|
|
3054
|
+
|
|
3055
|
+
---
|
|
3056
|
+
|
|
3057
|
+
## \u{1F5FA}\uFE0F Agenda & Milestone Journey Map
|
|
3058
|
+
|
|
3059
|
+
| Time | Stage | Focus Activity |
|
|
3060
|
+
|:---:|---|---|
|
|
3061
|
+
{{AGENDA_ROWS}}
|
|
3062
|
+
|
|
3063
|
+
<!--
|
|
3064
|
+
Presenter Notes:
|
|
3065
|
+
{{AGENDA_PRESENTER_NOTES}}
|
|
3066
|
+
-->
|
|
3067
|
+
|
|
3068
|
+
---
|
|
3069
|
+
|
|
3070
|
+
## \u26A1 Warm-Up & Prior Knowledge Recall
|
|
3071
|
+
|
|
3072
|
+
{{WARMUP_CONTENT}}
|
|
3073
|
+
|
|
3074
|
+
<!--
|
|
3075
|
+
Presenter Notes:
|
|
3076
|
+
{{WARMUP_PRESENTER_NOTES}}
|
|
3077
|
+
-->
|
|
3078
|
+
|
|
3079
|
+
---
|
|
3080
|
+
|
|
3081
|
+
## \u{1F3AF} Hook Scenario: The Real-World Engineering Challenge
|
|
3082
|
+
|
|
3083
|
+
> \u26A0\uFE0F **The Problem / System Failure:**
|
|
3084
|
+
> {{HOOK_SCENARIO}}
|
|
3085
|
+
|
|
3086
|
+
- **Key Constraint:** {{HOOK_CONSTRAINT}}
|
|
3087
|
+
- **Mission Question:** {{HOOK_QUESTION}}
|
|
3088
|
+
|
|
3089
|
+
<!--
|
|
3090
|
+
Presenter Notes:
|
|
3091
|
+
{{HOOK_PRESENTER_NOTES}}
|
|
3092
|
+
-->
|
|
3093
|
+
|
|
3094
|
+
---
|
|
3095
|
+
|
|
3096
|
+
<!-- [CONCEPT_MICRO_CYCLES_START] -->
|
|
3097
|
+
{{CONCEPT_MICRO_CYCLES_SECTION}}
|
|
3098
|
+
<!-- [CONCEPT_MICRO_CYCLES_END] -->
|
|
3099
|
+
|
|
3100
|
+
---
|
|
3101
|
+
|
|
3102
|
+
## \u{1F6E0}\uFE0F Integrated Hands-On Lab: Capstone Challenge
|
|
3103
|
+
|
|
3104
|
+
### \u{1F3AF} Mission Goal:
|
|
3105
|
+
{{ADVANCED_LAB_GOAL}}
|
|
3106
|
+
|
|
3107
|
+
### 3-Tier Progressive Differentiation:
|
|
3108
|
+
- \u{1F949} **Bronze Tier:** {{BRONZE_TASK}}
|
|
3109
|
+
- \u{1F948} **Silver Tier:** {{SILVER_TASK}}
|
|
3110
|
+
- \u{1F947} **Gold Tier:** {{GOLD_TASK}}
|
|
3111
|
+
|
|
3112
|
+
<!--
|
|
3113
|
+
Presenter Notes:
|
|
3114
|
+
{{ADVANCED_LAB_PRESENTER_NOTES}}
|
|
3115
|
+
-->
|
|
3116
|
+
|
|
3117
|
+
---
|
|
3118
|
+
|
|
3119
|
+
## \u{1F6A6} Formative Checkpoint: Traffic Light Assessment
|
|
3120
|
+
|
|
3121
|
+
- \u{1F7E2} **Ready to Accelerate:** Solved Bronze + Silver, ready for Gold tier!
|
|
3122
|
+
- \u{1F7E1} **Need Quick Help:** Stuck on syntax or compilation error $\rightarrow$ Call assistant / check troubleshooting matrix.
|
|
3123
|
+
- \u{1F534} **Blocked:** Concept unclear $\rightarrow$ Step back to Micro-Practice 1.
|
|
3124
|
+
|
|
3125
|
+
<!--
|
|
3126
|
+
Presenter Notes:
|
|
3127
|
+
{{CHECKPOINT_PRESENTER_NOTES}}
|
|
3128
|
+
-->
|
|
3129
|
+
|
|
3130
|
+
---
|
|
3131
|
+
|
|
3132
|
+
## \u{1F39F}\uFE0F Exit Ticket & Metacognitive Reflection
|
|
3133
|
+
|
|
3134
|
+
1. **Scenario Question 1:** {{EXIT_Q1}}
|
|
3135
|
+
2. **Scenario Question 2:** {{EXIT_Q2}}
|
|
3136
|
+
3. **Metacognitive Reflection:** {{EXIT_REFLECTION}}
|
|
3137
|
+
|
|
3138
|
+
<!--
|
|
3139
|
+
Presenter Notes:
|
|
3140
|
+
{{EXIT_PRESENTER_NOTES}}
|
|
3141
|
+
-->
|
|
3142
|
+
|
|
3143
|
+
---
|
|
3144
|
+
|
|
3145
|
+
## \u{1F3C1} Summary & Key Takeaways
|
|
3146
|
+
|
|
3147
|
+
- \u2705 **Rule 1:** {{TAKEAWAY_1}}
|
|
3148
|
+
- \u2705 **Rule 2:** {{TAKEAWAY_2}}
|
|
3149
|
+
- \u2705 **Rule 3:** {{TAKEAWAY_3}}
|
|
3150
|
+
|
|
3151
|
+
\u{1F449} **Next Milestone Preview:** {{NEXT_MILESTONE_PREVIEW}}
|
|
3152
|
+
`.trim();
|
|
3153
|
+
|
|
3154
|
+
// src/templates/worksheetTemplate.ts
|
|
3155
|
+
var WORKSHEET_TEMPLATE = `
|
|
3156
|
+
---
|
|
3157
|
+
id: "{{ID}}"
|
|
3158
|
+
title: "{{TITLE}}"
|
|
3159
|
+
type: "WKS"
|
|
3160
|
+
created_by: "Curriculum OS Builder"
|
|
3161
|
+
phase: "{{PHASE}}"
|
|
3162
|
+
deliverable: "P3-T7"
|
|
3163
|
+
version: "{{VERSION}}"
|
|
3164
|
+
date: "{{DATE}}"
|
|
3165
|
+
---
|
|
3166
|
+
|
|
3167
|
+
# WORKSHEET: {{TITLE}}
|
|
3168
|
+
|
|
3169
|
+
**Student Name:** _______________________
|
|
3170
|
+
**Class / Cohort:** _______________________
|
|
3171
|
+
**Date:** _______________________
|
|
3172
|
+
|
|
3173
|
+
> **For Students:** This document guides you step-by-step through practical tasks. Read carefully, fill in the blanks, and check off [x] once completed. If you encounter errors, refer back to your **HANDOUT**.
|
|
3174
|
+
|
|
3175
|
+
## Part 1: Knowledge Check
|
|
3176
|
+
{{PART1_KNOWLEDGE_CHECK}}
|
|
3177
|
+
|
|
3178
|
+
## Part 2: Guided Practice (Step-by-Step)
|
|
3179
|
+
**Task Objective:** {{PART2_OBJECTIVE}}
|
|
3180
|
+
|
|
3181
|
+
{{PART2_STEPS}}
|
|
3182
|
+
|
|
3183
|
+
## Part 3: Reflection / Computational Thinking
|
|
3184
|
+
- What is the most critical lesson learned from today's practice?
|
|
3185
|
+
____________________________________________________________________
|
|
3186
|
+
- If you wanted to scale this system for 10,000 active users, where do you predict the primary bottleneck will be?
|
|
3187
|
+
____________________________________________________________________
|
|
3188
|
+
`.trim();
|
|
3189
|
+
|
|
3190
|
+
// src/templates/projectInstructionTemplate.ts
|
|
3191
|
+
var PROJECT_INSTRUCTION_TEMPLATE = `
|
|
3192
|
+
---
|
|
3193
|
+
id: "{{ID}}"
|
|
3194
|
+
title: "{{TITLE}}"
|
|
3195
|
+
type: "INSTRUCTION"
|
|
3196
|
+
language: "{{LANGUAGE}}"
|
|
3197
|
+
difficulty: "{{DIFFICULTY}}"
|
|
3198
|
+
estimated_minutes: {{ESTIMATED_MINUTES}}
|
|
3199
|
+
tech_stack: {{TECH_STACK}}
|
|
3200
|
+
---
|
|
3201
|
+
|
|
3202
|
+
# \u{1F6E0}\uFE0F {{TITLE}}
|
|
3203
|
+
|
|
3204
|
+
> \u23F1\uFE0F **Estimated Duration:** ~{{ESTIMATED_MINUTES}} mins
|
|
3205
|
+
> \u{1F3AF} **Difficulty:** {{DIFFICULTY_UPPER}}
|
|
3206
|
+
> \u{1F9F0} **Tech Stack:** {{TECH_STACK_STR}}
|
|
3207
|
+
|
|
3208
|
+
---
|
|
3209
|
+
|
|
3210
|
+
## \u{1F4CB} Prerequisites & Tools
|
|
3211
|
+
* **Prerequisites:** {{PREREQUISITES}}
|
|
3212
|
+
* **Materials & Tools:** {{MATERIALS_AND_TOOLS}}
|
|
3213
|
+
|
|
3214
|
+
---
|
|
3215
|
+
|
|
3216
|
+
{{SECTIONS_CONTENT}}
|
|
3217
|
+
|
|
3218
|
+
---
|
|
3219
|
+
|
|
3220
|
+
## \u{1F3C1} Verification Checklist
|
|
3221
|
+
{{VERIFICATION_CHECKLIST}}
|
|
3222
|
+
`.trim();
|
|
3223
|
+
|
|
3224
|
+
// src/templates/rubricTemplate.ts
|
|
3225
|
+
var RUBRIC_TEMPLATE = `
|
|
3226
|
+
---
|
|
3227
|
+
id: "{{ID}}"
|
|
3228
|
+
title: "{{TITLE}}"
|
|
3229
|
+
type: "RUBRIC"
|
|
3230
|
+
created_by: "Curriculum OS Builder"
|
|
3231
|
+
phase: "{{PHASE}}"
|
|
3232
|
+
deliverable: "P3-T5"
|
|
3233
|
+
version: "{{VERSION}}"
|
|
3234
|
+
date: "{{DATE}}"
|
|
3235
|
+
template_contract: "artifact-template-v1"
|
|
3236
|
+
template_required_sections:
|
|
3237
|
+
- "Assessment Overview"
|
|
3238
|
+
- "Assessment Rubric"
|
|
3239
|
+
---
|
|
3240
|
+
|
|
3241
|
+
# ASSESSMENT: {{TITLE}}
|
|
3242
|
+
|
|
3243
|
+
_Milestone: {{MILESTONE_ID}} | Lesson: {{LESSON_ID}}_
|
|
3244
|
+
|
|
3245
|
+
## [REQUIRED] Assessment Overview
|
|
3246
|
+
- **Type:** {{ASSESSMENT_TYPE}}
|
|
3247
|
+
- **Format:** {{ASSESSMENT_FORMAT}}
|
|
3248
|
+
- **Learning Objectives Measured:** {{LEARNING_OBJECTIVES_MEASURED}}
|
|
3249
|
+
- **Target Language:** {{TARGET_AUDIENCE_NOTE}}
|
|
3250
|
+
|
|
3251
|
+
---
|
|
3252
|
+
|
|
3253
|
+
## [REQUIRED] Assessment Rubric
|
|
3254
|
+
_Note for @assessor: Describe SPECIFIC behaviors. Avoid vague words like "good" or "understand."_
|
|
3255
|
+
|
|
3256
|
+
| Criteria | Weight | Excellent (4) | Proficient (3) | Developing (2) | Beginning (1) |
|
|
3257
|
+
|---|:---:|---|---|---|---|
|
|
3258
|
+
{{RUBRIC_TABLE_ROWS}}
|
|
3259
|
+
|
|
3260
|
+
---
|
|
3261
|
+
|
|
3262
|
+
## [OPTIONAL] Exit Ticket
|
|
3263
|
+
_Used at the end of class for a quick pulse check (Max 3 questions)._
|
|
3264
|
+
{{EXIT_TICKET_QUESTIONS}}
|
|
3265
|
+
|
|
3266
|
+
---
|
|
3267
|
+
|
|
3268
|
+
## [OPTIONAL] Student Self-Assessment Checklist
|
|
3269
|
+
_Simple language for students to reflect after completing a project._
|
|
3270
|
+
{{SELF_ASSESSMENT_CHECKLIST}}
|
|
3271
|
+
`.trim();
|
|
3272
|
+
|
|
3273
|
+
// src/templates/guideTemplate.ts
|
|
3274
|
+
var TEACHER_GUIDE_TEMPLATE = `
|
|
3275
|
+
---
|
|
3276
|
+
id: "{{ID}}"
|
|
3277
|
+
title: "{{TITLE}}"
|
|
3278
|
+
type: "GUIDE"
|
|
3279
|
+
created_by: "Curriculum OS Builder"
|
|
3280
|
+
phase: "{{PHASE}}"
|
|
3281
|
+
deliverable: "P3-T5"
|
|
3282
|
+
version: "{{VERSION}}"
|
|
3283
|
+
date: "{{DATE}}"
|
|
3284
|
+
---
|
|
3285
|
+
|
|
3286
|
+
# TEACHER GUIDE: {{TITLE}}
|
|
3287
|
+
_For Teacher Use Only | Milestone: {{MILESTONE_ID}} | Lesson: {{LESSON_ID}}_
|
|
3288
|
+
|
|
3289
|
+
## 1. Objectives & Preparation
|
|
3290
|
+
- **Pedagogical Goal:** {{PEDAGOGICAL_GOAL}}
|
|
3291
|
+
- **Common Student Blindspots:** {{COMMON_BLINDSPOTS}}
|
|
3292
|
+
- **Technical Checklist:**
|
|
3293
|
+
{{TECHNICAL_CHECKLIST}}
|
|
3294
|
+
|
|
3295
|
+
## 2. Teaching Script & Progression
|
|
3296
|
+
|
|
3297
|
+
### Hook / Engage (5-10 minutes)
|
|
3298
|
+
- **The Delivery:** {{HOOK_DELIVERY}}
|
|
3299
|
+
- **Key Point:** {{HOOK_KEY_POINT}}
|
|
3300
|
+
|
|
3301
|
+
### Explore / Core Concepts (15-20 minutes)
|
|
3302
|
+
- **Explanation Strategy:** {{EXPLANATION_STRATEGY}}
|
|
3303
|
+
- **Quick Check Questions:**
|
|
3304
|
+
{{QUICK_CHECK_QUESTIONS}}
|
|
3305
|
+
- **Time Management:** {{TIME_MANAGEMENT_TIPS}}
|
|
3306
|
+
|
|
3307
|
+
### Elaborate / Hands-on Activity (30-45 minutes)
|
|
3308
|
+
- **Classroom Management:** {{CLASSROOM_MANAGEMENT}}
|
|
3309
|
+
- **Facilitation:** {{FACILITATION_TIPS}}
|
|
3310
|
+
- **Pro-tips:** {{PRO_TIPS}}
|
|
3311
|
+
|
|
3312
|
+
### Evaluate / Wrap-up (5-10 minutes)
|
|
3313
|
+
- **Exit Ticket Strategy:** {{EXIT_TICKET_STRATEGY}}
|
|
3314
|
+
- **Minimum Requirement:** {{MINIMUM_REQUIREMENT}}
|
|
3315
|
+
|
|
3316
|
+
## 3. Troubleshooting & FAQs
|
|
3317
|
+
{{TROUBLESHOOTING_FAQS}}
|
|
3318
|
+
|
|
3319
|
+
## 4. Assessment & Differentiation Tips
|
|
3320
|
+
- **Proficient:** {{PROFICIENT_THRESHOLD}}
|
|
3321
|
+
- **Advanced:** {{ADVANCED_EXTENSIONS}}
|
|
3322
|
+
- **Enrichment Question:** {{ENRICHMENT_QUESTIONS}}
|
|
3323
|
+
`.trim();
|
|
3324
|
+
|
|
2995
3325
|
// src/templates/selfLabTemplate.ts
|
|
2996
3326
|
var SELF_LAB_TEMPLATE = `
|
|
2997
3327
|
---
|
|
@@ -3194,6 +3524,1350 @@ passing_score_pct: {{PASSING_SCORE_PCT}}
|
|
|
3194
3524
|
</details>
|
|
3195
3525
|
`.trim();
|
|
3196
3526
|
|
|
3527
|
+
// src/templates/extTemplate.ts
|
|
3528
|
+
var EXT_TEMPLATE = `---
|
|
3529
|
+
id: "{{ID}}"
|
|
3530
|
+
title: "{{TITLE}}"
|
|
3531
|
+
type: "EXT"
|
|
3532
|
+
created_by: "Curriculum OS Builder"
|
|
3533
|
+
phase: "{{PHASE}}"
|
|
3534
|
+
deliverable: "P3-T8"
|
|
3535
|
+
version: "{{VERSION}}"
|
|
3536
|
+
date: "{{DATE}}"
|
|
3537
|
+
template_contract: "artifact-template-v1"
|
|
3538
|
+
template_required_sections:
|
|
3539
|
+
- "Target Mastery & Acceleration"
|
|
3540
|
+
- "Challenge 1"
|
|
3541
|
+
- "Challenge 2"
|
|
3542
|
+
- "Verification Criteria"
|
|
3543
|
+
---
|
|
3544
|
+
<!-- INJECT_BODY -->
|
|
3545
|
+
|
|
3546
|
+
# EXTENSION CHALLENGES: {{TITLE}}
|
|
3547
|
+
_Unit: {{UNIT_ID}} | Module: {{MODULE_ID}} | Lesson: {{LESSON_ID}}_
|
|
3548
|
+
|
|
3549
|
+
## [REQUIRED] Target Mastery & Acceleration
|
|
3550
|
+
> *Designed for advanced learners who have successfully completed the core lesson requirements ahead of schedule.*
|
|
3551
|
+
|
|
3552
|
+
---
|
|
3553
|
+
|
|
3554
|
+
## [REQUIRED] Challenge 1: {{CHALLENGE_1_TITLE}} (Difficulty: \u2B50\u2B50\u2B50)
|
|
3555
|
+
- **Problem Statement:** {{CHALLENGE_1_DESCRIPTION}}
|
|
3556
|
+
- **Architectural Clues & Hints:**
|
|
3557
|
+
{{CHALLENGE_1_HINTS}}
|
|
3558
|
+
- **Expected Outcome & Deliverable:** {{CHALLENGE_1_OUTCOME}}
|
|
3559
|
+
|
|
3560
|
+
---
|
|
3561
|
+
|
|
3562
|
+
## [REQUIRED] Challenge 2: {{CHALLENGE_2_TITLE}} (Difficulty: \u2B50\u2B50\u2B50\u2B50)
|
|
3563
|
+
- **Problem Statement:** {{CHALLENGE_2_DESCRIPTION}}
|
|
3564
|
+
- **Architectural Clues & Hints:**
|
|
3565
|
+
{{CHALLENGE_2_HINTS}}
|
|
3566
|
+
- **Expected Outcome & Deliverable:** {{CHALLENGE_2_OUTCOME}}
|
|
3567
|
+
|
|
3568
|
+
---
|
|
3569
|
+
|
|
3570
|
+
## [REQUIRED] Verification Criteria
|
|
3571
|
+
- [ ] Code passes all extended unit tests.
|
|
3572
|
+
- [ ] No regression introduced into core components.
|
|
3573
|
+
- [ ] Demonstrates high-order optimization or architectural separation.
|
|
3574
|
+
`;
|
|
3575
|
+
|
|
3576
|
+
// src/templates/glossaryTemplate.ts
|
|
3577
|
+
var GLOSSARY_TEMPLATE = `---
|
|
3578
|
+
id: "{{ID}}"
|
|
3579
|
+
title: "{{TITLE}}"
|
|
3580
|
+
type: "GLOSSARY"
|
|
3581
|
+
created_by: "Curriculum OS Builder"
|
|
3582
|
+
phase: "{{PHASE}}"
|
|
3583
|
+
deliverable: "P3-T9"
|
|
3584
|
+
version: "{{VERSION}}"
|
|
3585
|
+
date: "{{DATE}}"
|
|
3586
|
+
template_contract: "artifact-template-v1"
|
|
3587
|
+
template_required_sections:
|
|
3588
|
+
- "Core Technical Terminology"
|
|
3589
|
+
- "Conceptual Analogies & Non-examples"
|
|
3590
|
+
- "Cross-Technology Crosswalk"
|
|
3591
|
+
---
|
|
3592
|
+
<!-- INJECT_BODY -->
|
|
3593
|
+
|
|
3594
|
+
# TECHNICAL GLOSSARY & VOCABULARY: {{TITLE}}
|
|
3595
|
+
_Unit: {{UNIT_ID}} | Module: {{MODULE_ID}} | Reference Standard: CS2023_
|
|
3596
|
+
|
|
3597
|
+
## [REQUIRED] Core Technical Terminology
|
|
3598
|
+
|
|
3599
|
+
| Term / Keyword | Formal Engineering Definition | Code Usage Context | Common Misconception |
|
|
3600
|
+
| :--- | :--- | :--- | :--- |
|
|
3601
|
+
{{GLOSSARY_TABLE_ROWS}}
|
|
3602
|
+
|
|
3603
|
+
---
|
|
3604
|
+
|
|
3605
|
+
## [REQUIRED] Conceptual Analogies & Non-examples
|
|
3606
|
+
|
|
3607
|
+
{{ANALOGY_SECTIONS}}
|
|
3608
|
+
|
|
3609
|
+
---
|
|
3610
|
+
|
|
3611
|
+
## [REQUIRED] Cross-Technology Crosswalk (Neutral vs. Specific)
|
|
3612
|
+
|
|
3613
|
+
| Universal Concept (Marr Level 1/2) | Target Language Syntax (Level 3) | Alternative Language Equivalent |
|
|
3614
|
+
| :--- | :--- | :--- |
|
|
3615
|
+
{{CROSSWALK_ROWS}}
|
|
3616
|
+
`;
|
|
3617
|
+
var BOM_TEMPLATE = `---
|
|
3618
|
+
id: "{{ID}}"
|
|
3619
|
+
title: "{{TITLE}}"
|
|
3620
|
+
type: "BOM"
|
|
3621
|
+
created_by: "Curriculum OS Builder"
|
|
3622
|
+
phase: "{{PHASE}}"
|
|
3623
|
+
deliverable: "P3-T6"
|
|
3624
|
+
version: "{{VERSION}}"
|
|
3625
|
+
date: "{{DATE}}"
|
|
3626
|
+
template_contract: "artifact-template-v1"
|
|
3627
|
+
template_required_sections:
|
|
3628
|
+
- "Hardware & Sensor Specification"
|
|
3629
|
+
- "Software & Environment Invariants"
|
|
3630
|
+
- "Procurement & Safety Requirements"
|
|
3631
|
+
---
|
|
3632
|
+
<!-- INJECT_BODY -->
|
|
3633
|
+
|
|
3634
|
+
# BILL OF MATERIALS & LAB PREREQUISITES: {{TITLE}}
|
|
3635
|
+
_Unit: {{UNIT_ID}} | Target Class Size: {{CLASS_SIZE}} Students_
|
|
3636
|
+
|
|
3637
|
+
## [REQUIRED] Hardware & Sensor Specification
|
|
3638
|
+
|
|
3639
|
+
| Item Code | Component Name | Required Qty per Student/Group | Min Spec / Pinout | Alternative Substitute |
|
|
3640
|
+
| :--- | :--- | :--- | :--- | :--- |
|
|
3641
|
+
{{HARDWARE_BOM_ROWS}}
|
|
3642
|
+
|
|
3643
|
+
---
|
|
3644
|
+
|
|
3645
|
+
## [REQUIRED] Software & Environment Invariants
|
|
3646
|
+
|
|
3647
|
+
| Tool / Runtime | Required Version | Licensing / Cost | Fallback Offline Mode |
|
|
3648
|
+
| :--- | :--- | :--- | :--- |
|
|
3649
|
+
{{SOFTWARE_BOM_ROWS}}
|
|
3650
|
+
|
|
3651
|
+
---
|
|
3652
|
+
|
|
3653
|
+
## [REQUIRED] Procurement & Safety Requirements
|
|
3654
|
+
- \u26A0\uFE0F **Voltage & Current Constraints:** {{POWER_CONSTRAINTS}}
|
|
3655
|
+
- \u{1F512} **API Quota & Rate Limits:** {{API_LIMITS}}
|
|
3656
|
+
`;
|
|
3657
|
+
|
|
3658
|
+
// src/templates/exitTicketTemplate.ts
|
|
3659
|
+
var EXIT_TICKET_TEMPLATE = `---
|
|
3660
|
+
id: "{{ID}}"
|
|
3661
|
+
title: "{{TITLE}}"
|
|
3662
|
+
type: "EXIT_TICKET"
|
|
3663
|
+
created_by: "Curriculum OS Builder"
|
|
3664
|
+
phase: "{{PHASE}}"
|
|
3665
|
+
deliverable: "P3-T10"
|
|
3666
|
+
version: "{{VERSION}}"
|
|
3667
|
+
date: "{{DATE}}"
|
|
3668
|
+
template_contract: "artifact-template-v1"
|
|
3669
|
+
template_required_sections:
|
|
3670
|
+
- "Target Learning Objectives"
|
|
3671
|
+
- "Recall & Conceptual Anchor"
|
|
3672
|
+
- "Application & Bug Hunt"
|
|
3673
|
+
- "Metacognitive Reflection & Confidence Check"
|
|
3674
|
+
- "Scoring & Teacher Intervention Trigger"
|
|
3675
|
+
---
|
|
3676
|
+
<!-- INJECT_BODY -->
|
|
3677
|
+
|
|
3678
|
+
# FORMATIVE EXIT TICKET: {{TITLE}}
|
|
3679
|
+
_Unit: {{UNIT_ID}} | Module: {{MODULE_ID}} | Lesson: {{LESSON_ID}} | Estimated Time: 5-7 mins_
|
|
3680
|
+
|
|
3681
|
+
## [REQUIRED] Target Learning Objectives
|
|
3682
|
+
- **Target LO 1 (ULO):** {{TARGET_LO_1}}
|
|
3683
|
+
- **Target LO 2 (CIO/SIO):** {{TARGET_LO_2}}
|
|
3684
|
+
|
|
3685
|
+
---
|
|
3686
|
+
|
|
3687
|
+
## [REQUIRED] Part 1: Recall & Conceptual Anchor (Prompt 1)
|
|
3688
|
+
> *Objective: Test core mental model without allowing rote syntax memorization.*
|
|
3689
|
+
|
|
3690
|
+
**Question 1:**
|
|
3691
|
+
{{CONCEPTUAL_QUESTION}}
|
|
3692
|
+
|
|
3693
|
+
- **Student Answer Area:**
|
|
3694
|
+
\`\`\`text
|
|
3695
|
+
[Write 1-2 concise sentences explaining the difference in runtime mechanism]
|
|
3696
|
+
\`\`\`
|
|
3697
|
+
|
|
3698
|
+
---
|
|
3699
|
+
|
|
3700
|
+
## [REQUIRED] Part 2: Application & Bug Hunt (Prompt 2)
|
|
3701
|
+
> *Objective: Test code diagnosis and precise correction in \u2264 3 lines of modification.*
|
|
3702
|
+
|
|
3703
|
+
**Code Snippet:**
|
|
3704
|
+
\`\`\`{{CODE_LANGUAGE}}
|
|
3705
|
+
{{BUGGY_CODE_SNIPPET}}
|
|
3706
|
+
\`\`\`
|
|
3707
|
+
|
|
3708
|
+
**Task:**
|
|
3709
|
+
1. **Identify the Compiler/Runtime Error:** {{BUG_SYMPTOM_HINT}}
|
|
3710
|
+
2. **Corrected Line:**
|
|
3711
|
+
\`\`\`{{CODE_LANGUAGE}}
|
|
3712
|
+
{{CORRECTED_CODE_SLOT}}
|
|
3713
|
+
\`\`\`
|
|
3714
|
+
|
|
3715
|
+
---
|
|
3716
|
+
|
|
3717
|
+
## [REQUIRED] Part 3: Metacognitive Reflection & Confidence Check (Prompt 3)
|
|
3718
|
+
> *Objective: Empower student self-regulation and provide immediate diagnostic signals.*
|
|
3719
|
+
|
|
3720
|
+
**Traffic Light Self-Assessment:**
|
|
3721
|
+
- [ ] \u{1F7E2} **Green (Mastered):** "I can build and explain this concept to a peer without any hints."
|
|
3722
|
+
- [ ] \u{1F7E1} **Yellow (Needs Practice):** "I understand the concept but got stuck on syntax or error messages."
|
|
3723
|
+
- [ ] \u{1F534} **Red (Blocked):** "I need help understanding why this architecture is used."
|
|
3724
|
+
|
|
3725
|
+
**One Lingering Question (Exit Ticket Note):**
|
|
3726
|
+
\`\`\`text
|
|
3727
|
+
[What is one question you still have before leaving today's lab?]
|
|
3728
|
+
\`\`\`
|
|
3729
|
+
|
|
3730
|
+
---
|
|
3731
|
+
|
|
3732
|
+
## [REQUIRED] Scoring & Teacher Intervention Trigger
|
|
3733
|
+
- **Proficiency Threshold:** Green/Yellow check + Correct Answer to Part 2 Bug Hunt.
|
|
3734
|
+
- **Intervention Protocol:** {{INTERVENTION_PROTOCOL}}
|
|
3735
|
+
`;
|
|
3736
|
+
|
|
3737
|
+
// src/templates/tieredPracticeTemplate.ts
|
|
3738
|
+
var TIERED_PRACTICE_TEMPLATE = `---
|
|
3739
|
+
id: "{{ID}}"
|
|
3740
|
+
title: "{{TITLE}}"
|
|
3741
|
+
type: "TIERED_PRACTICE"
|
|
3742
|
+
created_by: "Curriculum OS Builder"
|
|
3743
|
+
phase: "{{PHASE}}"
|
|
3744
|
+
deliverable: "P3-T11"
|
|
3745
|
+
version: "{{VERSION}}"
|
|
3746
|
+
date: "{{DATE}}"
|
|
3747
|
+
template_contract: "artifact-template-v1"
|
|
3748
|
+
template_required_sections:
|
|
3749
|
+
- "Computational Objective & Tier Matrix"
|
|
3750
|
+
- "Bronze Tier (Foundational Scaffolding)"
|
|
3751
|
+
- "Silver Tier (Independent Application)"
|
|
3752
|
+
- "Gold Tier (Enrichment & Optimization)"
|
|
3753
|
+
- "Automated Test Verification Matrix"
|
|
3754
|
+
- "Answer Key & Mentor Hints"
|
|
3755
|
+
---
|
|
3756
|
+
<!-- INJECT_BODY -->
|
|
3757
|
+
|
|
3758
|
+
# 3-TIER DIFFERENTIATED PRACTICE LAB: {{TITLE}}
|
|
3759
|
+
_Unit: {{UNIT_ID}} | Module: {{MODULE_ID}} | Lesson: {{LESSON_ID}} | Mode: Adaptive Lab_
|
|
3760
|
+
|
|
3761
|
+
## [REQUIRED] Computational Objective & Tier Matrix
|
|
3762
|
+
|
|
3763
|
+
| Tier Level | Cognitive Target (Bloom) | Scaffolding Ratio | Success Criteria |
|
|
3764
|
+
| :--- | :--- | :--- | :--- |
|
|
3765
|
+
| \u{1F949} **Bronze** | Remember / Understand | **70% Starter Code / 30% Fill-in** | Complete basic syntax & pass Baseline Unit Test. |
|
|
3766
|
+
| \u{1F948} **Silver** | Apply / Analyze | **30% Starter Code / 70% Implementation** | Implement business logic, edge-case handling & multi-component binding. |
|
|
3767
|
+
| \u{1F947} **Gold** | Evaluate / Create | **0% Code / Open Architecture** | Optimize performance, refactor with concurrency/state isolation & self-author tests. |
|
|
3768
|
+
|
|
3769
|
+
---
|
|
3770
|
+
|
|
3771
|
+
## [REQUIRED] \u{1F949} Bronze Tier: Foundational Scaffolding (Baseline for All)
|
|
3772
|
+
- **Target Audience:** All learners (mandatory milestone).
|
|
3773
|
+
- **Guiding Prompt:** {{BRONZE_PROMPT}}
|
|
3774
|
+
|
|
3775
|
+
### Starter Code & Fill-in Slots:
|
|
3776
|
+
\`\`\`{{CODE_LANGUAGE}}
|
|
3777
|
+
{{BRONZE_STARTER_CODE}}
|
|
3778
|
+
\`\`\`
|
|
3779
|
+
|
|
3780
|
+
- **Verification Check:** Run test \`testBronzeBaseline()\` \u2014 Expect status \`PASS\`.
|
|
3781
|
+
|
|
3782
|
+
---
|
|
3783
|
+
|
|
3784
|
+
## [REQUIRED] \u{1F948} Silver Tier: Independent Application (Target Mastery)
|
|
3785
|
+
- **Target Audience:** Learners who completed Bronze without mentor intervention.
|
|
3786
|
+
- **Guiding Prompt:** {{SILVER_PROMPT}}
|
|
3787
|
+
|
|
3788
|
+
### Specification & Requirements:
|
|
3789
|
+
{{SILVER_SPECIFICATIONS}}
|
|
3790
|
+
|
|
3791
|
+
### Implementation Target:
|
|
3792
|
+
\`\`\`{{CODE_LANGUAGE}}
|
|
3793
|
+
{{SILVER_IMPLEMENTATION_SLOT}}
|
|
3794
|
+
\`\`\`
|
|
3795
|
+
|
|
3796
|
+
- **Verification Check:** Run test \`testSilverLogicAndValidation()\` \u2014 Expect status \`PASS\`.
|
|
3797
|
+
|
|
3798
|
+
---
|
|
3799
|
+
|
|
3800
|
+
## [REQUIRED] \u{1F947} Gold Tier: Enrichment & Optimization (Open Extension)
|
|
3801
|
+
- **Target Audience:** Advanced learners finished ahead of schedule.
|
|
3802
|
+
- **Architectural Challenge:** {{GOLD_CHALLENGE}}
|
|
3803
|
+
|
|
3804
|
+
### Constraints & Invariants:
|
|
3805
|
+
{{GOLD_CONSTRAINTS}}
|
|
3806
|
+
|
|
3807
|
+
---
|
|
3808
|
+
|
|
3809
|
+
## [REQUIRED] Automated Test Verification Matrix & Mentor Hints
|
|
3810
|
+
\`\`\`{{CODE_LANGUAGE}}
|
|
3811
|
+
{{TEST_HARNESS_CODE}}
|
|
3812
|
+
\`\`\`
|
|
3813
|
+
|
|
3814
|
+
### Mentor Debugging Cheatsheet:
|
|
3815
|
+
{{MENTOR_DEBUG_CHEATSHEET}}
|
|
3816
|
+
`;
|
|
3817
|
+
var CHOICE_BOARD_TEMPLATE = `---
|
|
3818
|
+
id: "{{ID}}"
|
|
3819
|
+
title: "{{TITLE}}"
|
|
3820
|
+
type: "CHOICE_BOARD"
|
|
3821
|
+
created_by: "Curriculum OS Builder"
|
|
3822
|
+
phase: "{{PHASE}}"
|
|
3823
|
+
deliverable: "P3-T12"
|
|
3824
|
+
version: "{{VERSION}}"
|
|
3825
|
+
date: "{{DATE}}"
|
|
3826
|
+
template_contract: "artifact-template-v1"
|
|
3827
|
+
template_required_sections:
|
|
3828
|
+
- "Learning Goals & Rule of Choice"
|
|
3829
|
+
- "The 9-Square Activity Matrix"
|
|
3830
|
+
- "Activity Detailed Blueprints"
|
|
3831
|
+
- "Universal Assessment Rubric"
|
|
3832
|
+
---
|
|
3833
|
+
<!-- INJECT_BODY -->
|
|
3834
|
+
|
|
3835
|
+
# 9-SQUARE CHOICE BOARD: {{TITLE}}
|
|
3836
|
+
_Unit: {{UNIT_ID}} | Module: {{MODULE_ID}} | Target Competency: {{CORE_COMPETENCY}}_
|
|
3837
|
+
|
|
3838
|
+
## [REQUIRED] Learning Goals & Rule of Choice
|
|
3839
|
+
- **Core Concept Anchor:** {{CORE_CONCEPT_ANCHOR}}
|
|
3840
|
+
- **Rule of Choice (Tic-Tac-Toe / Point Model):**
|
|
3841
|
+
- *Option A (Tic-Tac-Toe):* Complete 3 activities in a row (Horizontal, Vertical, or Diagonal).
|
|
3842
|
+
- *Option B (Point Balance):* Reach $\\ge 100\\text{ pts}$ (Choose $\\ge 1$ Technical Lab + $\\ge 1$ Explanatory/Visual + $\\ge 1$ Creative Challenge).
|
|
3843
|
+
|
|
3844
|
+
---
|
|
3845
|
+
|
|
3846
|
+
## [REQUIRED] The 9-Square Activity Matrix
|
|
3847
|
+
|
|
3848
|
+
| Column 1: Analytical & Code | Column 2: Visual & Architecture | Column 3: Creative & Applied |
|
|
3849
|
+
| :--- | :--- | :--- |
|
|
3850
|
+
| **Square 1: {{SQ1_TITLE}} ({{SQ1_PTS}} pts)**<br>{{SQ1_DESC}} | **Square 2: {{SQ2_TITLE}} ({{SQ2_PTS}} pts)**<br>{{SQ2_DESC}} | **Square 3: {{SQ3_TITLE}} ({{SQ3_PTS}} pts)**<br>{{SQ3_DESC}} |
|
|
3851
|
+
| **Square 4: {{SQ4_TITLE}} ({{SQ4_PTS}} pts)**<br>{{SQ4_DESC}} | **\u2B50 Square 5: {{SQ5_TITLE}} ({{SQ5_PTS}} pts)**<br>{{SQ5_DESC}} | **Square 6: {{SQ6_TITLE}} ({{SQ6_PTS}} pts)**<br>{{SQ6_DESC}} |
|
|
3852
|
+
| **Square 7: {{SQ7_TITLE}} ({{SQ7_PTS}} pts)**<br>{{SQ7_DESC}} | **Square 8: {{SQ8_TITLE}} ({{SQ8_PTS}} pts)**<br>{{SQ8_DESC}} | **Square 9: {{SQ9_TITLE}} ({{SQ9_PTS}} pts)**<br>{{SQ9_DESC}} |
|
|
3853
|
+
|
|
3854
|
+
---
|
|
3855
|
+
|
|
3856
|
+
## [REQUIRED] Activity Detailed Blueprints
|
|
3857
|
+
|
|
3858
|
+
### Detail: Square 1 \u2014 {{SQ1_TITLE}}
|
|
3859
|
+
{{SQ1_BLUEPRINT}}
|
|
3860
|
+
|
|
3861
|
+
### Detail: Square 2 \u2014 {{SQ2_TITLE}}
|
|
3862
|
+
{{SQ2_BLUEPRINT}}
|
|
3863
|
+
|
|
3864
|
+
### Detail: \u2B50 Square 5 \u2014 {{SQ5_TITLE}} (Mandatory Center Option)
|
|
3865
|
+
{{SQ5_BLUEPRINT}}
|
|
3866
|
+
|
|
3867
|
+
---
|
|
3868
|
+
|
|
3869
|
+
## [REQUIRED] Universal Assessment Rubric
|
|
3870
|
+
| Criteria | Exemplary (4) | Proficient (3) | Developing (2) | Beginning (1) |
|
|
3871
|
+
| :--- | :--- | :--- | :--- | :--- |
|
|
3872
|
+
| **Technical Accuracy** | 100% executable, idiomatic syntax, zero race conditions. | Compiles and runs; minor non-critical styling issue. | Runs with partial errors or missing edge cases. | Does not compile or contains critical syntax bugs. |
|
|
3873
|
+
| **Conceptual Clarity** | Explains architectural trade-offs using rigorous engineering terms. | Explains the "how" accurately with basic rationale. | Description is vague or confuses terminology. | Cannot explain how code works. |
|
|
3874
|
+
| **Creativity & Autonomy** | Goes beyond specifications with thoughtful UX or performance optimizations. | Fulfills all specified criteria independently. | Needs significant scaffolding hints to complete. | Incomplete submission. |
|
|
3875
|
+
`;
|
|
3876
|
+
|
|
3877
|
+
// src/templates/scienceLabTemplate.ts
|
|
3878
|
+
var SCIENCE_LAB_TEMPLATE = `---
|
|
3879
|
+
id: "{{ID}}"
|
|
3880
|
+
title: "{{TITLE}}"
|
|
3881
|
+
type: "SCIENCE_LAB"
|
|
3882
|
+
created_by: "Curriculum OS Builder"
|
|
3883
|
+
phase: "{{PHASE}}"
|
|
3884
|
+
deliverable: "P3-T13"
|
|
3885
|
+
version: "{{VERSION}}"
|
|
3886
|
+
date: "{{DATE}}"
|
|
3887
|
+
template_contract: "artifact-template-v1"
|
|
3888
|
+
template_required_sections:
|
|
3889
|
+
- "Guiding Inquiry & Driving Question"
|
|
3890
|
+
- "Hypothesis & Experimental Design"
|
|
3891
|
+
- "Data Collection & Code Lab Protocol"
|
|
3892
|
+
- "CER Scientific Conclusion (Claim, Evidence, Reasoning)"
|
|
3893
|
+
- "Peer Review & Verification Protocol"
|
|
3894
|
+
---
|
|
3895
|
+
<!-- INJECT_BODY -->
|
|
3896
|
+
|
|
3897
|
+
# STEM / CODE INVESTIGATION LAB (CER): {{TITLE}}
|
|
3898
|
+
_Unit: {{UNIT_ID}} | Module: {{MODULE_ID}} | Domain: {{DOMAIN_NAME}}_
|
|
3899
|
+
|
|
3900
|
+
## [REQUIRED] Guiding Inquiry & Driving Question
|
|
3901
|
+
- **Real-World Driving Question:** {{DRIVING_QUESTION}}
|
|
3902
|
+
- **Engineering Phenomenon:** {{ENGINEERING_PHENOMENON}}
|
|
3903
|
+
|
|
3904
|
+
---
|
|
3905
|
+
|
|
3906
|
+
## [REQUIRED] Hypothesis & Experimental Design
|
|
3907
|
+
- **Student Hypothesis Template:**
|
|
3908
|
+
> *"If we [Action / Variable Manipulation], then [Predicted Outcome] because [Scientific / Engineering Rationale]."*
|
|
3909
|
+
|
|
3910
|
+
### Controlled Variables:
|
|
3911
|
+
- **Independent Variable (Manipulated):** {{INDEPENDENT_VARIABLE}}
|
|
3912
|
+
- **Dependent Variable (Measured):** {{DEPENDENT_VARIABLE}}
|
|
3913
|
+
- **Control Variables (Constant):** {{CONTROL_VARIABLES}}
|
|
3914
|
+
|
|
3915
|
+
---
|
|
3916
|
+
|
|
3917
|
+
## [REQUIRED] Data Collection & Code Lab Protocol
|
|
3918
|
+
|
|
3919
|
+
### Lab Setup & Instrumentation Code:
|
|
3920
|
+
\`\`\`{{CODE_LANGUAGE}}
|
|
3921
|
+
{{BENCHMARK_PROBE_CODE}}
|
|
3922
|
+
\`\`\`
|
|
3923
|
+
|
|
3924
|
+
### Data Collection Table:
|
|
3925
|
+
| Trial | Variable State | Memory (MB) | Latency (ms) | Error / Anomaly Count |
|
|
3926
|
+
| :---: | :--- | :---: | :---: | :---: |
|
|
3927
|
+
{{DATA_COLLECTION_ROWS}}
|
|
3928
|
+
|
|
3929
|
+
---
|
|
3930
|
+
|
|
3931
|
+
## [REQUIRED] CER Scientific Conclusion (Claim, Evidence, Reasoning)
|
|
3932
|
+
|
|
3933
|
+
### 1. \u{1F4CC} Claim (Kh\u1EB3ng \u0111\u1ECBnh):
|
|
3934
|
+
- *Direct answer to the driving question in 1 concise sentence:*
|
|
3935
|
+
\`\`\`text
|
|
3936
|
+
[State clear conclusion based on data]
|
|
3937
|
+
\`\`\`
|
|
3938
|
+
|
|
3939
|
+
### 2. \u{1F4CA} Evidence (B\u1EB1ng ch\u1EE9ng s\u1ED1 li\u1EC7u):
|
|
3940
|
+
- *Specific quantitative data points cited directly from the Data Collection Table:*
|
|
3941
|
+
\`\`\`text
|
|
3942
|
+
[Cite concrete numerical metrics and trials]
|
|
3943
|
+
\`\`\`
|
|
3944
|
+
|
|
3945
|
+
### 3. \u{1F9E0} Reasoning (L\u1EADp lu\u1EADn khoa h\u1ECDc):
|
|
3946
|
+
- *Connect the evidence back to the underlying technical principle:*
|
|
3947
|
+
\`\`\`text
|
|
3948
|
+
[Explain why the runtime/hardware behaved this way]
|
|
3949
|
+
\`\`\`
|
|
3950
|
+
|
|
3951
|
+
---
|
|
3952
|
+
|
|
3953
|
+
## [REQUIRED] Peer Review & Verification Protocol
|
|
3954
|
+
- **Reproducibility Test:** Exchange code probes with another group to verify if results match within $\\pm 10\\%$ tolerance.
|
|
3955
|
+
`;
|
|
3956
|
+
var TASK_CARDS_TEMPLATE = `---
|
|
3957
|
+
id: "{{ID}}"
|
|
3958
|
+
title: "{{TITLE}}"
|
|
3959
|
+
type: "TASK_CARDS"
|
|
3960
|
+
created_by: "Curriculum OS Builder"
|
|
3961
|
+
phase: "{{PHASE}}"
|
|
3962
|
+
deliverable: "P3-T14"
|
|
3963
|
+
version: "{{VERSION}}"
|
|
3964
|
+
date: "{{DATE}}"
|
|
3965
|
+
template_contract: "artifact-template-v1"
|
|
3966
|
+
template_required_sections:
|
|
3967
|
+
- "Deck Overview & Print Instructions"
|
|
3968
|
+
- "Task Cards 1 to 4 (Foundational Concepts)"
|
|
3969
|
+
- "Task Cards 5 to 8 (Code Diagnosis & Debugging)"
|
|
3970
|
+
- "Task Cards 9 to 12 (Application & Synthesis)"
|
|
3971
|
+
- "Teacher Answer Key & Scoring Matrix"
|
|
3972
|
+
---
|
|
3973
|
+
<!-- INJECT_BODY -->
|
|
3974
|
+
|
|
3975
|
+
# PRINTABLE TASK CARDS PACK: {{TITLE}}
|
|
3976
|
+
_Unit: {{UNIT_ID}} | Module: {{MODULE_ID}} | Total Cards: {{CARD_COUNT}} Cards_
|
|
3977
|
+
|
|
3978
|
+
## [REQUIRED] Deck Overview & Print Instructions
|
|
3979
|
+
- **Card Format:** 4 cards per page (A4 layout with cutting guidelines and QR code link).
|
|
3980
|
+
- **Target Skills:** Conceptual Understanding, Code Tracing, Bug Hunting, Architectural Reasoning.
|
|
3981
|
+
- **Scoring System:** Bronze Cards (1 pt), Silver Cards (2 pts), Gold Cards (3 pts).
|
|
3982
|
+
|
|
3983
|
+
---
|
|
3984
|
+
|
|
3985
|
+
## [REQUIRED] Set A: Foundational Concepts (Cards 1\u20134)
|
|
3986
|
+
{{TASK_CARDS_SET_A}}
|
|
3987
|
+
|
|
3988
|
+
---
|
|
3989
|
+
|
|
3990
|
+
## [REQUIRED] Set B: Code Diagnosis & Debugging (Cards 5\u20138)
|
|
3991
|
+
{{TASK_CARDS_SET_B}}
|
|
3992
|
+
|
|
3993
|
+
---
|
|
3994
|
+
|
|
3995
|
+
## [REQUIRED] Set C: Application & Synthesis (Cards 9\u201312)
|
|
3996
|
+
{{TASK_CARDS_SET_C}}
|
|
3997
|
+
|
|
3998
|
+
---
|
|
3999
|
+
|
|
4000
|
+
## [REQUIRED] Teacher Answer Key & Scoring Matrix
|
|
4001
|
+
| Card ID | Correct Answer / Solution Blueprint | Max Points |
|
|
4002
|
+
| :---: | :--- | :---: |
|
|
4003
|
+
{{TASK_CARDS_ANSWER_ROWS}}
|
|
4004
|
+
`;
|
|
4005
|
+
|
|
4006
|
+
// src/templates/stationRotationTemplate.ts
|
|
4007
|
+
var STATION_ROTATION_TEMPLATE = `---
|
|
4008
|
+
id: "{{ID}}"
|
|
4009
|
+
title: "{{TITLE}}"
|
|
4010
|
+
type: "STATION_ROTATION"
|
|
4011
|
+
created_by: "Curriculum OS Builder"
|
|
4012
|
+
phase: "{{PHASE}}"
|
|
4013
|
+
deliverable: "P3-T15"
|
|
4014
|
+
version: "{{VERSION}}"
|
|
4015
|
+
date: "{{DATE}}"
|
|
4016
|
+
template_contract: "artifact-template-v1"
|
|
4017
|
+
template_required_sections:
|
|
4018
|
+
- "Station Architecture & Timer Overview"
|
|
4019
|
+
- "Station 1: Teacher-Led Small Group (Deep Dive)"
|
|
4020
|
+
- "Station 2: Collaborative Hands-On Lab (Peer Pair)"
|
|
4021
|
+
- "Station 3: Independent Digital Practice (Async Code)"
|
|
4022
|
+
- "Station 4: Offline Modeling & Architecture (Whiteboard)"
|
|
4023
|
+
- "Station Recording Sheet & Rotation Bell Protocol"
|
|
4024
|
+
---
|
|
4025
|
+
<!-- INJECT_BODY -->
|
|
4026
|
+
|
|
4027
|
+
# STATION ROTATION LESSON PACK: {{TITLE}}
|
|
4028
|
+
_Unit: {{UNIT_ID}} | Module: {{MODULE_ID}} | Format: 4 Stations x 15 Mins_
|
|
4029
|
+
|
|
4030
|
+
## [REQUIRED] Station Architecture & Timer Overview
|
|
4031
|
+
- **Classroom Layout:** 4 designated physical zones with clear signage and materials.
|
|
4032
|
+
- **Rotation Time:** 15 minutes per station + 2 minutes clean transition buffer.
|
|
4033
|
+
- **Audience Grouping:** Heterogeneous groups of 4-6 students rotating simultaneously.
|
|
4034
|
+
|
|
4035
|
+
---
|
|
4036
|
+
|
|
4037
|
+
## [REQUIRED] Station 1: Teacher-Led Small Group (Guided Inquiry)
|
|
4038
|
+
- **Goal:** Direct coaching, conceptual check, and resolving misconceptions in real-time.
|
|
4039
|
+
- **Teacher Script & Inquiry Questions:**
|
|
4040
|
+
{{STATION_1_GUIDANCE}}
|
|
4041
|
+
|
|
4042
|
+
---
|
|
4043
|
+
|
|
4044
|
+
## [REQUIRED] Station 2: Collaborative Hands-On Lab (Pair Programming)
|
|
4045
|
+
- **Goal:** Students work in pairs (Driver / Navigator) to solve a 2-stage challenge.
|
|
4046
|
+
- **Task Materials:** {{STATION_2_MATERIALS}}
|
|
4047
|
+
- **Success Milestone:** {{STATION_2_MILESTONE}}
|
|
4048
|
+
|
|
4049
|
+
---
|
|
4050
|
+
|
|
4051
|
+
## [REQUIRED] Station 3: Independent Digital Practice (Self-Paced Code Lab)
|
|
4052
|
+
- **Goal:** Autonomy and individual mastery verification.
|
|
4053
|
+
- **Student Instructions:**
|
|
4054
|
+
{{STATION_3_INSTRUCTIONS}}
|
|
4055
|
+
|
|
4056
|
+
---
|
|
4057
|
+
|
|
4058
|
+
## [REQUIRED] Station 4: Offline Modeling & Architecture (No Screens)
|
|
4059
|
+
- **Goal:** Cognitive unloading and physical spatial reasoning.
|
|
4060
|
+
- **Materials:** Whiteboard markers, physical Task Cards deck, and laminated architecture templates.
|
|
4061
|
+
- **Task:** {{STATION_4_TASK}}
|
|
4062
|
+
|
|
4063
|
+
---
|
|
4064
|
+
|
|
4065
|
+
## [REQUIRED] Station Recording Sheet (Student Passport)
|
|
4066
|
+
| Station | Task Completed | Signature / Verification Stamp | 1 Key Insight Learned |
|
|
4067
|
+
| :---: | :--- | :--- | :--- |
|
|
4068
|
+
| **1 (Teacher)** | Debugging Probe Discussion | [Teacher Stamp] | |
|
|
4069
|
+
| **2 (Pair Lab)** | Stage 1 & 2 Test Suite | [Peer Signature] | |
|
|
4070
|
+
| **3 (Digital)** | Micro-Challenges Token | [Auto Token] | |
|
|
4071
|
+
| **4 (Offline)** | Flowchart Diagram Approved | [Mentor Stamp] | |
|
|
4072
|
+
`;
|
|
4073
|
+
var BELL_RINGER_TEMPLATE = `---
|
|
4074
|
+
id: "{{ID}}"
|
|
4075
|
+
title: "{{TITLE}}"
|
|
4076
|
+
type: "BELL_RINGER"
|
|
4077
|
+
created_by: "Curriculum OS Builder"
|
|
4078
|
+
phase: "{{PHASE}}"
|
|
4079
|
+
deliverable: "P3-T16"
|
|
4080
|
+
version: "{{VERSION}}"
|
|
4081
|
+
date: "{{DATE}}"
|
|
4082
|
+
template_contract: "artifact-template-v1"
|
|
4083
|
+
template_required_sections:
|
|
4084
|
+
- "Weekly Objective & Schedule"
|
|
4085
|
+
- "Monday: Mental Model Recall"
|
|
4086
|
+
- "Tuesday: Code Spot-Check"
|
|
4087
|
+
- "Wednesday: Bug Hunt & Fix"
|
|
4088
|
+
- "Thursday: Architecture Tracing"
|
|
4089
|
+
- "Friday: Creative Synthesis & Bridge"
|
|
4090
|
+
- "Answer Key & Scoring Guide"
|
|
4091
|
+
---
|
|
4092
|
+
<!-- INJECT_BODY -->
|
|
4093
|
+
|
|
4094
|
+
# WEEKLY BELL RINGERS (5-DAY WARM-UP PACK): {{TITLE}}
|
|
4095
|
+
_Unit: {{UNIT_ID}} | Module: {{MODULE_ID}} | Time: 3-5 Mins per Session_
|
|
4096
|
+
|
|
4097
|
+
## [REQUIRED] Weekly Objective & Schedule
|
|
4098
|
+
- **Weekly Core Theme:** {{WEEKLY_THEME}}
|
|
4099
|
+
- **Routine Protocol:** Display prompt on projector immediately as students enter.
|
|
4100
|
+
|
|
4101
|
+
---
|
|
4102
|
+
|
|
4103
|
+
## [REQUIRED] Day 1 (Monday): Mental Model Recall & Analogy
|
|
4104
|
+
{{DAY_1_PROMPT}}
|
|
4105
|
+
|
|
4106
|
+
---
|
|
4107
|
+
|
|
4108
|
+
## [REQUIRED] Day 2 (Tuesday): Rapid Code Tracing
|
|
4109
|
+
{{DAY_2_PROMPT}}
|
|
4110
|
+
|
|
4111
|
+
---
|
|
4112
|
+
|
|
4113
|
+
## [REQUIRED] Day 3 (Wednesday): Quick Bug Hunt (Spot the Defect)
|
|
4114
|
+
{{DAY_3_PROMPT}}
|
|
4115
|
+
|
|
4116
|
+
---
|
|
4117
|
+
|
|
4118
|
+
## [REQUIRED] Day 4 (Thursday): Visual Diagram Tracing
|
|
4119
|
+
{{DAY_4_PROMPT}}
|
|
4120
|
+
|
|
4121
|
+
---
|
|
4122
|
+
|
|
4123
|
+
## [REQUIRED] Day 5 (Friday): Creative Synthesis & Bridge Forward
|
|
4124
|
+
{{DAY_5_PROMPT}}
|
|
4125
|
+
|
|
4126
|
+
---
|
|
4127
|
+
|
|
4128
|
+
## [REQUIRED] Teacher Answer Key & Scoring Guide
|
|
4129
|
+
{{TEACHER_ANSWER_KEY}}
|
|
4130
|
+
`;
|
|
4131
|
+
var REVIEW_GAME_TEMPLATE = `---
|
|
4132
|
+
id: "{{ID}}"
|
|
4133
|
+
title: "{{TITLE}}"
|
|
4134
|
+
type: "REVIEW_GAME"
|
|
4135
|
+
created_by: "Curriculum OS Builder"
|
|
4136
|
+
phase: "{{PHASE}}"
|
|
4137
|
+
deliverable: "P3-T17"
|
|
4138
|
+
version: "{{VERSION}}"
|
|
4139
|
+
date: "{{DATE}}"
|
|
4140
|
+
template_contract: "artifact-template-v1"
|
|
4141
|
+
template_required_sections:
|
|
4142
|
+
- "Game Rules & Setup Guide"
|
|
4143
|
+
- "Round 1: Speed Round (100-200 Pts)"
|
|
4144
|
+
- "Round 2: Code Duel & Debugging (300-400 Pts)"
|
|
4145
|
+
- "Round 3: Final Boss Architecture Challenge (500 Pts)"
|
|
4146
|
+
- "Kahoot / Quizizz CSV Export Format"
|
|
4147
|
+
---
|
|
4148
|
+
<!-- INJECT_BODY -->
|
|
4149
|
+
|
|
4150
|
+
# INTERACTIVE REVIEW GAME (QUIZ SHOW PACK): {{TITLE}}
|
|
4151
|
+
_Unit: {{UNIT_ID}} | Module: {{MODULE_ID}} | Format: Live Classroom Quiz Show_
|
|
4152
|
+
|
|
4153
|
+
## [REQUIRED] Game Rules & Setup Guide
|
|
4154
|
+
- **Format:** 3 Rounds of progressive difficulty with team buzzers.
|
|
4155
|
+
- **Team Size:** 3-5 students per squad.
|
|
4156
|
+
|
|
4157
|
+
---
|
|
4158
|
+
|
|
4159
|
+
## [REQUIRED] Round 1: Rapid-Fire Speed Round (100\u2013200 Points)
|
|
4160
|
+
{{ROUND_1_QUESTIONS}}
|
|
4161
|
+
|
|
4162
|
+
---
|
|
4163
|
+
|
|
4164
|
+
## [REQUIRED] Round 2: Code Duel & Debugging (300\u2013400 Points)
|
|
4165
|
+
{{ROUND_2_CHALLENGES}}
|
|
4166
|
+
|
|
4167
|
+
---
|
|
4168
|
+
|
|
4169
|
+
## [REQUIRED] Round 3: Final Boss Architecture Challenge (500 Points)
|
|
4170
|
+
{{ROUND_3_BOSS_CHALLENGE}}
|
|
4171
|
+
|
|
4172
|
+
---
|
|
4173
|
+
|
|
4174
|
+
## [REQUIRED] Kahoot / Quizizz CSV Export Format
|
|
4175
|
+
\`\`\`csv
|
|
4176
|
+
{{KAHOOT_CSV_CONTENT}}
|
|
4177
|
+
\`\`\`
|
|
4178
|
+
`;
|
|
4179
|
+
var GRAPHIC_ORGANIZER_TEMPLATE = `---
|
|
4180
|
+
id: "{{ID}}"
|
|
4181
|
+
title: "{{TITLE}}"
|
|
4182
|
+
type: "GRAPHIC_ORGANIZER"
|
|
4183
|
+
created_by: "Curriculum OS Builder"
|
|
4184
|
+
phase: "{{PHASE}}"
|
|
4185
|
+
deliverable: "P3-T18"
|
|
4186
|
+
version: "{{VERSION}}"
|
|
4187
|
+
date: "{{DATE}}"
|
|
4188
|
+
template_contract: "artifact-template-v1"
|
|
4189
|
+
template_required_sections:
|
|
4190
|
+
- "Visual Paradigm Overview"
|
|
4191
|
+
- "Organizer 1: Architectural Data Flow (Mermaid Flowchart)"
|
|
4192
|
+
- "Organizer 2: Comparative Analysis (Mermaid / Markdown Venn)"
|
|
4193
|
+
- "Organizer 3: State Machine & Lifecycle (Mermaid StateDiagram)"
|
|
4194
|
+
- "Student Fill-in Worksheet Format"
|
|
4195
|
+
---
|
|
4196
|
+
<!-- INJECT_BODY -->
|
|
4197
|
+
|
|
4198
|
+
# VISUAL GRAPHIC ORGANIZERS: {{TITLE}}
|
|
4199
|
+
_Unit: {{UNIT_ID}} | Module: {{MODULE_ID}} | Format: Mermaid Diagrams + Printable Handouts_
|
|
4200
|
+
|
|
4201
|
+
## [REQUIRED] Visual Paradigm Overview
|
|
4202
|
+
- **Cognitive Purpose:** Unload mental processing burden through spatial diagramming.
|
|
4203
|
+
|
|
4204
|
+
---
|
|
4205
|
+
|
|
4206
|
+
## [REQUIRED] Organizer 1: Architectural Data Flow (Mermaid Flowchart)
|
|
4207
|
+
\`\`\`mermaid
|
|
4208
|
+
{{MERMAID_FLOWCHART}}
|
|
4209
|
+
\`\`\`
|
|
4210
|
+
|
|
4211
|
+
---
|
|
4212
|
+
|
|
4213
|
+
## [REQUIRED] Organizer 2: Comparative Analysis (Venn Diagram / Matrix)
|
|
4214
|
+
\`\`\`mermaid
|
|
4215
|
+
{{MERMAID_VENN_OR_MATRIX}}
|
|
4216
|
+
\`\`\`
|
|
4217
|
+
|
|
4218
|
+
---
|
|
4219
|
+
|
|
4220
|
+
## [REQUIRED] Organizer 3: State Machine & Lifecycle (State Diagram)
|
|
4221
|
+
\`\`\`mermaid
|
|
4222
|
+
{{MERMAID_STATE_DIAGRAM}}
|
|
4223
|
+
\`\`\`
|
|
4224
|
+
|
|
4225
|
+
---
|
|
4226
|
+
|
|
4227
|
+
## [REQUIRED] Student Fill-in Worksheet Format (Offline Handout)
|
|
4228
|
+
{{OFFLINE_WORKSHEET_FORMAT}}
|
|
4229
|
+
`;
|
|
4230
|
+
|
|
4231
|
+
// src/templates/slidePresets.ts
|
|
4232
|
+
var SLIDE_LAYOUT_PRESETS = [
|
|
4233
|
+
{
|
|
4234
|
+
id: "title-hero",
|
|
4235
|
+
name: "B\xECa & Gi\u1EDBi thi\u1EC7u (Title Cover)",
|
|
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.",
|
|
4238
|
+
layout: {
|
|
4239
|
+
boxes: [
|
|
4240
|
+
{
|
|
4241
|
+
id: "title",
|
|
4242
|
+
target: "h1",
|
|
4243
|
+
pos: [100, 180, 1080, 140],
|
|
4244
|
+
fontSize: "3rem",
|
|
4245
|
+
textAlign: "center"
|
|
4246
|
+
},
|
|
4247
|
+
{
|
|
4248
|
+
id: "subtitle",
|
|
4249
|
+
target: "h3",
|
|
4250
|
+
pos: [100, 350, 1080, 70],
|
|
4251
|
+
fontSize: "1.5rem",
|
|
4252
|
+
textAlign: "center"
|
|
4253
|
+
},
|
|
4254
|
+
{
|
|
4255
|
+
id: "speaker-meta",
|
|
4256
|
+
target: "p",
|
|
4257
|
+
pos: [100, 460, 1080, 80],
|
|
4258
|
+
fontSize: "1.1rem",
|
|
4259
|
+
textAlign: "center"
|
|
4260
|
+
}
|
|
4261
|
+
]
|
|
4262
|
+
},
|
|
4263
|
+
markdownSnippet: `<!-- layout:
|
|
4264
|
+
boxes:
|
|
4265
|
+
- id: title
|
|
4266
|
+
target: h1
|
|
4267
|
+
pos: [100, 180, 1080, 140]
|
|
4268
|
+
fontSize: 3rem
|
|
4269
|
+
textAlign: center
|
|
4270
|
+
- id: subtitle
|
|
4271
|
+
target: h3
|
|
4272
|
+
pos: [100, 350, 1080, 70]
|
|
4273
|
+
fontSize: 1.5rem
|
|
4274
|
+
textAlign: center
|
|
4275
|
+
- id: speaker-meta
|
|
4276
|
+
target: p
|
|
4277
|
+
pos: [100, 460, 1080, 80]
|
|
4278
|
+
fontSize: 1.1rem
|
|
4279
|
+
textAlign: center
|
|
4280
|
+
-->
|
|
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
|
|
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
|
|
4286
|
+
|
|
4287
|
+
<!--
|
|
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.
|
|
4291
|
+
-->`
|
|
4292
|
+
},
|
|
4293
|
+
{
|
|
4294
|
+
id: "two-column-split",
|
|
4295
|
+
name: "So S\xE1nh 2 C\u1ED9t (2-Column Comparison)",
|
|
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.",
|
|
4298
|
+
layout: {
|
|
4299
|
+
boxes: [
|
|
4300
|
+
{
|
|
4301
|
+
id: "heading",
|
|
4302
|
+
target: "h2",
|
|
4303
|
+
pos: [80, 50, 1120, 70],
|
|
4304
|
+
fontSize: "2rem"
|
|
4305
|
+
},
|
|
4306
|
+
{
|
|
4307
|
+
id: "col-left",
|
|
4308
|
+
target: ".columns-2 > div:first-child",
|
|
4309
|
+
pos: [80, 150, 530, 510]
|
|
4310
|
+
},
|
|
4311
|
+
{
|
|
4312
|
+
id: "col-right",
|
|
4313
|
+
target: ".columns-2 > div:last-child",
|
|
4314
|
+
pos: [670, 150, 530, 510]
|
|
4315
|
+
}
|
|
4316
|
+
]
|
|
4317
|
+
},
|
|
4318
|
+
markdownSnippet: `<!-- layout:
|
|
4319
|
+
boxes:
|
|
4320
|
+
- id: heading
|
|
4321
|
+
target: h2
|
|
4322
|
+
pos: [80, 50, 1120, 70]
|
|
4323
|
+
fontSize: 2rem
|
|
4324
|
+
- id: col-left
|
|
4325
|
+
target: '.columns-2 > div:first-child'
|
|
4326
|
+
pos: [80, 150, 530, 510]
|
|
4327
|
+
- id: col-right
|
|
4328
|
+
target: '.columns-2 > div:last-child'
|
|
4329
|
+
pos: [670, 150, 530, 510]
|
|
4330
|
+
-->
|
|
4331
|
+
|
|
4332
|
+
## \u2696\uFE0F So S\xE1nh Kh\xE1i Ni\u1EC7m & Gi\u1EA3i Ph\xE1p
|
|
4333
|
+
|
|
4334
|
+
<div class="columns-2">
|
|
4335
|
+
<div>
|
|
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
|
|
4341
|
+
|
|
4342
|
+
</div>
|
|
4343
|
+
<div>
|
|
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
|
|
4349
|
+
|
|
4350
|
+
</div>
|
|
4351
|
+
</div>
|
|
4352
|
+
|
|
4353
|
+
<!--
|
|
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.
|
|
4357
|
+
-->`
|
|
4358
|
+
},
|
|
4359
|
+
{
|
|
4360
|
+
id: "code-explainer",
|
|
4361
|
+
name: "Gi\u1EA3i Th\xEDch Code (Code Walkthrough)",
|
|
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.",
|
|
4364
|
+
layout: {
|
|
4365
|
+
boxes: [
|
|
4366
|
+
{
|
|
4367
|
+
id: "heading",
|
|
4368
|
+
target: "h2",
|
|
4369
|
+
pos: [80, 45, 1120, 65],
|
|
4370
|
+
fontSize: "1.9rem"
|
|
4371
|
+
},
|
|
4372
|
+
{
|
|
4373
|
+
id: "code-box",
|
|
4374
|
+
target: ".columns-2 > div:first-child",
|
|
4375
|
+
pos: [80, 135, 630, 535]
|
|
4376
|
+
},
|
|
4377
|
+
{
|
|
4378
|
+
id: "notes-box",
|
|
4379
|
+
target: ".columns-2 > div:last-child",
|
|
4380
|
+
pos: [740, 135, 460, 535]
|
|
4381
|
+
}
|
|
4382
|
+
]
|
|
4383
|
+
},
|
|
4384
|
+
markdownSnippet: `<!-- layout:
|
|
4385
|
+
boxes:
|
|
4386
|
+
- id: heading
|
|
4387
|
+
target: h2
|
|
4388
|
+
pos: [80, 45, 1120, 65]
|
|
4389
|
+
fontSize: 1.9rem
|
|
4390
|
+
- id: code-box
|
|
4391
|
+
target: '.columns-2 > div:first-child'
|
|
4392
|
+
pos: [80, 135, 630, 535]
|
|
4393
|
+
- id: notes-box
|
|
4394
|
+
target: '.columns-2 > div:last-child'
|
|
4395
|
+
pos: [740, 135, 460, 535]
|
|
4396
|
+
-->
|
|
4397
|
+
|
|
4398
|
+
## \u{1F4BB} Ph\xE2n T\xEDch C\u1EA5u Tr\xFAc M\xE3 Ngu\u1ED3n
|
|
4399
|
+
|
|
4400
|
+
<div class="columns-2">
|
|
4401
|
+
<div>
|
|
4402
|
+
|
|
4403
|
+
\`\`\`ts
|
|
4404
|
+
// Kh\u1EDFi t\u1EA1o quy tr\xECnh ki\u1EC3m tra d\u1EEF li\u1EC7u
|
|
4405
|
+
export async function processPayment(order: Order) {
|
|
4406
|
+
const isValid = await validateOrder(order);
|
|
4407
|
+
if (!isValid) throw new Error("Invalid");
|
|
4408
|
+
|
|
4409
|
+
const receipt = await chargeCard(order);
|
|
4410
|
+
return sendConfirmation(receipt);
|
|
4411
|
+
}
|
|
4412
|
+
\`\`\`
|
|
4413
|
+
|
|
4414
|
+
</div>
|
|
4415
|
+
<div>
|
|
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.
|
|
4421
|
+
|
|
4422
|
+
</div>
|
|
4423
|
+
</div>
|
|
4424
|
+
|
|
4425
|
+
<!--
|
|
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.
|
|
4429
|
+
-->`
|
|
4430
|
+
},
|
|
4431
|
+
{
|
|
4432
|
+
id: "metrics-3-card",
|
|
4433
|
+
name: "L\u01B0\u1EDBi 3 Ch\u1EC9 S\u1ED1 (3-Metric Dashboard)",
|
|
4434
|
+
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
|
+
layout: {
|
|
4437
|
+
boxes: [
|
|
4438
|
+
{
|
|
4439
|
+
id: "heading",
|
|
4440
|
+
target: "h2",
|
|
4441
|
+
pos: [80, 50, 1120, 70],
|
|
4442
|
+
fontSize: "2rem",
|
|
4443
|
+
textAlign: "center"
|
|
4444
|
+
},
|
|
4445
|
+
{
|
|
4446
|
+
id: "metric-1",
|
|
4447
|
+
target: ".columns-3 > div:nth-child(1)",
|
|
4448
|
+
pos: [80, 165, 340, 485]
|
|
4449
|
+
},
|
|
4450
|
+
{
|
|
4451
|
+
id: "metric-2",
|
|
4452
|
+
target: ".columns-3 > div:nth-child(2)",
|
|
4453
|
+
pos: [470, 165, 340, 485]
|
|
4454
|
+
},
|
|
4455
|
+
{
|
|
4456
|
+
id: "metric-3",
|
|
4457
|
+
target: ".columns-3 > div:nth-child(3)",
|
|
4458
|
+
pos: [860, 165, 340, 485]
|
|
4459
|
+
}
|
|
4460
|
+
]
|
|
4461
|
+
},
|
|
4462
|
+
markdownSnippet: `<!-- layout:
|
|
4463
|
+
boxes:
|
|
4464
|
+
- id: heading
|
|
4465
|
+
target: h2
|
|
4466
|
+
pos: [80, 50, 1120, 70]
|
|
4467
|
+
fontSize: 2rem
|
|
4468
|
+
textAlign: center
|
|
4469
|
+
- id: metric-1
|
|
4470
|
+
target: '.columns-3 > div:nth-child(1)'
|
|
4471
|
+
pos: [80, 165, 340, 485]
|
|
4472
|
+
- id: metric-2
|
|
4473
|
+
target: '.columns-3 > div:nth-child(2)'
|
|
4474
|
+
pos: [470, 165, 340, 485]
|
|
4475
|
+
- id: metric-3
|
|
4476
|
+
target: '.columns-3 > div:nth-child(3)'
|
|
4477
|
+
pos: [860, 165, 340, 485]
|
|
4478
|
+
-->
|
|
4479
|
+
|
|
4480
|
+
## \u{1F4CA} 3 Ch\u1EC9 S\u1ED1 Th\xE0nh C\xF4ng C\u1EE7a D\u1EF1 \xC1n
|
|
4481
|
+
|
|
4482
|
+
<div class="columns-3">
|
|
4483
|
+
<div>
|
|
4484
|
+
|
|
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.
|
|
4488
|
+
|
|
4489
|
+
</div>
|
|
4490
|
+
<div>
|
|
4491
|
+
|
|
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.
|
|
4495
|
+
|
|
4496
|
+
</div>
|
|
4497
|
+
<div>
|
|
4498
|
+
|
|
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.
|
|
4502
|
+
|
|
4503
|
+
</div>
|
|
4504
|
+
</div>
|
|
4505
|
+
|
|
4506
|
+
<!--
|
|
4507
|
+
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.
|
|
4510
|
+
-->`
|
|
4511
|
+
},
|
|
4512
|
+
{
|
|
4513
|
+
id: "process-flow",
|
|
4514
|
+
name: "S\u01A1 \u0110\u1ED3 Quy Tr\xECnh (Process / Flowchart)",
|
|
4515
|
+
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
|
+
layout: {
|
|
4518
|
+
boxes: [
|
|
4519
|
+
{
|
|
4520
|
+
id: "heading",
|
|
4521
|
+
target: "h2",
|
|
4522
|
+
pos: [80, 45, 1120, 65],
|
|
4523
|
+
fontSize: "1.9rem"
|
|
4524
|
+
},
|
|
4525
|
+
{
|
|
4526
|
+
id: "diagram-box",
|
|
4527
|
+
target: "pre.mermaid, .mermaid",
|
|
4528
|
+
pos: [80, 130, 1120, 310]
|
|
4529
|
+
},
|
|
4530
|
+
{
|
|
4531
|
+
id: "summary-box",
|
|
4532
|
+
target: "ul, p",
|
|
4533
|
+
pos: [80, 465, 1120, 205]
|
|
4534
|
+
}
|
|
4535
|
+
]
|
|
4536
|
+
},
|
|
4537
|
+
markdownSnippet: `<!-- layout:
|
|
4538
|
+
boxes:
|
|
4539
|
+
- id: heading
|
|
4540
|
+
target: h2
|
|
4541
|
+
pos: [80, 45, 1120, 65]
|
|
4542
|
+
fontSize: 1.9rem
|
|
4543
|
+
- id: diagram-box
|
|
4544
|
+
target: 'pre.mermaid, .mermaid'
|
|
4545
|
+
pos: [80, 130, 1120, 310]
|
|
4546
|
+
- id: summary-box
|
|
4547
|
+
target: 'ul, p'
|
|
4548
|
+
pos: [80, 465, 1120, 205]
|
|
4549
|
+
-->
|
|
4550
|
+
|
|
4551
|
+
## \u{1F504} Ki\u1EBFn Tr\xFAc Lu\u1ED3ng D\u1EEF Li\u1EC7u 4 B\u01B0\u1EDBc
|
|
4552
|
+
|
|
4553
|
+
\`\`\`mermaid
|
|
4554
|
+
graph LR
|
|
4555
|
+
A[1. Client Request] --> B[2. API Gateway]
|
|
4556
|
+
B --> C[3. Auth Service]
|
|
4557
|
+
C --> D[4. Database Cluster]
|
|
4558
|
+
style A fill:#0284c7,stroke:#38bdf8,stroke-width:2px,color:#fff
|
|
4559
|
+
style B fill:#1e293b,stroke:#64748b,stroke-width:2px,color:#fff
|
|
4560
|
+
style C fill:#059669,stroke:#34d399,stroke-width:2px,color:#fff
|
|
4561
|
+
style D fill:#7c3aed,stroke:#a78bfa,stroke-width:2px,color:#fff
|
|
4562
|
+
\`\`\`
|
|
4563
|
+
|
|
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.
|
|
4566
|
+
|
|
4567
|
+
<!--
|
|
4568
|
+
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?"
|
|
4571
|
+
-->`
|
|
4572
|
+
},
|
|
4573
|
+
{
|
|
4574
|
+
id: "quote-highlight",
|
|
4575
|
+
name: "Th\xF4ng \u0110i\u1EC7p Then Ch\u1ED1t (Quote / Highlight)",
|
|
4576
|
+
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
|
+
layout: {
|
|
4579
|
+
boxes: [
|
|
4580
|
+
{
|
|
4581
|
+
id: "heading",
|
|
4582
|
+
target: "h2",
|
|
4583
|
+
pos: [100, 100, 1080, 80],
|
|
4584
|
+
fontSize: "2.2rem",
|
|
4585
|
+
textAlign: "center"
|
|
4586
|
+
},
|
|
4587
|
+
{
|
|
4588
|
+
id: "quote-box",
|
|
4589
|
+
target: "blockquote",
|
|
4590
|
+
pos: [140, 230, 1e3, 360],
|
|
4591
|
+
fontSize: "1.4rem"
|
|
4592
|
+
}
|
|
4593
|
+
]
|
|
4594
|
+
},
|
|
4595
|
+
markdownSnippet: `<!-- layout:
|
|
4596
|
+
boxes:
|
|
4597
|
+
- id: heading
|
|
4598
|
+
target: h2
|
|
4599
|
+
pos: [100, 100, 1080, 80]
|
|
4600
|
+
fontSize: 2.2rem
|
|
4601
|
+
textAlign: center
|
|
4602
|
+
- id: quote-box
|
|
4603
|
+
target: blockquote
|
|
4604
|
+
pos: [140, 230, 1000, 360]
|
|
4605
|
+
fontSize: 1.4rem
|
|
4606
|
+
-->
|
|
4607
|
+
|
|
4608
|
+
## \u{1F4A1} Nguy\xEAn T\u1EAFc Thi\u1EBFt K\u1EBF C\u1ED1t L\xF5i
|
|
4609
|
+
|
|
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
|
+
>
|
|
4612
|
+
> \u2014 **Edsger W. Dijkstra**
|
|
4613
|
+
|
|
4614
|
+
<!--
|
|
4615
|
+
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.
|
|
4618
|
+
-->`
|
|
4619
|
+
},
|
|
4620
|
+
{
|
|
4621
|
+
id: "quiz-checkpoint",
|
|
4622
|
+
name: "Tr\u1EAFc Nghi\u1EC7m T\u01B0\u01A1ng T\xE1c (Quiz Checkpoint)",
|
|
4623
|
+
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
|
+
layout: {
|
|
4626
|
+
boxes: [
|
|
4627
|
+
{
|
|
4628
|
+
id: "heading",
|
|
4629
|
+
target: "h2",
|
|
4630
|
+
pos: [80, 45, 1120, 65],
|
|
4631
|
+
fontSize: "1.9rem"
|
|
4632
|
+
},
|
|
4633
|
+
{
|
|
4634
|
+
id: "question-callout",
|
|
4635
|
+
target: "blockquote",
|
|
4636
|
+
pos: [80, 130, 1120, 110],
|
|
4637
|
+
fontSize: "1.2rem"
|
|
4638
|
+
},
|
|
4639
|
+
{
|
|
4640
|
+
id: "options-list",
|
|
4641
|
+
target: "ul",
|
|
4642
|
+
pos: [80, 260, 1120, 390],
|
|
4643
|
+
fontSize: "1.15rem"
|
|
4644
|
+
}
|
|
4645
|
+
]
|
|
4646
|
+
},
|
|
4647
|
+
markdownSnippet: `<!-- layout:
|
|
4648
|
+
boxes:
|
|
4649
|
+
- id: heading
|
|
4650
|
+
target: h2
|
|
4651
|
+
pos: [80, 45, 1120, 65]
|
|
4652
|
+
fontSize: 1.9rem
|
|
4653
|
+
- id: question-callout
|
|
4654
|
+
target: blockquote
|
|
4655
|
+
pos: [80, 130, 1120, 110]
|
|
4656
|
+
fontSize: 1.2rem
|
|
4657
|
+
- id: options-list
|
|
4658
|
+
target: ul
|
|
4659
|
+
pos: [80, 260, 1120, 390]
|
|
4660
|
+
fontSize: 1.15rem
|
|
4661
|
+
-->
|
|
4662
|
+
|
|
4663
|
+
## \u{1F3AF} Ki\u1EC3m Tra Nhanh: B\u1EA1n \u0110\xE3 Hi\u1EC3u \u0110\xFAng?
|
|
4664
|
+
|
|
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
|
+
|
|
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
|
|
4671
|
+
|
|
4672
|
+
<!--
|
|
4673
|
+
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.
|
|
4677
|
+
-->`
|
|
4678
|
+
},
|
|
4679
|
+
{
|
|
4680
|
+
id: "tiered-practice-3cards",
|
|
4681
|
+
name: "Th\u1EF1c H\xE0nh Ph\xE2n H\xF3a (Tiered Practice)",
|
|
4682
|
+
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
|
+
layout: {
|
|
4685
|
+
boxes: [
|
|
4686
|
+
{
|
|
4687
|
+
id: "heading",
|
|
4688
|
+
target: "h2",
|
|
4689
|
+
pos: [80, 45, 1120, 65],
|
|
4690
|
+
fontSize: "1.9rem"
|
|
4691
|
+
},
|
|
4692
|
+
{
|
|
4693
|
+
id: "tier-bronze",
|
|
4694
|
+
target: ".columns-3 > div:nth-child(1)",
|
|
4695
|
+
pos: [80, 140, 350, 520]
|
|
4696
|
+
},
|
|
4697
|
+
{
|
|
4698
|
+
id: "tier-silver",
|
|
4699
|
+
target: ".columns-3 > div:nth-child(2)",
|
|
4700
|
+
pos: [465, 140, 350, 520]
|
|
4701
|
+
},
|
|
4702
|
+
{
|
|
4703
|
+
id: "tier-gold",
|
|
4704
|
+
target: ".columns-3 > div:nth-child(3)",
|
|
4705
|
+
pos: [850, 140, 350, 520]
|
|
4706
|
+
}
|
|
4707
|
+
]
|
|
4708
|
+
},
|
|
4709
|
+
markdownSnippet: `<!-- layout:
|
|
4710
|
+
boxes:
|
|
4711
|
+
- id: heading
|
|
4712
|
+
target: h2
|
|
4713
|
+
pos: [80, 45, 1120, 65]
|
|
4714
|
+
fontSize: 1.9rem
|
|
4715
|
+
- id: tier-bronze
|
|
4716
|
+
target: '.columns-3 > div:nth-child(1)'
|
|
4717
|
+
pos: [80, 140, 350, 520]
|
|
4718
|
+
- id: tier-silver
|
|
4719
|
+
target: '.columns-3 > div:nth-child(2)'
|
|
4720
|
+
pos: [465, 140, 350, 520]
|
|
4721
|
+
- id: tier-gold
|
|
4722
|
+
target: '.columns-3 > div:nth-child(3)'
|
|
4723
|
+
pos: [850, 140, 350, 520]
|
|
4724
|
+
-->
|
|
4725
|
+
|
|
4726
|
+
## \u{1F6E0}\uFE0F Th\u1EED Th\xE1ch Ph\xE2n H\xF3a 3 C\u1EA5p \u0110\u1ED9 (Tiered Lab)
|
|
4727
|
+
|
|
4728
|
+
<div class="columns-3">
|
|
4729
|
+
<div>
|
|
4730
|
+
|
|
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*
|
|
4735
|
+
|
|
4736
|
+
</div>
|
|
4737
|
+
<div>
|
|
4738
|
+
|
|
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*
|
|
4743
|
+
|
|
4744
|
+
</div>
|
|
4745
|
+
<div>
|
|
4746
|
+
|
|
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*
|
|
4751
|
+
|
|
4752
|
+
</div>
|
|
4753
|
+
</div>
|
|
4754
|
+
|
|
4755
|
+
<!--
|
|
4756
|
+
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.
|
|
4759
|
+
-->`
|
|
4760
|
+
},
|
|
4761
|
+
{
|
|
4762
|
+
id: "agenda-timeline",
|
|
4763
|
+
name: "L\u1ED9 Tr\xECnh Bu\u1ED5i H\u1ECDc (Agenda Table)",
|
|
4764
|
+
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
|
+
layout: {
|
|
4767
|
+
boxes: [
|
|
4768
|
+
{
|
|
4769
|
+
id: "heading",
|
|
4770
|
+
target: "h2",
|
|
4771
|
+
pos: [80, 45, 1120, 65],
|
|
4772
|
+
fontSize: "1.9rem"
|
|
4773
|
+
},
|
|
4774
|
+
{
|
|
4775
|
+
id: "table-box",
|
|
4776
|
+
target: "table",
|
|
4777
|
+
pos: [80, 140, 1120, 520]
|
|
4778
|
+
}
|
|
4779
|
+
]
|
|
4780
|
+
},
|
|
4781
|
+
markdownSnippet: `<!-- layout:
|
|
4782
|
+
boxes:
|
|
4783
|
+
- id: heading
|
|
4784
|
+
target: h2
|
|
4785
|
+
pos: [80, 45, 1120, 65]
|
|
4786
|
+
fontSize: 1.9rem
|
|
4787
|
+
- id: table-box
|
|
4788
|
+
target: table
|
|
4789
|
+
pos: [80, 140, 1120, 520]
|
|
4790
|
+
-->
|
|
4791
|
+
|
|
4792
|
+
## \u{1F5FA}\uFE0F L\u1ED9 Tr\xECnh Ho\u1EA1t \u0110\u1ED9ng & M\u1EE5c Ti\xEAu
|
|
4793
|
+
|
|
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
|
+
|:---:|---|---|---|
|
|
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 |
|
|
4800
|
+
|
|
4801
|
+
<!--
|
|
4802
|
+
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
|
+
-->`
|
|
4805
|
+
},
|
|
4806
|
+
{
|
|
4807
|
+
id: "takeaways-summary",
|
|
4808
|
+
name: "T\u1ED5ng K\u1EBFt C\u1ED1t L\xF5i (Key Takeaways)",
|
|
4809
|
+
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
|
+
layout: {
|
|
4812
|
+
boxes: [
|
|
4813
|
+
{
|
|
4814
|
+
id: "heading",
|
|
4815
|
+
target: "h2",
|
|
4816
|
+
pos: [80, 50, 1120, 70],
|
|
4817
|
+
fontSize: "2rem"
|
|
4818
|
+
},
|
|
4819
|
+
{
|
|
4820
|
+
id: "list-box",
|
|
4821
|
+
target: "ol",
|
|
4822
|
+
pos: [80, 150, 1120, 340],
|
|
4823
|
+
fontSize: "1.25rem"
|
|
4824
|
+
},
|
|
4825
|
+
{
|
|
4826
|
+
id: "callout-next",
|
|
4827
|
+
target: "blockquote",
|
|
4828
|
+
pos: [80, 520, 1120, 140],
|
|
4829
|
+
fontSize: "1.1rem"
|
|
4830
|
+
}
|
|
4831
|
+
]
|
|
4832
|
+
},
|
|
4833
|
+
markdownSnippet: `<!-- layout:
|
|
4834
|
+
boxes:
|
|
4835
|
+
- id: heading
|
|
4836
|
+
target: h2
|
|
4837
|
+
pos: [80, 50, 1120, 70]
|
|
4838
|
+
fontSize: 2rem
|
|
4839
|
+
- id: list-box
|
|
4840
|
+
target: ol
|
|
4841
|
+
pos: [80, 150, 1120, 340]
|
|
4842
|
+
fontSize: 1.25rem
|
|
4843
|
+
- id: callout-next
|
|
4844
|
+
target: blockquote
|
|
4845
|
+
pos: [80, 520, 1120, 140]
|
|
4846
|
+
fontSize: 1.1rem
|
|
4847
|
+
-->
|
|
4848
|
+
|
|
4849
|
+
## \u{1F3C1} 3 \u0110i\u1EC1u C\u1EA7n Nh\u1EDB Sau Bu\u1ED5i H\u1ECDc
|
|
4850
|
+
|
|
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.
|
|
4854
|
+
|
|
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
|
+
|
|
4857
|
+
<!--
|
|
4858
|
+
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.
|
|
4861
|
+
-->`
|
|
4862
|
+
}
|
|
4863
|
+
];
|
|
4864
|
+
function getSlideLayoutPresetById(id) {
|
|
4865
|
+
return SLIDE_LAYOUT_PRESETS.find((p) => p.id === id);
|
|
4866
|
+
}
|
|
4867
|
+
function getSlideLayoutPresetsByCategory(category) {
|
|
4868
|
+
return SLIDE_LAYOUT_PRESETS.filter((p) => p.category === category);
|
|
4869
|
+
}
|
|
4870
|
+
|
|
3197
4871
|
// src/ai/prompts/lessonMasterPrompt.ts
|
|
3198
4872
|
function buildLessonMasterPrompt(input) {
|
|
3199
4873
|
const { milestone, language, topic, targetAudience, contextContinuity, standardsContext } = input;
|
|
@@ -10183,21 +11857,27 @@ footer: "Curriculum OS \u2022 ${lessonCode} (${pedagogyLabel})"
|
|
|
10183
11857
|
|
|
10184
11858
|
MANDATORY 12-14 SLIDE MICRO-CYCLE STRUCTURE (Delimited by '---'):
|
|
10185
11859
|
1. **Slide 1 [Title & Mission]:** ${lessonCode}: ${lessonTitle} + Real-world inquiry hook
|
|
10186
|
-
2. **Slide 2 [Agenda & Roadmap]:** Timing and milestone breakdown (${pedagogyLabel})
|
|
10187
|
-
3. **Slide 3 [Warm-Up / Prior Knowledge]:**
|
|
10188
|
-
4. **Slide 4 [High-Stakes Hook Scenario]:** Authentic engineering/domain crisis
|
|
10189
|
-
5. **Slide 5 [Core Concept 1: Mental Model]:**
|
|
10190
|
-
6. **Slide 6 [Architecture & Visual Flow]:** Clean Mermaid diagram (flowchart or sequenceDiagram)
|
|
10191
|
-
7. **Slide 7 [Core Concept 2: Syntax / Mechanism Anatomy]:**
|
|
10192
|
-
8. **Slide 8 [
|
|
10193
|
-
9. **Slide 9 [
|
|
10194
|
-
10. **Slide 10 [
|
|
10195
|
-
11. **Slide 11 [
|
|
10196
|
-
12. **Slide 12 [
|
|
10197
|
-
|
|
10198
|
-
|
|
10199
|
-
|
|
10200
|
-
-
|
|
11860
|
+
2. **Slide 2 [Agenda & Roadmap]:** Timing and milestone breakdown table (${pedagogyLabel})
|
|
11861
|
+
3. **Slide 3 [Warm-Up / Prior Knowledge]:** 2-column recall + 60-second diagnostic challenge card
|
|
11862
|
+
4. **Slide 4 [High-Stakes Hook Scenario]:** Authentic engineering/domain crisis card + dilemma constraint
|
|
11863
|
+
5. **Slide 5 [Core Concept 1: Mental Model]:** Definition, intuitive everyday analogy, and golden rule card
|
|
11864
|
+
6. **Slide 6 [Architecture & Visual Flow]:** Clean Mermaid diagram (flowchart or sequenceDiagram) + 3 flow steps
|
|
11865
|
+
7. **Slide 7 [Core Concept 2: Syntax / Mechanism Anatomy]:** Side-by-side 6-10 lines runnable code + anatomy breakdown & syntax trap card
|
|
11866
|
+
8. **Slide 8 [Guided Practice: Try It Now]:** 3-minute active desk task card with starter hint and success criteria
|
|
11867
|
+
9. **Slide 9 [Integrated Hands-On Lab]:** 3-tier differentiated challenge cards (Bronze / Silver / Gold) + gotcha alert card
|
|
11868
|
+
10. **Slide 10 [Traffic Light Checkpoint & Pitfalls]:** Formative self-check cards (\u{1F7E2}/\u{1F7E1}/\u{1F534}) & diagnostic test question
|
|
11869
|
+
11. **Slide 11 [Exit Ticket & Metacognition]:** 2 scenario-based check questions + 1 metacognitive reflection prompt
|
|
11870
|
+
12. **Slide 12 [Summary & Next Steps]:** 3 core golden rules + preview card of next upcoming milestone
|
|
11871
|
+
|
|
11872
|
+
Mandatory Canvas & Presentation Invariants:
|
|
11873
|
+
- A slide is an INTERACTIVE PROJECTION CANVAS, NOT a textbook! Absolutely NO dense paragraphs or walls of text.
|
|
11874
|
+
- Follow the 6x6 rule: Maximum 4-6 bullet points per slide, maximum 8-12 words per bullet.
|
|
11875
|
+
- Structure slides using \`<div class="columns"><div>...</div><div>...</div></div>\` and \`<div class="card">\`, \`<div class="card highlight">\`, \`<div class="card warning">\`, \`<div class="card success">\`.
|
|
11876
|
+
- MANDATORY PRESENTER NOTES ON EVERY SLIDE: Every slide MUST end with \`<!-- Presenter Notes: ... -->\` containing:
|
|
11877
|
+
* SCRIPT: 60-90s teacher talk track with intuitive analogies.
|
|
11878
|
+
* COLD CALL / CHECK: Specific diagnostic question to ask students.
|
|
11879
|
+
* SCAFFOLDING / GOTCHA: Guidance for students who get stuck.
|
|
11880
|
+
* PACING: Recommended minutes for the slide.
|
|
10201
11881
|
- Output 100% valid Marp Markdown.`;
|
|
10202
11882
|
const rawSlide = await runCurriculumAIInference(
|
|
10203
11883
|
[{ role: "user", content: slidePrompt }],
|
|
@@ -10935,20 +12615,25 @@ function getArtifactSpecializedInvariants(type, req) {
|
|
|
10935
12615
|
- Pacing: Target total duration is ${presentationDuration} minutes (~${Math.round(Number(presentationDuration) / Number(slideCount))} mins per slide).
|
|
10936
12616
|
- Visual Style: "${presentationStyle.toUpperCase()}". Maintain high visual clarity, contrasting accents, and executive polish.
|
|
10937
12617
|
2. **STRICT CONCISENESS & 6x6 RULE (ABSOLUTELY NO TEXT WALLS)**:
|
|
10938
|
-
- A slide is
|
|
12618
|
+
- A slide is an INTERACTIVE PROJECTION CANVAS, NOT a textbook or lesson plan!
|
|
10939
12619
|
- Maximum 4\u20136 bullet points per slide.
|
|
10940
12620
|
- Maximum 8\u201312 words per bullet point. Forbid dense multi-sentence paragraphs on the slide surface.
|
|
10941
12621
|
3. **SPEAKER NOTES FOR ALL SPOKEN WORDS (<!-- Presenter Notes: ... -->)**:
|
|
10942
|
-
${includeSpeakerNotes ?
|
|
10943
|
-
|
|
12622
|
+
${includeSpeakerNotes ? `- MANDATORY: Every single slide MUST contain structured presenter notes in \`<!-- Presenter Notes: ... -->\` at the bottom:
|
|
12623
|
+
- SCRIPT: 60-90s teacher talk track with intuitive analogies.
|
|
12624
|
+
- COLD CALL / CHECK: Diagnostic question to ask students.
|
|
12625
|
+
- SCAFFOLDING / GOTCHA: How to resolve student misconceptions.
|
|
12626
|
+
- PACING: Recommended minutes for the slide.` : "- Optional brief presenter notes."}
|
|
12627
|
+
4. **2-COLUMN & CALLOUT CARD LAYOUTS**:
|
|
12628
|
+
- Use \`<div class="columns"><div>...</div><div>...</div></div>\` for comparisons, code vs. mechanics, or side-by-side tasks.
|
|
12629
|
+
- Use \`<div class="card">\`, \`<div class="card highlight">\`, \`<div class="card warning">\`, and \`<div class="card success">\` for scannable chunking.
|
|
12630
|
+
5. **CLICK-TO-REVEAL SYSTEM**:
|
|
10944
12631
|
- Use \`<!-- clicks -->\` before bulleted lists (\`<ul>\` or \`<ol>\`) for incremental click-to-reveal.
|
|
10945
12632
|
- Use \`<!-- click -->\` before answers, code reveals, or key callouts.
|
|
10946
|
-
5. **2-COLUMN / SPLIT LAYOUT**:
|
|
10947
|
-
- Use <div class="columns"><div>...</div><div>...</div></div> for side-by-side concept vs. code or problem vs. solution comparisons.
|
|
10948
12633
|
6. **CONCISE CODE SNIPPETS**:
|
|
10949
12634
|
- Maximum 6\u201310 lines of clean code per snippet with inline comments. Never paste whole files.
|
|
10950
12635
|
7. **MERMAID VISUALS**:
|
|
10951
|
-
- Use Mermaid flowcharts or sequence diagrams for workflows and control loops.`;
|
|
12636
|
+
- Use Mermaid flowcharts (\`graph TD\` or \`graph LR\`) or sequence diagrams for workflows and control loops.`;
|
|
10952
12637
|
}
|
|
10953
12638
|
case "tiered_practice": {
|
|
10954
12639
|
const techStack = cfg.techStack || (req.hardwarePlatform?.[0] || "Modern Programming Language");
|
|
@@ -15256,6 +16941,6 @@ function renderMediaPlaceholder(entry) {
|
|
|
15256
16941
|
return `> \u{1F5BC}\uFE0F [\u1EA2nh \u0111ang ch\u1EDD: ${entry.name} \u2014 s\u1EBD \u0111\u01B0\u1EE3c t\u1EA1o sau khi duy\u1EC7t media]`;
|
|
15257
16942
|
}
|
|
15258
16943
|
|
|
15259
|
-
export { ARTIFACT_EXECUTION_ORDER, AcademicAuditor, ActiveLearningWorkflowSchema, ActivityLabSchema, ActivitySeqRowSchema, ActivityStepSchema, ArtifactContractRowSchema, AssessmentMapRowSchema, AssessmentObjectiveSchema, BLOOM_ACTION_VERBS, BUNDLED_STANDARDS_PACK_IDS, BellRingerDaySchema, BellRingerSchema, BloomHintSchema, BloomLevelSchema, BloomTaxonomyEvaluator, BronzeTierSchema, CERConclusionSchema, CURRICULUM_SLASH_COMMANDS, CardTierEnum, ChoiceBoardRubricRowSchema, ChoiceBoardSchema, ChoiceRuleSchema, ChoiceSquareSchema, ClassificationSchema, CodeHardwareFeasibilityEvaluator, CodeLabSchema, CodeSnippetSchema, CompetencyRubricRowSchema, ComputationalThinkingSchema, ConstructiveAlignmentEvaluator, CoreConceptSchema, CourseObjectiveSchema, CoverageReportSchema, CrossArtifactDriftEvaluator, CurriculumArtifactSchema, CurriculumError, CurriculumPlanSchema, CurriculumQualityReportSchema, DEFAULT_ENABLED_PROVIDERS, DEFAULT_GATE_SETTINGS, DependencyEdgeSchema, DepthAssignmentSchema, DepthLevelSchema, DeterministicPipelineRunner, DeterministicStructuralLinter, DiagnosticQuestionSchema, DiagnosticQuizSchema, EDPPhaseEnum, EXPOSITION_REL, EntryLevelSchema, ExitTicketBugHuntSchema, ExitTicketMetacognitionSchema, ExitTicketQuickItemSchema, ExitTicketRecallPromptSchema, ExitTicketSchema, ExperimentalDesignSchema, ExpositionApprovalError, ExtensionChallengeSchema, ExtensionSchema, FileSystemCurriculumAdapter, FiveEFlowPhaseSchema, FiveEInstructionalEvaluator, FiveEPhaseEnum, FrameworkMappingSchema, FrameworkPackManifestSchema, FrameworkPackSchema, FrameworkStatementSchema, GlossaryQuickRefRowSchema, GlossarySchema, GlossaryTermSchema, GoldTierSchema, GradeBandSchema, GraphicOrganizerItemSchema, GraphicOrganizerSchema, HandoutSchema, HandoutSectionSchema, InstructionSectionSchema, InstructionStepSchema, JudgeCriterionSchema, LLMJudgeEngine, LabTierTaskSchema, LearningObjectiveInputSchema, LearningObjectiveRowSchema, LessonFlowPhaseSchema, LessonPlan5ESchema, LessonPlanEDPSchema, LessonPlanSchema, LessonSectionSchema, LocalWorkspaceManager, MappingKindSchema, MarpSlideSchema, MediaError, MediaLedger, MentorCheatsheetSchema, MilestoneInputSchema, MisconceptionEvaluator, MisconceptionSchema, ModelPolicyResolver, NVIDIA_MODELS, NodeKindSchema, OrganizerTypeEnum, PhaseInputSchema, PlanConstraintsSchema, PlannerInputSchema, PlanningGraphSchema, PlanningNodeSchema, PrerequisiteDecisionEntrySchema, PrerequisiteDecisionSchema, ProductGoalSchema, ProgressiveHintsSchema, ProjectGraphSchema, ProjectInstructionSchema, ProjectProfileSchema, QualityAuditVerdictSchema, QuizOptionSchema, RecordProvenanceSchema, ResourceMapRowSchema, ReviewGameExportRowSchema, ReviewGameQuestionSchema, ReviewGameSchema, RoadmapInputSchema, RotationStationSchema, RubricCriteriaSchema, RubricSchema, STANDARD_SOT_FILES, ScaffoldDecisionEntrySchema, ScaffoldDecisionSchema, ScienceLabSchema, ScoringRubricRowSchema, SelfLabSchema, SelfPacedBundleSchema, SelfPacedChallengeSchema, SessionPlanSchema, SilverTierSchema, SlideDeckSchema, StandardizedTermRowSchema, StandardsRegistryAdapter, StationRecordRowSchema, StationRotationSchema, StationTypeEnum, SupabaseCurriculumAdapter, TaskCardSchema, TaskCardsSchema, TeacherGuideSchema, TeachingScriptPhaseSchema, TierLevelEnum, TierObjectiveSchema, TieredPracticeSchema, TranslationPolicySchema, TroubleshootingEntrySchema, TroubleshootingRowSchema, UnitPlanSchema, UserJourneySchema, WorksheetItemSchema, WorksheetItemTypeEnum, WorksheetPartSchema, WorksheetSchema, activityTools, analystTools, analyzeProjectCreationIntent, approvalPayloadSchema, assertAcyclic, assessorTools, auditCurriculumQualityFlow, auditQualityReport, buildActivityPrompt, buildCodeLabPrompt, buildCurriculumContext, buildCurriculumPlan, buildDeliveryPackages, buildDiagnosticQuizPrompt, buildExpositionContext, buildExtensionPrompt, buildHandoutPrompt, buildImagePrompt, buildJudgePrompt, buildLessonMasterPrompt, buildProjectInstructionPrompt, buildSelfLabPrompt, buildSessionSliceContext, buildSlidesPrompt, buildStandardStackMarkdown, buildStandardsContext, buildStandardsContextBlock, buildTeacherGuidePrompt, buildWorksheetPrompt, computeContentHash, computePackingSpec, conductPreliminaryResearch, contentTools, convertRoadmapToFoundationSot, createAiInferenceError, createCurriculumStorage, curateMediaLedger, designerTools, detectProjectPedagogy, ensureExpositionForLesson, ensureKnowledgeExposition, evaluateStandardsCoverage, executeCurriculumCommand, executeSingleArtifactStep, exportAllProjectQuizzes, expositionCacheKey, extractScopeSequenceRows, extractSessionSlice, extractThoughtAndContent, formatQuizzesToCsv, fulfillMediaLedger, gateModeFor, generateActivityFlow, generateActivityStep, generateCodeLabFlow, generateCodeLabStep, generateDiagnosticQuizFlow, generateDiagnosticQuizStep, generateEducationalImage, generateExtensionFlow, generateExtensionStep, generateHandoutFlow, generateHandoutStep, generateLessonMasterFlow, generateMasterLessonStep, generateMilestoneCurriculumBundle, generateMilestoneWorkflow, generatePhase1SotArtifacts, generatePhase2SotArtifacts, generateProjectInstruction, generateProjectInstructionFlow, generateRoadmapCurriculum, generateRoadmapWorkflow, generateSelfLabFlow, generateSelfLabStep, generateSelfPacedBundle, generateSingleArtifact, generateSingleArtifactWorkflow, generateSlidesFlow, generateSlidesStep, generateTeacherGuideFlow, generateTeacherGuideStep, generateWorksheetFlow, generateWorksheetStep, getAIModel, getArtifactMetadata, getDesignatedFallbackChain, getDesignatedFallbackConfig, getLessonMetadata, getProjectArtifactScope, getProjectStatusReport, getSmartResumeContext, glossaryTermsForSession, illustratorTools, importRoadmapToProject, ingestProjectGraphIntoProject, initializeProjectInStorage, injectMediaIntoMarkdown, isExpositionFresh, isModelAllowed, isProviderEnabled, isTranslationDue, judgeMasterLessonStep, judgeSatelliteStep, lessonApprovalHook, lintAndSanitizeArtifact, lintCurriculumFramework, lintFrameworkPack, loadCurriculumTemplate, loadSotTemplate, normalizePlanningGraph, packagerTools, parseGateSettings, parseQuizMarkdown, parseRoadmapJsonToProjectPayload, produceBatchLessons, produceSingleLesson, publishToGitHub, publishToGitStep, publishToSupabase, publishToSupabaseStep, rankGenCandidates, renderFrameworkFromPlan, renderMediaPlaceholder, repairMasterLessonStep, researcherTools, resolveGateSettings, resolveStandardsPacks, resolveTranslationTargets, reviewerTools, runCurriculumAIInference, safeParseJson, saveMilestoneToWorkspaceStep, searchEducationalImages, searchEducationalVideos, selectStatementsForLesson, serializeActivityToMarkdown, serializeCodeLabToMarkdown, serializeDiagnosticQuizToMarkdown, serializeHandoutToMarkdown, serializeLessonToMarkdown, serializeProjectInstructionToMarkdown, serializeSelfLabToMarkdown, slugifyProjectName, streamCurriculumAIInference, streamCurriculumAIInferenceWithTools, streamDiagnosticQuizFlow, streamLLMWithFallback, streamLayerPrefillWithFallback, streamLessonMasterFlow, streamSelfLabFlow, techSmeTools, topoSort, uploadAssetToBucket, validateCurriculumPlan, validateFrameworkPack, validateMarkdownTables, validateMermaidSyntax, withAutoRepair, withRateLimitBackoff };
|
|
16944
|
+
export { ACT_TEMPLATE, ARTIFACT_EXECUTION_ORDER, AcademicAuditor, ActiveLearningWorkflowSchema, ActivityLabSchema, ActivitySeqRowSchema, ActivityStepSchema, ArtifactContractRowSchema, AssessmentMapRowSchema, AssessmentObjectiveSchema, BELL_RINGER_TEMPLATE, BLOOM_ACTION_VERBS, BOM_TEMPLATE, BUNDLED_STANDARDS_PACK_IDS, BellRingerDaySchema, BellRingerSchema, BloomHintSchema, BloomLevelSchema, BloomTaxonomyEvaluator, BronzeTierSchema, CERConclusionSchema, CHOICE_BOARD_TEMPLATE, CODE_LAB_TEMPLATE, CURRICULUM_SLASH_COMMANDS, CardTierEnum, ChoiceBoardRubricRowSchema, ChoiceBoardSchema, ChoiceRuleSchema, ChoiceSquareSchema, ClassificationSchema, CodeHardwareFeasibilityEvaluator, CodeLabSchema, CodeSnippetSchema, CompetencyRubricRowSchema, ComputationalThinkingSchema, ConstructiveAlignmentEvaluator, CoreConceptSchema, CourseObjectiveSchema, CoverageReportSchema, CrossArtifactDriftEvaluator, CurriculumArtifactSchema, CurriculumError, CurriculumPlanSchema, CurriculumQualityReportSchema, DEFAULT_ENABLED_PROVIDERS, DEFAULT_GATE_SETTINGS, DependencyEdgeSchema, DepthAssignmentSchema, DepthLevelSchema, DeterministicPipelineRunner, DeterministicStructuralLinter, DiagnosticQuestionSchema, DiagnosticQuizSchema, EDPPhaseEnum, EXIT_TICKET_TEMPLATE, EXPOSITION_REL, EXT_TEMPLATE, EntryLevelSchema, ExitTicketBugHuntSchema, ExitTicketMetacognitionSchema, ExitTicketQuickItemSchema, ExitTicketRecallPromptSchema, ExitTicketSchema, ExperimentalDesignSchema, ExpositionApprovalError, ExtensionChallengeSchema, ExtensionSchema, FileSystemCurriculumAdapter, FiveEFlowPhaseSchema, FiveEInstructionalEvaluator, FiveEPhaseEnum, FrameworkMappingSchema, FrameworkPackManifestSchema, FrameworkPackSchema, FrameworkStatementSchema, GLOSSARY_TEMPLATE, GRAPHIC_ORGANIZER_TEMPLATE, GlossaryQuickRefRowSchema, GlossarySchema, GlossaryTermSchema, GoldTierSchema, GradeBandSchema, GraphicOrganizerItemSchema, GraphicOrganizerSchema, HANDOUT_TEMPLATE, HandoutSchema, HandoutSectionSchema, InstructionSectionSchema, InstructionStepSchema, JudgeCriterionSchema, LESSON_PLAN_TEMPLATE, LLMJudgeEngine, LabTierTaskSchema, LearningObjectiveInputSchema, LearningObjectiveRowSchema, LessonFlowPhaseSchema, LessonPlan5ESchema, LessonPlanEDPSchema, LessonPlanSchema, LessonSectionSchema, LocalWorkspaceManager, MappingKindSchema, MarpSlideSchema, MediaError, MediaLedger, MentorCheatsheetSchema, MilestoneInputSchema, MisconceptionEvaluator, MisconceptionSchema, ModelPolicyResolver, NVIDIA_MODELS, NodeKindSchema, OrganizerTypeEnum, PROJECT_INSTRUCTION_TEMPLATE, PhaseInputSchema, PlanConstraintsSchema, PlannerInputSchema, PlanningGraphSchema, PlanningNodeSchema, PrerequisiteDecisionEntrySchema, PrerequisiteDecisionSchema, ProductGoalSchema, ProgressiveHintsSchema, ProjectGraphSchema, ProjectInstructionSchema, ProjectProfileSchema, QUIZ_TEMPLATE, QualityAuditVerdictSchema, QuizOptionSchema, REVIEW_GAME_TEMPLATE, RUBRIC_TEMPLATE, RecordProvenanceSchema, ResourceMapRowSchema, ReviewGameExportRowSchema, ReviewGameQuestionSchema, ReviewGameSchema, RoadmapInputSchema, RotationStationSchema, RubricCriteriaSchema, RubricSchema, SCIENCE_LAB_TEMPLATE, SELF_LAB_TEMPLATE, SLIDE_LAYOUT_PRESETS, SLIDE_TEMPLATE, STANDARD_SOT_FILES, STATION_ROTATION_TEMPLATE, ScaffoldDecisionEntrySchema, ScaffoldDecisionSchema, ScienceLabSchema, ScoringRubricRowSchema, SelfLabSchema, SelfPacedBundleSchema, SelfPacedChallengeSchema, SessionPlanSchema, SilverTierSchema, SlideDeckSchema, StandardizedTermRowSchema, StandardsRegistryAdapter, StationRecordRowSchema, StationRotationSchema, StationTypeEnum, SupabaseCurriculumAdapter, TASK_CARDS_TEMPLATE, TEACHER_GUIDE_TEMPLATE, TIERED_PRACTICE_TEMPLATE, TaskCardSchema, TaskCardsSchema, TeacherGuideSchema, TeachingScriptPhaseSchema, TierLevelEnum, TierObjectiveSchema, TieredPracticeSchema, TranslationPolicySchema, TroubleshootingEntrySchema, TroubleshootingRowSchema, UnitPlanSchema, UserJourneySchema, WORKSHEET_TEMPLATE, WorksheetItemSchema, WorksheetItemTypeEnum, WorksheetPartSchema, WorksheetSchema, activityTools, analystTools, analyzeProjectCreationIntent, approvalPayloadSchema, assertAcyclic, assessorTools, auditCurriculumQualityFlow, auditQualityReport, buildActivityPrompt, buildCodeLabPrompt, buildCurriculumContext, buildCurriculumPlan, buildDeliveryPackages, buildDiagnosticQuizPrompt, buildExpositionContext, buildExtensionPrompt, buildHandoutPrompt, buildImagePrompt, buildJudgePrompt, buildLessonMasterPrompt, buildProjectInstructionPrompt, buildSelfLabPrompt, buildSessionSliceContext, buildSlidesPrompt, buildStandardStackMarkdown, buildStandardsContext, buildStandardsContextBlock, buildTeacherGuidePrompt, buildWorksheetPrompt, computeContentHash, computePackingSpec, conductPreliminaryResearch, contentTools, convertRoadmapToFoundationSot, createAiInferenceError, createCurriculumStorage, curateMediaLedger, designerTools, detectProjectPedagogy, ensureExpositionForLesson, ensureKnowledgeExposition, evaluateStandardsCoverage, executeCurriculumCommand, executeSingleArtifactStep, exportAllProjectQuizzes, expositionCacheKey, extractScopeSequenceRows, extractSessionSlice, extractThoughtAndContent, formatQuizzesToCsv, fulfillMediaLedger, gateModeFor, generateActivityFlow, generateActivityStep, generateCodeLabFlow, generateCodeLabStep, generateDiagnosticQuizFlow, generateDiagnosticQuizStep, generateEducationalImage, generateExtensionFlow, generateExtensionStep, generateHandoutFlow, generateHandoutStep, generateLessonMasterFlow, generateMasterLessonStep, generateMilestoneCurriculumBundle, generateMilestoneWorkflow, generatePhase1SotArtifacts, generatePhase2SotArtifacts, generateProjectInstruction, generateProjectInstructionFlow, generateRoadmapCurriculum, generateRoadmapWorkflow, generateSelfLabFlow, generateSelfLabStep, generateSelfPacedBundle, generateSingleArtifact, generateSingleArtifactWorkflow, generateSlidesFlow, generateSlidesStep, generateTeacherGuideFlow, generateTeacherGuideStep, generateWorksheetFlow, generateWorksheetStep, getAIModel, getArtifactMetadata, getDesignatedFallbackChain, getDesignatedFallbackConfig, getLessonMetadata, getProjectArtifactScope, getProjectStatusReport, getSlideLayoutPresetById, getSlideLayoutPresetsByCategory, getSmartResumeContext, glossaryTermsForSession, illustratorTools, importRoadmapToProject, ingestProjectGraphIntoProject, initializeProjectInStorage, injectMediaIntoMarkdown, isExpositionFresh, isModelAllowed, isProviderEnabled, isTranslationDue, judgeMasterLessonStep, judgeSatelliteStep, lessonApprovalHook, lintAndSanitizeArtifact, lintCurriculumFramework, lintFrameworkPack, loadCurriculumTemplate, loadSotTemplate, normalizePlanningGraph, packagerTools, parseGateSettings, parseQuizMarkdown, parseRoadmapJsonToProjectPayload, produceBatchLessons, produceSingleLesson, publishToGitHub, publishToGitStep, publishToSupabase, publishToSupabaseStep, rankGenCandidates, renderFrameworkFromPlan, renderMediaPlaceholder, repairMasterLessonStep, researcherTools, resolveGateSettings, resolveStandardsPacks, resolveTranslationTargets, reviewerTools, runCurriculumAIInference, safeParseJson, saveMilestoneToWorkspaceStep, searchEducationalImages, searchEducationalVideos, selectStatementsForLesson, serializeActivityToMarkdown, serializeCodeLabToMarkdown, serializeDiagnosticQuizToMarkdown, serializeHandoutToMarkdown, serializeLessonToMarkdown, serializeProjectInstructionToMarkdown, serializeSelfLabToMarkdown, slugifyProjectName, streamCurriculumAIInference, streamCurriculumAIInferenceWithTools, streamDiagnosticQuizFlow, streamLLMWithFallback, streamLayerPrefillWithFallback, streamLessonMasterFlow, streamSelfLabFlow, techSmeTools, topoSort, uploadAssetToBucket, validateCurriculumPlan, validateFrameworkPack, validateMarkdownTables, validateMermaidSyntax, withAutoRepair, withRateLimitBackoff };
|
|
15260
16945
|
//# sourceMappingURL=index.mjs.map
|
|
15261
16946
|
//# sourceMappingURL=index.mjs.map
|