Placements developer guide
    Preparing search index...
    interface PlacementDraftSource {
        availability: readonly {
            block: "1" | "2" | "Both" | "Either";
            days: readonly (
                "Monday"
                | "Tuesday"
                | "Wednesday"
                | "Thursday"
                | "Friday"
            )[];
            personId: string & Brand<"PersonId">;
            wishes: {
                language: "Norsk" | "Engelsk" | "Norsk og engelsk";
                preferredSchool: string | null;
            };
        }[];
        board: Pick<
            PlacementBoard,
            | "departmentId"
            | "semesterId"
            | "affiliations"
            | "placements"
            | "schools"
            | "demands",
        >;
        capacities: readonly {
            day: "Monday"
            | "Tuesday"
            | "Wednesday"
            | "Thursday"
            | "Friday";
            places: number;
            schoolId: number & Brand<"SchoolId">;
        }[];
    }
    Index
    availability: readonly {
        block: "1" | "2" | "Both" | "Either";
        days: readonly ("Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday")[];
        personId: string & Brand<"PersonId">;
        wishes: {
            language: "Norsk" | "Engelsk" | "Norsk og engelsk";
            preferredSchool: string | null;
        };
    }[]

    Supply per person, one entry each; a person without one has no availability on record.

    board: Pick<
        PlacementBoard,
        | "departmentId"
        | "semesterId"
        | "affiliations"
        | "placements"
        | "schools"
        | "demands",
    >
    capacities: readonly {
        day: "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday";
        places: number;
        schoolId: number & Brand<"SchoolId">;
    }[]

    Capacity plans; a school without a plan for a weekday is bounded by demand alone.