3.6 KiB
3.6 KiB
Task: Patient Pathway Graph Stability + Unified Experience/Education Data Model
Refactor the patient-pathway style timeline/graph and related experience UI so interaction feels stable, data is consistent across all sections, and education is merged into the same primary timeline flow.
Context
Current behavior has two major quality issues:
- Hovering graph-related content appears to trigger graph-wide motion/jiggle, implying unnecessary re-rendering or unstable layout state.
- Timeline dates shown in the graph do not match the dates shown in work-experience content.
The layout/content model is also split in ways that make consistency harder:
- Work and education data appear to be rendered through different pathways.
- Education is duplicated via a separate section beneath work experience.
Requirements
- Fix interaction stability:
- Hovering either a graph element OR its corresponding experience/education card must apply the same highlight behavior.
- Hover should not cause global graph jiggle/repositioning.
- Diagnose and resolve date mismatch root cause:
- Determine whether mismatch is from render logic, duplicated data sources, or both.
- Deliver a fix so graph timeline dates match displayed card dates.
- Create one source of truth for timeline entities (career + education):
- Include fields for full title, shortened graph label, date range, description/details, and skills list.
- Use this canonical dataset to drive graph nodes/edges and card rendering.
- Skills integration:
- Aggregate skills from canonical entities.
- Feed the highest-frequency skills into sidebar tags.
- Experience/Education presentation update:
- Remove the standalone work-experience subheader and existing role pill treatment.
- In the unified timeline list, career entries show a
Career Interventionpill. - Education entries remain in the same overall list/component flow but are visually right-aligned.
- Education entries include an
Education Interventionpill inside each card. - Remove the separate education section that currently sits below work experience.
Likely Files In Scope
src/data/*(or equivalent canonical data files)src/types/*(shared timeline entity typing)src/components/*for graph, timeline cards, sidebar tags, and experience/education sections- Any related hooks/utilities managing hover state, mapping, and aggregation
Success Criteria
All of the following must be true:
- Hovering on graph items and corresponding cards produces the same highlight outcome.
- Hover interactions do not cause full-graph jitter/repositioning artifacts.
- Graph dates and card dates are consistent for every timeline entry.
- A single canonical dataset powers both graph rendering and experience/education card content.
- Each timeline entry supports title + short graph label + skills + date fields needed by all consumers.
- Sidebar tags are sourced from aggregated canonical skills (most frequent first).
- Career entries show
Career Interventionpill treatment. - Education entries are visually right-aligned and show
Education Interventionpill treatment. - Separate standalone education section below work experience is removed.
npm run lintpasses.npm run typecheckpasses.npm run buildpasses.
Constraints
- Use existing stack/patterns (TypeScript + React + current project conventions).
- Keep changes focused on graph/timeline/data consistency and the requested UI restructuring.
- Do not introduce unrelated visual/system-wide refactors.
Status
Track implementation progress in this file or .ralph/plan.md.
When all success criteria are met, print LOOP_COMPLETE.