rontend v1.3.6:

CORREGIDO: Sistema anti-duplicados para webhooks de respuestas
Agregado lastSaveTimestamp ref para rastrear el último guardado de cada pregunta
Validación: Si se intenta guardar la misma pregunta en menos de 1 segundo, se ignora
Logs en consola cuando se detecta y previene un guardado duplicado
This commit is contained in:
2025-12-08 09:11:50 -03:00
parent 49d3ef9db1
commit 7fd37d0992
5 changed files with 58 additions and 3 deletions

View File

@@ -1,7 +1,7 @@
{ {
"name": "checklist-frontend", "name": "checklist-frontend",
"private": true, "private": true,
"version": "1.3.5", "version": "1.3.6",
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",

View File

@@ -1,6 +1,6 @@
// Service Worker para PWA con detección de actualizaciones // Service Worker para PWA con detección de actualizaciones
// IMPORTANTE: Actualizar esta versión cada vez que se despliegue una nueva versión // IMPORTANTE: Actualizar esta versión cada vez que se despliegue una nueva versión
const CACHE_NAME = 'ayutec-v1.3.5'; const CACHE_NAME = 'ayutec-v1.3.6';
const urlsToCache = [ const urlsToCache = [
'/', '/',
'/index.html' '/index.html'

View File

@@ -4247,6 +4247,9 @@ function InspectionModal({ checklist, existingInspection, user, onClose, onCompl
const [currentQuestionIndex, setCurrentQuestionIndex] = useState(0) const [currentQuestionIndex, setCurrentQuestionIndex] = useState(0)
const [aiAnalyzing, setAiAnalyzing] = useState(false) const [aiAnalyzing, setAiAnalyzing] = useState(false)
// Sistema anti-duplicados: rastrear último guardado por pregunta
const lastSaveTimestamp = useRef({})
// AI Assistant Chat // AI Assistant Chat
const [showAIChat, setShowAIChat] = useState(false) const [showAIChat, setShowAIChat] = useState(false)
const [aiChatMessages, setAiChatMessages] = useState([]) const [aiChatMessages, setAiChatMessages] = useState([])
@@ -4419,6 +4422,17 @@ function InspectionModal({ checklist, existingInspection, user, onClose, onCompl
return return
} }
// ANTI-DUPLICADOS: Verificar si se guardó en el último segundo
const now = Date.now()
const lastSave = lastSaveTimestamp.current[questionId] || 0
if (now - lastSave < 1000) {
console.log(`⏭️ Saltando guardado duplicado para pregunta ${questionId} (última guardada hace ${now - lastSave}ms)`)
return
}
// Marcar timestamp de guardado
lastSaveTimestamp.current[questionId] = now
try { try {
const token = localStorage.getItem('token') const token = localStorage.getItem('token')
const API_URL = import.meta.env.VITE_API_URL || '' const API_URL = import.meta.env.VITE_API_URL || ''

View File

@@ -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" className="w-10 h-10 object-contain bg-white rounded p-1"
/> />
<p className="text-xs text-indigo-300 font-medium hover:text-indigo-200"> <p className="text-xs text-indigo-300 font-medium hover:text-indigo-200">
Ayutec v1.3.5 Ayutec v1.3.6
</p> </p>
</a> </a>
</div> </div>

41
lineas.ps1 Normal file
View File

@@ -0,0 +1,41 @@
param(
[Parameter(Mandatory=$true)]
[string]$Fecha
)
# Convertir fecha dd/mm/aaaa → yyyy-mm-dd
try {
$dateObj = [datetime]::ParseExact($Fecha, "dd/MM/yyyy", $null)
} catch {
Write-Host "❌ Formato inválido. Usa dd/mm/aaaa (ej: 05/12/2025)"
exit
}
$FechaISO = $dateObj.ToString("yyyy-MM-dd")
$desde = "$FechaISO 00:00"
$hasta = "$FechaISO 23:59"
$added = 0
$removed = 0
git log --since="$desde" --until="$hasta" --pretty=tformat: --numstat |
ForEach-Object {
$cols = $_.Split()
# Saltar líneas vacías
if ($cols.Length -lt 2) { return }
# Si Git muestra "-", ignorar esta línea
if ($cols[0] -eq "-" -or $cols[1] -eq "-") { return }
# Sumar líneas
$added += [int]$cols[0]
$removed += [int]$cols[1]
}
Write-Host "Fecha ingresada: $Fecha"
Write-Host "Fecha usada (ISO): $FechaISO"
Write-Host "Líneas añadidas: $added"
Write-Host "Líneas eliminadas: $removed"
Write-Host "Total neto: " ($added - $removed)