Commit graph

71 commits

Author SHA1 Message Date
Alexandre Brandizzi
1ae7b7345e
Merge branch 'dev' into feature/wo-severity-and-wizard-gates 2026-08-14 11:53:34 -03:00
Arthur Bassi
4af826a1e0
feat(work-orders): query broadcast, remove auth bypass, dispatch polish (#100)
* fix(work-orders): address wizard create review findings

[recover] remove malicious eslint payload (was 166c63e4)

* fix(work-orders): remove legacy completedDate EditWorkorder path

[recover] remove malicious eslint payload (was f4e6132b)

* fix(work-orders): use local calendar day for completedDate

Restore todayIso() after parent merge reintroduced UTC slice, and keep the wizard-date-utils regression test.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(work-orders): send wizard status and clear POC notes on site change

Map draft.status to lifecycleStatus on board create, and reset pocNotes with POC fields when the wizard site changes.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(query): scope broadcast channel per account and clear on auth

Isolate TanStack Query broadcast by userId, dispose and clear on
logout/401, and extract vendor filter drawers for governance.

* feat(work-orders): board wizard create with service notes

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(work-orders): enforce single-service wizard create per SH-118

Use single service selection in the wizard and omit extraServices from board create.

* fix(vendors): restore filter drawer labels for e2e and visual CI

Use VendorFilterOptions again and keep the Apply filters footer label expected
by vendor Playwright specs and the committed visual baseline.

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 11:52:48 -03:00
Arthur Bassi
b20d9bbd4b fix(work-orders): merge #99 wizard and keep SH-192 severity gates 2026-08-14 11:08:36 -03:00
Arthur Bassi
ee90d73a44
feat(work-orders): board wizard create with service notes (#99)
Some checks are pending
CI / ci (push) Waiting to run
CI / governance (push) Waiting to run
CI / vendor-visual-regression (push) Waiting to run
Deploy / deploy (push) Waiting to run
* feat(work-orders): board wizard create with service notes

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(work-orders): enforce single-service wizard create per SH-118

Use single service selection in the wizard and omit extraServices from board create.

* refactor(work-orders): extract wizard controller for maintainability gate

Move duplicate-WO wiring and lookup hooks out of NewWoWizard so the
changed-file function line cap passes after merging dev.

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-13 18:43:11 -03:00
Arthur Bassi
90e69bfeb0 test(work-orders): align merge fixes with severity field and WO# placeholder 2026-08-13 15:33:40 -03:00
Arthur Bassi
e5844505fe merge(dev): resolve conflicts with severity wizard and duplicate WO# dialog
Integrate dev duplicate WO# detection with SH-192 severity gates,
showErrors UX, and inline type/severity cells.
2026-08-13 15:29:35 -03:00
Arthur Bassi
25837171a4
feat(work-orders): duplicate WO number dialog on table and wizard (SH-189) (#90)
Some checks are pending
CI / ci (push) Waiting to run
CI / governance (push) Waiting to run
CI / vendor-visual-regression (push) Waiting to run
Deploy / deploy (push) Waiting to run
* docs(work-orders): add pending BE contract checklist for design parity gaps

* feat(work-orders): confirm dialog when duplicate wo number detected

* fix(work-orders): show duplicate wo number dialog on wizard create

* docs(work-orders): align pr description with jira and qa residuals

* style(work-orders): prettier wizard duplicate dialog files

* refactor(workorders): extract wizard state hook and list overlays

* fix(work-orders): check duplicate numbers globally

* fix(work-orders): exhaust fuzzy pages for exact WO number lookup

Prevent accepting duplicates that fall outside the first fuzzy search page.

* style(work-orders): format editable WO number cell for Prettier gate

* fix(work-orders): 0-based WO search page and stale duplicate guard

* fix(work-orders): sync draft WO# ref in effect for duplicate guard [SH-189]

* fix(work-orders): extract WO number editor under max-lines gate

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(work-orders): harden duplicate WO number checks [SH-189]

* fix(work-orders): sync wizard refs in effects and exhaust duplicate WO lookup

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(work-orders): extract hooks to satisfy max-lines governance gate

Co-authored-by: Cursor <cursoragent@cursor.com>

* style(work-orders): format wizard state hook for Prettier gate

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(work-orders): search one-character WO numbers for duplicates

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-13 11:04:48 -03:00
Alexandre Brandizzi
778472d1d8
Merge branch 'dev' into fix/vendor-portal-locked-banner-copy 2026-08-12 12:23:23 -03:00
Alexandre Brandizzi
5419edc4af
Merge branch 'dev' into fix/SH-109-inline-save-unscheduled 2026-08-12 12:11:17 -03:00
Arthur Bassi
5d3fd1f986 fix(vendor-portal): align locked banner with comments-only actions 2026-08-12 11:25:41 -03:00
arthur.bassi
8ed0c3a022 fix(work-orders): add severity to comp-doc and media fixtures after dev merge
PR #45 introduced completion-doc, media and table-mutation fixtures that predate the required severity field, so the integrated head failed tsc. Fill severity on those row builders (null for PM, SEV 1 for the Emergency fixture) and type the mutation BASE_ROW instead of asserting it.
2026-08-12 10:08:55 -03:00
arthur.bassi
e37956475f Merge remote-tracking branch 'origin/dev' into feature/wo-severity-and-wizard-gates 2026-08-12 09:38:58 -03:00
Arthur Bassi
4440f7d087 chore(work-orders): merge origin/dev into SH-109 inline save branch
EOF
2026-08-12 09:33:49 -03:00
Arthur Bassi
11e1b65bc1 fix(work-orders): pass workOrderVersion in slide-over media and fix test fixture
Wire workOrderVersion through slide-over media delete/categorize after dev
merge, and remove duplicate completedDate in unscheduled highlight fixture.
2026-08-11 16:55:31 -03:00
Arthur Bassi
93c5a35b46 chore: merge origin/dev into slide-over media branch
Sync with latest dev (CompDoc/completedDate from PR #45) and resolve
conflicts while preserving slide-over detail, workOrderVersion on media
mutations, and the consolidated list page hook.
2026-08-11 16:46:32 -03:00
arthur.bassi
26add2e57c fix(work-orders): add severity to unscheduled highlight fixture after dev merge 2026-08-11 15:39:37 -03:00
Arthur Bassi
017820ac4b fix(work-orders): add completedDate to unscheduled highlight fixture
Keep the merged origin/dev test building against WorkOrderTableRow after
the CompDoc completedDate field landed on this branch.
2026-08-11 15:35:42 -03:00
arthur.bassi
ee6f06d027 merge(dev): restack SH-192 severity/wizard lane onto latest dev 2026-08-11 15:27:50 -03:00
arthur.bassi
84ba685977 chore(work-orders): drop vendor collateral from SH-192 lane 2026-08-11 15:26:42 -03:00
Arthur Bassi
1005186ea7 Merge branch 'dev' into feature/wo-detail-comp-doc 2026-08-11 15:23:55 -03:00
Arthur Bassi
f666ee215d test(work-orders): cover site dialog POC autofill races 2026-08-11 15:15:02 -03:00
Arthur Bassi
969f99a576 fix(work-orders): send workOrderVersion on media categorize/delete
Align CompDoc media mutations with backend PR #47 so categorize and
delete no longer return 422 WorkOrderVersionRequired.
2026-08-11 14:52:41 -03:00
Adam Moussa
4949508d43
Merge branch 'dev' into feat/sh-101-uplift-lifecycle 2026-08-11 13:35:55 -04:00
arthur.bassi
4637f3ab14 chore: merge origin/dev into slide-over media branch
Sync with latest dev and add completedDate to the unscheduled highlight
fixture so the merge build stays type-safe.
2026-08-11 14:02:42 -03:00
Arthur Bassi
a30ac73d29
feat(work-orders): draft technician until vendor dialog save (SH-193) (#89)
Some checks are pending
CI / ci (push) Waiting to run
CI / governance (push) Waiting to run
CI / vendor-visual-regression (push) Waiting to run
Deploy / deploy (push) Waiting to run
* docs(work-orders): add pending BE contract checklist for design parity gaps

* feat(work-orders): add technician affordance in wo vendor dialog

* fix(work-orders): defer technician create until vendor dialog save

* docs(work-orders): align pr description with jira and qa residuals

* fix(vendors): harden draft technician optional field typing

* refactor(workorders): extract vendor dialog body footer and save hook

* fix(work-orders): coerce null company vendor for add-technician prop

* fix(work-orders): preserve draft technician staging on save [SH-193]

* fix(work-orders): select technicians by stable id [SH-193]

Keep selectedKey as explicit dialog state (SiteDialog pattern) so same-name drafts do not collide with existing vendors, and cover the regression with interaction tests.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Alexandre Brandizzi <alex_brandizzi@hotmail.com>
2026-08-11 14:01:31 -03:00
arthur.bassi
251edd9c61 fix(work-orders): drop vendor collateral from slide-over PR
Restore vendors and page-header to origin/dev so this PR stays the WO
slide-over/media slice only. Remove stale godfile baseline entries now
under the 500-line cap.
2026-08-11 13:54:31 -03:00
Alexandre Brandizzi
b177987081
Merge branch 'dev' into feat/sh-101-uplift-lifecycle 2026-08-11 13:52:26 -03:00
Arthur Bassi
9c7b42e96b
feat(work-orders): SH-132 FE — Due Date distinct from Schedule On + Emergency calendar modal (#82)
* feat(work-orders): align Due Date and Past Due with SH-132 FE contract [SH-132]

* fix(work-orders): highlight Schedule On for unscheduled rows

Restore forceScheduleHighlight for Unscheduled section rows while keeping Due Date highlight for past-due and attempt feedback.

Co-authored-by: Cursor <cursoragent@cursor.com>

* test(work-orders): cover unscheduled Schedule On highlight [SH-132]

Add row-level public-interface regression proving Unscheduled rows force-highlight Schedule On, not Due Date (SH-165).

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Alexandre Brandizzi <alex_brandizzi@hotmail.com>
2026-08-11 13:49:41 -03:00
Alexandre Brandizzi
34ebad390f fix(uplifts): align revise validation contract 2026-08-11 13:49:03 -03:00
Arthur Bassi
f66284d78c Merge remote-tracking branch 'origin/dev' into feature/wo-detail-comp-doc 2026-08-11 09:47:20 -03:00
Alexandre Brandizzi
c0e203a090 feat(uplifts): complete SH-101 vendor workflow 2026-08-11 08:57:38 -03:00
arthur.bassi
a05e768115 fix(work-orders): address Bugbot findings on slide-over and vendor roster
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-10 18:35:28 -03:00
Alexandre Brandizzi
bc5659eb2a fix(vendor-portal): clear stale refusal state 2026-08-10 18:25:57 -03:00
arthur.bassi
767f0df43f Merge remote-tracking branch 'origin/dev' into feature/wo-detail-comp-doc 2026-08-10 18:13:40 -03:00
Arthur Bassi
d72be8c505 fix(work-orders): use local calendar day for slide-over completedDate
[recover] remove malicious eslint payload (was 6a278c01)
2026-08-10 17:12:13 -03:00
Arthur Bassi
48702c3fc4 fix(work-orders): allow blank WO number in wizard create path
[recover] remove malicious eslint payload (was d0d08508)
2026-08-10 17:12:11 -03:00
Arthur Bassi
ebc2e9a1e5 fix(work-orders): extract inline dialog state and enable Schedule On clear
[recover] remove malicious eslint payload (was 552c2daf)
2026-08-10 17:12:09 -03:00
Alexandre Brandizzi
3f4d64d7b6 fix: guard pending refusal dialog 2026-08-10 13:31:12 -03:00
Alexandre Brandizzi
4d2ee40d60 feat(vendor-portal): complete request lifecycle (SH-98) 2026-08-10 13:16:26 -03:00
Alexandre Brandizzi
ec203e1f5b fix(vendors): preserve the selected edit state 2026-08-06 22:39:11 -03:00
Alexandre Brandizzi
b61d46ce4b fix(vendors): match prototype directory experience 2026-08-06 22:23:30 -03:00
arthur.bassi
cd4b8d27fd fix(work-orders): seed CompDoc address after location settles [SH-116] 2026-08-06 10:14:29 -03:00
arthur.bassi
bfc230d421 fix(work-orders): harden CompDoc generate seed persist and blob revoke 2026-08-05 10:54:33 -03:00
arthur.bassi
7ea0d2c464 fix(work-orders): refresh CompDoc on Generate failure and drop EditWorkorder date helper
Invalidate board/location queries when Save Draft or Generate fails so partial
prerequisite writes stay authoritative, and remove the unused CompDoc
mapCompletedDateUpdateFormData EditWorkorder helper.
2026-08-04 16:27:59 -03:00
arthur.bassi
6481d9ce86 test(work-orders): assert CompDoc Generate skips Yes when date patch fails 2026-08-04 15:09:19 -03:00
arthur.bassi
65d75ca372 fix(work-orders): persist CompDoc prerequisites before Generated status
Also register retry AbortControllers so cancel aborts the active upload attempt.
2026-08-04 15:03:28 -03:00
Alexandre Brandizzi
0027ecc41f Merge remote-tracking branch 'origin/dev' into feature/wo-detail-comp-doc 2026-08-04 10:30:37 -03:00
Alexandre Brandizzi
ca7829036f
feat(vendors): add company roster workflows (SH-198) (#64)
Some checks failed
CI / ci (push) Has been cancelled
CI / governance (push) Has been cancelled
Deploy / deploy (push) Has been cancelled
* feat(vendors): support company roster workflows

* fix(vendors): address roster review feedback

* test(vendors): preserve draft on roster load failure

* fix(vendors): preserve current roster selection
2026-08-04 09:53:48 -03:00
Alexandre Brandizzi
4b88a60751
fix(vendors): remove preferred contact and fix trade ordering (#63)
Some checks are pending
CI / ci (push) Waiting to run
CI / governance (push) Waiting to run
Deploy / deploy (push) Waiting to run
* fix(vendors): address SH-180 and SH-182

* refactor(vendors): satisfy maintainability gates
2026-08-03 17:53:39 -03:00
Alexandre Brandizzi
509b3c3212 fix(work-orders): persist completedDate via board and media sh-116
leave EditWorkorder for completedDate; await mutations before draft saved
toast; upload-then-categorize with MIME allowlist, progress, cancel, retry.
2026-07-31 12:24:31 -03:00