placementt-core 1.400.1021 → 1.400.1022
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/benchmarkEvidenceRules.d.ts +27 -0
- package/lib/benchmarkEvidenceRules.js +39 -0
- package/lib/benchmarkEvidenceRules.js.map +1 -1
- package/lib/benchmarkEvidenceRules.test.js +66 -0
- package/lib/benchmarkEvidenceRules.test.js.map +1 -1
- package/lib/typeDefinitions.d.ts +10 -0
- package/package.json +1 -1
- package/src/benchmarkEvidenceRules.test.ts +80 -0
- package/src/benchmarkEvidenceRules.ts +44 -0
- package/src/typeDefinitions.ts +13 -0
|
@@ -103,6 +103,33 @@ export declare function ageCheckpointForYearGroup(yearGroup: number): BenchmarkA
|
|
|
103
103
|
* answer for a record whose date predates the pupil joining.
|
|
104
104
|
*/
|
|
105
105
|
export declare function yearGroupAtDate(currentYearGroup: number, recordDate: string | undefined, now?: Date | string): number | undefined;
|
|
106
|
+
/**
|
|
107
|
+
* The year group a piece of evidence belongs to — the one the pupil was actually in
|
|
108
|
+
* when it happened, not the one they are in now.
|
|
109
|
+
*
|
|
110
|
+
* Careers record entries snapshot this at write time (`yearGroupAtEntry`), so that
|
|
111
|
+
* value wins outright: it is what the school recorded, and no derivation can beat it.
|
|
112
|
+
* Placements, events and activities carry no snapshot, so their year group is
|
|
113
|
+
* back-derived from the pupil's current one via `yearGroupAtDate`.
|
|
114
|
+
*
|
|
115
|
+
* Returns undefined when there is nothing to work from — no snapshot and no current
|
|
116
|
+
* year group on the pupil, or a date that back-derives outside schooling. Callers must
|
|
117
|
+
* treat that as "does not count", not as "count it anyway": an unattributable record
|
|
118
|
+
* makes coverage look lower than it is, which is the safe direction. Guessing would
|
|
119
|
+
* make a school look compliant on evidence nobody can point at.
|
|
120
|
+
*/
|
|
121
|
+
export declare function evidenceYearGroup(currentYearGroup: number | undefined, date: string | undefined, stamped?: number, now?: Date | string): number | undefined;
|
|
122
|
+
/**
|
|
123
|
+
* Whether evidence from `yearGroup` counts towards a cumulative checkpoint.
|
|
124
|
+
*
|
|
125
|
+
* This is the whole point of `accumulatingYearGroups`. BM6/7/8 read "by the age of
|
|
126
|
+
* 16… and a further one by 18": the second limb asks for a FURTHER experience after
|
|
127
|
+
* 16, so Year 10 work experience satisfies the age-16 duty and contributes nothing to
|
|
128
|
+
* the age-18 one. Counting a pupil at both checkpoints off a single Year 10 record —
|
|
129
|
+
* which is what asking "does this pupil have evidence at any point?" does — reports
|
|
130
|
+
* every sixth-former as already served and hides exactly the gap the school needs.
|
|
131
|
+
*/
|
|
132
|
+
export declare function evidenceCountsTowardCheckpoint(checkpoint: BenchmarkAgeCheckpoint, yearGroup: number | undefined): boolean;
|
|
106
133
|
/**
|
|
107
134
|
* StudentActivity.activityType → the benchmark(s) that activity is evidence for.
|
|
108
135
|
* Employer-facing encounters count towards BM5; first-hand workplace experiences
|
|
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.PAL_PHASES = exports.PAL_ENCOUNTERS_PER_PHASE = exports.ACTIVITY_TYPE_BENCHMARKS = exports.BENCHMARK_AGE_CHECKPOINTS = exports.BENCHMARK_META = exports.BENCHMARK_COVERAGE_NUMBERS = exports.GATSBY_BENCHMARK_NUMBERS = void 0;
|
|
4
4
|
exports.ageCheckpointForYearGroup = ageCheckpointForYearGroup;
|
|
5
5
|
exports.yearGroupAtDate = yearGroupAtDate;
|
|
6
|
+
exports.evidenceYearGroup = evidenceYearGroup;
|
|
7
|
+
exports.evidenceCountsTowardCheckpoint = evidenceCountsTowardCheckpoint;
|
|
6
8
|
exports.eventEvidenceBenchmarks = eventEvidenceBenchmarks;
|
|
7
9
|
exports.eventProvidesBenchmark = eventProvidesBenchmark;
|
|
8
10
|
exports.activityEvidenceBenchmarks = activityEvidenceBenchmarks;
|
|
@@ -148,6 +150,43 @@ function yearGroupAtDate(currentYearGroup, recordDate, now = new Date()) {
|
|
|
148
150
|
const derived = currentYearGroup - (currentYear - recordYear);
|
|
149
151
|
return derived >= 1 && derived <= 15 ? derived : undefined;
|
|
150
152
|
}
|
|
153
|
+
/**
|
|
154
|
+
* The year group a piece of evidence belongs to — the one the pupil was actually in
|
|
155
|
+
* when it happened, not the one they are in now.
|
|
156
|
+
*
|
|
157
|
+
* Careers record entries snapshot this at write time (`yearGroupAtEntry`), so that
|
|
158
|
+
* value wins outright: it is what the school recorded, and no derivation can beat it.
|
|
159
|
+
* Placements, events and activities carry no snapshot, so their year group is
|
|
160
|
+
* back-derived from the pupil's current one via `yearGroupAtDate`.
|
|
161
|
+
*
|
|
162
|
+
* Returns undefined when there is nothing to work from — no snapshot and no current
|
|
163
|
+
* year group on the pupil, or a date that back-derives outside schooling. Callers must
|
|
164
|
+
* treat that as "does not count", not as "count it anyway": an unattributable record
|
|
165
|
+
* makes coverage look lower than it is, which is the safe direction. Guessing would
|
|
166
|
+
* make a school look compliant on evidence nobody can point at.
|
|
167
|
+
*/
|
|
168
|
+
function evidenceYearGroup(currentYearGroup, date, stamped, now = new Date()) {
|
|
169
|
+
if (stamped !== undefined && Number.isFinite(stamped) && stamped > 0)
|
|
170
|
+
return stamped;
|
|
171
|
+
if (currentYearGroup === undefined)
|
|
172
|
+
return undefined;
|
|
173
|
+
return yearGroupAtDate(currentYearGroup, date, now);
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Whether evidence from `yearGroup` counts towards a cumulative checkpoint.
|
|
177
|
+
*
|
|
178
|
+
* This is the whole point of `accumulatingYearGroups`. BM6/7/8 read "by the age of
|
|
179
|
+
* 16… and a further one by 18": the second limb asks for a FURTHER experience after
|
|
180
|
+
* 16, so Year 10 work experience satisfies the age-16 duty and contributes nothing to
|
|
181
|
+
* the age-18 one. Counting a pupil at both checkpoints off a single Year 10 record —
|
|
182
|
+
* which is what asking "does this pupil have evidence at any point?" does — reports
|
|
183
|
+
* every sixth-former as already served and hides exactly the gap the school needs.
|
|
184
|
+
*/
|
|
185
|
+
function evidenceCountsTowardCheckpoint(checkpoint, yearGroup) {
|
|
186
|
+
if (yearGroup === undefined)
|
|
187
|
+
return false;
|
|
188
|
+
return checkpoint.accumulatingYearGroups.includes(yearGroup);
|
|
189
|
+
}
|
|
151
190
|
/**
|
|
152
191
|
* StudentActivity.activityType → the benchmark(s) that activity is evidence for.
|
|
153
192
|
* Employer-facing encounters count towards BM5; first-hand workplace experiences
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"benchmarkEvidenceRules.js","sourceRoot":"","sources":["../src/benchmarkEvidenceRules.ts"],"names":[],"mappings":";;;AAmMA,8DAEC;AAYD,0CAWC;AAiED,0DAGC;AAGD,wDAEC;AAGD,gEAEC;AAgBD,0DAIC;AAGD,0EAIC;AAOD,0EAGC;AAwBD,oDAEC;AAWD,kDAMC;AAGD,sDAGC;AAGD,gDAIC;AAUD,oCAMC;
|
|
1
|
+
{"version":3,"file":"benchmarkEvidenceRules.js","sourceRoot":"","sources":["../src/benchmarkEvidenceRules.ts"],"names":[],"mappings":"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"}
|
|
@@ -140,4 +140,70 @@ describe("cumulative age-banded coverage", () => {
|
|
|
140
140
|
expect((0, benchmarkEvidenceRules_1.yearGroupAtDate)(7, "2005-01-01", "2026-03-01")).toBeUndefined();
|
|
141
141
|
});
|
|
142
142
|
});
|
|
143
|
+
describe("evidenceYearGroup", () => {
|
|
144
|
+
const AGE_16 = benchmarkEvidenceRules_1.BENCHMARK_AGE_CHECKPOINTS.find((c) => c.age === 16);
|
|
145
|
+
const AGE_18 = benchmarkEvidenceRules_1.BENCHMARK_AGE_CHECKPOINTS.find((c) => c.age === 18);
|
|
146
|
+
it("trusts the stamped year group over anything it could derive", () => {
|
|
147
|
+
// Careers record entries snapshot yearGroupAtEntry at write time. That is what
|
|
148
|
+
// the school recorded, so it wins even where the derivation would disagree.
|
|
149
|
+
expect((0, benchmarkEvidenceRules_1.evidenceYearGroup)(13, "2025-03-01", 9, "2026-03-01")).toBe(9);
|
|
150
|
+
expect((0, benchmarkEvidenceRules_1.evidenceYearGroup)(undefined, undefined, 12, "2026-03-01")).toBe(12);
|
|
151
|
+
});
|
|
152
|
+
it("back-derives from the date when there is no stamp", () => {
|
|
153
|
+
// Placements, events and activities never carried a snapshot.
|
|
154
|
+
expect((0, benchmarkEvidenceRules_1.evidenceYearGroup)(13, "2024-03-01", undefined, "2026-03-01")).toBe(11);
|
|
155
|
+
expect((0, benchmarkEvidenceRules_1.evidenceYearGroup)(13, "2026-03-01", undefined, "2026-03-01")).toBe(13);
|
|
156
|
+
});
|
|
157
|
+
it("returns undefined when the pupil has no year group on record", () => {
|
|
158
|
+
// Excluded rather than guessed: an unattributable record should under-count,
|
|
159
|
+
// never flatter.
|
|
160
|
+
expect((0, benchmarkEvidenceRules_1.evidenceYearGroup)(undefined, "2025-03-01", undefined, "2026-03-01")).toBeUndefined();
|
|
161
|
+
expect((0, benchmarkEvidenceRules_1.evidenceYearGroup)(13, undefined, undefined, "2026-03-01")).toBeUndefined();
|
|
162
|
+
});
|
|
163
|
+
it("ignores a nonsense stamp rather than trusting it", () => {
|
|
164
|
+
expect((0, benchmarkEvidenceRules_1.evidenceYearGroup)(13, "2024-03-01", 0, "2026-03-01")).toBe(11);
|
|
165
|
+
expect((0, benchmarkEvidenceRules_1.evidenceYearGroup)(13, "2024-03-01", NaN, "2026-03-01")).toBe(11);
|
|
166
|
+
});
|
|
167
|
+
describe("evidenceCountsTowardCheckpoint", () => {
|
|
168
|
+
it("counts Year 10 work experience for age 16 and NOT for age 18", () => {
|
|
169
|
+
// The motivating bug. "By the age of 16… and a further one by 18" asks for a
|
|
170
|
+
// FURTHER experience after 16, so a Year 13 pupil whose only workplace
|
|
171
|
+
// experience was in Year 10 has met the first duty and not the second.
|
|
172
|
+
const y13Pupil = 13;
|
|
173
|
+
const workExperienceInYear10 = (0, benchmarkEvidenceRules_1.evidenceYearGroup)(y13Pupil, "2023-07-10", undefined, "2026-03-01");
|
|
174
|
+
expect(workExperienceInYear10).toBe(10);
|
|
175
|
+
expect((0, benchmarkEvidenceRules_1.evidenceCountsTowardCheckpoint)(AGE_16, workExperienceInYear10)).toBe(true);
|
|
176
|
+
expect((0, benchmarkEvidenceRules_1.evidenceCountsTowardCheckpoint)(AGE_18, workExperienceInYear10)).toBe(false);
|
|
177
|
+
});
|
|
178
|
+
it("counts a post-16 experience for age 18 only", () => {
|
|
179
|
+
const inYear12 = (0, benchmarkEvidenceRules_1.evidenceYearGroup)(13, "2025-03-01", undefined, "2026-03-01");
|
|
180
|
+
expect(inYear12).toBe(12);
|
|
181
|
+
expect((0, benchmarkEvidenceRules_1.evidenceCountsTowardCheckpoint)(AGE_16, inYear12)).toBe(false);
|
|
182
|
+
expect((0, benchmarkEvidenceRules_1.evidenceCountsTowardCheckpoint)(AGE_18, inYear12)).toBe(true);
|
|
183
|
+
});
|
|
184
|
+
it("accepts every Year 7-11 year group for age 16, and only 12-13 for age 18", () => {
|
|
185
|
+
[7, 8, 9, 10, 11].forEach((yg) => {
|
|
186
|
+
expect((0, benchmarkEvidenceRules_1.evidenceCountsTowardCheckpoint)(AGE_16, yg)).toBe(true);
|
|
187
|
+
expect((0, benchmarkEvidenceRules_1.evidenceCountsTowardCheckpoint)(AGE_18, yg)).toBe(false);
|
|
188
|
+
});
|
|
189
|
+
[12, 13].forEach((yg) => {
|
|
190
|
+
expect((0, benchmarkEvidenceRules_1.evidenceCountsTowardCheckpoint)(AGE_16, yg)).toBe(false);
|
|
191
|
+
expect((0, benchmarkEvidenceRules_1.evidenceCountsTowardCheckpoint)(AGE_18, yg)).toBe(true);
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
it("counts nothing towards a checkpoint when the year group is unknown", () => {
|
|
195
|
+
expect((0, benchmarkEvidenceRules_1.evidenceCountsTowardCheckpoint)(AGE_16, undefined)).toBe(false);
|
|
196
|
+
expect((0, benchmarkEvidenceRules_1.evidenceCountsTowardCheckpoint)(AGE_18, undefined)).toBe(false);
|
|
197
|
+
});
|
|
198
|
+
it("uses the stamped year group of a guidance meeting, not the pupil's current one", () => {
|
|
199
|
+
// A Year 13 whose only personal guidance meeting was stamped Year 11 has met
|
|
200
|
+
// the by-16 duty and still needs the further meeting by 18.
|
|
201
|
+
const stampedY11 = (0, benchmarkEvidenceRules_1.evidenceYearGroup)(13, "2024-02-01", 11, "2026-03-01");
|
|
202
|
+
expect((0, benchmarkEvidenceRules_1.evidenceCountsTowardCheckpoint)(AGE_16, stampedY11)).toBe(true);
|
|
203
|
+
expect((0, benchmarkEvidenceRules_1.evidenceCountsTowardCheckpoint)(AGE_18, stampedY11)).toBe(false);
|
|
204
|
+
const stampedY13 = (0, benchmarkEvidenceRules_1.evidenceYearGroup)(13, "2026-02-01", 13, "2026-03-01");
|
|
205
|
+
expect((0, benchmarkEvidenceRules_1.evidenceCountsTowardCheckpoint)(AGE_18, stampedY13)).toBe(true);
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
});
|
|
143
209
|
//# sourceMappingURL=benchmarkEvidenceRules.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"benchmarkEvidenceRules.test.js","sourceRoot":"","sources":["../src/benchmarkEvidenceRules.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"benchmarkEvidenceRules.test.js","sourceRoot":"","sources":["../src/benchmarkEvidenceRules.test.ts"],"names":[],"mappings":"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"}
|
package/lib/typeDefinitions.d.ts
CHANGED
|
@@ -2199,6 +2199,16 @@ export type AspirationAggregates = {
|
|
|
2199
2199
|
yes: number;
|
|
2200
2200
|
no: number;
|
|
2201
2201
|
};
|
|
2202
|
+
jobPreferences?: {
|
|
2203
|
+
[soc: string]: number;
|
|
2204
|
+
};
|
|
2205
|
+
jobPreferenceTitles?: {
|
|
2206
|
+
[soc: string]: string;
|
|
2207
|
+
};
|
|
2208
|
+
addedJobPreferences?: {
|
|
2209
|
+
yes: number;
|
|
2210
|
+
no: number;
|
|
2211
|
+
};
|
|
2202
2212
|
};
|
|
2203
2213
|
/**
|
|
2204
2214
|
* One per school per year group per academic year. Controls when Form A emails
|
package/package.json
CHANGED
|
@@ -8,6 +8,9 @@ import {
|
|
|
8
8
|
careersRecordEvidenceBenchmarks,
|
|
9
9
|
coverageBand,
|
|
10
10
|
dateInAcademicYear,
|
|
11
|
+
BENCHMARK_AGE_CHECKPOINTS,
|
|
12
|
+
evidenceCountsTowardCheckpoint,
|
|
13
|
+
evidenceYearGroup,
|
|
11
14
|
eventEvidenceBenchmarks,
|
|
12
15
|
eventProvidesBenchmark,
|
|
13
16
|
isPalCompliantProviderEncounter,
|
|
@@ -175,3 +178,80 @@ describe("cumulative age-banded coverage", () => {
|
|
|
175
178
|
expect(yearGroupAtDate(7, "2005-01-01", "2026-03-01")).toBeUndefined();
|
|
176
179
|
});
|
|
177
180
|
});
|
|
181
|
+
|
|
182
|
+
describe("evidenceYearGroup", () => {
|
|
183
|
+
const AGE_16 = BENCHMARK_AGE_CHECKPOINTS.find((c) => c.age === 16)!;
|
|
184
|
+
const AGE_18 = BENCHMARK_AGE_CHECKPOINTS.find((c) => c.age === 18)!;
|
|
185
|
+
|
|
186
|
+
it("trusts the stamped year group over anything it could derive", () => {
|
|
187
|
+
// Careers record entries snapshot yearGroupAtEntry at write time. That is what
|
|
188
|
+
// the school recorded, so it wins even where the derivation would disagree.
|
|
189
|
+
expect(evidenceYearGroup(13, "2025-03-01", 9, "2026-03-01")).toBe(9);
|
|
190
|
+
expect(evidenceYearGroup(undefined, undefined, 12, "2026-03-01")).toBe(12);
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
it("back-derives from the date when there is no stamp", () => {
|
|
194
|
+
// Placements, events and activities never carried a snapshot.
|
|
195
|
+
expect(evidenceYearGroup(13, "2024-03-01", undefined, "2026-03-01")).toBe(11);
|
|
196
|
+
expect(evidenceYearGroup(13, "2026-03-01", undefined, "2026-03-01")).toBe(13);
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
it("returns undefined when the pupil has no year group on record", () => {
|
|
200
|
+
// Excluded rather than guessed: an unattributable record should under-count,
|
|
201
|
+
// never flatter.
|
|
202
|
+
expect(evidenceYearGroup(undefined, "2025-03-01", undefined, "2026-03-01")).toBeUndefined();
|
|
203
|
+
expect(evidenceYearGroup(13, undefined, undefined, "2026-03-01")).toBeUndefined();
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
it("ignores a nonsense stamp rather than trusting it", () => {
|
|
207
|
+
expect(evidenceYearGroup(13, "2024-03-01", 0, "2026-03-01")).toBe(11);
|
|
208
|
+
expect(evidenceYearGroup(13, "2024-03-01", NaN, "2026-03-01")).toBe(11);
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
describe("evidenceCountsTowardCheckpoint", () => {
|
|
212
|
+
it("counts Year 10 work experience for age 16 and NOT for age 18", () => {
|
|
213
|
+
// The motivating bug. "By the age of 16… and a further one by 18" asks for a
|
|
214
|
+
// FURTHER experience after 16, so a Year 13 pupil whose only workplace
|
|
215
|
+
// experience was in Year 10 has met the first duty and not the second.
|
|
216
|
+
const y13Pupil = 13;
|
|
217
|
+
const workExperienceInYear10 = evidenceYearGroup(y13Pupil, "2023-07-10", undefined, "2026-03-01");
|
|
218
|
+
expect(workExperienceInYear10).toBe(10);
|
|
219
|
+
expect(evidenceCountsTowardCheckpoint(AGE_16, workExperienceInYear10)).toBe(true);
|
|
220
|
+
expect(evidenceCountsTowardCheckpoint(AGE_18, workExperienceInYear10)).toBe(false);
|
|
221
|
+
});
|
|
222
|
+
|
|
223
|
+
it("counts a post-16 experience for age 18 only", () => {
|
|
224
|
+
const inYear12 = evidenceYearGroup(13, "2025-03-01", undefined, "2026-03-01");
|
|
225
|
+
expect(inYear12).toBe(12);
|
|
226
|
+
expect(evidenceCountsTowardCheckpoint(AGE_16, inYear12)).toBe(false);
|
|
227
|
+
expect(evidenceCountsTowardCheckpoint(AGE_18, inYear12)).toBe(true);
|
|
228
|
+
});
|
|
229
|
+
|
|
230
|
+
it("accepts every Year 7-11 year group for age 16, and only 12-13 for age 18", () => {
|
|
231
|
+
[7, 8, 9, 10, 11].forEach((yg) => {
|
|
232
|
+
expect(evidenceCountsTowardCheckpoint(AGE_16, yg)).toBe(true);
|
|
233
|
+
expect(evidenceCountsTowardCheckpoint(AGE_18, yg)).toBe(false);
|
|
234
|
+
});
|
|
235
|
+
[12, 13].forEach((yg) => {
|
|
236
|
+
expect(evidenceCountsTowardCheckpoint(AGE_16, yg)).toBe(false);
|
|
237
|
+
expect(evidenceCountsTowardCheckpoint(AGE_18, yg)).toBe(true);
|
|
238
|
+
});
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
it("counts nothing towards a checkpoint when the year group is unknown", () => {
|
|
242
|
+
expect(evidenceCountsTowardCheckpoint(AGE_16, undefined)).toBe(false);
|
|
243
|
+
expect(evidenceCountsTowardCheckpoint(AGE_18, undefined)).toBe(false);
|
|
244
|
+
});
|
|
245
|
+
|
|
246
|
+
it("uses the stamped year group of a guidance meeting, not the pupil's current one", () => {
|
|
247
|
+
// A Year 13 whose only personal guidance meeting was stamped Year 11 has met
|
|
248
|
+
// the by-16 duty and still needs the further meeting by 18.
|
|
249
|
+
const stampedY11 = evidenceYearGroup(13, "2024-02-01", 11, "2026-03-01");
|
|
250
|
+
expect(evidenceCountsTowardCheckpoint(AGE_16, stampedY11)).toBe(true);
|
|
251
|
+
expect(evidenceCountsTowardCheckpoint(AGE_18, stampedY11)).toBe(false);
|
|
252
|
+
|
|
253
|
+
const stampedY13 = evidenceYearGroup(13, "2026-02-01", 13, "2026-03-01");
|
|
254
|
+
expect(evidenceCountsTowardCheckpoint(AGE_18, stampedY13)).toBe(true);
|
|
255
|
+
});
|
|
256
|
+
});
|
|
257
|
+
});
|
|
@@ -220,6 +220,50 @@ export function yearGroupAtDate(
|
|
|
220
220
|
return derived >= 1 && derived <= 15 ? derived : undefined;
|
|
221
221
|
}
|
|
222
222
|
|
|
223
|
+
/**
|
|
224
|
+
* The year group a piece of evidence belongs to — the one the pupil was actually in
|
|
225
|
+
* when it happened, not the one they are in now.
|
|
226
|
+
*
|
|
227
|
+
* Careers record entries snapshot this at write time (`yearGroupAtEntry`), so that
|
|
228
|
+
* value wins outright: it is what the school recorded, and no derivation can beat it.
|
|
229
|
+
* Placements, events and activities carry no snapshot, so their year group is
|
|
230
|
+
* back-derived from the pupil's current one via `yearGroupAtDate`.
|
|
231
|
+
*
|
|
232
|
+
* Returns undefined when there is nothing to work from — no snapshot and no current
|
|
233
|
+
* year group on the pupil, or a date that back-derives outside schooling. Callers must
|
|
234
|
+
* treat that as "does not count", not as "count it anyway": an unattributable record
|
|
235
|
+
* makes coverage look lower than it is, which is the safe direction. Guessing would
|
|
236
|
+
* make a school look compliant on evidence nobody can point at.
|
|
237
|
+
*/
|
|
238
|
+
export function evidenceYearGroup(
|
|
239
|
+
currentYearGroup: number|undefined,
|
|
240
|
+
date: string|undefined,
|
|
241
|
+
stamped?: number,
|
|
242
|
+
now: Date|string = new Date(),
|
|
243
|
+
): number|undefined {
|
|
244
|
+
if (stamped !== undefined && Number.isFinite(stamped) && stamped > 0) return stamped;
|
|
245
|
+
if (currentYearGroup === undefined) return undefined;
|
|
246
|
+
return yearGroupAtDate(currentYearGroup, date, now);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Whether evidence from `yearGroup` counts towards a cumulative checkpoint.
|
|
251
|
+
*
|
|
252
|
+
* This is the whole point of `accumulatingYearGroups`. BM6/7/8 read "by the age of
|
|
253
|
+
* 16… and a further one by 18": the second limb asks for a FURTHER experience after
|
|
254
|
+
* 16, so Year 10 work experience satisfies the age-16 duty and contributes nothing to
|
|
255
|
+
* the age-18 one. Counting a pupil at both checkpoints off a single Year 10 record —
|
|
256
|
+
* which is what asking "does this pupil have evidence at any point?" does — reports
|
|
257
|
+
* every sixth-former as already served and hides exactly the gap the school needs.
|
|
258
|
+
*/
|
|
259
|
+
export function evidenceCountsTowardCheckpoint(
|
|
260
|
+
checkpoint: BenchmarkAgeCheckpoint,
|
|
261
|
+
yearGroup: number|undefined,
|
|
262
|
+
): boolean {
|
|
263
|
+
if (yearGroup === undefined) return false;
|
|
264
|
+
return checkpoint.accumulatingYearGroups.includes(yearGroup);
|
|
265
|
+
}
|
|
266
|
+
|
|
223
267
|
/**
|
|
224
268
|
* StudentActivity.activityType → the benchmark(s) that activity is evidence for.
|
|
225
269
|
* Employer-facing encounters count towards BM5; first-hand workplace experiences
|
package/src/typeDefinitions.ts
CHANGED
|
@@ -2152,6 +2152,19 @@ export type AspirationAggregates = {
|
|
|
2152
2152
|
careerInterests: {[interest: string]: number}, // e.g. {Technology: 67, Healthcare: 34}
|
|
2153
2153
|
jobValues: {[value: string]: number},
|
|
2154
2154
|
workExperienceCompleted: {yes: number, no: number},
|
|
2155
|
+
// ── Job roles the students named (search-and-heart on Form A) ──
|
|
2156
|
+
// Counts are keyed by SOC rather than by title, because titles carry "." and "/"
|
|
2157
|
+
// which can't be written as Firestore field paths, and because two students
|
|
2158
|
+
// picking different aliases of one job ("Nurse", "Nurse, district") must land on
|
|
2159
|
+
// the same bar. That leaves the keys unreadable, so the label for each is
|
|
2160
|
+
// denormalised alongside at submit time — the charts never resolve a code.
|
|
2161
|
+
jobPreferences?: {[soc: string]: number},
|
|
2162
|
+
// The wording to show for each SOC above. Last writer wins, which is fine: every
|
|
2163
|
+
// candidate is a real student's own word for the same occupation.
|
|
2164
|
+
jobPreferenceTitles?: {[soc: string]: string},
|
|
2165
|
+
// Whether a student named any job at all — the cohort-level "who has nothing to
|
|
2166
|
+
// work with yet" read that a per-role count can't give.
|
|
2167
|
+
addedJobPreferences?: {yes: number, no: number},
|
|
2155
2168
|
}
|
|
2156
2169
|
|
|
2157
2170
|
/**
|