placementt-core 1.400.998 → 1.400.1000
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 +18 -3
- package/lib/benchmarkEvidenceRules.js +43 -3
- package/lib/benchmarkEvidenceRules.js.map +1 -1
- package/lib/constants.d.ts +35 -1
- package/lib/constants.js +256 -2
- package/lib/constants.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/portfolioAggregate.d.ts +8 -1
- package/lib/portfolioAggregate.js +54 -7
- package/lib/portfolioAggregate.js.map +1 -1
- package/lib/productResolver.d.ts +53 -0
- package/lib/productResolver.js +66 -0
- package/lib/productResolver.js.map +1 -0
- package/lib/productResolver.test.d.ts +1 -0
- package/lib/productResolver.test.js +142 -0
- package/lib/productResolver.test.js.map +1 -0
- package/lib/typeDefinitions.d.ts +7 -1
- package/package.json +1 -1
- package/src/benchmarkEvidenceRules.ts +43 -3
- package/src/constants.ts +261 -1
- package/src/index.ts +1 -0
- package/src/portfolioAggregate.ts +54 -7
- package/src/productResolver.test.ts +156 -0
- package/src/productResolver.ts +145 -0
- package/src/typeDefinitions.ts +49 -8
|
@@ -49,9 +49,24 @@ export declare const BENCHMARK_META: Record<GatsbyBenchmarkNumber, BenchmarkMeta
|
|
|
49
49
|
/**
|
|
50
50
|
* StudentActivity.activityType → the benchmark(s) that activity is evidence for.
|
|
51
51
|
* Employer-facing encounters count towards BM5; first-hand workplace experiences
|
|
52
|
-
* count towards BM6
|
|
53
|
-
*
|
|
54
|
-
*
|
|
52
|
+
* count towards BM6; encounters with a university or college count towards BM7.
|
|
53
|
+
* "other" is intentionally unmapped: we don't guess a benchmark from an untyped
|
|
54
|
+
* activity (that would fabricate coverage).
|
|
55
|
+
*
|
|
56
|
+
* The same principle governs the extracurricular and supercurricular types added
|
|
57
|
+
* alongside the activity picker: sport, music, performance, clubs, leadership, DofE,
|
|
58
|
+
* uniformed groups, wider reading, competitions, essay prizes, EPQs and cultural
|
|
59
|
+
* visits are all real enrichment but none of them is an encounter with an employer,
|
|
60
|
+
* a workplace or a provider, so they map to nothing rather than quietly inflating a
|
|
61
|
+
* school's coverage. Only the two programme types that genuinely put a student inside
|
|
62
|
+
* a university or a lab are mapped: research placements (a real workplace, hosted by a
|
|
63
|
+
* provider) and summer schools (a provider encounter).
|
|
64
|
+
*
|
|
65
|
+
* NOTE: `onlineProgramme` predates the picker, when it meant an employer's virtual
|
|
66
|
+
* work-experience programme, and is left at BM5 so existing schools' Compass returns
|
|
67
|
+
* don't change under them. Its label is now "Online course or MOOC" — a FutureLearn
|
|
68
|
+
* course is not an employer encounter, and virtual insight days now belong under
|
|
69
|
+
* workShadowing/workshop — so this should probably become [] for new records.
|
|
55
70
|
*/
|
|
56
71
|
export declare const ACTIVITY_TYPE_BENCHMARKS: Record<StudentActivity["activityType"], GatsbyBenchmarkNumber[]>;
|
|
57
72
|
/**
|
|
@@ -103,9 +103,24 @@ exports.BENCHMARK_META = {
|
|
|
103
103
|
/**
|
|
104
104
|
* StudentActivity.activityType → the benchmark(s) that activity is evidence for.
|
|
105
105
|
* Employer-facing encounters count towards BM5; first-hand workplace experiences
|
|
106
|
-
* count towards BM6
|
|
107
|
-
*
|
|
108
|
-
*
|
|
106
|
+
* count towards BM6; encounters with a university or college count towards BM7.
|
|
107
|
+
* "other" is intentionally unmapped: we don't guess a benchmark from an untyped
|
|
108
|
+
* activity (that would fabricate coverage).
|
|
109
|
+
*
|
|
110
|
+
* The same principle governs the extracurricular and supercurricular types added
|
|
111
|
+
* alongside the activity picker: sport, music, performance, clubs, leadership, DofE,
|
|
112
|
+
* uniformed groups, wider reading, competitions, essay prizes, EPQs and cultural
|
|
113
|
+
* visits are all real enrichment but none of them is an encounter with an employer,
|
|
114
|
+
* a workplace or a provider, so they map to nothing rather than quietly inflating a
|
|
115
|
+
* school's coverage. Only the two programme types that genuinely put a student inside
|
|
116
|
+
* a university or a lab are mapped: research placements (a real workplace, hosted by a
|
|
117
|
+
* provider) and summer schools (a provider encounter).
|
|
118
|
+
*
|
|
119
|
+
* NOTE: `onlineProgramme` predates the picker, when it meant an employer's virtual
|
|
120
|
+
* work-experience programme, and is left at BM5 so existing schools' Compass returns
|
|
121
|
+
* don't change under them. Its label is now "Online course or MOOC" — a FutureLearn
|
|
122
|
+
* course is not an employer encounter, and virtual insight days now belong under
|
|
123
|
+
* workShadowing/workshop — so this should probably become [] for new records.
|
|
109
124
|
*/
|
|
110
125
|
exports.ACTIVITY_TYPE_BENCHMARKS = {
|
|
111
126
|
employerTalk: [5],
|
|
@@ -115,6 +130,31 @@ exports.ACTIVITY_TYPE_BENCHMARKS = {
|
|
|
115
130
|
partTimeWork: [6],
|
|
116
131
|
volunteering: [6],
|
|
117
132
|
other: [],
|
|
133
|
+
// Extracurricular — enrichment, not Gatsby evidence.
|
|
134
|
+
sport: [],
|
|
135
|
+
music: [],
|
|
136
|
+
performingArts: [],
|
|
137
|
+
creativeArts: [],
|
|
138
|
+
leadership: [],
|
|
139
|
+
dofe: [],
|
|
140
|
+
uniformedGroup: [],
|
|
141
|
+
// Covers both Young Enterprise (mentored by employers) and a student's own side
|
|
142
|
+
// hustle, so it can't be safely counted as an employer encounter either way.
|
|
143
|
+
enterprise: [],
|
|
144
|
+
clubSociety: [],
|
|
145
|
+
// Supercurricular — independent academic study, not an encounter.
|
|
146
|
+
widerReading: [],
|
|
147
|
+
lecture: [],
|
|
148
|
+
competition: [],
|
|
149
|
+
essayPrize: [],
|
|
150
|
+
epq: [],
|
|
151
|
+
academicSociety: [],
|
|
152
|
+
culturalVisit: [],
|
|
153
|
+
languageLearning: [],
|
|
154
|
+
subjectQualification: [],
|
|
155
|
+
// Time spent working inside a university lab or employer, arranged by a provider.
|
|
156
|
+
researchPlacement: [6, 7],
|
|
157
|
+
summerSchool: [7],
|
|
118
158
|
};
|
|
119
159
|
/**
|
|
120
160
|
* The benchmarks an event provides evidence for: its tagged Gatsby benchmarks,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"benchmarkEvidenceRules.js","sourceRoot":"","sources":["../src/benchmarkEvidenceRules.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"benchmarkEvidenceRules.js","sourceRoot":"","sources":["../src/benchmarkEvidenceRules.ts"],"names":[],"mappings":"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"}
|
package/lib/constants.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AnalyticsItem, ApplicantStage, CommSchema, CustomFormSchema, EmailTemplateConfig, FlagCodes, LeadStageSchema, SurveyDateRule, SurveyOrdinal, SurveyWeekday, WorkflowStage } from "./typeDefinitions";
|
|
1
|
+
import { AnalyticsItem, ApplicantStage, CommSchema, CustomFormSchema, CustomFormSchemaField, EmailTemplateConfig, FlagCodes, LeadStageSchema, StudentActivity, StudentActivityCategory, StudentActivityType, SurveyDateRule, SurveyOrdinal, SurveyWeekday, WorkflowStage } from "./typeDefinitions";
|
|
2
2
|
export declare const providerCodes: {
|
|
3
3
|
soleTrader: {
|
|
4
4
|
title: string;
|
|
@@ -95,6 +95,40 @@ export declare const flagCodes: {
|
|
|
95
95
|
};
|
|
96
96
|
export declare const sampleTargets: AnalyticsItem;
|
|
97
97
|
export declare const DEFAULT_ACTIVITY_REFLECTION_FORM_ID = "defaultActivityReflectionForm";
|
|
98
|
+
export declare const STUDENT_ACTIVITY_CATEGORIES: {
|
|
99
|
+
[key in StudentActivityCategory]: {
|
|
100
|
+
label: string;
|
|
101
|
+
shortLabel: string;
|
|
102
|
+
description: string;
|
|
103
|
+
examples: string;
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
export declare const ACTIVITY_TYPES_BY_CATEGORY: {
|
|
107
|
+
[key in StudentActivityCategory]: StudentActivityType[];
|
|
108
|
+
};
|
|
109
|
+
export declare const ACTIVITY_TYPE_ORGANISATION: {
|
|
110
|
+
[key in StudentActivityType]?: {
|
|
111
|
+
label: string;
|
|
112
|
+
subtitle?: string;
|
|
113
|
+
required?: boolean;
|
|
114
|
+
} | false;
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* Follow-up questions per activity type, rendered into the details step underneath the
|
|
118
|
+
* type dropdown. Typed as CustomFormSchemaField so the same shape the custom form builder
|
|
119
|
+
* produces can drive these (and so a school could edit them in the builder later);
|
|
120
|
+
* `width` is the md column width, xs is always full width.
|
|
121
|
+
*
|
|
122
|
+
* These are deliberately the things a school can act on — level reached, role held,
|
|
123
|
+
* outcome achieved, who ran it, and which subject it points at — not a second description
|
|
124
|
+
* of the activity. Longer "what did you learn" reflection stays in the reflection step
|
|
125
|
+
* (DEFAULT_ACTIVITY_REFLECTION_FORM); the short prompts here ask something narrower that
|
|
126
|
+
* only makes sense for that type.
|
|
127
|
+
*/
|
|
128
|
+
export declare const ACTIVITY_SCHEMAS: {
|
|
129
|
+
[key in StudentActivityType]: CustomFormSchemaField[];
|
|
130
|
+
};
|
|
131
|
+
export declare const studentActivityCategory: (activity: Pick<StudentActivity, "type">) => StudentActivityCategory;
|
|
98
132
|
export declare const DEFAULT_ACTIVITY_REFLECTION_FORM: CustomFormSchema;
|
|
99
133
|
export declare const PRIMARY_COLOUR = "#397DF2";
|
|
100
134
|
export declare const LOGO_SECONDARY_COLOUR = "#964FF7";
|
package/lib/constants.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.STUDENT_YEAR_FIELD = exports.JOB_VALUES = exports.CAREER_INTEREST_CATEGORIES = exports.SIC_SECTIONS = exports.SOC_MAJOR_GROUPS = void 0;
|
|
3
|
+
exports.leadStageSchema = exports.commSchema = exports.DEFAULT_SURVEY_RULE = exports.surveyRuleLabel = exports.SURVEY_MONTHS = exports.SURVEY_WEEKDAYS = exports.SURVEY_ORDINALS = exports.skillAssessmentSchedule = exports.skillLabelColours = exports.equalexLearningOutcomes = exports.gatsbyBenchmarks = exports.externalActivityTypes = exports.MISQueryParams = exports.emailTemplates = exports.defaultApplicantWorkflow = exports.mobileCountryCodes = exports.ERROR_COLOR = exports.SUCCESS_COLOR = exports.WARNING_COLOR = exports.INFO_COLOR = exports.INFOBACKGROUNDCOLOR = exports.INFOTEXTCOLOR = exports.WARNINGBACKGROUNDCOLOR = exports.WARNINGTEXTCOLOR = exports.SUCCESSBACKGROUNDCOLOR = exports.SUCCESSTEXTCOLOR = exports.ERRORBACKGROUNDCOLOR = exports.ERRORTEXTCOLOR = exports.STUDENT_COLOUR = exports.PROVIDER_COLOUR = exports.INSTITUTE_COLOUR = exports.SECONDARY_COLOUR = exports.LOGO_TERTIARY_COLOUR = exports.LOGO_SECONDARY_COLOUR = exports.PRIMARY_COLOUR = exports.DEFAULT_ACTIVITY_REFLECTION_FORM = exports.studentActivityCategory = exports.ACTIVITY_SCHEMAS = exports.ACTIVITY_TYPE_ORGANISATION = exports.ACTIVITY_TYPES_BY_CATEGORY = exports.STUDENT_ACTIVITY_CATEGORIES = exports.DEFAULT_ACTIVITY_REFLECTION_FORM_ID = exports.sampleTargets = exports.flagCodes = exports.defaultStudentWorkflow = exports.defaultInstituteWorkflow = exports.sectorColours = exports.providerSectors = exports.countryList = exports.providerCodes = void 0;
|
|
4
|
+
exports.STUDENT_YEAR_FIELD = exports.JOB_VALUES = exports.CAREER_INTEREST_CATEGORIES = exports.SIC_SECTIONS = exports.SOC_MAJOR_GROUPS = exports.DESTINATION_CODES = exports.careersHubSchoolOnboardingEmailTemplates = exports.emailCampaignFullStatuses = exports.emailCampaignSummaryStatuses = exports.leadStageOrder = void 0;
|
|
5
5
|
exports.skillColour = skillColour;
|
|
6
6
|
/* eslint-disable max-len */
|
|
7
7
|
exports.providerCodes = {
|
|
@@ -463,6 +463,260 @@ exports.sampleTargets = {
|
|
|
463
463
|
// school starts from and can override with their own custom form
|
|
464
464
|
// (institute.activityReflectionForm). Seeded from DEFAULT_ACTIVITY_REFLECTION_FORM.
|
|
465
465
|
exports.DEFAULT_ACTIVITY_REFLECTION_FORM_ID = "defaultActivityReflectionForm";
|
|
466
|
+
// The two kinds of activity a student can log (StudentActivity.type). Students pick one
|
|
467
|
+
// on the first step of the create flow, and staff can scope the activities roster to a
|
|
468
|
+
// single kind. Copy lives here so the picker cards, chips and filters all read the same.
|
|
469
|
+
exports.STUDENT_ACTIVITY_CATEGORIES = {
|
|
470
|
+
extracurricular: {
|
|
471
|
+
label: "Extracurricular activity",
|
|
472
|
+
shortLabel: "Extracurricular",
|
|
473
|
+
description: "Things you do outside lessons that aren't tied to a subject.",
|
|
474
|
+
examples: "Clubs, sport, part-time work, volunteering, Duke of Edinburgh, music or drama.",
|
|
475
|
+
},
|
|
476
|
+
supercurricular: {
|
|
477
|
+
label: "Supercurricular activity",
|
|
478
|
+
shortLabel: "Supercurricular",
|
|
479
|
+
description: "Academic work that goes beyond what your subjects cover.",
|
|
480
|
+
examples: "Wider reading, online courses, lectures, essay prizes, olympiads, research or subject competitions.",
|
|
481
|
+
},
|
|
482
|
+
};
|
|
483
|
+
// Which activity types are offered under each category. "other" appears in both so a
|
|
484
|
+
// student is never stuck without an option. Order is the order they appear in the dropdown.
|
|
485
|
+
exports.ACTIVITY_TYPES_BY_CATEGORY = {
|
|
486
|
+
extracurricular: [
|
|
487
|
+
"sport", "music", "performingArts", "creativeArts", "partTimeWork", "volunteering",
|
|
488
|
+
"leadership", "dofe", "uniformedGroup", "enterprise", "clubSociety",
|
|
489
|
+
"workShadowing", "employerTalk", "workshop", "other",
|
|
490
|
+
],
|
|
491
|
+
supercurricular: [
|
|
492
|
+
"widerReading", "onlineProgramme", "lecture", "competition", "essayPrize", "epq",
|
|
493
|
+
"researchPlacement", "summerSchool", "academicSociety", "culturalVisit",
|
|
494
|
+
"languageLearning", "subjectQualification", "other",
|
|
495
|
+
],
|
|
496
|
+
};
|
|
497
|
+
// Per-type wording for the core "Organisation" field on the details step. "Organisation"
|
|
498
|
+
// is meaningless for wider reading and unhelpfully vague for a sports club or a
|
|
499
|
+
// competition organiser, so each type relabels it — or drops it (`false`) where the
|
|
500
|
+
// schema below already captures the same thing.
|
|
501
|
+
exports.ACTIVITY_TYPE_ORGANISATION = {
|
|
502
|
+
sport: { label: "Club or team name", subtitle: "Leave blank if you do this independently" },
|
|
503
|
+
music: { label: "Ensemble, band or school group" },
|
|
504
|
+
performingArts: { label: "Company, group or production" },
|
|
505
|
+
creativeArts: false,
|
|
506
|
+
partTimeWork: { label: "Employer", required: true },
|
|
507
|
+
volunteering: { label: "Organisation or cause", required: true },
|
|
508
|
+
leadership: false,
|
|
509
|
+
dofe: { label: "Who runs your award?", subtitle: "Your school, or a group like Scouts" },
|
|
510
|
+
uniformedGroup: { label: "Unit, squadron or troop" },
|
|
511
|
+
enterprise: { label: "Business or programme name" },
|
|
512
|
+
clubSociety: false,
|
|
513
|
+
workShadowing: { label: "Employer or organisation", required: true },
|
|
514
|
+
employerTalk: { label: "Employer or speaker's organisation", required: true },
|
|
515
|
+
workshop: { label: "Who ran it?", required: true },
|
|
516
|
+
widerReading: false,
|
|
517
|
+
onlineProgramme: false,
|
|
518
|
+
lecture: { label: "Who hosted it?", subtitle: "e.g. a university, museum, Speakers for Schools", required: true },
|
|
519
|
+
competition: { label: "Who runs it?", subtitle: "e.g. UK Mathematics Trust, British Physics Olympiad", required: true },
|
|
520
|
+
essayPrize: { label: "Who runs it?", subtitle: "e.g. a university department or journal", required: true },
|
|
521
|
+
epq: false,
|
|
522
|
+
researchPlacement: { label: "Host university, lab or employer", required: true },
|
|
523
|
+
summerSchool: { label: "University or provider", required: true },
|
|
524
|
+
academicSociety: false,
|
|
525
|
+
culturalVisit: { label: "Museum, gallery or venue", required: true },
|
|
526
|
+
languageLearning: false,
|
|
527
|
+
subjectQualification: { label: "Awarding body or provider", required: true },
|
|
528
|
+
};
|
|
529
|
+
/**
|
|
530
|
+
* Follow-up questions per activity type, rendered into the details step underneath the
|
|
531
|
+
* type dropdown. Typed as CustomFormSchemaField so the same shape the custom form builder
|
|
532
|
+
* produces can drive these (and so a school could edit them in the builder later);
|
|
533
|
+
* `width` is the md column width, xs is always full width.
|
|
534
|
+
*
|
|
535
|
+
* These are deliberately the things a school can act on — level reached, role held,
|
|
536
|
+
* outcome achieved, who ran it, and which subject it points at — not a second description
|
|
537
|
+
* of the activity. Longer "what did you learn" reflection stays in the reflection step
|
|
538
|
+
* (DEFAULT_ACTIVITY_REFLECTION_FORM); the short prompts here ask something narrower that
|
|
539
|
+
* only makes sense for that type.
|
|
540
|
+
*/
|
|
541
|
+
exports.ACTIVITY_SCHEMAS = {
|
|
542
|
+
// ── Extracurricular ──────────────────────────────────────────────────────
|
|
543
|
+
sport: [
|
|
544
|
+
{ id: 1, label: "Which sport?", type: "short", required: true, width: 6, subtitle: "e.g. netball, karate, rowing", extra: {} },
|
|
545
|
+
{ id: 2, label: "Level you play at", type: "dropdown", required: false, width: 6, extra: { options: ["Just for fun", "School team", "Local club", "County or regional", "National or elite"] } },
|
|
546
|
+
{ id: 3, label: "Your position or role", type: "short", required: false, width: 6, subtitle: "e.g. goalkeeper, captain, coach", extra: {} },
|
|
547
|
+
{ id: 4, label: "Results, awards or coaching qualifications", type: "short", required: false, width: 6, subtitle: "e.g. county trials, black belt, Level 1 referee", extra: {} },
|
|
548
|
+
],
|
|
549
|
+
music: [
|
|
550
|
+
{ id: 1, label: "Instrument or voice", type: "short", required: true, width: 6, extra: {} },
|
|
551
|
+
{ id: 2, label: "Highest grade reached", type: "dropdown", required: false, width: 6, extra: { options: ["Not graded", "Grade 1", "Grade 2", "Grade 3", "Grade 4", "Grade 5", "Grade 6", "Grade 7", "Grade 8", "Diploma"] } },
|
|
552
|
+
{ id: 3, label: "Your role in the group", type: "short", required: false, width: 6, subtitle: "e.g. first violin, lead vocals, accompanist", extra: {} },
|
|
553
|
+
{ id: 4, label: "Performances or concerts this year", type: "number", required: false, width: 6, extra: { min: 0 } },
|
|
554
|
+
],
|
|
555
|
+
performingArts: [
|
|
556
|
+
{ id: 1, label: "Discipline", type: "dropdown", required: true, width: 6, extra: { options: ["Drama or acting", "Dance", "Musical theatre", "Spoken word or stand-up", "Technical - lighting, sound or stage", "Directing or choreography", "Other"] } },
|
|
557
|
+
{ id: 2, label: "Your role", type: "short", required: false, width: 6, subtitle: "e.g. lead role, chorus, stage manager", extra: {} },
|
|
558
|
+
{ id: 3, label: "Productions or performances taken part in", type: "number", required: false, width: 6, extra: { min: 0 } },
|
|
559
|
+
{ id: 4, label: "Grades, exams or awards", type: "short", required: false, width: 6, subtitle: "e.g. LAMDA Grade 6, RAD ballet", extra: {} },
|
|
560
|
+
],
|
|
561
|
+
creativeArts: [
|
|
562
|
+
{ id: 1, label: "Discipline", type: "dropdown", required: true, width: 6, extra: { options: ["Fine art", "Illustration or graphic design", "Photography", "Film or video", "Creative writing", "Podcast or radio", "Music production", "Game or web design", "Fashion or textiles", "Other"] } },
|
|
563
|
+
{ id: 2, label: "Has your work been shown or published?", type: "dropdown", required: false, width: 6, extra: { options: ["Not yet", "Shared online", "School exhibition or publication", "Public exhibition or competition", "Commissioned or sold"] } },
|
|
564
|
+
{ id: 3, label: "Where can it be seen?", type: "short", required: false, width: 12, subtitle: "A link, gallery or publication - useful evidence for applications", extra: {} },
|
|
565
|
+
],
|
|
566
|
+
partTimeWork: [
|
|
567
|
+
{ id: 1, label: "Job title", type: "short", required: true, width: 6, extra: {} },
|
|
568
|
+
{ id: 2, label: "Type of contract", type: "dropdown", required: false, width: 6, extra: { options: ["Regular part-time", "Weekends only", "Casual or zero hours", "Seasonal or holiday work", "Self-employed or freelance", "Family business"] } },
|
|
569
|
+
{ id: 3, label: "Do you have a work permit?", type: "dropdown", required: false, width: 6, subtitle: "Required by law for term-time work if you are under 16", extra: { options: ["Yes", "No", "Not needed - I'm 16 or over"] } },
|
|
570
|
+
{ id: 4, label: "Responsibilities you've been trusted with", type: "short", required: false, width: 12, subtitle: "e.g. cashing up, opening the shop, training new staff", extra: {} },
|
|
571
|
+
],
|
|
572
|
+
volunteering: [
|
|
573
|
+
{ id: 1, label: "Type of volunteering", type: "dropdown", required: true, width: 6, extra: { options: ["Charity shop or fundraising", "Working with children or young people", "Working with older or vulnerable people", "Animals", "Environment or conservation", "Sports coaching or officiating", "Faith or community group", "Event or festival support", "Other"] } },
|
|
574
|
+
{ id: 2, label: "Total hours so far", type: "number", required: false, width: 6, extra: { min: 0 } },
|
|
575
|
+
{ id: 3, label: "Is it part of an award?", type: "dropdown", required: false, width: 6, extra: { options: ["No", "Duke of Edinburgh's Award", "National Citizen Service", "School scheme", "Other award"] } },
|
|
576
|
+
{ id: 4, label: "Who benefits from it?", type: "short", required: false, width: 6, subtitle: "e.g. a local primary school, a food bank", extra: {} },
|
|
577
|
+
],
|
|
578
|
+
leadership: [
|
|
579
|
+
{ id: 1, label: "Position", type: "dropdown", required: true, width: 6, extra: { options: ["Head student or deputy", "Prefect", "Form or class representative", "School or student council", "Subject ambassador", "Peer mentor or buddy", "Sports captain", "House captain", "Society president or committee", "Other"] } },
|
|
580
|
+
{ id: 2, label: "How did you get the role?", type: "dropdown", required: false, width: 6, extra: { options: ["Elected", "Appointed", "Volunteered"] } },
|
|
581
|
+
{ id: 3, label: "How many people do you lead or represent?", type: "number", required: false, width: 6, extra: { min: 0 } },
|
|
582
|
+
{ id: 4, label: "What have you changed or improved?", type: "long", required: false, width: 12, subtitle: "One or two sentences", extra: { minRows: 2 } },
|
|
583
|
+
],
|
|
584
|
+
dofe: [
|
|
585
|
+
{ id: 1, label: "Level", type: "dropdown", required: true, width: 6, extra: { options: ["Bronze", "Silver", "Gold"] } },
|
|
586
|
+
{ id: 2, label: "Section", type: "dropdown", required: true, width: 6, extra: { options: ["Volunteering", "Physical", "Skills", "Expedition", "Residential (Gold only)"] } },
|
|
587
|
+
{ id: 3, label: "Progress", type: "dropdown", required: true, width: 6, extra: { options: ["Not started", "In progress", "Section complete", "Full award achieved"] } },
|
|
588
|
+
{ id: 4, label: "What are you doing for this section?", type: "short", required: false, width: 6, extra: {} },
|
|
589
|
+
],
|
|
590
|
+
uniformedGroup: [
|
|
591
|
+
{ id: 1, label: "Which group?", type: "dropdown", required: true, width: 6, extra: { options: ["Scouts or Explorer Scouts", "Guides or Rangers", "Army Cadets or CCF (Army)", "Air Cadets or CCF (RAF)", "Sea Cadets or CCF (Navy)", "St John Ambulance", "RNLI or coastguard", "Fire cadets", "Police cadets", "National Citizen Service", "Other"] } },
|
|
592
|
+
{ id: 2, label: "Rank or role", type: "short", required: false, width: 6, extra: {} },
|
|
593
|
+
{ id: 3, label: "Badges, awards or qualifications earned", type: "short", required: false, width: 12, subtitle: "e.g. first aid, expedition, leadership, marksmanship", extra: {} },
|
|
594
|
+
],
|
|
595
|
+
enterprise: [
|
|
596
|
+
{ id: 1, label: "Type", type: "dropdown", required: true, width: 6, extra: { options: ["Young Enterprise", "My own business or side hustle", "School enterprise project", "Competition or pitch event", "Social enterprise", "Other"] } },
|
|
597
|
+
{ id: 2, label: "Your role", type: "short", required: false, width: 6, subtitle: "e.g. founder, finance director, marketing lead", extra: {} },
|
|
598
|
+
{ id: 3, label: "Team size", type: "number", required: false, width: 6, extra: { min: 1 } },
|
|
599
|
+
{ id: 4, label: "How is it doing financially?", type: "dropdown", required: false, width: 6, extra: { options: ["Not trading yet", "Made some sales", "Breaking even", "Making a profit"] } },
|
|
600
|
+
],
|
|
601
|
+
clubSociety: [
|
|
602
|
+
{ id: 1, label: "Club or society", type: "short", required: true, width: 6, subtitle: "e.g. chess club, coding club, eco committee", extra: {} },
|
|
603
|
+
{ id: 2, label: "Where does it run?", type: "dropdown", required: false, width: 6, extra: { options: ["At school", "Outside school", "Online"] } },
|
|
604
|
+
{ id: 3, label: "Your role", type: "dropdown", required: false, width: 6, extra: { options: ["Member", "Committee member", "Leader or founder"] } },
|
|
605
|
+
{ id: 4, label: "Competitions or events taken part in", type: "short", required: false, width: 6, extra: {} },
|
|
606
|
+
],
|
|
607
|
+
workShadowing: [
|
|
608
|
+
{ id: 1, label: "Job or department you shadowed", type: "short", required: true, width: 6, extra: {} },
|
|
609
|
+
{ id: 2, label: "How did you arrange it?", type: "dropdown", required: false, width: 6, extra: { options: ["Through school", "Family or friend contact", "Applied myself", "Employer approached the school", "Through a programme - Springpod, Speakers for Schools or similar"] } },
|
|
610
|
+
{ id: 3, label: "Has it changed what you want to do?", type: "dropdown", required: false, width: 6, extra: { options: ["Yes - more interested in this career", "Yes - less interested in this career", "No change", "Not sure yet"] } },
|
|
611
|
+
{ id: 4, label: "Would you recommend this employer to other students?", type: "dropdown", required: false, width: 6, extra: { options: ["Yes", "No", "Not sure"] } },
|
|
612
|
+
],
|
|
613
|
+
employerTalk: [
|
|
614
|
+
{ id: 1, label: "Speaker's job role", type: "short", required: false, width: 6, extra: {} },
|
|
615
|
+
{ id: 2, label: "Where was it?", type: "dropdown", required: false, width: 6, extra: { options: ["At school", "At the employer", "Online", "Careers fair or event"] } },
|
|
616
|
+
{ id: 3, label: "Was it organised by your school?", type: "dropdown", required: false, width: 6, extra: { options: ["Yes", "No - I found it myself", "Through a careers hub or programme"] } },
|
|
617
|
+
{ id: 4, label: "Has it changed what you want to do?", type: "dropdown", required: false, width: 6, extra: { options: ["Yes - more interested in this career", "Yes - less interested in this career", "No change", "Not sure yet"] } },
|
|
618
|
+
],
|
|
619
|
+
workshop: [
|
|
620
|
+
{ id: 1, label: "What did it cover?", type: "dropdown", required: true, width: 6, extra: { options: ["CVs and applications", "Interview skills", "Employability skills", "Money or personal finance", "University applications", "Apprenticeships", "Sector-specific skills", "Other"] } },
|
|
621
|
+
{ id: 2, label: "Did you get a certificate?", type: "dropdown", required: false, width: 6, extra: { options: ["Yes", "No"] } },
|
|
622
|
+
{ id: 3, label: "The most useful thing you took from it", type: "short", required: false, width: 12, extra: {} },
|
|
623
|
+
],
|
|
624
|
+
other: [
|
|
625
|
+
{ id: 1, label: "What kind of activity is it?", type: "short", required: true, width: 6, subtitle: "So your school can group it with similar activities", extra: {} },
|
|
626
|
+
{ id: 2, label: "Is it organised by anyone?", type: "short", required: false, width: 6, subtitle: "A club, charity, employer or programme - or leave blank", extra: {} },
|
|
627
|
+
],
|
|
628
|
+
// ── Supercurricular ──────────────────────────────────────────────────────
|
|
629
|
+
widerReading: [
|
|
630
|
+
{ id: 1, label: "Title", type: "short", required: true, width: 8, extra: {} },
|
|
631
|
+
{ id: 2, label: "Author, host or publisher", type: "short", required: false, width: 4, extra: {} },
|
|
632
|
+
{ id: 3, label: "Format", type: "dropdown", required: true, width: 6, extra: { options: ["Book", "Journal article", "Newspaper or magazine article", "Documentary or film", "Podcast", "Recorded lecture or TED talk", "Blog or online article"] } },
|
|
633
|
+
{ id: 4, label: "Which subject does it relate to?", type: "short", required: true, width: 6, extra: {} },
|
|
634
|
+
{ id: 5, label: "What was it about?", type: "long", required: true, width: 12, subtitle: "A couple of sentences in your own words", extra: { minRows: 2 } },
|
|
635
|
+
{ id: 6, label: "The idea that stuck with you", type: "long", required: false, width: 12, subtitle: "What surprised you, or what would you argue with?", extra: { minRows: 2 } },
|
|
636
|
+
],
|
|
637
|
+
onlineProgramme: [
|
|
638
|
+
{ id: 1, label: "Course title", type: "short", required: true, width: 8, extra: {} },
|
|
639
|
+
{ id: 2, label: "Provider or platform", type: "dropdown", required: true, width: 4, extra: { options: ["FutureLearn", "Coursera", "edX", "OpenLearn (Open University)", "Khan Academy", "Codecademy", "Run by a university", "Provided by my school", "Other"] } },
|
|
640
|
+
{ id: 3, label: "Subject area", type: "short", required: true, width: 6, extra: {} },
|
|
641
|
+
{ id: 4, label: "Did you finish it?", type: "dropdown", required: true, width: 6, extra: { options: ["In progress", "Completed", "Completed with a certificate"] } },
|
|
642
|
+
{ id: 5, label: "Roughly how many hours in total?", type: "number", required: false, width: 6, extra: { min: 0 } },
|
|
643
|
+
{ id: 6, label: "What did you get out of it?", type: "long", required: false, width: 12, subtitle: "One or two sentences", extra: { minRows: 2 } },
|
|
644
|
+
],
|
|
645
|
+
lecture: [
|
|
646
|
+
{ id: 1, label: "Speaker", type: "short", required: false, width: 6, extra: {} },
|
|
647
|
+
{ id: 2, label: "Which subject does it relate to?", type: "short", required: true, width: 6, extra: {} },
|
|
648
|
+
{ id: 3, label: "Was it part of a wider programme?", type: "short", required: false, width: 6, subtitle: "e.g. a university outreach series - or leave blank", extra: {} },
|
|
649
|
+
{ id: 4, label: "The main argument or idea", type: "long", required: true, width: 12, subtitle: "A couple of sentences in your own words", extra: { minRows: 2 } },
|
|
650
|
+
],
|
|
651
|
+
competition: [
|
|
652
|
+
{ id: 1, label: "Competition name", type: "short", required: true, width: 8, extra: {} },
|
|
653
|
+
{ id: 2, label: "Subject", type: "short", required: true, width: 4, extra: {} },
|
|
654
|
+
{ id: 3, label: "Individual or team?", type: "dropdown", required: false, width: 6, extra: { options: ["Individual", "Team"] } },
|
|
655
|
+
{ id: 4, label: "How far did you get?", type: "dropdown", required: true, width: 6, extra: { options: ["Took part", "Certificate of participation", "Bronze, silver or gold certificate", "Shortlisted", "Regional round", "National round", "Placed or won"] } },
|
|
656
|
+
{ id: 5, label: "Award, score or mark", type: "short", required: false, width: 6, extra: {} },
|
|
657
|
+
{ id: 6, label: "How did you prepare for it?", type: "long", required: false, width: 12, subtitle: "Independent preparation is worth recording", extra: { minRows: 2 } },
|
|
658
|
+
],
|
|
659
|
+
essayPrize: [
|
|
660
|
+
{ id: 1, label: "Prize or competition name", type: "short", required: true, width: 8, extra: {} },
|
|
661
|
+
{ id: 2, label: "Subject", type: "short", required: true, width: 4, extra: {} },
|
|
662
|
+
{ id: 3, label: "Your title or question", type: "short", required: true, width: 12, extra: {} },
|
|
663
|
+
{ id: 4, label: "Word count", type: "number", required: false, width: 6, extra: { min: 0 } },
|
|
664
|
+
{ id: 5, label: "Outcome", type: "dropdown", required: true, width: 6, extra: { options: ["Still writing", "Submitted", "Longlisted", "Shortlisted", "Commended", "Won", "Not placed"] } },
|
|
665
|
+
],
|
|
666
|
+
epq: [
|
|
667
|
+
{ id: 1, label: "Project question or title", type: "short", required: true, width: 12, extra: {} },
|
|
668
|
+
{ id: 2, label: "Type of project", type: "dropdown", required: true, width: 6, extra: { options: ["Dissertation", "Investigation or field study", "Performance", "Artefact"] } },
|
|
669
|
+
{ id: 3, label: "Subject area", type: "short", required: true, width: 6, extra: {} },
|
|
670
|
+
{ id: 4, label: "Supervisor", type: "short", required: false, width: 6, subtitle: "The member of staff supervising you", extra: {} },
|
|
671
|
+
{ id: 5, label: "Stage", type: "dropdown", required: true, width: 6, extra: { options: ["Planning", "Researching", "Writing or making", "Submitted", "Graded"] } },
|
|
672
|
+
{ id: 6, label: "Grade, if you have one", type: "dropdown", required: false, width: 6, extra: { options: ["Not yet known", "A*", "A", "B", "C", "D", "E"] } },
|
|
673
|
+
{ id: 7, label: "Why did you choose this question?", type: "long", required: false, width: 12, extra: { minRows: 2 } },
|
|
674
|
+
],
|
|
675
|
+
researchPlacement: [
|
|
676
|
+
{ id: 1, label: "Programme name", type: "short", required: true, width: 8, subtitle: "e.g. Nuffield Research Placement, In2scienceUK, Headstart", extra: {} },
|
|
677
|
+
{ id: 2, label: "Subject or field", type: "short", required: true, width: 4, extra: {} },
|
|
678
|
+
{ id: 3, label: "Supervisor or research group", type: "short", required: false, width: 6, extra: {} },
|
|
679
|
+
{ id: 4, label: "How did you get a place?", type: "dropdown", required: false, width: 6, extra: { options: ["Applied myself", "Nominated by school", "Invited"] } },
|
|
680
|
+
{ id: 5, label: "Did it produce anything?", type: "short", required: false, width: 12, subtitle: "e.g. a poster, report, presentation or publication", extra: {} },
|
|
681
|
+
],
|
|
682
|
+
summerSchool: [
|
|
683
|
+
{ id: 1, label: "Programme name", type: "short", required: true, width: 8, extra: {} },
|
|
684
|
+
{ id: 2, label: "Subject", type: "short", required: true, width: 4, extra: {} },
|
|
685
|
+
{ id: 3, label: "Is it a widening participation programme?", type: "dropdown", required: false, width: 6, extra: { options: ["Yes - Sutton Trust", "Yes - UNIQ", "Yes - another WP programme", "No", "Not sure"] } },
|
|
686
|
+
{ id: 4, label: "How did you get a place?", type: "dropdown", required: false, width: 6, extra: { options: ["Applied myself", "Nominated by school", "Open to anyone"] } },
|
|
687
|
+
{ id: 5, label: "Has it changed where you want to apply?", type: "dropdown", required: false, width: 6, extra: { options: ["Yes - more interested in this subject or university", "Yes - less interested", "No change", "Not sure yet"] } },
|
|
688
|
+
],
|
|
689
|
+
academicSociety: [
|
|
690
|
+
{ id: 1, label: "Society or activity", type: "short", required: true, width: 6, subtitle: "e.g. debating, Model United Nations, medsoc, philosophy society", extra: {} },
|
|
691
|
+
{ id: 2, label: "Which subject does it relate to?", type: "short", required: true, width: 6, extra: {} },
|
|
692
|
+
{ id: 3, label: "Where does it run?", type: "dropdown", required: false, width: 6, extra: { options: ["At school", "At a university", "Outside school", "Online"] } },
|
|
693
|
+
{ id: 4, label: "Your role", type: "dropdown", required: false, width: 6, extra: { options: ["Member", "Committee member", "President or founder"] } },
|
|
694
|
+
{ id: 5, label: "Competitions or conferences taken part in", type: "short", required: false, width: 12, subtitle: "e.g. an MUN conference, a debating final", extra: {} },
|
|
695
|
+
],
|
|
696
|
+
culturalVisit: [
|
|
697
|
+
{ id: 1, label: "What did you go to see?", type: "short", required: true, width: 8, subtitle: "The exhibition, collection or site", extra: {} },
|
|
698
|
+
{ id: 2, label: "Which subject does it relate to?", type: "short", required: true, width: 4, extra: {} },
|
|
699
|
+
{ id: 3, label: "Who arranged it?", type: "dropdown", required: false, width: 6, extra: { options: ["School trip", "I went myself", "With family", "Through a programme"] } },
|
|
700
|
+
{ id: 4, label: "What did you take from it?", type: "long", required: true, width: 12, subtitle: "A couple of sentences in your own words", extra: { minRows: 2 } },
|
|
701
|
+
],
|
|
702
|
+
languageLearning: [
|
|
703
|
+
{ id: 1, label: "Language", type: "short", required: true, width: 6, extra: {} },
|
|
704
|
+
{ id: 2, label: "How are you learning it?", type: "dropdown", required: true, width: 6, extra: { options: ["Self-taught with an app", "Online course", "Evening or weekend class", "Tutor", "At home or with family", "Exchange or immersion", "Other"] } },
|
|
705
|
+
{ id: 3, label: "Level you've reached", type: "dropdown", required: false, width: 6, extra: { options: ["Beginner (A1)", "Elementary (A2)", "Intermediate (B1)", "Upper intermediate (B2)", "Advanced (C1)", "Fluent (C2)"] } },
|
|
706
|
+
{ id: 4, label: "Working towards a qualification?", type: "short", required: false, width: 6, subtitle: "e.g. GCSE, DELE, HSK - or leave blank", extra: {} },
|
|
707
|
+
],
|
|
708
|
+
subjectQualification: [
|
|
709
|
+
{ id: 1, label: "Qualification or award", type: "short", required: true, width: 8, extra: {} },
|
|
710
|
+
{ id: 2, label: "Subject area", type: "short", required: true, width: 4, extra: {} },
|
|
711
|
+
{ id: 3, label: "Level or grade", type: "short", required: false, width: 6, subtitle: "e.g. Level 3, Grade 5, Distinction", extra: {} },
|
|
712
|
+
{ id: 4, label: "Status", type: "dropdown", required: true, width: 6, extra: { options: ["In progress", "Achieved"] } },
|
|
713
|
+
],
|
|
714
|
+
};
|
|
715
|
+
// Activities logged before the extra/supercurricular distinction existed have no `type`.
|
|
716
|
+
// The create flow was extracurricular-only at the time, so read them as extracurricular
|
|
717
|
+
// rather than inventing a third "unknown" bucket in every count and filter.
|
|
718
|
+
const studentActivityCategory = (activity) => activity.type === "supercurricular" ? "supercurricular" : "extracurricular";
|
|
719
|
+
exports.studentActivityCategory = studentActivityCategory;
|
|
466
720
|
// Default questions students answer when they log an extracurricular activity, unless
|
|
467
721
|
// the school has configured their own reflection form. Rendered by the same CustomFormPage
|
|
468
722
|
// renderer used to serve placement/event feedback forms to students and employers.
|