feat: deployment costs endpoint - #202
Merged
Merged
Conversation
vladyslavchuhai-spec
requested review from
buhaiovos and
siarhei-fedziukovich
as code owners
September 15, 2026 10:48
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
buhaiovos
reviewed
Sep 15, 2026
buhaiovos
reviewed
Sep 15, 2026
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
buhaiovos
approved these changes
Sep 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Applicable issues
Evaluateeanalytics page #65Description of changes
Problem
Cost analytics existed only per test-suite run (
GET /api/v1/test-suite-runs/{id}/costs, average cost per call), so there was no way to answer "how much has this deployment cost over a given period?" — e.g. spend for the current or previous month across all runs. The existing logic also lived insideTestSuiteRunService, which already owns run lifecycle concerns, and the dial-adas query filtered on ajson_extract_string(request_tags, 'baggage')expression that no longer matches the upstream usage-log schema.Solution
Added
GET /api/v1/costs?deploymentId&from&to(inclusive epoch-millisecond range) returningtotalTestCaseCostandtotalMetricEvalCost—sum(total_price)per execution phase — via a newCostController+DeploymentCostsResponseDto, with 400 on blankdeploymentIdorfrom > toand the existing 502/504 upstream mapping. All cost logic moved out ofTestSuiteRunServiceinto a dedicatedCostService(reaching run-existence validation throughTestSuiteRunService.ensureRunExists, not the repository, per the cross-domain rule), andRunCostQueryBuilderwas generalized intoAdasCostQueryBuilderwith run-scoped (baggage-filteredavg) and deployment-scoped (deployment+request_timecolumns,sum) aggregate queries. Baggage filtering was corrected to the realusage_request_baggage.baggagefield. Includes unit tests for the new builder, service and controller, a functional test, OpenAPI examples, and spec/doc updates.Checklist
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.