Open Source Team Metrics based on PRs

category fix

Changed files
+9 -9
lib
infrastructure
+4 -4
lib/infrastructure/adapters/demo/pull-request.adapter.ts
··· 54 54 mergedAt: summary.mergedAt ? summary.mergedAt.toISOString() : '', 55 55 cycleTime: summary.mergedAt ? 56 56 Math.round((summary.mergedAt.getTime() - summary.createdAt.getTime()) / (1000 * 60 * 60) * 10) / 10 : 0, 57 - investmentArea: summary.category?.name || 'Feature Development', 57 + investmentArea: summary.category?.name || 'Uncertain', 58 58 linesAdded: summary.additions, 59 59 files: Math.floor((summary.additions + summary.deletions) / 50) + 1 60 60 })), ··· 213 213 mergedAt: summary.mergedAt ? summary.mergedAt.toISOString() : '', 214 214 cycleTime: summary.mergedAt ? 215 215 Math.round((summary.mergedAt.getTime() - summary.createdAt.getTime()) / (1000 * 60 * 60) * 10) / 10 : 0, 216 - investmentArea: summary.category?.name || 'Feature Development', 216 + investmentArea: summary.category?.name || 'Uncertain', 217 217 linesAdded: summary.additions, 218 218 files: Math.floor((summary.additions + summary.deletions) / 50) + 1 219 219 })), ··· 260 260 mergedAt: summary.mergedAt ? summary.mergedAt.toISOString() : '', 261 261 cycleTime: summary.mergedAt ? 262 262 Math.round((summary.mergedAt.getTime() - summary.createdAt.getTime()) / (1000 * 60 * 60) * 10) / 10 : 0, 263 - investmentArea: summary.category?.name || 'Feature Development', 263 + investmentArea: summary.category?.name || 'Uncertain', 264 264 linesAdded: summary.additions, 265 265 files: Math.floor((summary.additions + summary.deletions) / 50) + 1 266 266 })), ··· 311 311 mergedAt: summary.mergedAt ? summary.mergedAt.toISOString() : '', 312 312 cycleTime: summary.mergedAt ? 313 313 Math.round((summary.mergedAt.getTime() - summary.createdAt.getTime()) / (1000 * 60 * 60) * 10) / 10 : 0, 314 - investmentArea: summary.category?.name || 'Feature Development', 314 + investmentArea: summary.category?.name || 'Uncertain', 315 315 linesAdded: summary.additions, 316 316 files: Math.floor((summary.additions + summary.deletions) / 50) + 1 317 317 })),
+3 -3
lib/infrastructure/adapters/turso/mappers.ts
··· 34 34 mergedAt: dbPR.merged_at ? new Date(dbPR.merged_at).toISOString() : '', 35 35 cycleTime: dbPR.merged_at ? 36 36 calculateCycleTimeHours(new Date(dbPR.created_at).toISOString(), new Date(dbPR.merged_at).toISOString()) : 0, 37 - investmentArea: 'Feature Development', // Would need category lookup 37 + investmentArea: 'Uncertain', // Would need category lookup 38 38 linesAdded: dbPR.additions || 0, 39 39 files: dbPR.changed_files || 0 40 40 } ··· 67 67 mergedAt: dbPR.merged_at ? new Date(dbPR.merged_at).toISOString() : '', 68 68 cycleTime: dbPR.merged_at ? 69 69 calculateCycleTimeHours(new Date(dbPR.created_at).toISOString(), new Date(dbPR.merged_at).toISOString()) : 0, 70 - investmentArea: categoryName || 'Feature Development', 70 + investmentArea: categoryName || 'Uncertain', 71 71 linesAdded: dbPR.additions || 0, 72 72 files: dbPR.changed_files || 0 73 73 } ··· 184 184 id: pr.repository_id.toString(), 185 185 name: pr.repository_name || 'unknown' 186 186 }, 187 - investmentArea: pr.category_name || 'Feature Development' 187 + investmentArea: pr.category_name || 'Uncertain' 188 188 } 189 189 } 190 190
+2 -2
lib/infrastructure/adapters/turso/pull-request.adapter.ts
··· 174 174 const startDate = new Date(endDate) 175 175 startDate.setDate(startDate.getDate() - days) 176 176 177 - // Get categories 177 + // Get categories (include both organization-specific and default categories) 178 178 const categories = await query<{ id: number; name: string; color: string }>(` 179 179 SELECT id, name, COALESCE(color, '#6b7280') as color 180 180 FROM categories 181 - WHERE organization_id = ? 181 + WHERE organization_id = ? OR is_default = 1 182 182 ORDER BY name 183 183 `, [parseInt(organizationId)]) 184 184