diff --git a/docs/plans/2026-02-13-export-phase-b-design.md b/docs/plans/2026-02-13-export-phase-b-design.md new file mode 100644 index 00000000..d98833c8 --- /dev/null +++ b/docs/plans/2026-02-13-export-phase-b-design.md @@ -0,0 +1,121 @@ +# Export Improvements Phase B — Design + +> **Date:** 2026-02-13 +> **Depends on:** Phase A (complete on `feat/export-phase-a`) +> **Scope:** B1 (Summary Block), B2 (Custom Step Markers), B3 (Detail Levels), B4 (Editable Preview) + +--- + +## Decisions Made + +| Question | Decision | +|----------|----------| +| B1 summary form vs single editable preview | Single editable preview (B4). No separate structured form for summary fields. | +| Detail levels | standard/full only. Dropped "summary" level — primary users are engineers, not dispatchers. | +| Mid-session editable preview | No. TreeNavigationPage keeps quick one-click copy. Editable preview is SessionDetailPage only. | + +--- + +## 1. Schema Changes + +Add to `SessionExport` (backend + frontend): + +```python +include_summary: bool = False +detail_level: Literal["standard", "full"] = "standard" +``` + +No database migration needed — these are export-time options only. + +--- + +## 2. Custom Step Differentiation (B2) + +Detect custom steps by checking `node_id.startswith("custom-")` in each decision dict. + +**Markdown:** +```markdown +### Step 5: [CUSTOM] Check Additional Event Logs +*Custom step added by engineer* +``` + +**Text:** +``` +5. [CUSTOM] Check Additional Event Logs +``` + +**HTML:** +```html +CUSTOM +``` + +**PSA:** +``` +5. [CUSTOM] Check Additional Event Logs -> ... +``` + +Pure backend change — all 4 generators in `export_service.py`. + +--- + +## 3. Summary Block (B1) + +When `include_summary=True`, insert a Summary section after metadata, before Evidence/Steps. + +Auto-populated fields: + +| Field | Source | +|-------|--------| +| Issue | Tree name + description | +| Impact | `[Edit in preview]` placeholder | +| Status | "Resolved" if completed, else "In Progress — paused at step N" | +| Resolution | `outcome_notes` if available | +| Next Steps | `next_steps` if available | + +Blank/placeholder fields are editable in the preview modal (B4). Format varies by generator (markdown table, text key-value, HTML styled table, PSA `--- SUMMARY ---` section). + +The summary block is opt-in (`include_summary=False` default), independent of detail level. + +--- + +## 4. Detail Levels (B3) + +Two levels: + +- **standard** (default): Current behavior, except command outputs >5 lines are truncated with `*(full output omitted — N lines)*` +- **full**: No truncation. All command outputs, scratchpad, notes rendered completely. + +Implementation: Helper function `_truncate_command_output(output, max_lines=5)` used in all 4 generators when `detail_level="standard"`. + +Frontend: Dropdown on SessionDetailPage export controls — "Standard" / "Full Detail". + +--- + +## 5. Editable Preview (B4) + +Modify `ExportPreviewModal`: + +- Replace read-only `
` with editable `