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
Arthur Bassi
91122d753d
merge: integrate Phase 1 board API into Phase 2 branch
...
Combine the reviewed Phase 1 read-only board endpoints with Phase 2 inline edit and optimistic concurrency, resolving shared foundation conflicts while preserving both feature sets.
2026-07-07 13:59:22 -03:00
Arthur Bassi
673bc3b5a9
fix(work-orders): align phase 2 status/type contract to SHOC frontend
...
Expand LifecycleStatus (EnRoute, OnSite, Rescheduled, Pending, PendingQuote) and WorkOrderType (Reactive, AddOn) to match the frontend prototype. Add FE label round-trip via LifecycleStatusMapper/WorkOrderTypeMapper, update derived fields, mutation rules and board unscheduled filter, and reactivate [Authorize] on WorkOrderController. Fix pre-existing dayGroup test expectation.
2026-07-07 13:11:22 -03:00
Arthur Bassi
d040832b87
feat(work-orders): isolate phase 2 inline edit with optimistic concurrency
...
Deliver PATCH board field updates and drop phases 3-7 code from the branch while keeping phase 0/1 dependencies required to build and test.
2026-07-07 11:26:13 -03:00
Arthur Bassi
8efe4460bb
fix(work-orders): complete Phase 1 board indexes, Service DTO and helper wiring
...
Add AssignTo+ScheduledDate and WorkOrderType indexes, expose service on board rows, and route data access through shared projection/filter helpers.
2026-07-07 10:11:04 -03:00
Arthur Bassi
ff53cb9fa6
feat(work-orders): add weekly board read API (Phase 1)
...
- GET /api/workorders/board with week window, Unscheduled section, and X of Y counts
- GET /api/workorders/lookups/dispatchers for SHOC filter avatars
- Board projection via WorkOrderBoardDataService with vendor/dispatch join and derived isPastDue
- Phase1_BoardIndexes migration (IX_workOrders_ScheduledDate)
- 5 board unit tests
2026-07-07 10:10:06 -03:00
Arthur Bassi
e5902e1df3
fix(work-orders): address PR review on sync, audit, lock and mapper
2026-07-02 09:30:05 -03:00
Arthur Bassi
76e839addf
test(work-orders): cover FE-aligned mappers and derived field logic
2026-07-02 09:19:28 -03:00
Arthur Bassi
187d935da2
feat(work-orders): add lifecycle, type mappers and derived field rules
2026-07-02 09:19:28 -03:00
Arthur Bassi
623810da45
feat(phase-0): finalize foundation — authorize, concurrency filter, isolated build
2026-07-02 09:19:28 -03:00
Arthur Bassi
7a81b6d279
test(work-orders): add Phase 0 domain unit tests
2026-07-02 09:19:28 -03:00
Arthur Bassi
49e5de5152
feat(work-orders): add audit, field lock and sync merge services
2026-07-02 09:17:59 -03:00