← All tests

Outdoor Rework — NIX-OS-34 + NIX-OS-56 PROD

2026-05-11 on prod. Closes Narong's review #2 feedback on the Reports page (NIX-OS-34) and the wide-monitor responsiveness rework (NIX-OS-56). NIX-OS-37 (map fixes) deferred this session pending a Narong sync — too much ambiguity to fix the right thing without his repro steps + design ref.

16/16 prod screenshots green across 3 viewports (1440×900, 1920×1080, 2560×1440) on demo.nixtech.app/outdoor/.

Commits

228a915 (backend) — feat(NIX-OS-34): /reports/sales-overview daily series folds in
                    Customer Visits per day so the Sales Trend chart can plot
                    visits alongside actual + target revenue.
  src/report/report.router.ts — new dailyVisits query joins activities by
  type='visit', merged with dailyRevenue into a single dailySeries with
  date / revenue / orders / visits.

8bfb12f (frontend) — feat(NIX-OS-34): rework Reports + Visit Progress widgets.
  src/views/pages/reports/ReportsPage.vue
    - moved Sales Trend section above Sales Progress section
    - chart Customer Visits dataset (type:'bar') on yAxisID 'y1' (right axis)
  src/components/dashboard/CustomerVisitTableWidget.vue
    - column header "% Complete" → "Visit Progress"
    - dropped Min Expected + Max Expected columns
  src/components/dashboard/CustomerVisitProgressWidget.vue
    - removed Expected Range tile from goal-tracking grid

44b9729 (frontend) — style(NIX-OS-56): wide-monitor responsiveness rework.
  src/layout/AppLayout.vue
    - .layout-main max-width 1400px → 1600px
  src/assets/layout/_main.scss
    - .layout-main-container padding horizontal: 1.5rem → clamp(1.5rem, 4vw, 4rem)
  Pairs together: cap content readability at 1600px, scale outer padding
  with viewport so wide monitors get visible breathing room rather than
  empty centered space (the failure mode of the April 13 attempt).

Prod screenshot run (16/16)

#StepStatus
1Backend reports endpoint deployed (200 + visits in shape)pass
2SSO login @ 1440×900pass
3-6dashboard / reports / customers / orders @ 1440×9004/4
7SSO login @ 1920×1080pass
8-11dashboard / reports / customers / orders @ 1920×10804/4
12SSO login @ 2560×1440pass
13-16dashboard / reports / customers / orders @ 2560×14404/4

Notes for Narong's review

Reports page on demo prod has no real data (no orders, no visits, no
products) — the Sales Trend chart shows "No revenue data for this
period." rather than the new Customer Visits bars. The bar series IS
plumbed end-to-end (backend dailySeries returns visits per day, frontend
chart definition has the third dataset on yAxisID 'y1'); to verify the
visual, either point this at a tenant with real activities (e.g. ephac)
or seed some visit + order data on demo.

NIX-OS-56 — the rework keeps the centered max-width-1600px content
container, which is structurally identical to the rejected April 13
1400px version with a wider cap + more generous outer padding via the
clamp(). If Narong rejects this too, the next move is probably to ditch
the max-width entirely and let content stretch to the viewport minus
the clamp padding — that's a meaningfully different layout philosophy
and worth getting his explicit nod on before another iteration.

NIX-OS-37 deferred. Three of its four bullets need Narong feedback:
  - Nearby radius bug — current code at useMapFilters.js:245 already
    uses mapCenter (where user is looking on the map), not GPS current
    location, so his complaint may be about something else (pan-doesn't-
    refilter, or radius vs bounds-intersection).
  - Popup Quick Actions redesign — needs his design reference for
    "similar to NIX GO UI & Google".
  - Delivery indicator — Narong's own bullet says "Suspected" — needs
    repro before fixing the wrong thing.
  Only the mobile-back-from-Advanced-Settings nav fix is unambiguous;
  saving for next pass when we can knock out all four together.
01Reports — reordered1440×900
Order is now KPI Cards → Sales Trend → Sales Progress by Salesperson → Top 10 Products. Demo tenant has no data — chart shows "No revenue data for this period." but the layout is correct.
02Reports — 1080p1920×1080
Sales Progress table headers visible: Sales Agent / Customer Visits / Actual / Target / Sale Progress / Gap / Status. Sale Progress = actual / target × 100 per Narong's spec.
03Reports — wide2560×1440
NIX-OS-56 in effect: layout-main max-width 1600px + 4rem container padding. Content sits centered-ish with visible left/right breathing room rather than touching the screen edges.
04Dashboard1440×900
Visit Progress widgets gated to authorized roles + require salesperson data; demo's owner doesn't render them. The actual NIX-OS-34 Visit Progress widget changes (renamed column, dropped Min/Max) will surface for tenants with assigned salespeople — verifiable on a tenant with real Outdoor data.
05Customers — baseline1440×900
Filters bar + grid: 24px (1.5rem) horizontal padding (the clamp's floor on this viewport). Same as before NIX-OS-56.
06Customers — 1080p1920×1080
4vw of 1920 = 76.8px → clamp clamps to 64px (4rem cap). Padding now visibly more generous than the 1440 baseline.
07Customers — wide2560×1440
At 2560: padding 64px each side, content max-width 1600px centered via auto margins. Wide monitors still get filters + grid in usable width without empty edges.
08Orders — baseline1440×900
Sale Orders form-heavy page; visual sanity check that the layout rework doesn't break filter row + form fields at standard width.
09Orders — 1080p1920×1080
Same form, more padding on the sides per the clamp.
10Orders — wide2560×1440
Wide monitor — form fields stretch within the 1600px cap, outer padding visible.
11Dashboard — 1080p1920×1080
Empty for demo owner; included for completeness across the resolution sweep.
12Dashboard — wide2560×1440
Empty for demo owner; padding sweep verified.