(data: AthenaData)
| 196 | } |
| 197 | |
| 198 | function toStatBaseAggregate(data: AthenaData): StatBaseAggregate[] { |
| 199 | const grain = data.grain === "day" || data.grain === "week" ? data.grain : undefined |
| 200 | if (!grain || !data.period_key) return [] |
| 201 | |
| 202 | return [ |
| 203 | { |
| 204 | grain, |
| 205 | period_key: data.period_key, |
| 206 | dataset: data.dataset || Resource.StatsSyncConfig.dataset, |
| 207 | tier: normalizeTier(data.tier || "unknown"), |
| 208 | sessions: integer(data, "sessions"), |
| 209 | requests: integer(data, "requests"), |
| 210 | unique_users: integer(data, "unique_users"), |
| 211 | input_tokens: integer(data, "input_tokens"), |
| 212 | output_tokens: integer(data, "output_tokens"), |
| 213 | reasoning_tokens: integer(data, "reasoning_tokens"), |
| 214 | cache_read_tokens: integer(data, "cache_read_tokens"), |
| 215 | total_tokens: integer(data, "total_tokens"), |
| 216 | input_cost_microcents: integer(data, "input_cost_microcents"), |
| 217 | output_cost_microcents: integer(data, "output_cost_microcents"), |
| 218 | total_cost_microcents: integer(data, "total_cost_microcents"), |
| 219 | avg_duration_ms: nullableNumber(data, "avg_duration_ms"), |
| 220 | p50_duration_ms: nullableInteger(data, "p50_duration_ms"), |
| 221 | p95_duration_ms: nullableInteger(data, "p95_duration_ms"), |
| 222 | avg_ttfb_ms: nullableNumber(data, "avg_ttfb_ms"), |
| 223 | p50_ttfb_ms: nullableInteger(data, "p50_ttfb_ms"), |
| 224 | p95_ttfb_ms: nullableInteger(data, "p95_ttfb_ms"), |
| 225 | avg_output_tps: nullableNumber(data, "avg_output_tps"), |
| 226 | success_count: integer(data, "success_count"), |
| 227 | error_count: integer(data, "error_count"), |
| 228 | sample_count: integer(data, "sample_count"), |
| 229 | }, |
| 230 | ] |
| 231 | } |
| 232 | |
| 233 | function integer(data: AthenaData, key: string) { |
| 234 | return Math.round(number(data, key)) |
no test coverage detected