All checks were successful
Deploy Development / deploy (push) Successful in 50s
Test Suite / pytest-backend (push) Successful in 2m21s
Test Suite / lint-backend (push) Successful in 2s
Test Suite / compose-smoke (push) Has been skipped
Test Suite / k6 /api/health Baseline (push) Successful in 18s
Test Suite / playwright-smoke (push) Successful in 21s
Co-authored-by: Cursor <cursoragent@cursor.com>
25 lines
603 B
JavaScript
25 lines
603 B
JavaScript
/**
|
|
* Portfolio-Rang (AP1.8a) — niedrigerer Rank = höhere Aufmerksamkeit.
|
|
*/
|
|
|
|
/**
|
|
* @template {{ id: string, portfolio_rank?: number | null }} T
|
|
* @param {T[]} items
|
|
*/
|
|
export function sortByPortfolioRank(items) {
|
|
return [...items].sort(
|
|
(a, b) =>
|
|
(a.portfolio_rank ?? Number.MAX_SAFE_INTEGER) -
|
|
(b.portfolio_rank ?? Number.MAX_SAFE_INTEGER) ||
|
|
String(a.id).localeCompare(String(b.id)),
|
|
)
|
|
}
|
|
|
|
/**
|
|
* @param {number | null | undefined} rank
|
|
*/
|
|
export function formatPortfolioRank(rank) {
|
|
if (rank == null || Number.isNaN(rank)) return null
|
|
return `#${rank + 1}`
|
|
}
|