feat(IMP-08): U3 — frontend wire (zoneSections override)
Wires the frontend drag/drop zone assignment through to the backend --override-section-assignment CLI flag. PipelineOverrides gains an optional zoneSections field (Record<string, string[]>) carrying canonical ordinal section ids (e.g., "top": ["04-2-sub-1"]). Vite middleware /api/run accepts overrides.zoneSections and forwards each non-empty zone as `--override-section-assignment ZONE=sid[,sid]`. Empty arrays and non-string sids are filtered to avoid bogus assignments from a partially-built UI state. Home.tsx builds the override with a diff-vs-default guard per Codex Stage 3 R3 B3 fix : createInitialUserSelection seeds zone_sections with the auto plan, so a literal copy would pollute backend assignment-source provenance even on a fresh re-render. The diff compares each zone's section list against sourcePlan.zones[].section_ids and only emits zones that differ. Toast summary now reports zoneSections=N when forwarded. Smoke verification : python -m src.phase_z2_pipeline samples/mdx_batch/04.mdx test_imp08_smoke --override-section-assignment primary=04-2-sub-1 produces section_assignment_plan with assignment_source=cli_override and v4_selector_trace.candidates populated via the U1 alias resolver (04-2-sub-1 -> 04-2.1 V4 entry). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -251,6 +251,11 @@ export interface PipelineOverrides {
|
||||
/** zone_id (top/bottom/left/right/...) → slide-body 내부 0~1 비율.
|
||||
* backend 의 build_layout_css 가 horizontal-2 / vertical-2 만 처리. */
|
||||
zoneGeometries?: Record<string, { x: number; y: number; w: number; h: number }>;
|
||||
/** IMP-08 B-3 : zone_id -> list of section_id assignments
|
||||
* (canonical ordinal `${parent}-sub-${n}`). Only forwarded when the
|
||||
* user explicitly diverges from the auto plan; default placements
|
||||
* are not echoed back to avoid polluting override provenance. */
|
||||
zoneSections?: Record<string, string[]>;
|
||||
}
|
||||
|
||||
export async function runPipeline(
|
||||
|
||||
Reference in New Issue
Block a user