Commit graph

163 commits

Author SHA1 Message Date
Codex Review Integration
827f8ca8ba refactor(dashboard): extract scope hook and header actions to satisfy governance caps
Split DashboardPage's scope/paging state into useDashboardScope and the header
controls into DashboardHeaderActions, and flatten parseDashboardDrilldownParams'
hasAny check, keeping every function under the complexity/line-count gates.
2026-09-17 03:14:15 -03:00
Codex Review Integration
1271d3c11e feat(dashboard): dispatcher scope picker, status distribution, region drilldown, perf counts
- SH-336: add the dispatcher-scope picker (All / My WOs / individual) for
  Scheduler/Admin via a new viewAllDispatchersOnDashboard role gate, a static
  'My WOs' label for Dispatcher, and hide the dispatcher tables (and skip their
  queries) when the viewer cannot see all dispatchers. Scope drives dispatcherId
  on stats, workload, performance, and regions (SH-347 contract).
- SH-352: add the Status Distribution module with its empty state and status
  drill-down.
- SH-347: show Assigned/Completed counts and colour the completion rate
  (green >=90, amber 70-89, red <70) on Dispatcher Performance.
- SH-348: drill a region bar into the board region filter; hold the
  unconfirmed 'Unmapped/Other' bucket off the chart.
- SH-349: label Vendor Insights as all-time, company-wide.
- Make the drilldown-filters effect fire only on URL change; add a deterministic
  clock to the status-drilldown test; add the dashboard visual regression spec
  and baselines.
2026-09-17 02:56:31 -03:00
Codex Review Integration
078933ad9a Merge remote-tracking branch 'origin/dev' into feat/ab/sh-336-dashboard 2026-09-17 02:21:15 -03:00
Codex Review Integration
1b17cbec01 feat(dashboard): build dashboard experience (SH-336) 2026-09-16 19:37:15 -03:00
Alexandre Brandizzi
68c4809a16
Merge branch 'dev' into fix/ab/sh-341-generate-completes-work-order 2026-09-16 19:18:28 -03:00
Alexandre Brandizzi
dd34e79e19
Merge branch 'dev' into fix/ab/sh-356-due-date-after-schedule 2026-09-16 18:52:26 -03:00
Alexandre Brandizzi
79f9e52870
Merge branch 'dev' into fix/ab/sh-341-generate-completes-work-order 2026-09-16 18:50:23 -03:00
Alexandre Brandizzi
55723a1cfd
Merge branch 'dev' into fix/ab/sh-341-generate-completes-work-order 2026-09-16 18:38:38 -03:00
Alexandre Brandizzi
b746087d0b
Merge branch 'dev' into fix/ab/sh-356-due-date-after-schedule 2026-09-16 18:38:23 -03:00
Alexandre Brandizzi
0f34e8c7c6
Merge branch 'dev' into fix/ab/sh-371-pm-extra-media-gallery 2026-09-16 18:38:14 -03:00
Alexandre Brandizzi
754912c643
Merge branch 'dev' into fix/ab/sh-371-pm-extra-media-gallery 2026-09-16 18:28:19 -03:00
Alexandre Brandizzi
49fd0b039c
Merge branch 'dev' into fix/ab/sh-356-due-date-after-schedule 2026-09-16 18:26:20 -03:00
Alexandre Brandizzi
99f57b9c89
Merge branch 'dev' into fix/ab/sh-341-generate-completes-work-order 2026-09-16 18:24:22 -03:00
Alexandre Brandizzi
632d01f373
Merge branch 'dev' into fix/ab/sh-357-sh-358-status-transitions 2026-09-16 18:22:16 -03:00
Codex Review Integration
e65049691c chore(work-orders): remove ticket keys from lifecycle docs 2026-09-16 17:01:58 -03:00
Codex Review Integration
4e54aa7cfe chore(work-orders): remove ticket keys from completion docs 2026-09-16 16:56:26 -03:00
Codex Review Integration
c75f8b6239 chore(work-orders): remove ticket keys from audit docs 2026-09-16 16:56:26 -03:00
Codex Review Integration
8774b2e0a6 fix(work-orders): render PM extra media in the gallery (SH-371)
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-16 15:23:24 -03:00
Codex Review Integration
b4d2d69abe fix(work-orders): keep Due Date on or after Schedule On 2026-09-16 13:32:44 -03:00
Codex Review Integration
f6a22a9096 fix(work-orders): offer only valid manual status transitions inline (SH-357, SH-358)
The inline status control no longer offers the automatic Incomplete and
Scheduled states or the work order's current status. Inline create keeps its
explicit Incomplete/Pending/Scheduled creation list.
2026-09-16 11:43:34 -03:00
Codex Review Integration
e46e42df69 fix(work-orders): show full audit timestamps and previous type values (SH-361, SH-363)
Audit Log entries now show date and time for every entry instead of a
time-only stamp for manual changes. Type and Severity entries read
'Changed Type from X to Y', a severity cleared by a type correction reads
'from SEV N to —', and the generic fallback no longer renders a raw
FieldChanged action name.
2026-09-16 11:43:34 -03:00
Codex Review Integration
09636ef590 fix(work-orders): complete the work order when its completion document is generated (SH-341)
Generating or uploading the completion document now moves a closable work
order to Completed without the manual confirmation, as SH-115 requires. The
SH-114 closability gate is evaluated on the row the server returned after the
document save; Save draft, Not required, Past Due, Completed and Canceled rows
are never auto-completed. The follow-up status patch uses that row's
rowVersion so it does not conflict with the document save.
2026-09-16 11:43:33 -03:00
Arthur Bassi
fc3e7591dc
fix(work-orders): add Unscheduled option to Advanced Filters Date range (#181)
Some checks are pending
Frontend checks / Build and test (push) Waiting to run
Frontend checks / governance (push) Waiting to run
Frontend checks / Visual regression (push) Waiting to run
Deploy dev content / Deploy shoc-frontend-new-dev through Terraform (push) Waiting to run
* fix(work-orders): add Unscheduled option to Advanced Filters Date range

* fix(work-orders): page unscheduled results server-side

---------

Co-authored-by: Codex Review Integration <codex-review@local.invalid>
Co-authored-by: Alexandre Brandizzi <alex_brandizzi@hotmail.com>
2026-09-15 19:11:35 -03:00
Arthur Bassi
c7aec49f05 fix(work-orders): keep completion freeze on live registry edits 2026-09-10 18:47:32 -03:00
Arthur Bassi
99c758872a fix(work-orders): extract helpers to satisfy governance complexity 2026-09-10 18:15:02 -03:00
Arthur Bassi
116f65ca48 feat(work-orders): consume completion freeze snapshot on the board
Prefer FrozenSite, FrozenCompany, and FrozenPoc on Completed rows.
2026-09-10 15:41:01 -03:00
Arthur Bassi
1fdecdd45d Merge remote-tracking branch 'origin/dev' into feat/SH-186-schedule-clear 2026-09-09 18:18:11 -03:00
Arthur Bassi
15de3fca0a Merge remote-tracking branch 'origin/dev' into feat/SH-186-schedule-clear 2026-09-09 17:47:37 -03:00
Arthur Bassi
eab83f6562 Merge branch 'dev' into feat/SH-171-wo-documents 2026-09-09 17:46:10 -03:00
Arthur Bassi
c71d9482ec feat(work-orders): align Schedule On clear with shared demotion path
Board Clear uses empty-week patch; slide-over Save derives Pending via mergeAutoSchedulePatch.
2026-09-09 15:44:49 -03:00
Arthur Bassi
6c765e8b42 feat(work-orders): align Extra Docs accept and 50MB limits 2026-09-08 11:27:52 -03:00
Arthur Bassi
74e5c58e5d fix(work-orders): restore completion media uploads over HTTP/1.1
Use XHR for media progress so Ky does not stream the body on HTTP/1.1
(Vite proxy), and keep completion vs extra tiles from mixing after upload.
2026-09-07 15:19:39 -03:00
Arthur Bassi
f51f6bd493 chore(work-orders): keep type/severity audit rules after merging origin/dev 2026-09-04 16:41:42 -03:00
Arthur Bassi
b0c58958ae
Merge branch 'dev' into feat/SH-169-wo-inline-lifecycle 2026-09-04 14:47:38 -03:00
Arthur Bassi
3ed8600beb fix(work-orders): promote dated pre-schedule picks to Scheduled
Align create, wizard, and board status patches with AAP maybeAutoSchedule.
Include the previous status in audit copy when the API sends it.
2026-09-04 14:31:08 -03:00
Arthur Bassi
b8349783a7 chore(work-orders): keep carry-over display and local board row-order 2026-09-04 13:46:04 -03:00
Arthur Bassi
27ddeb2903 feat(work-orders): align inline type correction with the board AAP
Keep type correction on the board: Type & severity, SEV toast, and audit copy.
2026-09-03 16:30:10 -03:00
Arthur Bassi
3a8f41a444 fix(work-orders): keep explicit wizard status picks on dated drafts
Derive Scheduled or Pending only when the patch touches schedule fields, matching the board path.
2026-09-03 14:42:19 -03:00
Arthur Bassi
9fc67516ca fix(work-orders): derive lifecycle status only when the schedule patch changes 2026-09-03 13:35:26 -03:00
Arthur Bassi
ddd83ffec1 fix(work-orders): skip canceled keyboard reorder and persist destination-week order 2026-09-03 13:34:28 -03:00
Arthur Bassi
c2d1add79c fix(work-orders): persist AAP auto-schedule on a single board patch
Merge derived status once so dated rows cannot stay Pending or Incomplete.
Create and wizard demote Scheduled when there is no concrete date.
2026-09-03 11:13:24 -03:00
Arthur Bassi
9cc9bc4dfb feat(work-orders): align inline lifecycle transitions with AAP
Use the prototype status list and gates on the board and wizard.
Auto-derive Scheduled or Pending from a concrete schedule date.
2026-09-02 15:11:31 -03:00
Arthur Bassi
dc178340de feat(work-orders): persist board row order locally and support keyboard reorder
Keep same-day WO order across refresh and sign-out in the same browser.
Add keyboard reorder on the row grip.
2026-09-02 11:07:27 -03:00
Arthur Bassi
bc1e7a1fa2 fix(work-orders): keep carry-over rows in day reorder and one-char search 2026-09-02 09:47:34 -03:00
Arthur Bassi
08e00c213d
Merge branch 'dev' into feat/sh-167-wo-board-carry-over 2026-09-02 09:32:58 -03:00
Arthur Bassi
426889427c feat(work-orders): show carry-over pill and map day-tab for prior-week WOs
Keep source week visible and map weekday tabs without rewriting schedule.
2026-09-01 14:16:52 -03:00
Arthur Bassi
7e1dcb7a36 fix(work-orders): toast after assigned-to save on the board
Show the save toast only after the board PATCH succeeds.
2026-09-01 10:20:38 -03:00
Arthur Bassi
55a6ff03b1 merge(dev): keep Linux CI New WO visual baseline
The only conflict was wo-new.png (Type and schedule). Appt Time is on a later step, so origin/dev's Assigned To screenshot is the correct combined UI.
2026-08-31 15:11:43 -03:00
Arthur Bassi
fb54414ade fix(work-orders): parse start-only appointment times and refresh visual baselines 2026-08-28 11:46:54 -03:00
Arthur Bassi
8bb126b1a3 feat(work-orders): make appointment time optional in create flows
Allow empty Appt Time in wizard, table, and slide-over without blocking
create or complete. Omit appointment fields without vendorId so create
does not hit DispatchRequired.
2026-08-28 11:05:43 -03:00