diff --git a/api/generate_process_suggestion.php b/api/generate_process_suggestion.php
new file mode 100644
index 0000000..0c2f684
--- /dev/null
+++ b/api/generate_process_suggestion.php
@@ -0,0 +1,33 @@
+ [
+ ['role' => 'system', 'content' => 'You are a helpful assistant that generates process names and descriptions.'],
+ ['role' => 'user', 'content' => $prompt],
+ ],
+ 'model' => 'gpt-5-mini', // Using the default model from ai/config.php
+];
+
+$response = LocalAIApi::createResponse($params);
+
+if (!empty($response['success'])) {
+ $decoded = LocalAIApi::decodeJsonFromResponse($response);
+ if ($decoded && isset($decoded['name']) && isset($decoded['description'])) {
+ echo json_encode(['success' => true, 'data' => $decoded]);
+ } else {
+ // Fallback if AI didn't return valid JSON or missing keys
+ $text = LocalAIApi::extractText($response);
+ echo json_encode(['success' => false, 'error' => 'AI response not in expected JSON format: ' . substr($text, 0, 200)]);
+ }
+} else {
+ $error_message = $response['error'] ?? 'Unknown AI error';
+ echo json_encode(['success' => false, 'error' => $error_message]);
+}
+?>
\ No newline at end of file
diff --git a/index.php b/index.php
index 45f8b55..f0ed187 100644
--- a/index.php
+++ b/index.php
@@ -107,6 +107,12 @@ $project_image_url = htmlspecialchars($_SERVER['PROJECT_IMAGE_URL'] ?? '');
+
+
+
@@ -179,6 +185,43 @@ $project_image_url = htmlspecialchars($_SERVER['PROJECT_IMAGE_URL'] ?? '');
});
feather.replace()
+
+ // AI Suggestion Feature
+ const aiSuggestBtn = document.getElementById('aiSuggestBtn');
+ const aiSuggestSpinner = document.getElementById('aiSuggestSpinner');
+ const processNameInput = document.getElementById('name');
+ const processDescriptionInput = document.getElementById('description');
+ const messageArea = document.getElementById('message-area');
+
+ if (aiSuggestBtn) {
+ aiSuggestBtn.addEventListener('click', async () => {
+ aiSuggestBtn.disabled = true;
+ aiSuggestSpinner.classList.remove('d-none');
+ messageArea.innerHTML = ''; // Clear previous messages
+
+ const keyword = processNameInput.value.trim();
+ const queryParam = keyword ? `?keyword=${encodeURIComponent(keyword)}` : '';
+
+ try {
+ const response = await fetch(`api/generate_process_suggestion.php${queryParam}`);
+ const data = await response.json();
+
+ if (data.success) {
+ processNameInput.value = data.data.name;
+ processDescriptionInput.value = data.data.description;
+ messageArea.innerHTML = 'AI suggestion generated successfully!
';
+ } else {
+ messageArea.innerHTML = `Failed to get AI suggestion: ${data.error}
`;
+ }
+ } catch (error) {
+ console.error('Error fetching AI suggestion:', error);
+ messageArea.innerHTML = 'An error occurred while fetching AI suggestion. Please try again.
';
+ } finally {
+ aiSuggestBtn.disabled = false;
+ aiSuggestSpinner.classList.add('d-none');
+ }
+ });
+ }