+4
-4
lib/infrastructure/adapters/demo/pull-request.adapter.ts
+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
+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
+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