mirror of
https://github.com/alkimake/paperclip.git
synced 2026-06-16 19:00:38 +09:00
- add byAgentModel endpoint and expandable per-agent model sub-rows in the spend tab - validate date range inputs with isNaN + badRequest to return HTTP 400 on bad input - move CostByProject from a local api/costs.ts definition into packages/shared types - gate providerData query on mainTab === providers, consistent with weekData/windowData/quotaData - fix byProject range filter from finishedAt to startedAt, consistent with byProvider runs query - fix WHAM used_percent threshold from <= 1 to < 1 to avoid misclassifying 1% usage as 100% - replace inline opacity style with tailwind bg-primary/85 class in ProviderQuotaCard - reset expandedAgents set when company or date range changes - sort agent model sub-rows by cost descending in ui memo
27 lines
1.5 KiB
TypeScript
27 lines
1.5 KiB
TypeScript
import type { CostSummary, CostByAgent, CostByProviderModel, CostByAgentModel, CostByProject, CostWindowSpendRow, ProviderQuotaResult } from "@paperclipai/shared";
|
|
import { api } from "./client";
|
|
|
|
function dateParams(from?: string, to?: string): string {
|
|
const params = new URLSearchParams();
|
|
if (from) params.set("from", from);
|
|
if (to) params.set("to", to);
|
|
const qs = params.toString();
|
|
return qs ? `?${qs}` : "";
|
|
}
|
|
|
|
export const costsApi = {
|
|
summary: (companyId: string, from?: string, to?: string) =>
|
|
api.get<CostSummary>(`/companies/${companyId}/costs/summary${dateParams(from, to)}`),
|
|
byAgent: (companyId: string, from?: string, to?: string) =>
|
|
api.get<CostByAgent[]>(`/companies/${companyId}/costs/by-agent${dateParams(from, to)}`),
|
|
byAgentModel: (companyId: string, from?: string, to?: string) =>
|
|
api.get<CostByAgentModel[]>(`/companies/${companyId}/costs/by-agent-model${dateParams(from, to)}`),
|
|
byProject: (companyId: string, from?: string, to?: string) =>
|
|
api.get<CostByProject[]>(`/companies/${companyId}/costs/by-project${dateParams(from, to)}`),
|
|
byProvider: (companyId: string, from?: string, to?: string) =>
|
|
api.get<CostByProviderModel[]>(`/companies/${companyId}/costs/by-provider${dateParams(from, to)}`),
|
|
windowSpend: (companyId: string) =>
|
|
api.get<CostWindowSpendRow[]>(`/companies/${companyId}/costs/window-spend`),
|
|
quotaWindows: (companyId: string) =>
|
|
api.get<ProviderQuotaResult[]>(`/companies/${companyId}/costs/quota-windows`),
|
|
};
|