$base = storage_path('app/p3man'); $dirs = glob($base.'/*', GLOB_ONLYDIR); $ins=0; $dup=0; $skip0=0; $wordfib=[]; $papers=0; foreach ($dirs as $d) { $mf = $d.'/manifest.json'; if (!file_exists($mf)) continue; $m = json_decode(file_get_contents($mf), true); if (!$m || empty($m['questions'])) continue; $papers++; $sp = $m['paper']['source_prefix'] ?? basename($d); $slug = trim(preg_replace('/[^a-z0-9]+/','-', strtolower($sp)), '-'); foreach ($m['questions'] as $q) { $tid = $q['type_id'] ?? null; if ($tid === 0) { $skip0++; continue; } $source = $q['source'] ?? ($sp.' Q'.($q['n']??'?')); if (DB::table('questions')->where('source',$source)->where('question',$q['question']??'')->exists()) { $dup++; continue; } $img = (!empty($q['image_needed']) && empty($q['image_options'])) ? ('p3/images/'.$slug.'-q'.($q['n']??'x').'.png') : null; $a0 = (string)($q['answer0'] ?? ''); if ($tid==2 && $a0!=='' && !preg_match('#^[0-9+\-=.$\x{00A2}<>/: ]+$#u',$a0)) $wordfib[] = $source.' = '.$a0; $id = DB::table('questions')->insertGetId([ 'skill_id'=>$q['skill_id']??null, 'difficulty_id'=>$q['difficulty_id']??2, 'user_id'=>2, 'question'=>$q['question']??'', 'explanation'=>$q['explanation']??null, 'question_image'=>$img, 'answer0'=>$q['answer0']??null, 'answer1'=>$q['answer1']??null, 'answer2'=>$q['answer2']??null, 'answer3'=>$q['answer3']??null, 'correct_answer'=>$q['correct_answer']??null, 'source'=>$source, 'type_id'=>$tid, 'status_id'=> (!empty($q['image_needed']) ? 4 : 6), 'qa_status'=>'ai_generated', 'created_at'=>now(), 'updated_at'=>now(), ]); if (!empty($q['hints'])) { $lvl=1; foreach ($q['hints'] as $h) { if ($h) DB::table('hints')->insert(['question_id'=>$id,'hint_level'=>$lvl,'hint_text'=>$h,'user_id'=>2,'created_at'=>now(),'updated_at'=>now()]); $lvl++; } } if (!empty($q['explanation'])) DB::table('solutions')->insert(['question_id'=>$id,'status_id'=>4,'source'=>'ai','user_id'=>2,'solution'=>$q['explanation'],'created_at'=>now(),'updated_at'=>now()]); $ins++; } } echo "PAPERS=$papers INSERTED=$ins DUPES=$dup SKIPPED_t0=$skip0\n"; echo "WORDFIB(".count($wordfib)."):\n".implode("\n",$wordfib)."\n";