From 104c1c5f7edf351e1101bdc23548b29dcfb8f29a Mon Sep 17 00:00:00 2001 From: Daniel Date: Thu, 23 Apr 2026 23:57:11 +0200 Subject: [PATCH] feat(client): port PE Guide reference libraries + rescue untracked FAQ data MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two things in one commit because they're coupled by a gitignore fix: (1) PE Guide minimum-viable port, (2) a pre-existing bug where client/src/data/faq.ts was silently gitignored and never committed. .gitignore — narrow scope Changed `data/` to `/data/`. The old rule matched every nested `data/` directory in the tree, including client/src/data/, which meant faq.ts from the FAQ port (commit c0038da) never landed in git — the Faq page built locally only because the file existed on the dev machine. A fresh clone or CI build would fail the Vite build at '@/data/faq'. The narrowed rule still ignores the runtime DB directory at repo root while allowing project data modules to be tracked. This commit also commits the missing faq.ts so the FAQ page is actually buildable from git again. client/src/data/pe-guide.ts Verbatim port of lines 23-311 of public/js/peGuide.js — the stable reference content: • SCALES (12 scales: MRC, DTR, plantar, Beighton, ATR, RR, SpO2, Silverman, Westley, Levine murmur, pulse amp, cap refill) • SYSTEM_SCALES (per-body-system scale mapping) • APTM_LEGEND (5 cardiac auscultation points) • INNOCENT_MURMURS (5 benign childhood murmurs) • RESP_SOUNDS (7 entries with /audio/respiratory/*.ogg paths) • CARDIAC_SOUNDS (6 entries with /audio/cardiac/* paths) Counts preserved exactly. Audio files stay under public/audio/ and are served unchanged. What is NOT in this commit — on purpose PE_DATA (the ~1000-line age-group × system × component × step hierarchy) stays in the vanilla app. The migration checkpoint memory explicitly warns about the class of bug where an LLM silently drops entries from long clinical arrays. PE_DATA porting needs its own session with per-entry counts + visual diff against the vanilla source. An amber banner at the top of the React page links to /#peGuide (the legacy checklist viewer) so users still reach the full exam-step checklist + Generate-Exam-Report flow. Also skipped: the big inline APTM_SVG chest diagram. The letter legend (A/P/E/T/M) carries the clinical content; the pictorial SVG can land later without content risk. client/src/pages/PeGuide.tsx — viewer Grid-of-cards layout: one card per scale, per APTM point, per innocent-murmur, and per sound entry. Sound cards use native