Download src/video-engine/physics/production/chapterHomework.ts from asnannp/DocDoeAI: direct link, hf CLI and curl.
- Browser
- Download file 11.5 kB
-
https://huggingface.co/spaces/asnannp/DocDoeAI/resolve/main/src/video-engine/physics/production/chapterHomework.ts
- Command line
-
hf download hf://spaces/asnannp/DocDoeAI/src/video-engine/physics/production/chapterHomework.ts
-
curl -L -o chapterHomework.ts https://huggingface.co/spaces/asnannp/DocDoeAI/resolve/main/src/video-engine/physics/production/chapterHomework.ts
11.5 kB
| /** | |
| * CHAPTER-SCOPED HOMEWORK DATA | |
| * | |
| * Each chapter has its own homework tasks derived from that chapter's | |
| * official SCERT topics, formulae and exam-question families. | |
| * | |
| * This module prevents the cross-chapter homework data leak where | |
| * Sound Waves homework was incorrectly appended to all 7 chapters. | |
| */ | |
| export type HomeworkTaskType = "explanation" | "diagram" | "numerical" | "comparison"; | |
| export interface HomeworkTask { | |
| /** Unique identifier for this task. */ | |
| id: string; | |
| /** Task type: explanation, diagram, numerical, or comparison. */ | |
| type: HomeworkTaskType; | |
| /** Short imperative instruction. */ | |
| text: string; | |
| /** The topic key from the course manifest that this task covers. */ | |
| topicKey: string; | |
| /** Formula keys from the course manifest that this task uses. */ | |
| formulaKeys: string[]; | |
| /** Expected marks for this task. */ | |
| marks: number; | |
| } | |
| export interface ChapterHomework { | |
| chapterId: string; | |
| chapterTitle: string; | |
| tasks: HomeworkTask[]; | |
| } | |
| const HOMEWORK: Record<string, ChapterHomework> = { | |
| "phy-p1-c1": { | |
| chapterId: "phy-p1-c1", | |
| chapterTitle: "Sound Waves", | |
| tasks: [ | |
| { | |
| id: "hw-c1-01", | |
| type: "explanation", | |
| text: "Explain how sound travels through air using the terms compression, rarefaction and longitudinal wave.", | |
| topicKey: "Longitudinal and transverse waves", | |
| formulaKeys: ["v = fλ"], | |
| marks: 4, | |
| }, | |
| { | |
| id: "hw-c1-02", | |
| type: "numerical", | |
| text: "A person claps near a cliff and hears the echo after 1.5 seconds. If the speed of sound is 340 m/s, find the distance to the cliff.", | |
| topicKey: "Reflection of sound, echo and reverberation", | |
| formulaKeys: ["distance = vt/2"], | |
| marks: 3, | |
| }, | |
| { | |
| id: "hw-c1-03", | |
| type: "comparison", | |
| text: "Distinguish between longitudinal and transverse waves with one example each.", | |
| topicKey: "Longitudinal and transverse waves", | |
| formulaKeys: [], | |
| marks: 3, | |
| }, | |
| ], | |
| }, | |
| "phy-p1-c2": { | |
| chapterId: "phy-p1-c2", | |
| chapterTitle: "Lenses", | |
| tasks: [ | |
| { | |
| id: "hw-c2-01", | |
| type: "diagram", | |
| text: "Draw the ray diagram for image formation when an object is placed beyond 2F of a convex lens. Label F, 2F and the image.", | |
| topicKey: "Image formation by convex lens", | |
| formulaKeys: [], | |
| marks: 4, | |
| }, | |
| { | |
| id: "hw-c2-02", | |
| type: "numerical", | |
| text: "An object is placed 30 cm from a convex lens of focal length 15 cm. Using the lens formula, find the image distance and magnification.", | |
| topicKey: "Lens formula and magnification", | |
| formulaKeys: ["1/f = 1/v − 1/u"], | |
| marks: 4, | |
| }, | |
| { | |
| id: "hw-c2-03", | |
| type: "comparison", | |
| text: "Explain the difference between convex and concave lenses. Give two uses of each.", | |
| topicKey: "Types of lenses", | |
| formulaKeys: [], | |
| marks: 3, | |
| }, | |
| { | |
| id: "hw-c2-04", | |
| type: "numerical", | |
| text: "A lens has a focal length of 25 cm. Find its power in dioptres.", | |
| topicKey: "Power of a lens", | |
| formulaKeys: ["P = 1/f"], | |
| marks: 2, | |
| }, | |
| ], | |
| }, | |
| "phy-p1-c3": { | |
| chapterId: "phy-p1-c3", | |
| chapterTitle: "The World of Colours and Vision", | |
| tasks: [ | |
| { | |
| id: "hw-c3-01", | |
| type: "explanation", | |
| text: "Explain why the sky appears blue during the day and red at sunrise and sunset.", | |
| topicKey: "Scattering of light", | |
| formulaKeys: [], | |
| marks: 4, | |
| }, | |
| { | |
| id: "hw-c3-02", | |
| type: "diagram", | |
| text: "Draw a neat diagram showing the dispersion of white light through a glass prism. Label the colours of the spectrum.", | |
| topicKey: "Dispersion of light", | |
| formulaKeys: [], | |
| marks: 4, | |
| }, | |
| { | |
| id: "hw-c3-03", | |
| type: "explanation", | |
| text: "What are the primary colours of light? Explain how white light can be obtained by mixing them.", | |
| topicKey: "Colours of light", | |
| formulaKeys: [], | |
| marks: 3, | |
| }, | |
| { | |
| id: "hw-c3-04", | |
| type: "comparison", | |
| text: "Differentiate between myopia and hypermetropia. How is each corrected using lenses?", | |
| topicKey: "Defects of vision", | |
| formulaKeys: [], | |
| marks: 4, | |
| }, | |
| ], | |
| }, | |
| "phy-p1-c4": { | |
| chapterId: "phy-p1-c4", | |
| chapterTitle: "Magnetic Effect of Electric Current", | |
| tasks: [ | |
| { | |
| id: "hw-c4-01", | |
| type: "explanation", | |
| text: "Describe Oersted's experiment and explain what it demonstrates about the relationship between electricity and magnetism.", | |
| topicKey: "Oersted's experiment", | |
| formulaKeys: [], | |
| marks: 4, | |
| }, | |
| { | |
| id: "hw-c4-02", | |
| type: "explanation", | |
| text: "State Fleming's left-hand rule. Explain the direction of force on a current-carrying conductor placed in a magnetic field.", | |
| topicKey: "Force on a current-carrying conductor", | |
| formulaKeys: [], | |
| marks: 3, | |
| }, | |
| { | |
| id: "hw-c4-03", | |
| type: "diagram", | |
| text: "Draw a neat labelled diagram of a simple DC motor and explain its working.", | |
| topicKey: "Electric motor", | |
| formulaKeys: [], | |
| marks: 4, | |
| }, | |
| { | |
| id: "hw-c4-04", | |
| type: "comparison", | |
| text: "Differentiate between a solenoid and an electromagnet. Give two applications of electromagnets.", | |
| topicKey: "Solenoid and electromagnet", | |
| formulaKeys: [], | |
| marks: 3, | |
| }, | |
| ], | |
| }, | |
| "phy-p2-c5": { | |
| chapterId: "phy-p2-c5", | |
| chapterTitle: "Electric Energy: Consumption and Conservation", | |
| tasks: [ | |
| { | |
| id: "hw-c5-01", | |
| type: "explanation", | |
| text: "State Joule's law of heating and explain the factors on which heat produced depends.", | |
| topicKey: "Heating effect of electric current", | |
| formulaKeys: ["H = I²Rt"], | |
| marks: 4, | |
| }, | |
| { | |
| id: "hw-c5-02", | |
| type: "explanation", | |
| text: "Explain why Nichrome is used as the heating element in electrical appliances.", | |
| topicKey: "Heating effect of electric current", | |
| formulaKeys: [], | |
| marks: 2, | |
| }, | |
| { | |
| id: "hw-c5-03", | |
| type: "numerical", | |
| text: "A 1500 W electric kettle is used for 2 hours daily for 30 days. Calculate the energy consumed in kWh and the electricity bill if the rate is ₹6 per unit.", | |
| topicKey: "Electric energy and power", | |
| formulaKeys: ["E = Pt"], | |
| marks: 4, | |
| }, | |
| { | |
| id: "hw-c5-04", | |
| type: "explanation", | |
| text: "Explain TOD (Time of Day) billing and suggest two ways to reduce your household carbon footprint through energy conservation.", | |
| topicKey: "Conservation of electric energy", | |
| formulaKeys: [], | |
| marks: 3, | |
| }, | |
| ], | |
| }, | |
| "phy-p2-c6": { | |
| chapterId: "phy-p2-c6", | |
| chapterTitle: "Electromagnetic Induction in Daily Life", | |
| tasks: [ | |
| { | |
| id: "hw-c6-01", | |
| type: "explanation", | |
| text: "Describe the electromagnetic induction experiment using a bar magnet and a coil connected to a galvanometer.", | |
| topicKey: "Electromagnetic induction", | |
| formulaKeys: [], | |
| marks: 4, | |
| }, | |
| { | |
| id: "hw-c6-02", | |
| type: "diagram", | |
| text: "Draw a neat labelled diagram of an AC generator and explain its working principle.", | |
| topicKey: "Electric generator", | |
| formulaKeys: [], | |
| marks: 4, | |
| }, | |
| { | |
| id: "hw-c6-03", | |
| type: "comparison", | |
| text: "Differentiate between a step-up transformer and a step-down transformer with a diagram.", | |
| topicKey: "Transformer", | |
| formulaKeys: ["Vₛ/Vₚ = Nₛ/Nₚ"], | |
| marks: 4, | |
| }, | |
| { | |
| id: "hw-c6-04", | |
| type: "explanation", | |
| text: "Explain why electric power is transmitted at high voltage over long distances.", | |
| topicKey: "Power transmission", | |
| formulaKeys: [], | |
| marks: 3, | |
| }, | |
| ], | |
| }, | |
| "phy-p2-c7": { | |
| chapterId: "phy-p2-c7", | |
| chapterTitle: "Mechanical Advantage in Action", | |
| tasks: [ | |
| { | |
| id: "hw-c7-01", | |
| type: "diagram", | |
| text: "Explain the three orders of levers with one example each. Draw diagrams showing the position of fulcrum, load and effort.", | |
| topicKey: "Levers", | |
| formulaKeys: [], | |
| marks: 4, | |
| }, | |
| { | |
| id: "hw-c7-02", | |
| type: "comparison", | |
| text: "Compare a fixed pulley and a movable pulley in terms of mechanical advantage and the direction of effort.", | |
| topicKey: "Pulley systems", | |
| formulaKeys: [], | |
| marks: 3, | |
| }, | |
| { | |
| id: "hw-c7-03", | |
| type: "explanation", | |
| text: "Explain the principle of no gain in work using the example of a lever.", | |
| topicKey: "No gain in work", | |
| formulaKeys: ["load × load arm = effort × effort arm"], | |
| marks: 3, | |
| }, | |
| { | |
| id: "hw-c7-04", | |
| type: "numerical", | |
| text: "A box of weight 500 N is pushed up a 5 m inclined plane to a height of 2 m. Find the effort required and the mechanical advantage.", | |
| topicKey: "Inclined plane", | |
| formulaKeys: [], | |
| marks: 3, | |
| }, | |
| ], | |
| }, | |
| }; | |
| /** | |
| * Get the chapter-scoped homework for a given chapterId. | |
| * Returns undefined if the chapterId is not recognised. | |
| */ | |
| export function getChapterHomework(chapterId: string): ChapterHomework | undefined { | |
| return HOMEWORK[chapterId]; | |
| } | |
| /** | |
| * QA validation: verify homework belongs to the correct chapter. | |
| * Returns a list of issues found. | |
| */ | |
| export function validateHomework(chapterId: string, homeworkText: string): string[] { | |
| const issues: string[] = []; | |
| const chapter = HOMEWORK[chapterId]; | |
| if (!chapter) { | |
| issues.push(`Unknown chapterId: ${chapterId}`); | |
| return issues; | |
| } | |
| const lower = homeworkText.toLowerCase(); | |
| // Cross-chapter leak detection | |
| const crossChapterPatterns: Array<[string, RegExp, string]> = [ | |
| ["phy-p1-c1", /sound travels through air|v\s*=\s*f[λl]/i, "Sound Waves"], | |
| ["phy-p1-c2", /lens formula|1\/f\s*=\s*1\/v|convex lens/i, "Lenses"], | |
| ["phy-p1-c3", /dispersion|prism|sky.*blue|primary colour/i, "Colours and Vision"], | |
| ["phy-p1-c4", /oersted|fleming|solenoid|dc motor/i, "Magnetic Effect"], | |
| ["phy-p2-c5", /joule.*law|nichrome|kwh|tod billing/i, "Electric Energy"], | |
| ["phy-p2-c6", /electromagnetic induction|ac generator|transformer/i, "Electromagnetic Induction"], | |
| ["phy-p2-c7", /lever.*order|pulley|inclined plane|mechanical advantage/i, "Mechanical Advantage"], | |
| ]; | |
| for (const [otherChapterId, pattern, name] of crossChapterPatterns) { | |
| if (otherChapterId !== chapterId && pattern.test(lower)) { | |
| issues.push(`Homework contains ${name} content but chapterId is ${chapterId}`); | |
| } | |
| } | |
| // Check task count | |
| if (chapter.tasks.length < 2 || chapter.tasks.length > 4) { | |
| issues.push(`Chapter ${chapterId} has ${chapter.tasks.length} tasks (expected 2-4)`); | |
| } | |
| return issues; | |
| } | |
| /** | |
| * Format homework tasks for display in the HomeworkVisual. | |
| */ | |
| export function formatHomeworkTasks(chapterId: string): string[] { | |
| const chapter = HOMEWORK[chapterId]; | |
| if (!chapter) return []; | |
| return chapter.tasks.map((task) => task.text); | |
| } | |