feat: multi-provider AI support with auto-detection

- Added support for Google Gemini, OpenAI, Anthropic, and Azure OpenAI
- Implemented API key validation with auto model detection
- Added Error Boundary for better error handling
- Migrated PDF generation to native jsPDF (better quality)
- Added PWA support with offline capabilities
- Implemented tests with Vitest
- Fixed language consistency (PT-BR)
- Improved accessibility (ARIA)
This commit is contained in:
2026-04-04 19:32:00 +00:00
parent bd9592eb73
commit 97eb42c243
22 changed files with 2988 additions and 966 deletions

22
public/manifest.json Normal file
View File

@@ -0,0 +1,22 @@
{
"name": "SteelCheck - Análise de Qualidade Industrial",
"short_name": "SteelCheck",
"description": "Plataforma de análise de certificados de qualidade com IA",
"start_url": "/",
"display": "standalone",
"background_color": "#0f172a",
"theme_color": "#1e40af",
"orientation": "portrait-primary",
"icons": [
{
"src": "/icon-192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "/icon-512.png",
"sizes": "512x512",
"type": "image/png"
}
]
}

35
public/sw.js Normal file
View File

@@ -0,0 +1,35 @@
const CACHE_NAME = 'steelcheck-v1';
const ASSETS = [
'/',
'/index.html',
'/index.tsx',
'/style.css'
];
self.addEventListener('install', (event) => {
event.waitUntil(
caches.open(CACHE_NAME).then((cache) => {
return cache.addAll(ASSETS);
})
);
});
self.addEventListener('fetch', (event) => {
event.respondWith(
caches.match(event.request).then((response) => {
return response || fetch(event.request);
})
);
});
self.addEventListener('activate', (event) => {
event.waitUntil(
caches.keys().then((cacheNames) => {
return Promise.all(
cacheNames
.filter((name) => name !== CACHE_NAME)
.map((name) => caches.delete(name))
);
})
);
});