| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- export type TeachingLesson = {
- kind?: 'practical' | 'theory';
- id: string;
- group: string;
- title: string;
- summary: string;
- intro: {
- scenario: string;
- startingPoint: string[];
- outcome: string;
- };
- objectives: string[];
- concepts: { title: string; body: string }[];
- steps: {
- title: string;
- body: string;
- expected: string;
- explanation: string;
- code?: string;
- lang?: string;
- filename?: string;
- }[];
- checks: string[];
- pitfalls: { symptom: string; cause: string; fix: string }[];
- exercise: { task: string; hint: string; answer: string };
- refs: { label: string; url: string }[];
- demo?: 'http' | 'async' | 'protocol';
- interview?: {
- question: string;
- answer: string;
- followUps: string[];
- };
- production?: {
- scenario: string;
- decisions: string[];
- failureDrill: string;
- acceptance: string[];
- };
- };
- export type ReviewItem = {
- id: string;
- title: string;
- prompt: string;
- checkpoints: string[];
- misconception: string;
- revisit: { lessonId: string; label: string }[];
- };
- export type ReviewLesson = {
- kind: 'review';
- id: string;
- group: string;
- title: string;
- summary: string;
- sourceModule: string;
- intro: {
- scenario: string;
- startingPoint: string[];
- outcome: string;
- };
- questions: ReviewItem[];
- challenges: ReviewItem[];
- mastery: { id: string; text: string; evidence: string }[];
- };
- export type Lesson = TeachingLesson | ReviewLesson;
- export type Video = {
- type: 'file' | 'link';
- url: string;
- title?: string;
- captions?: string;
- };
|