chore(repo): initialize planarchy workspace

This commit is contained in:
2026-03-14 14:31:09 +01:00
commit dd55d0e78b
769 changed files with 166461 additions and 0 deletions
@@ -0,0 +1,54 @@
import type {
AllocationLike,
AllocationReadModel,
Assignment,
DemandRequirement,
} from "@planarchy/shared";
function toDemandRequirement<TAllocation extends AllocationLike>(
allocation: TAllocation,
): DemandRequirement<TAllocation> {
return {
...allocation,
kind: "demand",
sourceAllocationId: allocation.entityId ?? allocation.id,
resourceId: null,
isPlaceholder: true,
requestedHeadcount: allocation.headcount,
unfilledHeadcount: allocation.headcount,
};
}
function toAssignment<TAllocation extends AllocationLike>(
allocation: TAllocation,
): Assignment<TAllocation> {
return {
...allocation,
kind: "assignment",
sourceAllocationId: allocation.entityId ?? allocation.id,
resourceId: allocation.resourceId as string,
isPlaceholder: false,
};
}
export function buildAllocationReadModel<TAllocation extends AllocationLike>(
allocations: TAllocation[],
): AllocationReadModel<TAllocation> {
const demands: DemandRequirement<TAllocation>[] = [];
const assignments: Assignment<TAllocation>[] = [];
for (const allocation of allocations) {
if (allocation.isPlaceholder || allocation.resourceId === null) {
demands.push(toDemandRequirement(allocation));
continue;
}
assignments.push(toAssignment(allocation));
}
return {
allocations,
demands,
assignments,
};
}