Skip to content

Commit 668c2ec

Browse files
committed
Generated by Spark: seems like the requests shown are not correclty linked to the info in the csv. "o3-mini-2025-01-31" model counts as 0.33 instead of 1 ( in the "Requests Used" column) and the tables and chart now show "0".
1 parent 8cf66c2 commit 668c2ec

3 files changed

Lines changed: 14 additions & 14 deletions

File tree

src/App.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ function App() {
261261
<div className="p-5">
262262
<h3 className="text-sm font-medium text-muted-foreground mb-1">Total Requests</h3>
263263
<p className="text-2xl font-bold">
264-
{data.reduce((sum, item) => sum + item.requestsUsed, 0).toLocaleString()}
264+
{data.reduce((sum, item) => sum + item.requestsUsed, 0).toLocaleString(undefined, {maximumFractionDigits: 2, minimumFractionDigits: 0})}
265265
</p>
266266
</div>
267267
</Card>
@@ -301,9 +301,9 @@ function App() {
301301
{modelSummary.map((item) => (
302302
<TableRow key={item.model}>
303303
<TableCell className="font-medium">{item.model}</TableCell>
304-
<TableCell className="text-right">{item.totalRequests.toLocaleString()}</TableCell>
305-
<TableCell className="text-right">{item.compliantRequests.toLocaleString()}</TableCell>
306-
<TableCell className="text-right">{item.exceedingRequests.toLocaleString()}</TableCell>
304+
<TableCell className="text-right">{item.totalRequests.toLocaleString(undefined, {maximumFractionDigits: 2, minimumFractionDigits: 0})}</TableCell>
305+
<TableCell className="text-right">{item.compliantRequests.toLocaleString(undefined, {maximumFractionDigits: 2, minimumFractionDigits: 0})}</TableCell>
306+
<TableCell className="text-right">{item.exceedingRequests.toLocaleString(undefined, {maximumFractionDigits: 2, minimumFractionDigits: 0})}</TableCell>
307307
</TableRow>
308308
))}
309309
</TableBody>
@@ -371,14 +371,14 @@ function App() {
371371
<div className="w-2 h-2 rounded-full bg-[#10b981]" />
372372
<span>Compliant:</span>
373373
</div>
374-
<div className="text-right">{compliant}</div>
374+
<div className="text-right">{Number(compliant).toLocaleString(undefined, {maximumFractionDigits: 2, minimumFractionDigits: 0})}</div>
375375
<div className="flex items-center gap-1.5">
376376
<div className="w-2 h-2 rounded-full bg-[#ef4444]" />
377377
<span>Exceeding:</span>
378378
</div>
379-
<div className="text-right">{exceeding}</div>
379+
<div className="text-right">{Number(exceeding).toLocaleString(undefined, {maximumFractionDigits: 2, minimumFractionDigits: 0})}</div>
380380
<div className="font-medium">Total:</div>
381-
<div className="text-right font-medium">{total}</div>
381+
<div className="text-right font-medium">{Number(total).toLocaleString(undefined, {maximumFractionDigits: 2, minimumFractionDigits: 0})}</div>
382382
</div>
383383
</div>
384384
</div>
@@ -449,7 +449,7 @@ function App() {
449449
/>
450450
<span>{entry.name}:</span>
451451
</div>
452-
<div className="font-medium">{entry.value}</div>
452+
<div className="font-medium">{Number(entry.value).toLocaleString(undefined, {maximumFractionDigits: 2, minimumFractionDigits: 0})}</div>
453453
</div>
454454
))}
455455
</div>

src/lib/utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ export function parseCSV(csv: string): CopilotUsageData[] {
4646
timestamp: new Date(values[0]),
4747
user: values[1],
4848
model: values[2],
49-
requestsUsed: parseInt(values[3], 10),
49+
requestsUsed: parseFloat(values[3]),
5050
exceedsQuota: values[4].toLowerCase() === "true",
5151
totalMonthlyQuota: values[5],
5252
};

src/prd.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@
3030
- Success: Clearly shows trends over time and distinguishes between quota-compliant and exceeding requests
3131

3232
3. **Data Processing**
33-
- What: Transform raw CSV data into aggregated daily metrics by model
34-
- Why: Converts raw timestamp data into meaningful daily summaries
35-
- Success: Correctly groups and counts requests by day, model, and quota status
33+
- What: Transform raw CSV data into aggregated daily metrics by model, correctly handling decimal request values
34+
- Why: Converts raw timestamp data into meaningful daily summaries, ensuring accurate representation of fractional requests
35+
- Success: Correctly groups and counts requests by day, model, and quota status, properly parsing and displaying decimal values
3636

3737
4. **Model Usage Statistics**
3838
- What: Display detailed model usage statistics in tabular format
@@ -108,8 +108,8 @@
108108
- **Chart Accessibility**: Multiple visual cues beyond color (patterns or labels) to distinguish data series
109109

110110
## Edge Cases & Problem Scenarios
111-
- **Potential Obstacles**: Malformed CSV files, very large datasets
112-
- **Edge Case Handling**: Validation messaging for incorrect file formats, graceful handling of parsing errors
111+
- **Potential Obstacles**: Malformed CSV files, very large datasets, fractional request values
112+
- **Edge Case Handling**: Validation messaging for incorrect file formats, graceful handling of parsing errors, proper display of decimal values
113113
- **Technical Constraints**: Browser-based CSV parsing limitations
114114

115115
## Implementation Considerations

0 commit comments

Comments
 (0)