feat: Update Curriculum Studio with AI Assets panel to manually generate and input NotebookLM assets

This commit is contained in:
Hamza-Ayed
2026-08-29 02:01:52 +03:00
parent 074c08fc6f
commit 135a379b32
5 changed files with 217 additions and 5 deletions
@@ -171,24 +171,24 @@ class CurriculumController
return;
}
$content = CurriculumService::getLessonMarkdown($file);
$assets = CurriculumService::getLessonAiAssets($file);
$serverFullPath = realpath(__DIR__ . '/../../storage/curriculum') . '/' . ltrim($file, '/');
$response->json([
'status' => 'success',
'file' => $file,
'server_full_path' => $serverFullPath,
'content' => $content
'content' => $content,
'ai_assets' => $assets
]);
}
/**
* Save Lesson Markdown Content
*/
public function saveLessonContent(Request $request, Response $response): void
{
$body = $request->getBody();
$file = $body['file'] ?? '';
$content = $body['content'] ?? '';
$aiAssets = $body['ai_assets'] ?? null;
if (empty($file) || empty($content)) {
$response->status(400)->json(['status' => 'error', 'message' => 'بيانات الحفظ غير مكتملة']);
@@ -196,6 +196,10 @@ class CurriculumController
}
CurriculumService::saveLessonMarkdown($file, $content);
if ($aiAssets !== null) {
CurriculumService::saveLessonAiAssets($file, $aiAssets);
}
$serverFullPath = realpath(__DIR__ . '/../../storage/curriculum') . '/' . ltrim($file, '/');
$response->json([
@@ -204,4 +208,34 @@ class CurriculumController
'server_full_path' => $serverFullPath
]);
}
public function generateAiAssets(Request $request, Response $response): void
{
$body = $request->getBody();
$file = $body['file'] ?? '';
if (empty($file)) {
$response->status(400)->json(['status' => 'error', 'message' => 'مسار الملف مطلوب']);
return;
}
$content = CurriculumService::getLessonMarkdown($file);
if (empty($content)) {
$response->status(400)->json(['status' => 'error', 'message' => 'محتوى الدرس فارغ']);
return;
}
// Generate Assets
require_once __DIR__ . '/../Services/AiLessonEnhancerService.php';
// We will adapt the service call here since AiLessonEnhancerService expects lessonId.
// Actually, let's create a custom static method in AiLessonEnhancerService to accept raw text.
$assets = \App\Services\AiLessonEnhancerService::generateFromText('الدرس', $content);
if ($assets) {
CurriculumService::saveLessonAiAssets($file, $assets);
$response->json(['status' => 'success', 'ai_assets' => $assets]);
} else {
$response->status(500)->json(['status' => 'error', 'message' => 'فشل توليد المخرجات الذكية']);
}
}
}