feat: Update Curriculum Studio with AI Assets panel to manually generate and input NotebookLM assets
This commit is contained in:
@@ -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' => 'فشل توليد المخرجات الذكية']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user