diff --git a/frontend/package.json b/frontend/package.json index e1f5e91..c178dad 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { "name": "checklist-frontend", "private": true, - "version": "1.1.0", + "version": "1.2.0", "type": "module", "scripts": { "dev": "vite", diff --git a/frontend/public/service-worker.js b/frontend/public/service-worker.js index e1fcd1e..14a2248 100644 --- a/frontend/public/service-worker.js +++ b/frontend/public/service-worker.js @@ -1,6 +1,6 @@ // Service Worker para PWA con detección de actualizaciones // IMPORTANTE: Actualizar esta versión cada vez que se despliegue una nueva versión -const CACHE_NAME = 'ayutec-v1.1.0'; +const CACHE_NAME = 'ayutec-v1.2.0'; const urlsToCache = [ '/', '/index.html' diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 2e34423..a8dea73 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -2957,8 +2957,8 @@ function ChecklistsTab({ checklists, user, onChecklistCreated, onStartInspection

{editChecklistData.ai_mode === 'off' && '❌ El mecánico completa todo manualmente'} - {editChecklistData.ai_mode === 'assisted' && '💡 IA sugiere respuestas, el mecánico confirma'} - {editChecklistData.ai_mode === 'copilot' && '🤖 IA completa automáticamente, el mecánico revisa'} + {editChecklistData.ai_mode === 'assisted' && '💡 Asistente sugiere respuestas, el mecánico confirma'} + {editChecklistData.ai_mode === 'copilot' && '🤖 Asistente completa automáticamente, el mecánico revisa'}

@@ -3597,7 +3597,7 @@ function InspectionDetailModal({ inspection, user, onClose, onUpdate, onContinue {user?.role === 'admin' && answer.ai_analysis && (
- 🤖 Análisis de IA + 🤖 Análisis Ayutec
{Array.isArray(answer.ai_analysis) ? ( @@ -4755,7 +4755,7 @@ function InspectionModal({ checklist, existingInspection, user, onClose, onCompl } })) - alert('✅ Documentos cargados (sin análisis IA)') + alert('✅ Documentos cargados (sin análisis del asistente)') } finally { setAiAnalyzing(false) } @@ -4956,10 +4956,11 @@ function InspectionModal({ checklist, existingInspection, user, onClose, onCompl
setVehicleData({ ...vehicleData, or_number: e.target.value })} className="w-full px-3 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500" @@ -5086,15 +5087,13 @@ function InspectionModal({ checklist, existingInspection, user, onClose, onCompl type="button" onClick={() => { setShowAIChat(true) - // Cargar historial si existe - if (answers[currentQuestion.id]?.chatHistory) { - setAiChatMessages(answers[currentQuestion.id].chatHistory) - } + // SIEMPRE inicializar - cargar historial guardado O array vacío para nueva sesión + setAiChatMessages(answers[currentQuestion.id]?.chatHistory || []) }} className="w-full mt-3 px-4 py-3 bg-gradient-to-r from-purple-600 to-blue-600 text-white rounded-lg hover:from-purple-700 hover:to-blue-700 transition flex items-center justify-center gap-2 font-semibold shadow-lg" > 💬 - Consultar Asistente IA + Consultar Asistente {answers[currentQuestion.id]?.chatHistory?.length > 0 && ( {answers[currentQuestion.id].chatHistory.length} mensajes @@ -5282,7 +5281,7 @@ function InspectionModal({ checklist, existingInspection, user, onClose, onCompl const confirmChange = window.confirm( `⚠️ ADVERTENCIA DE COHERENCIA\n\n` + `Tu respuesta: "${answer.value}"\n` + - `Análisis de IA sugiere: "${aiData.expected_answer}"\n\n` + + `Asistente sugiere: "${aiData.expected_answer}"\n\n` + `La imagen muestra:\n${aiData.observations || 'Sin detalles'}\n\n` + `¿Deseas cambiar tu respuesta antes de continuar?\n\n` + `• Presiona CANCELAR para revisar y cambiar tu respuesta\n` + @@ -5328,7 +5327,7 @@ function InspectionModal({ checklist, existingInspection, user, onClose, onCompl const confirmChange = window.confirm( `⚠️ ADVERTENCIA DE COHERENCIA\n\n` + `Tu respuesta: "${answer.value}"\n` + - `Análisis de IA sugiere: "${aiData.expected_answer}"\n\n` + + `Asistente sugiere: "${aiData.expected_answer}"\n\n` + `La imagen muestra:\n${aiData.observations || 'Sin detalles'}\n\n` + `¿Deseas cambiar tu respuesta antes de completar?\n\n` + `• Presiona CANCELAR para revisar y cambiar tu respuesta\n` + @@ -5595,8 +5594,12 @@ function AIAssistantChatModal({ question, inspection, allAnswers, messages, setM
- 💬 -

Asistente IA

+ Ayutec +

Asistente Ayutec

{question.text} @@ -5623,9 +5626,15 @@ function AIAssistantChatModal({ question, inspection, allAnswers, messages, setM

{messages.length === 0 && (
-
🤖
+
+ Ayutec +

- ¡Hola! Soy tu asistente técnico. + ¡Hola! Soy tu Asistente Ayutec.

He analizado las fotos anteriores. ¿En qué puedo ayudarte? diff --git a/frontend/src/QuestionAnswerInput.jsx b/frontend/src/QuestionAnswerInput.jsx index 0b65dab..daa06af 100644 --- a/frontend/src/QuestionAnswerInput.jsx +++ b/frontend/src/QuestionAnswerInput.jsx @@ -292,16 +292,16 @@ export function QuestionAnswerInput({ question, value, onChange, onSave }) { ) } - // AI_ASSISTANT (Chat con IA) + // AI_ASSISTANT (Chat con asistente) if (questionType === 'ai_assistant') { return (

💬 -

Asistente IA Disponible

+

Asistente Disponible

- Haz clic en el botón "💬 Consultar Asistente" debajo para abrir el chat con IA. + Haz clic en el botón "💬 Consultar Asistente" debajo para abrir el chat. El asistente ha analizado las fotos anteriores y está listo para ayudarte.

diff --git a/frontend/src/QuestionTypeEditor.jsx b/frontend/src/QuestionTypeEditor.jsx index 6f8dbb1..07029ec 100644 --- a/frontend/src/QuestionTypeEditor.jsx +++ b/frontend/src/QuestionTypeEditor.jsx @@ -24,7 +24,7 @@ const QUESTION_TYPES = [ { value: 'date', label: '📅 Fecha', icon: '📆' }, { value: 'time', label: '🕐 Hora', icon: '⏰' }, { value: 'photo_only', label: '📸 Solo Fotografía', icon: '📷' }, - { value: 'ai_assistant', label: '🤖 Asistente IA (Chat)', icon: '💬' } + { value: 'ai_assistant', label: '🤖 Asistente (Chat)', icon: '💬' } ] const STATUS_OPTIONS = [ @@ -543,9 +543,9 @@ export function QuestionTypeEditor({ value, onChange, maxPoints = 1 }) {
💬
-

Asistente IA Conversacional

+

Asistente Conversacional

- El mecánico podrá chatear con IA usando fotos de preguntas anteriores como contexto. + El mecánico podrá chatear con el asistente usando fotos de preguntas anteriores como contexto. Configura qué preguntas anteriores usar y el comportamiento del asistente.

diff --git a/frontend/src/Sidebar.jsx b/frontend/src/Sidebar.jsx index 72c8071..d741c36 100644 --- a/frontend/src/Sidebar.jsx +++ b/frontend/src/Sidebar.jsx @@ -153,7 +153,7 @@ export default function Sidebar({ user, activeTab, setActiveTab, sidebarOpen, se className="w-10 h-10 object-contain bg-white rounded p-1" />

- Ayutec v1.1.0 + Ayutec v1.2.0