@@ -36,14 +36,16 @@ import { useDebateMotionGate } from '@/components/features/debate/DebateMotionGa
3636
3737export default function GeneratePage ( ) {
3838 const workspace = useWorkspaceToolScope ( 'generate' ) ;
39- const { generateResult, generateLoading, generateRegeneratingSection : regeneratingSection , generateForm, setGenerateResult, setGenerateLoading, setGenerateRegeneratingSection, saveCurrentCase, setPendingFlowchartData, autosavedCases, recordResult, updateRecordedResult } = useSessionStore ( useShallow ( ( state ) => ( {
39+ const { generateResult, generateLoading, generateRegeneratingSection : regeneratingSection , generateForm, generateResultDebateId , setGenerateResult, setGenerateLoading, setGenerateRegeneratingSection, setGenerateResultDebateId , saveCurrentCase, setPendingFlowchartData, autosavedCases, recordResult, updateRecordedResult } = useSessionStore ( useShallow ( ( state ) => ( {
4040 generateResult : state . generateResult ,
4141 generateLoading : state . generateLoading ,
4242 generateRegeneratingSection : state . generateRegeneratingSection ,
4343 generateForm : state . generateForm ,
44+ generateResultDebateId : state . generateResultDebateId ,
4445 setGenerateResult : state . setGenerateResult ,
4546 setGenerateLoading : state . setGenerateLoading ,
4647 setGenerateRegeneratingSection : state . setGenerateRegeneratingSection ,
48+ setGenerateResultDebateId : state . setGenerateResultDebateId ,
4749 saveCurrentCase : state . saveCurrentCase ,
4850 setPendingFlowchartData : state . setPendingFlowchartData ,
4951 autosavedCases : state . autosavedCases ,
@@ -107,6 +109,7 @@ export default function GeneratePage() {
107109 setGenerateResult ( result ) ;
108110 setRecordedCaseId ( null ) ;
109111 setResultDebateId ( target . debateId ) ;
112+ setGenerateResultDebateId ( target . debateId ) ;
110113 await workspace . attach ( data , result ) ;
111114 if ( target . debateId ) {
112115 setRecordedCaseId ( await recordInDebate ( ( ) => recordResult ( 'case' , { title : data . motion , input : data , output : result , debateId : target . debateId , side : data . side } ) ) ) ;
@@ -135,26 +138,31 @@ export default function GeneratePage() {
135138
136139 const handleRegenerateSection = ( section : string ) => {
137140 if ( generateLoading || regeneratingSection ) return ;
138- if ( ! generateForm ?. motion || ! generateResult ) {
141+ const motion = generateResult ?. metadata ?. motion ?. trim ( ) || generateForm ?. motion ;
142+ if ( ! motion || ! generateResult ) {
139143 toast ( { title : t ( 'generate.regenerateUnavailable' , 'Cannot regenerate yet' ) , description : t ( 'generate.regenerateUnavailableDesc' , 'Generate a case first, then retry a section.' ) , variant : 'destructive' } ) ;
140144 return ;
141145 }
142146
143147 const data : GenerateInput = {
144- motion : generateForm . motion ,
145- side : generateForm . side || 'pro' ,
146- format : generateForm . format || 'custom' ,
147- role : generateForm . role || 'r1' ,
148- length : generateForm . length || 'standard' ,
149- audience : generateForm . audience || 'intermediate' ,
150- tone : generateForm . tone || 'formal' ,
148+ motion,
149+ side : generateResult . metadata ?. side || generateForm ? .side || 'pro' ,
150+ format : generateForm ? .format || 'custom' ,
151+ role : generateForm ? .role || 'r1' ,
152+ length : generateForm ? .length || 'standard' ,
153+ audience : generateForm ? .audience || 'intermediate' ,
154+ tone : generateForm ? .tone || 'formal' ,
151155 } ;
152156
153157 // Regenerate against the result's own debate, never whichever is current now.
158+ // A loaded case records that debate on the store; this page's state only
159+ // knows it until the student leaves and comes back.
154160 const current = selectCurrentDebate ( useDebateStore . getState ( ) ) ;
155161 const debateId = resultDebateId !== undefined
156162 ? resultDebateId
157- : sameMotion ( current ?. motion , data . motion ) ? activeDebateId ( ) : null ;
163+ : generateResultDebateId !== undefined
164+ ? generateResultDebateId
165+ : sameMotion ( current ?. motion , data . motion ) ? activeDebateId ( ) : null ;
158166 // One section at a time: each regeneration merges into the result it started from.
159167 const base = generateResult ;
160168 setGenerateRegeneratingSection ( section ) ;
0 commit comments