feat: PSA ticket export and Quick-Start landing page #47

Merged
chihlasm merged 2 commits from feat/psa-export-and-quickstart into main 2026-02-09 04:24:25 +00:00
chihlasm commented 2026-02-09 00:37:18 +00:00 (Migrated from github.com)

Summary

Two high-impact features for driving 50% ticket adoption, built in parallel:

PSA-Formatted Export

  • New "PSA / Ticket Note" export format optimized for ConnectWise/PSA ticket notes
  • Structured output: Problem → Steps Taken → Resolution → Time Spent → Engineer Notes
  • Prominent "Copy for Ticket" button on session detail page (always uses PSA format)
  • Duration auto-calculated from session timestamps
  • 24 unit tests covering all fields, missing data, duration edge cases

Quick-Start Landing Page

  • New default landing page replacing the library redirect
  • Search-first UX: large auto-focused search bar ("Paste ticket subject or search for a tree...")
  • Continue Session cards for active/incomplete sessions with resume support
  • Recent Trees section derived from session history
  • "Browse All Trees" link to full library

Files changed

  • backend/app/services/export_service.py — new generate_psa_export() + _format_duration()
  • backend/app/schemas/session.py — PSA format added to validation
  • backend/app/api/endpoints/sessions.py — PSA format routing
  • backend/tests/test_psa_export.py — 24 new tests
  • frontend/src/pages/QuickStartPage.tsx — new page
  • frontend/src/pages/SessionDetailPage.tsx — "Copy for Ticket" button + PSA option
  • frontend/src/router.tsx — QuickStartPage as default route
  • frontend/src/components/layout/AppLayout.tsx — Home nav + logo link

Test plan

  • 24 PSA export unit tests pass
  • 61 frontend tests pass
  • Frontend build succeeds
  • No regressions in existing tests

🤖 Generated with Claude Code

## Summary Two high-impact features for driving 50% ticket adoption, built in parallel: ### PSA-Formatted Export - New **"PSA / Ticket Note"** export format optimized for ConnectWise/PSA ticket notes - Structured output: Problem → Steps Taken → Resolution → Time Spent → Engineer Notes - Prominent **"Copy for Ticket"** button on session detail page (always uses PSA format) - Duration auto-calculated from session timestamps - 24 unit tests covering all fields, missing data, duration edge cases ### Quick-Start Landing Page - New default landing page replacing the library redirect - **Search-first UX**: large auto-focused search bar ("Paste ticket subject or search for a tree...") - **Continue Session** cards for active/incomplete sessions with resume support - **Recent Trees** section derived from session history - "Browse All Trees" link to full library ## Files changed - `backend/app/services/export_service.py` — new `generate_psa_export()` + `_format_duration()` - `backend/app/schemas/session.py` — PSA format added to validation - `backend/app/api/endpoints/sessions.py` — PSA format routing - `backend/tests/test_psa_export.py` — 24 new tests - `frontend/src/pages/QuickStartPage.tsx` — new page - `frontend/src/pages/SessionDetailPage.tsx` — "Copy for Ticket" button + PSA option - `frontend/src/router.tsx` — QuickStartPage as default route - `frontend/src/components/layout/AppLayout.tsx` — Home nav + logo link ## Test plan - [x] 24 PSA export unit tests pass - [x] 61 frontend tests pass - [x] Frontend build succeeds - [x] No regressions in existing tests 🤖 Generated with [Claude Code](https://claude.com/claude-code)
railway-app[bot] commented 2026-02-09 00:37:31 +00:00 (Migrated from github.com)

🚅 Deployed to the patherly-pr-47 environment in selfless-grace

Service Status Web Updated (UTC)
patherly Success (View Logs) Web Feb 9, 2026 at 4:00 am
hopeful-liberation Success (View Logs) Web Feb 9, 2026 at 3:58 am
<!-- railway-bot-comment-version=2 --> <!-- railway-project-id="22b9b58c-271b-42e5-a10e-6fdec8d00134" railway-project-name="selfless-grace" --> 🚅 Deployed to the [patherly-pr-47](https://railway.com/project/22b9b58c-271b-42e5-a10e-6fdec8d00134?environmentId=ec9c3ba9-f4b4-4372-a5aa-795a990b3454) environment in **[selfless-grace](https://railway.com/project/22b9b58c-271b-42e5-a10e-6fdec8d00134)** | **Service** | **Status** | **Web** | **Updated** (UTC) | | :--- | :--- | :--- | :--- | | patherly | ✅ Success ([View Logs](https://railway.com/project/22b9b58c-271b-42e5-a10e-6fdec8d00134/service/95f556ff-5264-4116-a0c2-618a2fc53ba4?id=15dd3dbb-8ed1-4f68-855b-a78f361671c9&environmentId=ec9c3ba9-f4b4-4372-a5aa-795a990b3454)) | [Web](https://patherly-patherly-pr-47.up.railway.app) | Feb 9, 2026 at 4:00 am | | hopeful-liberation | ✅ Success ([View Logs](https://railway.com/project/22b9b58c-271b-42e5-a10e-6fdec8d00134/service/e1db2ee3-d241-4f45-abe4-c9c5fdf483d5?id=6322b6fe-e0f2-439b-9e33-4a7c087652a5&environmentId=ec9c3ba9-f4b4-4372-a5aa-795a990b3454)) | [Web](https://hopeful-liberation-patherly-pr-47.up.railway.app) | Feb 9, 2026 at 3:58 am |
Sign in to join this conversation.