diff --git a/api/services/sessions/patterns.ts b/api/services/sessions/patterns.ts index f57493f..dd4f522 100644 --- a/api/services/sessions/patterns.ts +++ b/api/services/sessions/patterns.ts @@ -92,7 +92,11 @@ export function detectSkillsHighErrorRate(ctx: DetectCtx): Pattern[] { for (const sk of skills) { const entry = bySkill.get(sk) ?? { total: 0, fail: 0, ids: [] } entry.total++ - if (r.outcome === 'error' || r.outcome === 'interrupted') { + // Interrupções em sessões longas (≥10 eventos) são redirects naturais do utilizador, + // não falhas da skill. Só contar erros reais ou interrupções muito precoces. + const isRealFailure = r.outcome === 'error' || + (r.outcome === 'interrupted' && (r.event_count ?? 0) < 10) + if (isRealFailure) { entry.fail++ if (entry.ids.length < 5) entry.ids.push(r.session_id) } diff --git a/package-lock.json b/package-lock.json index 1f31d08..794fc77 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7967,9 +7967,9 @@ } }, "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.12.tgz", + "integrity": "sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==", "dev": true, "funding": [ {