Showing AI reviews for tenant-service
Project AI Score ?
67%
Quality Avg ?
69%
Security Avg ?
64%
Reviews ?
143

Review Result ?

solutionbowl/tenant-service · 6e5478fb
The commit improves the market exposure API by adding a detailed calculation of exposure and exposure profit on a per-runner basis. The code correctly aggregates exposure data from multiple sources and handles cases when market runners are unknown, which improves the robustness and accuracy of exposure reporting. The MongoDB aggregation pipeline is properly structured to retrieve exposure data along with bets summary. Overall, the change appears to add meaningful value with modest risk.
Quality ?
85%
Security ?
90%
Business Value ?
90%
Maintainability ?
83%
Issues & Suggested Fixes ?
1AI detects the issue
2Shows file, line, or evidence
3Suggests the fix to apply
Inconsistent Exposure And Exposureprofit A...
Where src/controllers/horseracing/report.controller.js:1966
Issue / Evidence inconsistent exposure and exposureProfit aggregation logic for bestBook
Suggested Fix unify metric calculation to avoid confusion or errors.
Empty String Check For Runnerid Could Be M...
Where src/controllers/horseracing/report.controller.js:1933
Issue / Evidence empty string check for runnerId could be more explicit
Suggested Fix check for falsy or explicitly invalid IDs to prevent hidden bugs.
More Descriptive Variable Names Instead Of...
Where src/controllers/horseracing/report.controller.js:1916-1929
Issue / Evidence more descriptive variable names instead of single letters (e.g., rb) to improve readability and maintainability.
Suggested Fix Review and simplify this section.
Lacking Detail And Formatting
Where commit message
Issue / Evidence lacking detail and formatting
Suggested Fix expand message to describe the purpose and effects of the commit for better traceability.
Code Change Preview · src/controllers/horseracing/report.controller.js ?
Removed / Before Commit
- diff --git a/src/controllers/horseracing/report.controller.js b/src/controllers/horseracing/report.controller.js
- index f49533b..442cc89 100644
- const selectedRunnerId = String(rb.runner_id || "");
- const oddsType = String(bet.odds_type || "back").toLowerCase();
- const stake = Number(bet.bet_amount || 0);
-     const returnAmount = Number(bet.return_amount || 0);
-     const liabilityAmount = Number(bet.liability_amount || 0);
- 
- totalStake += stake;
- betsCount += 1;
- runners.push(runner);
- }
- 
-       const profitOdds = Math.max(0, Number(rb.odds_matched || 0) - 1);
- if (oddsType === "back") {
- runner.placePnL = Number(runner.placePnL || 0) + profitOdds * stake;
- runner.notPlacePnL = Number(runner.notPlacePnL || 0) - stake;
- };
Added / After Commit
+ diff --git a/src/controllers/horseracing/report.controller.js b/src/controllers/horseracing/report.controller.js
+ index f49533b..442cc89 100644
+ const selectedRunnerId = String(rb.runner_id || "");
+ const oddsType = String(bet.odds_type || "back").toLowerCase();
+ const stake = Number(bet.bet_amount || 0);
+     const grossOdds = Number(rb.odds_matched || rb.odds_request || 0);
+     const profitOdds = Math.max(0, grossOdds - 1);
+     const computedProfit = Number((profitOdds * stake).toFixed(2));
+     const returnAmount = computedProfit || Number(bet.return_amount || 0);
+     const liabilityAmount =
+       computedProfit || Number(bet.liability_amount || 0);
+ 
+ totalStake += stake;
+ betsCount += 1;
+ runners.push(runner);
+ }
+ 
+ if (oddsType === "back") {