Arthur Bassi
af1c0d19b4
fix(migrations): make Phase6 completion slide-over migration idempotent ( #19 )
...
* fix(migrations): make Phase6 completion slide-over migration idempotent
Use IF EXISTS / IF COL_LENGTH guards and explicit EF migration metadata
so partial environments can apply Phase 6 safely.
* fix(work-orders): make stacked tip build for CI quality gates
---------
Co-authored-by: Arthur Bassi <arthur.winiarski.ranger@outlook.com>
2026-07-22 17:35:55 -03:00
Alexandre Brandizzi
1ff29c234e
Merge branch 'dev' into feat/work-orders-phase-1-board
2026-07-21 14:01:48 -03:00
Alexandre Brandizzi
32b9113057
Merge pull request #10 from Sea-Haven-Industries/feat/work-orders-domain-foundation
...
feat(work-orders): Phase 0 domain foundation with FE alignment
2026-07-21 13:58:18 -03:00
Arthur Bassi
cc37a0283b
fix(work-orders): keep FlagColor feature on this slice with its migration
...
Restore FlagColor model/API/tests here after the parent structured-notes PR dropped them, so this PR remains the coherent home for the FlagColor column and palette.
2026-07-21 09:42:10 -03:00
Arthur Bassi
40d86c85a1
merge: bring FlagColor branch onto structured-notes without FlagColor model
2026-07-21 09:40:55 -03:00
Arthur Bassi
33574c233b
fix(work-orders): keep FlagColor out of structured-notes slice
...
Remove FlagColor model/API/tests from this PR so schema and EF model stay aligned with the structured-fields migration. FlagColor remains in the follow-on PR that adds its migration.
2026-07-21 09:38:34 -03:00
Arthur Bassi
75969a1e3d
docs(work-orders): clarify board filter precedence and dispatcher lookup
...
Document myWorkOrders overriding dispatchers, weekend dayGroup null contract, and that dispatcher lookups currently return all users. Map service ArgumentException to 400 for consistency.
2026-07-21 09:33:24 -03:00
Arthur Bassi
61b4c84337
fix(work-orders): lock ScheduledStart/End when patching apptTime
...
Align board apptTime field locks with SyncFieldMergePolicy field names so sync cannot overwrite a manual appointment edit. Also add shared LifecycleStatusSets so the Phase 2 branch compiles.
2026-07-21 09:31:27 -03:00
Arthur Bassi
f3d2a5cfe7
fix(work-orders): address PR13 phase-1 review feedback
2026-07-17 14:51:56 -03:00
Arthur Bassi
76db2b5a37
fix(work-orders): address PR14 phase-2 review feedback
2026-07-17 14:48:48 -03:00
Arthur Bassi
4bd11dcf6b
fix(work-orders): address stacked PR review feedback
2026-07-17 14:31:08 -03:00
Arthur Bassi
d59f92910e
fix(work-orders): align stacked services with CI build
2026-07-17 13:38:56 -03:00
Arthur Bassi
c722d37a8f
fix(work-orders): align stacked services with CI build
2026-07-17 13:38:55 -03:00
Arthur Bassi
fa1eca8f89
fix(work-orders): make stacked tip build for CI quality gates
2026-07-17 13:18:46 -03:00
Arthur Bassi
a80a71b16a
fix(work-orders): make stacked tip build for CI quality gates
2026-07-17 13:18:43 -03:00
Arthur Bassi
62572d8e03
feat(work-orders): add board flagColor with fixed palette
...
Support PATCH flagColor with FE-aligned #RRGGBB palette and expose the
value on board/detail rows.
2026-07-17 10:37:24 -03:00
Arthur Bassi
ecc1db3726
feat(work-orders): add structured service notes POC and vendor fields
...
Persist primary/extra services, service notes, free-text POC, and
tech/vendor notes on create/patch/board/detail instead of embedding
them in description.
2026-07-17 10:37:23 -03:00
Arthur Bassi
3983f7667d
feat(locations): add sites options endpoint and vendor contactName
...
Expose GET /api/locations/sites for the WO create wizard and include
vendor contactName on dropdown responses.
2026-07-17 10:36:32 -03:00
Arthur Bassi
3e2952f8a0
fix(migrations): make Phase6 completion slide-over migration idempotent
...
Use IF EXISTS / IF COL_LENGTH guards and explicit EF migration metadata
so partial environments can apply Phase 6 safely.
2026-07-17 10:36:32 -03:00
Arthur Bassi
2c26ead193
chore(docs): remove Phase 7 README from PR scope
2026-07-13 13:55:05 -03:00
Arthur Bassi
4355c07e45
chore(docs): remove Phase 7 ops markdown from PR scope
2026-07-13 13:51:34 -03:00
Arthur Bassi
5d2a2d0ed0
chore(config): document Phase 7 feature flags in appsettings and .env.example
2026-07-13 13:23:54 -03:00
Arthur Bassi
ec6d69a933
docs(work-orders): add Phase 7 rollout gates Lambda mapping and CloudWatch alerts
2026-07-13 13:23:52 -03:00
Arthur Bassi
03dc04ad0b
test(work-orders): add Phase 7 coexistence coverage
2026-07-13 13:23:07 -03:00
Arthur Bassi
64ca9e0bdf
feat(work-orders): add legacy deprecation middleware and Blazor WO sunset guard
2026-07-13 13:22:53 -03:00
Arthur Bassi
89cb520db9
feat(work-orders): add Sync kill-switch and ops health coexistence endpoints
2026-07-13 13:22:12 -03:00
Arthur Bassi
1074ed860b
feat(work-orders): add work order ingest API with X-Ingest-Key
2026-07-13 13:22:11 -03:00
Arthur Bassi
e67254ed7e
feat(work-orders): add ExternalWorkOrderId unique index for ingest idempotency
2026-07-13 13:14:51 -03:00
Arthur Bassi
f8511ce732
test(work-orders): cover Phase 6 slide-over and completion doc flows
2026-07-13 13:13:09 -03:00
Arthur Bassi
af84001bf1
feat(work-orders): add Phase 6 slide-over detail comments audit and media API
2026-07-13 13:13:00 -03:00
Arthur Bassi
0ce008e5eb
feat(work-orders): add Phase 6 completion templates schema and media category
2026-07-13 13:12:07 -03:00
Arthur Bassi
812a5e994c
merge: integrate Phase 4 into Phase 5 and add DomainEvents Designer metadata
...
Resolve snapshot conflict by keeping Phase 4 search indexes and Phase 5 ledger model. Add missing Phase5_DomainEvents.Designer.cs so EF discovers the WorkOrderWeekRolledLedgers migration.
2026-07-10 11:53:29 -03:00
Arthur Bassi
8a5cb0cc90
fix(work-orders): make Phase4 search index migration discoverable by EF
2026-07-10 11:45:24 -03:00
Arthur Bassi
ceeb0c8fa3
fix(work-orders): wrap board create in a transaction for atomic persistence
2026-07-10 11:38:58 -03:00
Arthur Bassi
3122cbc8f7
fix(migrations): remove undiscoverable WorkOrderType backfill migration
...
Superseded by Phase0 (WorkOrderType as int) and Phase1 board indexes; keeping the bare Migration would either be skipped by EF or conflict if metadata were added.
2026-07-10 11:28:55 -03:00
Arthur Bassi
bdfaf1ff61
fix(migrations): add Phase1 BoardIndexes Designer metadata for EF discovery
2026-07-10 11:27:43 -03:00
Arthur Bassi
cc8825ace0
fix(migrations): add Phase1 BoardIndexes Designer metadata for EF discovery
2026-07-10 11:20:14 -03:00
Arthur Bassi
f977483c17
fix(work-orders): process all WeekRolled candidates across batches
...
Offset paging skipped remaining WOs after ledger writes; always refetch the first page of unprocessed candidates and cover with a >BatchSize test.
2026-07-10 11:01:52 -03:00
Arthur Bassi
dd2a805c24
fix(work-orders): return 400 for invalid advanced-search custom date range
...
Map ArgumentException from datePreset=custom without dates to BadRequest so the endpoint matches the Phase 4 contract.
2026-07-10 10:56:18 -03:00
Arthur Bassi
0ddc43210a
Merge remote-tracking branch 'origin/feat/work-orders-phase-3' into feat/work-orders-phase-4
2026-07-10 10:54:15 -03:00
Arthur Bassi
9dc17d4255
fix(work-orders): persist WO identity before staging create audit and locks
2026-07-10 10:49:57 -03:00
Arthur Bassi
88f9245fbf
merge: sync Phase 1 board review fixes into Phase 2
...
Resolve conflicts in WorkOrderController and WorkOrderBoardService so Phase 2 merges cleanly into the Phase 1 base.
2026-07-10 10:41:36 -03:00
Arthur Bassi
8c33eb7f9a
feat(work-orders): add Phase 5 scheduled domain events (WeekRolled)
...
Introduce in-process WeekRolled job with idempotent ledger to increment carriedOver for the SHOC board, plus optional PastDue cache and admin reprocess endpoints while keeping isPastDue derived on-read.
2026-07-09 14:08:48 -03:00
Arthur Bassi
25eb6293e0
chore: remove docs and scripts from phase 2 PR scope
2026-07-09 13:24:47 -03:00
Arthur Bassi
c2d0bd45e3
fix(work-orders): address PR #13 review feedback
...
Return BadRequest for invalid board week window, remove duplicate unused board types, fix POC null guard, and document appt precedence and UTC Phase 1 assumptions.
2026-07-09 10:06:36 -03:00
Arthur Bassi
83272e4957
Revert "fix(work-orders): address PR #14 board PATCH review feedback"
...
This reverts commit eb64c2f55c .
2026-07-09 09:59:41 -03:00
Arthur Bassi
88caede86a
fix(work-orders): address PR #14 board PATCH review feedback
...
Reuse field-lock DB checks during staged audits, defer dispatch creation to the final save, and return 404 for missing work orders.
2026-07-09 09:58:41 -03:00
Arthur Bassi
eb64c2f55c
fix(work-orders): address PR #14 board PATCH review feedback
...
Reuse field-lock DB checks during staged audits, defer dispatch creation to the final save, and return 404 for missing work orders.
2026-07-09 09:54:53 -03:00
Arthur Bassi
4617e8ba83
feat(work-orders): add Phase 4 board search and advanced search API
...
Harden contextual search on the weekly board and expose paginated cross-week GET /board/search with date presets, FE filter params, SQL indexes, and unit tests.
2026-07-08 14:58:59 -03:00
Arthur Bassi
e5bda0714a
feat(work-orders): add Phase 3 board create and soft cancel API
...
Expose POST /api/workorders/board and POST /api/workorders/{id}/cancel for SHOC wizard/inline creation and soft cancel, with field locks, WO# normalization, and Admin-only hard delete.
2026-07-08 10:17:31 -03:00