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.
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
## 1. Specialization Data
|
||||
|
||||
- [x] 1.1 Add `{ id: 'HCR', name: 'Healthcare', abbreviation: 'HCR' }` to `SPECIALIZATIONS` in `app/src/data/specializations.ts` (no `requiredCourseId`)
|
||||
|
||||
## 2. Course Data
|
||||
|
||||
- [x] 2.1 Add `{ specId: 'HCR', marker: 'standard' }` to qualifications of `spr2-health-medical` in `app/src/data/courses.ts`
|
||||
- [x] 2.2 Add `{ specId: 'HCR', marker: 'standard' }` to qualifications of `spr3-analytics-ml`
|
||||
- [x] 2.3 Rename `sum2-social-media` `name` to `'Digital Marketing Strategy in Practice'` and add `{ specId: 'HCR', marker: 'standard' }` to its qualifications
|
||||
- [x] 2.4 Add `{ specId: 'HCR', marker: 'standard' }` to qualifications of `fall1-managing-change`
|
||||
- [x] 2.5 Add `cancelled: true` to `spr5-customer-insights`; leave its `qualifications` array unchanged
|
||||
- [x] 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
|
||||
|
||||
- [x] 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
|
||||
|
||||
- [x] 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
|
||||
|
||||
- [x] 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
|
||||
|
||||
- [x] 6.1 Update `app/src/data/__tests__/data.test.ts`: change `expect(COURSES.length).toBe(46)` to `47`
|
||||
- [x] 6.2 Change `expect(SPECIALIZATIONS.length).toBe(14)` to `15`
|
||||
- [x] 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(...)`)
|
||||
- [x] 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.
|
||||
- [x] 6.5 Confirm STR S1=9 / S2=8 marker counts test still passes unchanged (no STR markers added or removed)
|
||||
- [x] 6.6 Run `npm test --prefix app` (or the project's preferred command) and confirm all data tests pass
|
||||
|
||||
## 7. Browser Verification
|
||||
|
||||
- [x] 7.1 Start dev server (`npm run dev --prefix app`) and load the app
|
||||
- [x] 7.2 Confirm "Healthcare" appears in the specialization list/legend
|
||||
- [x] 7.3 Confirm `spr5-customer-insights` ("Customer Insights") renders greyed/disabled in Spring Set 5
|
||||
- [x] 7.4 Confirm `sum2-managing-growing-companies` ("Managing Growing Companies") renders greyed/disabled as the 5th entry in Summer Set 2
|
||||
- [x] 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
|
||||
- [x] 7.6 Pick a Healthcare-qualifying course (e.g., Managing Change), pin it, and confirm Healthcare appears in the resulting specialization analysis
|
||||
- [x] 7.7 Note any rendering issue with HCR (missing color/legend entry) and capture for follow-up if found
|
||||
|
||||
## 8. Version and Changelog
|
||||
|
||||
- [x] 8.1 Bump `__APP_VERSION__` to `1.2.2` and update `__APP_VERSION_DATE__` to today's date in `app/vite.config.ts`
|
||||
- [x] 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
|
||||
|
||||
- [x] 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)
|
||||
Reference in New Issue
Block a user