feat(medications): Wirkung tab + Insights efficacy summary

Add the per-medication "Wirkung" tab (hidden for one-shot and no-target meds)
rendering the target series with a start marker, dose-change markers, shaded
pause bands and a faint reference band, an adherence lane, a neutral
before/after-start card with honest empty states, an optional level-shift note,
and a retarget chooser. Weave a compact, read-only efficacy summary into the
Insights medication surface that reads the same DTO and links through to the
tab. All copy is descriptive; add a banned-verdict-verb guard test over the
medications.efficacy namespace across all six locales.
This commit is contained in:
Marc-André Bombeck committed 2026-07-09 13:02:02 +02:00
1 parent 725f69097f
commit 8617fa7129
14 files changed
+1127 -14

No files matched your search

+8
View File
@@ -17,6 +17,7 @@ import { ComplianceHeatmap } from "@/components/charts/compliance-heatmap";
import { CoachLaunchButton } from "@/components/insights/coach-launch-button";
import { InsightStatusCard } from "@/components/insights/insight-status-card";
import { MetricTargetSummary } from "@/components/insights/metric-target-summary";
import { MedicationEfficacySummary } from "@/components/insights/medication-efficacy-summary";
import { SubPageShell } from "@/components/insights/sub-page-shell";
import { TileHeader } from "@/components/insights/tile-header";
import { apiGet } from "@/lib/api/api-fetch";
@@ -280,6 +281,13 @@ export default function InsightsMedikamentePage() {
})}
</div>
{/* v1.28 — compact efficacy summary: reuses the same server-computed
efficacy DTO the detail-page "Wirkung" tab reads (never a second
computation), association-only, linking through to the full view. */}
<MedicationEfficacySummary
medications={medications.map((m) => ({ id: m.id, name: m.name }))}
/>
<MetricTargetSummary slug="medications" />
{/* v1.12.2 — the assessment is the LAST block on every bespoke