# SHOC — TODO ## Dispatch & Vendor Communication - [ ] Dispatch detail modal — click dispatch row to view/edit status, dates, NTE, description, resend email - [ ] Dispatch number — auto-generated DSP-00001 format, separate from PO number - [ ] DispatchId on Comments — tie vendor comments to specific dispatches, not just the WO - [ ] Vendor activity feed per dispatch — filtered view in dispatch detail modal - [ ] Internal user → vendor email — typing in vendor thread sends email to vendor - [ ] **Front API integration** — replace SendGrid/SES dispatch email with Front inbox (`vendors@seahaven.com`), use Front webhooks for inbound vendor replies, keep email threads intact in both SHOC and Front - [ ] SES inbound vendor reply Lambda — if not using Front: new Lambda for `vendors@int.seahaven.com`, parse subject `[WO-XXXXXXXX-DX]`, write to DynamoDB VendorReplies table - [ ] Sync bridge for vendor replies — SyncController endpoint to pull VendorReplies into Comments table ## Work Order List - [ ] Fix pagination when scrolling through pages - [ ] Pinned Actions column — CSS grid doesn't support sticky horizontal scroll, revisit ## Pages Not Yet Built - [ ] `/profile` — My Profile page (linked from user dropdown) - [ ] `/settings` — Account Settings page (linked from user dropdown) - [ ] `/change-password` — Change Password page (linked from user dropdown) ## Controllers Not Yet Built - [ ] `CalendarController` — backend CRUD for calendar/events (frontend pages exist) ## Dashboard - [ ] Priority Analysis table — needs backend endpoint to calculate age buckets by severity - [ ] Invoice Analysis table — placeholder data, no backend yet ## Data & Integration - [ ] Customer NTE — wire to PO database (placeholder on WO view page) - [ ] Vendor PO detailed format — line items, billing address, payment terms, expiration, T&C - [ ] PDF generation for Vendor PO — QuestPDF or similar - [ ] Address-based distance calculation — upgrade from zip-to-zip to geocoded addresses (Google Maps API or Census Geocoder) - [ ] Backfill location zip codes from address strings during sync ## Deployment - [ ] When SHOC deploys, switch workorder-ingest Lambda from DynamoDB to direct SHOC API calls - [ ] Retire DynamoDB sync bridge - [ ] GitHub branch protection — requires paid plan for private repos