fix(sessions): outliers de duração ignoram outcome unknown e publicação no departamento Tecnologia (#14404)
This commit is contained in:
@@ -87,8 +87,8 @@ interface MCPToolCallResult {
|
||||
const OBSERVABILIDADE_STAFF_ID = 25
|
||||
/** Discussão Desk onde os resumos semanais são publicados */
|
||||
const OBSERVABILIDADE_DISCUSSION_ID = 32
|
||||
/** Departamento "Geral" no Desk CRM (id=1) */
|
||||
const OBSERVABILIDADE_DEPARTMENT_ID = 1
|
||||
/** Departamento "Tecnologia" no Desk CRM (id=7; o id=1 é "Comercial" — #14404) */
|
||||
const OBSERVABILIDADE_DEPARTMENT_ID = 7
|
||||
|
||||
function parseArgs(argv: string[]): Args {
|
||||
const a: Args = { publish: false, force: false, backfill: false }
|
||||
|
||||
@@ -188,7 +188,9 @@ export function detectSkillToolPairs(ctx: DetectCtx): Pattern[] {
|
||||
}))
|
||||
}
|
||||
|
||||
/** 4. Duration outliers: sessões > p95 por projecto com outcome != completed. */
|
||||
/** 4. Duration outliers: sessões > p95 por projecto com outcome de falha medido (error/interrupted).
|
||||
* `unknown` não conta: significa outcome não medido (ex.: sessões cron do Hermes, project_slug NULL,
|
||||
* 100% `unknown`), e contá-lo gerava ~5% de "outliers" todas as semanas por construção (#14404). */
|
||||
export function detectDurationOutliers(ctx: DetectCtx): Pattern[] {
|
||||
const rows = baseRows(ctx).filter((r) => r.duration_sec != null && r.duration_sec > 0)
|
||||
const byProject = new Map<string, Array<typeof rows[number]>>()
|
||||
@@ -203,7 +205,8 @@ export function detectDurationOutliers(ctx: DetectCtx): Pattern[] {
|
||||
const durations = arr.map((r) => r.duration_sec as number).sort((a, b) => a - b)
|
||||
const p95Idx = Math.max(0, Math.floor(durations.length * 0.95) - 1)
|
||||
const p95 = durations[p95Idx]
|
||||
const outliers = arr.filter((r) => (r.duration_sec as number) > p95 && r.outcome !== 'completed')
|
||||
const outliers = arr.filter((r) => (r.duration_sec as number) > p95 &&
|
||||
r.outcome !== 'completed' && r.outcome !== 'unknown')
|
||||
if (outliers.length < 3) continue
|
||||
out.push({
|
||||
pattern_key: `duration_outliers:${proj}`,
|
||||
|
||||
Reference in New Issue
Block a user