Files
Bill 4d6f81d1e5 v1.2.2: Add Healthcare specialization, mark cancelled courses, rename Digital Marketing
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.
2026-05-09 14:50:26 -04:00

4.1 KiB

1. Specialization Data

  • 1.1 Add { id: 'HCR', name: 'Healthcare', abbreviation: 'HCR' } to SPECIALIZATIONS in app/src/data/specializations.ts (no requiredCourseId)

2. Course Data

  • 2.1 Add { specId: 'HCR', marker: 'standard' } to qualifications of spr2-health-medical in app/src/data/courses.ts
  • 2.2 Add { specId: 'HCR', marker: 'standard' } to qualifications of spr3-analytics-ml
  • 2.3 Rename sum2-social-media name to 'Digital Marketing Strategy in Practice' and add { specId: 'HCR', marker: 'standard' } to its qualifications
  • 2.4 Add { specId: 'HCR', marker: 'standard' } to qualifications of fall1-managing-change
  • 2.5 Add cancelled: true to spr5-customer-insights; leave its qualifications array unchanged
  • 2.6 Append a new course entry { id: 'sum2-managing-growing-companies', name: 'Managing Growing Companies', setId: 'sum2', qualifications: [], cancelled: true } to COURSES

3. Elective Set Membership

  • 3.1 In app/src/data/electiveSets.ts, append 'sum2-managing-growing-companies' to sum2.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 from digital-marketing.txt (paragraphs joined with \n\n); set instructors: []

5. Lookup Behavior Verification

  • 5.1 Confirm coursesBySpec in app/src/data/lookups.ts continues 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: change expect(COURSES.length).toBe(46) to 47
  • 6.2 Change expect(SPECIALIZATIONS.length).toBe(14) to 15
  • 6.3 In the "across sets" describe block, change the helper to filter out qualifications belonging to cancelled courses before counting distinct sets (read cancelled via COURSES.find(...))
  • 6.4 Update expectedAcrossSets map 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 (cancelled spr5-customer-insights removes 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-media displays 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__ to 1.2.2 and update __APP_VERSION_DATE__ to today's date in app/vite.config.ts
  • 8.2 Add a ## [1.2.2] entry to CHANGELOG.md describing: 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 the cancelled flag pattern

9. Cleanup

  • 9.1 Delete J27 Specializations.csv and digital-marketing.txt from the repo root (these were drop-in inputs; data has been migrated into source)