fix: respect operator-specific scaffolding in mastery+mixed mode
Fix bug where scaffolding settings (answer boxes, carry boxes, etc.) weren't being respected in mastery+mixed mode (addition+subtraction). **Root cause:** validation.ts was reading from formState.displayRules (general field) instead of formState.additionDisplayRules and formState.subtractionDisplayRules (operator-specific fields). Additionally, it only allowed overriding problemNumbers and cellBorders, ignoring all other scaffolding settings. **Fix:** - Read from operator-specific display rules (additionDisplayRules, subtractionDisplayRules) when they exist - Fall back to general displayRules if operator-specific rules aren't set - Allow ALL display rule fields to override skill's recommendedScaffolding - Add debug logging to trace which rules are being used **Testing:** 1. Set mode to "mastery" with operator "mixed" (addition+subtraction) 2. Change scaffolding setting (e.g., answer boxes from "always" to "never") 3. Verify the preview now respects the custom scaffolding setting Fixes validation.ts:288-318 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
884f279bd4
commit
a6472a231b
|
|
@ -48,7 +48,5 @@
|
|||
"ask": []
|
||||
},
|
||||
"enableAllProjectMcpServers": true,
|
||||
"enabledMcpjsonServers": [
|
||||
"sqlite"
|
||||
]
|
||||
"enabledMcpjsonServers": ["sqlite"]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -111,7 +111,10 @@ export function useWorksheetState(
|
|||
|
||||
if (affectsProblems) {
|
||||
newState.seed = Date.now() % 2147483647
|
||||
console.log('[useWorksheetState] Problem settings changed - generated new seed:', newState.seed)
|
||||
console.log(
|
||||
'[useWorksheetState] Problem settings changed - generated new seed:',
|
||||
newState.seed
|
||||
)
|
||||
}
|
||||
|
||||
console.log('[useWorksheetState] New formState:', {
|
||||
|
|
|
|||
|
|
@ -286,29 +286,36 @@ export function validateWorksheetConfig(formState: WorksheetFormState): Validati
|
|||
const subSkill = getSkillById(subSkillId as any)
|
||||
|
||||
if (addSkill?.recommendedScaffolding && subSkill?.recommendedScaffolding) {
|
||||
// Merge user's displayRules with skill's recommended scaffolding
|
||||
// User's displayRules take precedence for problemNumbers and cellBorders (layout options)
|
||||
const userDisplayRules: Partial<DisplayRules> = formState.displayRules || {}
|
||||
// Merge user's operator-specific displayRules with skill's recommended scaffolding
|
||||
// User's rules (if set) take precedence over skill's recommendations
|
||||
// Fall back to general displayRules if operator-specific rules don't exist
|
||||
const userAdditionRules: Partial<DisplayRules> =
|
||||
(formState as any).additionDisplayRules || formState.displayRules || {}
|
||||
const userSubtractionRules: Partial<DisplayRules> =
|
||||
(formState as any).subtractionDisplayRules || formState.displayRules || {}
|
||||
|
||||
console.log('[MIXED MODE SCAFFOLDING] User rules:', {
|
||||
additionRules: userAdditionRules,
|
||||
subtractionRules: userSubtractionRules,
|
||||
generalRules: formState.displayRules,
|
||||
})
|
||||
|
||||
config = {
|
||||
...baseConfig,
|
||||
additionDisplayRules: {
|
||||
...addSkill.recommendedScaffolding,
|
||||
// Override layout options with user's choices
|
||||
problemNumbers:
|
||||
userDisplayRules.problemNumbers ?? addSkill.recommendedScaffolding.problemNumbers,
|
||||
cellBorders:
|
||||
userDisplayRules.cellBorders ?? addSkill.recommendedScaffolding.cellBorders,
|
||||
...userAdditionRules, // User's custom rules override skill's recommendations
|
||||
},
|
||||
subtractionDisplayRules: {
|
||||
...subSkill.recommendedScaffolding,
|
||||
// Override layout options with user's choices
|
||||
problemNumbers:
|
||||
userDisplayRules.problemNumbers ?? subSkill.recommendedScaffolding.problemNumbers,
|
||||
cellBorders:
|
||||
userDisplayRules.cellBorders ?? subSkill.recommendedScaffolding.cellBorders,
|
||||
...userSubtractionRules, // User's custom rules override skill's recommendations
|
||||
},
|
||||
} as any
|
||||
|
||||
console.log('[MIXED MODE SCAFFOLDING] Final config:', {
|
||||
additionDisplayRules: config.additionDisplayRules,
|
||||
subtractionDisplayRules: config.subtractionDisplayRules,
|
||||
})
|
||||
} else {
|
||||
console.log('[MIXED MODE SCAFFOLDING] Missing recommendedScaffolding', {
|
||||
addSkill: addSkill?.name,
|
||||
|
|
|
|||
Loading…
Reference in New Issue