## Next Section Prompt — Reports: Envelope, Phone Book (variants), Rolodex Info Implement the next set of reports building on existing report infrastructure. Context: - Phone Book HTML/CSV/PDF is already implemented at `/reports/phone-book` using `build_phone_book_pdf` and `report_phone_book.html`. - Bulk selection from `rolodex.html` posts to `/reports/phone-book`. Goals: 1) Envelope report (PDF) - Endpoint: `GET /reports/envelope?client_ids=...&q=...&format=pdf` - Input: either selected `client_ids` (from rolodex bulk) or current filter `q`. - Output: PDF of #10 envelope mailing blocks, one per client, paginated. Address format: - Line 1: `First Last` (or `Company` if present and person name is blank) - Line 2: `Company` (optional if name already used) - Line 3: `Address` - Line 4: `City, ST ZIP` - Implementation: `build_envelope_pdf(clients)` in `app/reporting.py` using fpdf2 with sensible margins and font sizes. 2) Phone Book — Address & Phone variant (HTML/CSV/PDF) - Extend existing `GET /reports/phone-book` to support `variant=address_phone`. - Columns: Name, Company, Address, City, State, Zip, Phone Type, Phone Number. - CSV: include all columns above. - PDF: tabular layout similar to current phone book, trimmed to fit page width. 3) Rolodex Info report (PDF) - Endpoint: `GET /reports/rolodex-info?client_ids=...&q=...&format=pdf` - Output: Per-client summary blocks showing key details: - Name (Last, First), Company - Address, City/State/Zip - All phone numbers (type + number) - Implementation: `build_rolodex_info_pdf(clients)` in `app/reporting.py`, multi-column or stacked blocks with clear headings and light separators. UI wiring: - In `rolodex.html` bulk actions, add buttons/links for: - Envelope (Selected) → POST to `/reports/envelope` or GET with `client_ids` - Phone Book CSV/PDF (Current Filter) with `variant=address_phone` - Rolodex Info (Selected) Acceptance Criteria: - All endpoints require auth; respect `client_ids` or `q` filtering similar to phone book. - CSV downloads set `Content-Disposition` with meaningful filenames. - PDFs render at least one page with legible typography and pagination. - Logging: add structured logs for render/export start/end with counts. Non-goals (for this pass): - Advanced formatting (duplex, custom fonts), i18n, or bulk email generation. Test notes: - Use existing seed/import flows to populate clients and phones. - Validate downloads via browser and ensure no server errors in logs.