4-26 树rust-2

This commit is contained in:
lix-2026
2026-04-26 04:29:23 +08:00
parent 94631f3636
commit 338bb2e20f
58 changed files with 11718 additions and 1256 deletions
@@ -35,6 +35,32 @@ export function pickCanonicalDocumentRecord<T extends DocumentRecordLike>(record
return [...records].sort(compareDocumentCanonicalOrder)[0] ?? null;
}
export function pickCanonicalDocumentRecordsByBusinessId<
T extends DocumentRecordLike & { id?: string | null },
>(records: readonly T[]): T[] {
const grouped = new Map<string, T[]>();
for (const record of records) {
const businessId = String(record.id ?? "").trim();
if (!businessId) continue;
const bucket = grouped.get(businessId);
if (bucket) {
bucket.push(record);
} else {
grouped.set(businessId, [record]);
}
}
const result: T[] = [];
for (const bucket of grouped.values()) {
const canonical = pickCanonicalDocumentRecord([...bucket]);
if (canonical) {
result.push(canonical);
}
}
return result;
}
export async function getCanonicalDocumentByBusinessId<T extends DocumentRecordLike>(
ctx: any,
documentId: string,