03ae372509
Subagent 1 (Codex review pass): LandingPageClient.tsx - Guard GSAP .scroll-reveal loop to prevent 'missing target' warnings when no targets exist brands/page.tsx - Comment cleanup for selector scoping tuxedo/page.tsx - Add pageScopeRef + use as explicit GSAP context scope (fixes 'Invalid scope' warnings) - Reduced-motion guard for counter animations - Comments noting scope is now resilient HeroSection.tsx - Wrap sections in containerRef for proper GSAP context - Reduced-motion support (final states shown immediately, no heavy anims) - Counter animation: switched from textContent tween (unreliable, left values at 0) to proxy object pattern (val -> display) - Added IO + rAF fallback if GSAP is unavailable - Added section ids: #features, #stats, #reviews (matches nav anchors) - Reduced blank scroll region (300vh -> 140vh on story section) - Removed duplicate inline footer (LandingPageWrapper <Footer /> now sole source) LandingPageWrapper.tsx - Anchor comments noting ids added in HeroSection Docs + scripts: - docs/ADMIN_FUNCTIONALITY_CHECKLIST.md (admin app coverage notes) - docs/pricing-assessment.md (pricing model notes) - scripts/apply-admin-create-stop.js, check-stop-fns*.js, verify-stop-fns.js (admin stop creation tooling)
118 lines
5.8 KiB
Markdown
118 lines
5.8 KiB
Markdown
# Admin Functionality Checklist
|
|
|
|
Use this for manual regression passes after changes (dev mode + dev auth).
|
|
|
|
## Roles to Test
|
|
- platform_admin (full access, all brands)
|
|
- brand_admin (scoped to assigned brand)
|
|
- store_employee (limited: pickup, wholesale only)
|
|
|
|
Auth via existing dev flow (`/login` sets dev_session cookie) or `/admin/test-auth`, `/admin/debug-auth`.
|
|
|
|
## Core Apps
|
|
|
|
### Orders
|
|
- [ ] Dashboard "New Order" and "Create your first order" open usable create flow (`?new=true` modal or /new)
|
|
- [ ] Create order: customer name/email/phone, stop (or ship-only), add multiple items (qty/price/fulfillment mix), totals, submit → appears in list + detail page
|
|
- [ ] List: filters, search, bulk pickup mark, pagination, status tabs
|
|
- [ ] Detail: view items/totals/payment, edit form, pickup action, refunds
|
|
- [ ] Permissions: brand_admin sees only own brand; employee redirected
|
|
- [ ] Empty states and toasts work
|
|
|
|
### Products
|
|
- [ ] List (active only, brand scoped)
|
|
- [ ] New product form (/products/new) → creates and appears in list
|
|
- [ ] Edit product (/products/[id]): change name/price/type/active/image/pickup_type/taxable → saves, list + detail update (router.refresh or state)
|
|
- [ ] Delete (if present)
|
|
- [ ] Import
|
|
- [ ] Image upload + remove
|
|
|
|
### Stops / Tours
|
|
- [ ] List
|
|
- [ ] New stop (/stops/new)
|
|
- [ ] Edit stop
|
|
- [ ] Publish / status changes
|
|
- [ ] Used in order create picker
|
|
|
|
### Communications (Harvest Reach)
|
|
- [ ] Main page tabs: campaigns, contacts, segments, templates, compose, logs, analytics, settings, abandoned carts, welcome sequence
|
|
- [ ] Single coherent compose experience (no confusing duplication between /compose and main "compose" tab)
|
|
- [ ] Audience preview (stop/segment/custom rules) shows visible count + sample customers
|
|
- [ ] Create/edit/save draft campaign, preview, send (test lists only)
|
|
- [ ] Contacts CRUD + import + export + opt out
|
|
- [ ] Segments builder + preview
|
|
- [ ] Templates
|
|
- [ ] Abandoned cart + welcome automation flows (preview/send/resend)
|
|
- [ ] Feature gated when add-on disabled
|
|
|
|
### Settings
|
|
- **Billing**
|
|
- [ ] Consistent view: plan tier + price (annual/monthly toggle), "active subscription" state clear, usage numbers (products/stops/users) match dashboard, enabled add-ons list with correct remove capability, recent invoices match displayed amounts
|
|
- [ ] No contradictory "No active subscription" + active add-ons + invoices
|
|
- [ ] Upgrade, add-on checkout, portal buttons, Stripe connect if applicable
|
|
- **Integrations**
|
|
- [ ] Resend/Twilio/Stripe/etc. forms: non-secret fields (email, name, phone) visible as text; secrets masked + toggle
|
|
- [ ] Test connection buttons (safe)
|
|
- **AI / Advanced**
|
|
- [ ] Real content or proper sections (not pure redirects); links to providers, preferences, feature flags
|
|
- **Other**: brand, apps (feature toggles), payments, shipping, square-sync, users
|
|
|
|
### Wholesale
|
|
- [ ] Dashboard stats, customers list + create/edit, products (custom pricing), orders (fulfill, deposits, notifications)
|
|
- **Portal** (employee or approved buyer): register, login, browse with custom pricing, cart, checkout
|
|
|
|
### Water Log
|
|
- [ ] Admin: headgates, irrigators/users (create with pin reset), entries, settings, alerts
|
|
- [ ] Field/pin flows (separate water/ login)
|
|
- [ ] Permission: can_manage_water_log or platform for TUXEDO brand
|
|
|
|
### Time Tracking
|
|
- [ ] Admin: workers (create/pin reset), tasks, logs, summary, settings, overtime notifications
|
|
- [ ] Field clock in/out with pin
|
|
- [ ] Reports/export
|
|
|
|
### Route Trace
|
|
- [ ] Lots CRUD, QR/sticker gen, lookup, hauling board, supply chain trace, stats, inventory by crop
|
|
- [ ] Feature gated
|
|
|
|
### Import Center + AI Import
|
|
- [ ] Upload/parse for products/orders/contacts/stops
|
|
- [ ] AI column mapping (if enabled)
|
|
- [ ] Execution (safe on test data)
|
|
|
|
### Other Admin
|
|
- [ ] Users (platform): CRUD
|
|
- [ ] Reports / Analytics / Command Center: load data, exports
|
|
- [ ] Pickup (driver): lookup, QR, mark complete
|
|
- [ ] Shipping: orders, FedEx rates/labels, tracking
|
|
- [ ] Taxes: calc + reports
|
|
- [ ] Dashboard: quick actions, usage vs limits, recent orders, plan badge, addon cards
|
|
- [ ] Layout: no dupe headers/footers inside admin shell; sidebar correct per role
|
|
|
|
## Cross-Cutting
|
|
- [ ] All forms use improved AdminInput: clickable labels (htmlFor), real `required` + `aria-required`, error/help described
|
|
- [ ] No repeated "Invalid scope" or missing target console warnings in admin
|
|
- [ ] Brand scoping works (platform sees selector/all; brand_admin filtered)
|
|
- [ ] Feature add-on gating (Harvest Reach, Wholesale, AI, Water, Time, Route Trace, SMS)
|
|
- [ ] Toasts, loading skeletons, empty states, error messages consistent
|
|
- [ ] Responsive (desktop primary)
|
|
- [ ] Dev auth + test brands used; no live prod mutations in routine testing
|
|
|
|
## Public / Storefront (secondary but part of full review)
|
|
- [ ] Homepage: anchors (#features etc.) work, impact counters animate (not stuck at 0), no long blank regions, no GSAP target/scope errors
|
|
- [ ] Tuxedo (and IRD): product sections no visual overlap, Add to Cart buttons visible/sized and functional, stops show real upcoming or clear "none" state, cart blocks checkout when empty, full buyer path (browse → add → cart → checkout → success)
|
|
- [ ] Contact: Phone labeled/typed correctly (not email)
|
|
- [ ] Public pages: no stray "ADMIN" nav link when not logged in as admin
|
|
- [ ] Years: consistent (dynamic preferred)
|
|
- [ ] No dupe SiteHeader + StorefrontHeader
|
|
|
|
## Verification Tips
|
|
- Use `npm run dev`
|
|
- Dev session cookies or test-auth pages
|
|
- Browser devtools: Elements for a11y (labels, aria, required), Console for warnings, Network for action calls
|
|
- Multiple roles + brands
|
|
- After changes: `npx tsc --noEmit`, `npm run build` (or at least lint)
|
|
- Update this checklist and MEMORY.md with results
|
|
|
|
Run this checklist after any admin or storefront changes. Prioritize the Codex blockers first.
|