first commit
This commit is contained in:
170
AI_FUNCTIONALITY.md
Normal file
170
AI_FUNCTIONALITY.md
Normal file
@@ -0,0 +1,170 @@
|
||||
# Sistema de IA para Checklists Inteligentes
|
||||
|
||||
## Modos de IA
|
||||
|
||||
### 1. **OFF (Sin IA)**
|
||||
- El mecánico completa manualmente todas las respuestas
|
||||
- Sin sugerencias ni asistencia automática
|
||||
- Control total del usuario
|
||||
|
||||
### 2. **ASSISTED (IA Asistida)**
|
||||
**Funcionalidades:**
|
||||
- **Análisis de fotos**: Cuando el mecánico sube una foto, la IA analiza la imagen y sugiere:
|
||||
- Estado del componente (bueno/malo)
|
||||
- Nivel de criticidad (ok/minor/critical)
|
||||
- Observaciones automáticas basadas en lo que detecta
|
||||
- **Sugerencias contextuales**: Basándose en respuestas previas
|
||||
- **Detección de anomalías**: Si detecta algo crítico, lo marca automáticamente
|
||||
- **El mecánico puede aceptar o rechazar** las sugerencias
|
||||
|
||||
**Ejemplo de flujo:**
|
||||
```
|
||||
1. Mecánico sube foto de pastillas de freno
|
||||
2. IA analiza: "Desgaste del 85%, menos de 2mm de material"
|
||||
3. Sugiere: Estado=Crítico, Requiere reemplazo inmediato
|
||||
4. Mecánico revisa y confirma o modifica
|
||||
```
|
||||
|
||||
### 3. **FULL (IA Completa - Copilot)**
|
||||
**Funcionalidades:**
|
||||
- **Inspección automática por fotos**: El mecánico solo toma fotos
|
||||
- **Análisis completo**: La IA responde todas las preguntas automáticamente
|
||||
- **Generación de informe**: Crea observaciones y recomendaciones
|
||||
- **Detección de problemas**: Marca automáticamente items críticos
|
||||
- **El mecánico solo revisa y firma** al final
|
||||
|
||||
**Ejemplo de flujo:**
|
||||
```
|
||||
1. Mecánico toma 20 fotos del vehículo
|
||||
2. IA procesa todas las fotos
|
||||
3. Responde las 99 preguntas automáticamente
|
||||
4. Genera observaciones detalladas
|
||||
5. Marca 3 items como críticos
|
||||
6. Mecánico revisa el informe completo
|
||||
7. Ajusta si es necesario
|
||||
8. Firma y completa
|
||||
```
|
||||
|
||||
## Implementación Técnica
|
||||
|
||||
### Análisis de Imágenes con OpenAI Vision
|
||||
```javascript
|
||||
// Frontend: Subir foto
|
||||
const analyzeImage = async (imageFile, questionType) => {
|
||||
const formData = new FormData()
|
||||
formData.append('image', imageFile)
|
||||
formData.append('question_id', questionId)
|
||||
|
||||
const response = await fetch('/api/analyze-image', {
|
||||
method: 'POST',
|
||||
body: formData
|
||||
})
|
||||
|
||||
return response.json() // { status, observations, confidence }
|
||||
}
|
||||
```
|
||||
|
||||
### Backend: Procesamiento con IA
|
||||
```python
|
||||
# Backend: Analizar imagen con OpenAI GPT-4 Vision
|
||||
import openai
|
||||
from PIL import Image
|
||||
|
||||
async def analyze_vehicle_component(image_path: str, question: Question):
|
||||
# Cargar imagen
|
||||
with open(image_path, 'rb') as f:
|
||||
image_data = f.read()
|
||||
|
||||
# Prompt especializado según tipo de pregunta
|
||||
prompts = {
|
||||
"brakes": "Analiza el estado de las pastillas de freno. Indica desgaste, grietas, material restante.",
|
||||
"tires": "Evalúa la banda de rodadura, presión aparente, desgaste irregular.",
|
||||
"lights": "Verifica funcionamiento de luces, roturas, opacidad.",
|
||||
# ... más prompts especializados
|
||||
}
|
||||
|
||||
# Llamada a OpenAI Vision API
|
||||
response = openai.ChatCompletion.create(
|
||||
model="gpt-4-vision-preview",
|
||||
messages=[{
|
||||
"role": "user",
|
||||
"content": [
|
||||
{"type": "text", "text": prompts.get(question.section, "Analiza este componente")},
|
||||
{"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{image_data}"}}
|
||||
]
|
||||
}],
|
||||
max_tokens=300
|
||||
)
|
||||
|
||||
# Parsear respuesta
|
||||
ai_analysis = response.choices[0].message.content
|
||||
|
||||
# Determinar status según análisis
|
||||
if "crítico" in ai_analysis.lower() or "falla" in ai_analysis.lower():
|
||||
status = "critical"
|
||||
elif "menor" in ai_analysis.lower() or "atención" in ai_analysis.lower():
|
||||
status = "minor"
|
||||
else:
|
||||
status = "ok"
|
||||
|
||||
return {
|
||||
"status": status,
|
||||
"observations": ai_analysis,
|
||||
"confidence": 0.85,
|
||||
"ai_analysis": {
|
||||
"raw_response": ai_analysis,
|
||||
"model": "gpt-4-vision",
|
||||
"timestamp": datetime.now()
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Ventajas de cada modo
|
||||
|
||||
### OFF
|
||||
✅ Control total del mecánico
|
||||
✅ Sin dependencia de conectividad
|
||||
✅ Sin costos de API
|
||||
|
||||
### ASSISTED
|
||||
✅ Ayuda al mecánico a no olvidar detalles
|
||||
✅ Documenta mejor con análisis de fotos
|
||||
✅ Reduce errores humanos
|
||||
✅ Aprende patrones comunes
|
||||
⚠️ Requiere internet y API key
|
||||
|
||||
### FULL
|
||||
✅ Rapidez extrema (5-10 min vs 30-40 min)
|
||||
✅ Consistencia en evaluaciones
|
||||
✅ Ideal para inspecciones masivas
|
||||
✅ Genera informes detallados automáticamente
|
||||
⚠️ Requiere validación del mecánico
|
||||
⚠️ Mayor costo de API
|
||||
|
||||
## Casos de Uso Recomendados
|
||||
|
||||
**OFF**:
|
||||
- Talleres sin internet estable
|
||||
- Inspecciones básicas
|
||||
- Presupuesto limitado
|
||||
|
||||
**ASSISTED**:
|
||||
- Talleres medianos/grandes
|
||||
- Inspecciones preventivas
|
||||
- Documentación detallada requerida
|
||||
|
||||
**FULL**:
|
||||
- Flotas de vehículos
|
||||
- Inspecciones pre-compra masivas
|
||||
- Talleres de alto volumen
|
||||
- Empresas de rent-a-car
|
||||
|
||||
## Próximos pasos de implementación
|
||||
|
||||
1. ✅ Estructura de base de datos preparada
|
||||
2. ⏳ Endpoint `/api/analyze-image` para análisis
|
||||
3. ⏳ Integración con OpenAI Vision API
|
||||
4. ⏳ UI para mostrar sugerencias de IA
|
||||
5. ⏳ Sistema de confianza (confidence score)
|
||||
6. ⏳ Historial de sugerencias aceptadas/rechazadas
|
||||
7. ⏳ Fine-tuning del modelo con datos reales
|
||||
Reference in New Issue
Block a user