feat(版本详情): 优化任务统计与测试轮次
This commit is contained in:
20
apps/web/lib/requirement-grouping.ts
Normal file
20
apps/web/lib/requirement-grouping.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
export function orderByRequirementForGrouping<T>(
|
||||
items: readonly T[],
|
||||
requirementIds: readonly string[],
|
||||
getRequirementId: (item: T) => string | undefined,
|
||||
): T[] {
|
||||
const rankByRequirement = new Map(requirementIds.map((id, index) => [id, index]));
|
||||
const trailingRank = requirementIds.length;
|
||||
|
||||
return [...items]
|
||||
.map((item, index) => {
|
||||
const requirementId = getRequirementId(item);
|
||||
return {
|
||||
item,
|
||||
index,
|
||||
rank: requirementId ? (rankByRequirement.get(requirementId) ?? trailingRank) : trailingRank,
|
||||
};
|
||||
})
|
||||
.sort((a, b) => a.rank - b.rank || a.index - b.index)
|
||||
.map(({ item }) => item);
|
||||
}
|
||||
Reference in New Issue
Block a user