mirror of
https://github.com/Sea-Haven-Industries/proposal-system.git
synced 2026-09-30 07:43:14 +00:00
Medium-effort improvements: - Shrink KPI cards and make each clickable (navigates to filtered list) - Role-specific KPI labels (admin: All Proposals/Pending Review; dispatcher: Total Submitted/In Review) - Reorder sidebar nav per role (admins see Admin section first) - Add WO# and Priority columns to Dashboard recent proposals table - Replace "View All" with "View All Proposals" button with arrow icon - Add Age column to admin queue with color-coded staleness (>2d orange, >5d red) Heavy-lift improvements: - Status tabs on All Proposals page (replace status dropdown with All/In Review/Approved/Sent/Revised tabs) - Group proposal revisions in tables (expand/collapse, latest shown by default) - Collapsible left panel in admin workspace (chevron toggle, center panel expands to fill) - Sticky action bar with total display, item count, vendor cost, compact unsaved-changes chip - Restructure proposal form into 3 card sections (Job Details, Site & Location, Work Details) - Disabled-submit helper text showing missing required fields - Compact status timeline with timestamps under completed steps - Status explanation below timeline (e.g., "Awaiting admin pricing and approval")
5.7 KiB
5.7 KiB
Session Handoff — 2026-05-22
What was done (committed on main, 7 commits ahead of origin)
Commits 1–4 (prior session)
Commit 1: Site search, PO number, service category, form enhancements
- Site search UX: Moved "Enter address manually" button outside Autocomplete dropdown (click-race fix), removed flickering
searchedOncestate, disabled MUI client-side double-filtering - Structured manual entry: 5 separate fields (Site Code, Street, City, State, Zip) auto-assemble into
customerAddressstring - PO number: Added
poNumberto frontend form, backend entity, andAddPoNumbermigration - Service category "Other": Added
Otherto enum, shows "Specify Category" text field when selected, prepends custom text to notes - Label consistency: "Work Order #" → "Work Order Number", "PO Number" on form and detail page
- Form layout: Top row reflowed to 3-column layout (4/4/4)
- Dev PDF generation script (
scripts/generate-pdf-local.py)
Commit 2: Status/priority display, sortable tables, list filters
STATUS_LABELSmap: "InReview" → "In Review" everywherePRIORITY_LABELSmap: "Emergency" → "Emergency Dispatch"Sentcolor changed from green (same as Approved) to blue- Urgent rows: orange border + warning icon; Emergency: red border + red background + alert icon
- All 8 columns in My Proposals list sortable via
TableSortLabel(client-side, default Submitted desc) - Status, Category, Priority filter dropdowns with server-side filtering; filters reset to page 1
Commit 3: PDF download, versioning, status timeline fix
- Removed admin-only restriction on
GET pdfandGET pdf/{revision}endpoints - Added
GET pdf/versionsendpoint returning{revision, generatedAt}[] - "Download PDF" button on detail page for Approved/Sent/Revised proposals
- "PDF Versions" card with individual download per revision
- Dev-mode support for
GetPdfRevisionendpoint - Status timeline stepper uses
STATUS_LABELS(fixes raw "InReview" display)
Commit 4: Admin workspace revision dropdown, editable WO#, approval fix
- Bug fix:
ApproveAsyncnow accepts bothInReviewandRevisedproposals - Revision dropdown: "Rev X" chip is now a clickable dropdown listing all revisions with status and download
- Editable Work Order Number: WO# in admin workspace is now editable; added
WorkOrderNumbertoUpdateProposalRequest - Info bar reorder: Customer → Site → WO# → PO# → Category → Priority
- Download PDF button in action bar for Sent and Revised proposals
- Typed
getHistoryAPI to returnProposalDetail[]
Commits 5–7 (this session)
Commit 5: Fix layout double-offset from persistent drawer
- The sidebar's persistent Drawer reserved width in the flex container AND the main content had
margin-leftfor the same width, pushing content 440px to the right - Removed the redundant
margin-leftfrom main content; addedtransition: width 250msto the Drawer for smooth toggle
Commit 6: Add role-aware dashboard stats and recent proposals
GetStatsAsyncnow returns global counts for admins/sysadmins instead of filtering bySubmittedById- Dashboard recent proposals query uses
mine=falsefor admins so they see all proposals
Commit 7: Apply UX quick wins from external review
- "Not priced" display: New
formatBidAmount()helper replaces$0.00with "Not priced" across Dashboard, ProposalListPage, AdminDashboard, and ProposalDetailPage - Login button consistency: All three dev-login role buttons now use the same filled style with role descriptions (e.g., "Admin — Review and approve proposals")
- Context-aware empty states: Proposal list distinguishes "no results match filters" from "you have no proposals" with appropriate copy and actions
- Clear Filters button: Added to ProposalListPage and AdminDashboard filter rows; appears when any filter/search is active
- Workspace button clarity: "Regenerate" renamed to "Regenerate Suggested Line Items"; disabled Save/Approve buttons show tooltip explanations
- Plain language: Similar Proposals empty state changed from "RAG engine" jargon to "Similar proposals will appear here when available"
- User Management placeholder: Centered layout with "Coming Soon" heading and Cognito guidance text
- Screenshot script:
scripts/screenshot-pages.mjscaptures all pages for all 3 roles via Puppeteer (incognito contexts, dev-login button clicks)
What's running locally
- Postgres via Docker (port 5432)
- .NET API on http://localhost:5000 (dev mode, ASPNETCORE_ENVIRONMENT=Development)
- Vite frontend on http://localhost:5173
Not done yet
Must do before push
- Not pushed — 8 commits on main ahead of origin, needs
git push - CDK compute stack needs
IAmazonDynamoDBread permission onverified-sitestable for productionSiteService
UX improvements (from external review — DONE)
All 15 medium-effort and heavy-lift UX improvements from the external review have been implemented (commit 8).
Infrastructure / ops
- Confluence architecture map update (page id 1540098)
[skip deploy]convention not implemented in deploy workflow- Automated test suite not started
Mobile
- App icons still placeholders
- Google OAuth mobile crash uninvestigated
Compliance Fixes Applied (2026-05-18)
- Fixed oss-index-creator Lambda: added
functionName,architecture: ARM_64,logRetention: TWO_MONTHS - Added
node-version: "24"to all CI workflow reusable calls (web, mobile, infra) - Removed dead
_api_request()helper and unusedtimeimports from all 4 main Python Lambdas - Added
permissions: id-token: writeto deploy-mobile.yaml for OIDC - Added
paths-ignore: mobile/**to deploy.yaml - Added
@react-native-community/cli+cli-platform-iosas mobile devDependencies