feat: add PSA ticket export format and Quick-Start landing page

PSA Export:
- New "PSA / Ticket Note" export format optimized for ConnectWise
- Structured output: Problem, Steps Taken, Resolution, Time Spent, Notes
- Prominent "Copy for Ticket" button on session detail page
- 24 unit tests for PSA export generator

Quick-Start Landing:
- New default landing page with search-first UX
- Auto-focused search bar with debounced tree search
- "Continue Session" cards for active sessions
- "Recent Trees" section from session history
- Home nav item and logo links updated

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
chihlasm
2026-02-08 19:36:51 -05:00
parent f2ae3a51fa
commit 4f8b7dd7ca
11 changed files with 621 additions and 13 deletions

View File

@@ -13,7 +13,7 @@ from app.models.user import User
from app.schemas.session import SessionCreate, SessionUpdate, SessionResponse, SessionExport, ScratchpadUpdate, SaveAsTreeRequest, SaveAsTreeResponse
from app.api.deps import get_current_active_user
from app.core.permissions import can_access_tree
from app.services.export_service import generate_markdown_export, generate_text_export, generate_html_export
from app.services.export_service import generate_markdown_export, generate_text_export, generate_html_export, generate_psa_export
router = APIRouter(prefix="/sessions", tags=["sessions"])
@@ -288,6 +288,9 @@ async def export_session(
elif export_options.format == "html":
content = generate_html_export(session, export_options)
media_type = "text/html"
elif export_options.format == "psa":
content = generate_psa_export(session, export_options)
media_type = "text/plain"
else: # text
content = generate_text_export(session, export_options)
media_type = "text/plain"