🔧 Backend v1.2.0 | Frontend v1.2.5 He implementado completamente el soporte para Anthropic Claude y corregido el problema de visualización en el módulo de configuración: 🎯 Cambios Implementados: 1. Backend - Soporte para Anthropic Claude Nuevos modelos agregados: Claude Sonnet 4.5 (Recomendado) - Equilibrio perfecto Claude Opus 4.5 - Máxima capacidad Claude Haiku 4.5 - Ultra rápido y económico Integración completa: Chat Assistant con Anthropic Generación de resúmenes PDF con Anthropic Manejo correcto de formato de mensajes (system separado) Configuración por defecto: claude-sonnet-4.5
68 lines
1.9 KiB
JavaScript
68 lines
1.9 KiB
JavaScript
// 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.2.5';
|
|
const urlsToCache = [
|
|
'/',
|
|
'/index.html'
|
|
];
|
|
|
|
// Instalación del service worker
|
|
self.addEventListener('install', (event) => {
|
|
console.log('Service Worker: Installing version', CACHE_NAME);
|
|
event.waitUntil(
|
|
caches.open(CACHE_NAME)
|
|
.then((cache) => {
|
|
console.log('Service Worker: Caching files');
|
|
return cache.addAll(urlsToCache);
|
|
})
|
|
// NO hacer skipWaiting automáticamente - esperar a que el usuario lo active
|
|
);
|
|
});
|
|
|
|
// Activación del service worker
|
|
self.addEventListener('activate', (event) => {
|
|
console.log('Service Worker: Activating...');
|
|
event.waitUntil(
|
|
caches.keys().then((cacheNames) => {
|
|
return Promise.all(
|
|
cacheNames.map((cacheName) => {
|
|
if (cacheName !== CACHE_NAME) {
|
|
console.log('Service Worker: Deleting old cache:', cacheName);
|
|
return caches.delete(cacheName);
|
|
}
|
|
})
|
|
);
|
|
})
|
|
// NO hacer claim automáticamente - solo cuando el usuario actualice manualmente
|
|
);
|
|
});
|
|
|
|
// Estrategia: Network First, fallback to Cache
|
|
self.addEventListener('fetch', (event) => {
|
|
event.respondWith(
|
|
fetch(event.request)
|
|
.then((response) => {
|
|
// Clone la respuesta
|
|
const responseToCache = response.clone();
|
|
|
|
// Actualizar cache con la nueva respuesta
|
|
caches.open(CACHE_NAME).then((cache) => {
|
|
cache.put(event.request, responseToCache);
|
|
});
|
|
|
|
return response;
|
|
})
|
|
.catch(() => {
|
|
// Si falla la red, usar cache
|
|
return caches.match(event.request);
|
|
})
|
|
);
|
|
});
|
|
|
|
// Mensaje para notificar actualización
|
|
self.addEventListener('message', (event) => {
|
|
if (event.data && event.data.type === 'SKIP_WAITING') {
|
|
self.skipWaiting();
|
|
}
|
|
});
|