From 809ce3bda82aa11723d904b99e1e87fdf1264591 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Amara=20Diallo=20=E2=80=94=20PO=20nextcraft?= Date: Wed, 21 Oct 2026 04:41:14 +0000 Subject: [PATCH] =?UTF-8?q?feat(placements):=20v0.11=20P5=20learner=20plac?= =?UTF-8?q?ement=20visibility=20(REQ-11-005)=20[6/10]=20=E2=80=94=20wave?= =?UTF-8?q?=205-2:=20placement.ts=20mirrors=20for=20the=20learner=20status?= =?UTF-8?q?=20reads=20(D-110)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/types/placement.ts | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/packages/types/placement.ts b/packages/types/placement.ts index 461a13d..7a54378 100644 --- a/packages/types/placement.ts +++ b/packages/types/placement.ts @@ -133,4 +133,35 @@ export interface PlacementOverview { guiding_goal: number; by_employer: Array<{ employer_id: string; count: number }>; by_cohort_month: Array<{ month: string; count: number }>; -} \ No newline at end of file +} + +/** The application row on the learner status read (base.py + * LearnerApplicationSummary, D-104): the mine-visible fields only — + * ids + status + the apply timestamp (nullable per the v0.6 row). */ +export interface LearnerApplicationSummary { + id: string; + posting_id: string; + learner_id: string; + status: ApplicationStatus; + created_at: string | null; +} + +/** GET /v1/marketplace/applications/{application_id}?learner_id= + * response (base.py LearnerApplicationStatusResponse, REQ-11-005): + * the learner's-own application read — current status + the full + * id-ordered event history for THIS application + the placement + * record when hired (the honest null otherwise, A-304). */ +export interface LearnerApplicationStatus { + application: LearnerApplicationSummary; + events: PlacementEvent[]; + placement: Placement | null; +} + +/** GET /v1/marketplace/applications/mine response (base.py + * MineApplicationResponse, G-322): the panel's application discovery + * on revisit — a 404 renders the apply CTA (the panel never depends + * on client-persisted application_ids). */ +export interface MineApplication { + application_id: string; + status: ApplicationStatus; +}