4d6f81d1e5
Apply the J27 (5/6/2026) Stern specialization sheet: - Add Healthcare (HCR) as the 15th specialization, with HCR cross-listings on spr2-health-medical, spr3-analytics-ml, sum2-social-media (renamed), and fall1-managing-change. 10 credits available, no required-course gate. - Rename sum2-social-media to "Digital Marketing Strategy in Practice"; replace its description with new MSKCC-anchored content; clear instructor pending confirmation of new lead. - Switch from delete-and-replace to the previously-unused cancelled flag (Approach B): mark spr5-customer-insights cancelled, add Managing Growing Companies back to Summer Set 2 as a cancelled placeholder per the printed sheet. - Update data integrity tests: course count 46 -> 47, spec count 14 -> 15; per-spec "across sets" helper now filters cancelled courses so future cancellations trigger an obvious assertion failure (BRM 6 -> 5, MKT 7 -> 6, HCR 4 new). - Replace hardcoded 14 in optimizer.test.ts with SPECIALIZATIONS.length.
4.1 KiB
4.1 KiB
1. Specialization Data
- 1.1 Add
{ id: 'HCR', name: 'Healthcare', abbreviation: 'HCR' }toSPECIALIZATIONSinapp/src/data/specializations.ts(norequiredCourseId)
2. Course Data
- 2.1 Add
{ specId: 'HCR', marker: 'standard' }to qualifications ofspr2-health-medicalinapp/src/data/courses.ts - 2.2 Add
{ specId: 'HCR', marker: 'standard' }to qualifications ofspr3-analytics-ml - 2.3 Rename
sum2-social-medianameto'Digital Marketing Strategy in Practice'and add{ specId: 'HCR', marker: 'standard' }to its qualifications - 2.4 Add
{ specId: 'HCR', marker: 'standard' }to qualifications offall1-managing-change - 2.5 Add
cancelled: truetospr5-customer-insights; leave itsqualificationsarray unchanged - 2.6 Append a new course entry
{ id: 'sum2-managing-growing-companies', name: 'Managing Growing Companies', setId: 'sum2', qualifications: [], cancelled: true }toCOURSES
3. Elective Set Membership
- 3.1 In
app/src/data/electiveSets.ts, append'sum2-managing-growing-companies'tosum2.courseIds(placement: end of list, matching the order of the printed J27 sheet)
4. Course Description
- 4.1 In
app/src/data/courseDescriptions.ts, replace the value at key'sum2-social-media'with the description text fromdigital-marketing.txt(paragraphs joined with\n\n); setinstructors: []
5. Lookup Behavior Verification
- 5.1 Confirm
coursesBySpecinapp/src/data/lookups.tscontinues to include cancelled-course qualifications (no code change required; the test asserts the consumer-side filter, not the lookup itself)
6. Test Updates
- 6.1 Update
app/src/data/__tests__/data.test.ts: changeexpect(COURSES.length).toBe(46)to47 - 6.2 Change
expect(SPECIALIZATIONS.length).toBe(14)to15 - 6.3 In the "across sets" describe block, change the helper to filter out qualifications belonging to cancelled courses before counting distinct sets (read
cancelledviaCOURSES.find(...)) - 6.4 Update
expectedAcrossSetsmap to: MGT 11, STR 9, LCM 9, FIN 9, CRF 8, MKT 6 (was 7), BNK 6, BRM 5 (was 6), FIM 6, MTO 6, GLB 5, EMT 4, ENT 4, SBI 4, HCR 4 (new). Only BRM and MKT decrement (cancelledspr5-customer-insightsremoves spr5 from both); HCR is added. All other values unchanged. Note: this test counts raw distinct sets, not CSV-published credit totals (which apply S1/S2 and shared-course rules); do not "correct" other values to match the CSV. - 6.5 Confirm STR S1=9 / S2=8 marker counts test still passes unchanged (no STR markers added or removed)
- 6.6 Run
npm test --prefix app(or the project's preferred command) and confirm all data tests pass
7. Browser Verification
- 7.1 Start dev server (
npm run dev --prefix app) and load the app - 7.2 Confirm "Healthcare" appears in the specialization list/legend
- 7.3 Confirm
spr5-customer-insights("Customer Insights") renders greyed/disabled in Spring Set 5 - 7.4 Confirm
sum2-managing-growing-companies("Managing Growing Companies") renders greyed/disabled as the 5th entry in Summer Set 2 - 7.5 Confirm
sum2-social-mediadisplays as "Digital Marketing Strategy in Practice"; open its info popover and verify the new MSKCC-anchored description appears with no instructor listed - 7.6 Pick a Healthcare-qualifying course (e.g., Managing Change), pin it, and confirm Healthcare appears in the resulting specialization analysis
- 7.7 Note any rendering issue with HCR (missing color/legend entry) and capture for follow-up if found
8. Version and Changelog
- 8.1 Bump
__APP_VERSION__to1.2.2and update__APP_VERSION_DATE__to today's date inapp/vite.config.ts - 8.2 Add a
## [1.2.2]entry toCHANGELOG.mddescribing: new Healthcare specialization, four HCR cross-listings, Digital Marketing Strategy in Practice rename + new description, two cancelled-course entries (Customer Insights, Managing Growing Companies), and adoption of thecancelledflag pattern
9. Cleanup
- 9.1 Delete
J27 Specializations.csvanddigital-marketing.txtfrom the repo root (these were drop-in inputs; data has been migrated into source)