feat: US-003 - Fix inaccurate timeline entries in CareerActivityTile

This commit is contained in:
2026-02-14 17:54:03 +00:00
parent 13131e4c3e
commit 80d4cc9d7a
3 changed files with 63 additions and 61 deletions
+2 -2
View File
@@ -31,7 +31,7 @@
"Typecheck passes"
],
"priority": 2,
"passes": false,
"passes": true,
"notes": "Check References/CV_v4.md for the accurate role list. The CV has 4 roles: Interim Head, Deputy Head, High-Cost Drugs, Pharmacy Manager (Tesco)."
},
{
@@ -49,7 +49,7 @@
"Typecheck passes"
],
"priority": 3,
"passes": false,
"passes": true,
"notes": "Reference CV at References/CV_v4.md. The role entries in the timeline reference consultations by consultationId — since duty-pharmacist-2016 was removed in US-002, also remove any timeline entry referencing it."
},
{
+21
View File
@@ -871,3 +871,24 @@
- Branch `ralph/dashboard-restructure` created fresh from master
- All previous codebase patterns still apply
---
## 2026-02-14 - US-002
- Removed the fabricated 'duty-pharmacist-2016' entry (Duty Pharmacy Manager, Tesco, Aug 2016Nov 2017) from consultations.ts, constellation nodes, constellation links, and roleSkillMappings
- Files changed: src/data/consultations.ts, src/data/constellation.ts
- **Learnings for future iterations:**
- CareerActivityTile.tsx still has a `consultationId: 'duty-pharmacist-2016'` reference on the "Community Pharmacist" timeline entry — this is a dangling reference that US-003 will clean up by removing that timeline entry
- The constellation data (nodes, links, roleSkillMappings) all reference each other by string ID — removing a role requires removing from all three arrays
- After removal: 4 consultations, 4 role nodes, 4 role-skill mappings, 21 skill nodes remain
---
## 2026-02-14 - US-003
- Fixed inaccurate timeline entries in CareerActivityTile.tsx buildTimeline() to match CV_v4.md
- **Removed:** Power BI Data Analyst Associate cert, Clinical Pharmacy Diploma cert, SQL Analytics Transformation project, Budget Oversight project, Community Pharmacist role (dangling duty-pharmacist-2016 reference)
- **Added:** NHS Leadership Academy — Mary Seacole Programme cert (2018), A-Levels education entry (20092011)
- **Fixed role titles/dates:** Deputy Head (was "Senior Data Analyst"), High-Cost Drugs & Interface Pharmacist (was "Prescribing Data Pharmacist"), Pharmacy Manager at Tesco (was "Community Pharmacist at Boots UK"). All consultationIds now map to existing consultations.
- Files changed: src/components/tiles/CareerActivityTile.tsx
- **Learnings for future iterations:**
- The previous timeline had inaccurate role titles that didn't match consultations.ts or CV_v4.md — always cross-reference both data source and CV
- All 4 role entries now correctly reference their matching consultation IDs: interim-head-2025, deputy-head-2024, high-cost-drugs-2022, pharmacy-manager-2017
- Timeline now has 8 entries: 4 roles + GPhC cert + Mary Seacole cert + MPharm edu + A-Levels edu
---
+40 -59
View File
@@ -26,85 +26,48 @@ interface ActivityEntry {
function buildTimeline(): ActivityEntry[] {
const entries: ActivityEntry[] = []
// Roles from consultations
// Roles from consultations (matching CV_v4.md)
entries.push({
id: 'interim-head-2025',
type: 'role',
title: 'Interim Head, Population Health & Data Analysis',
meta: 'NHS Norfolk & Waveney ICB',
date: '2024 2025',
sortYear: 2024,
date: 'May Nov 2025',
sortYear: 2025,
consultationId: 'interim-head-2025',
})
entries.push({
id: 'deputy-head-2024',
type: 'role',
title: 'Senior Data Analyst — Medicines Optimisation',
title: 'Deputy Head, Population Health & Data Analysis',
meta: 'NHS Norfolk & Waveney ICB',
date: '2021 2024',
sortYear: 2021,
date: 'Jul 2024 Present',
sortYear: 2024,
consultationId: 'deputy-head-2024',
})
entries.push({
id: 'high-cost-drugs-2022',
type: 'role',
title: 'Prescribing Data Pharmacist',
meta: 'NHS Norwich CCG',
date: '2018 2021',
sortYear: 2018,
title: 'High-Cost Drugs & Interface Pharmacist',
meta: 'NHS Norfolk & Waveney ICB',
date: 'May 2022 Jul 2024',
sortYear: 2022,
consultationId: 'high-cost-drugs-2022',
})
entries.push({
id: 'pharmacy-manager-2017',
type: 'role',
title: 'Pharmacy Manager',
meta: 'Tesco PLC',
date: 'Nov 2017 May 2022',
sortYear: 2017,
consultationId: 'pharmacy-manager-2017',
})
entries.push({
id: 'community-pharmacist-2016',
type: 'role',
title: 'Community Pharmacist',
meta: 'Boots UK',
date: '2016 2018',
sortYear: 2016,
consultationId: 'duty-pharmacist-2016',
})
// Projects
entries.push({
id: 'inv-budget',
type: 'project',
title: '£220M Prescribing Budget Oversight',
meta: 'Lead analyst & budget owner',
date: '2024',
sortYear: 2024,
})
entries.push({
id: 'inv-sql-transform',
type: 'project',
title: 'SQL Analytics Transformation',
meta: 'Legacy migration project lead',
date: '2025',
sortYear: 2025,
})
// Certifications
entries.push({
id: 'cert-powerbi',
type: 'cert',
title: 'Power BI Data Analyst Associate',
meta: 'Microsoft Certified',
date: '2023',
sortYear: 2023,
})
entries.push({
id: 'cert-diploma',
type: 'cert',
title: 'Clinical Pharmacy Diploma',
meta: 'Professional development',
date: '2019',
sortYear: 2019,
})
// Certifications (matching CV_v4.md)
entries.push({
id: 'doc-gphc',
type: 'cert',
@@ -114,7 +77,16 @@ function buildTimeline(): ActivityEntry[] {
sortYear: 2016,
})
// Education
entries.push({
id: 'cert-mary-seacole',
type: 'cert',
title: 'NHS Leadership Academy — Mary Seacole Programme',
meta: 'NHS leadership qualification',
date: '2018',
sortYear: 2018,
})
// Education (matching CV_v4.md)
const mpharm = documents.find((d) => d.id === 'doc-mpharm')
if (mpharm) {
entries.push({
@@ -127,6 +99,15 @@ function buildTimeline(): ActivityEntry[] {
})
}
entries.push({
id: 'edu-alevels',
type: 'edu',
title: 'A-Levels: Mathematics (A*), Chemistry (B), Politics (C)',
meta: 'Highworth Grammar School',
date: '2009 2011',
sortYear: 2009,
})
return entries.sort((a, b) => {
if (b.sortYear !== a.sortYear) return b.sortYear - a.sortYear
return 0