Arthur Bassi
cb3b781d59
Merge 4e32c487d2 into b2aeb35a55
2026-07-17 14:28:40 +00:00
Arthur Bassi
4e32c487d2
fix(migrations): discover Phase7, harden Phase4 indexes, align WO model
...
Make Phase7 EF-discoverable with idempotent DDL, shrink SiteCode and
InternalWONumber before Phase4 search indexes on this branch, align
MaxLength/Fluent indexes with the snapshot, and add the missing Events
calendar table migration so the model has no pending changes.
2026-07-17 11:10:59 -03:00
Arthur Bassi
a930d75ce0
docs(work-orders): add PR body index for split feature branches
...
Map ordered commits and feature branch tips to the PR descriptions
produced during staff review.
2026-07-17 10:40:40 -03:00
Arthur Bassi
f61aff06ff
docs(work-orders): add Fase 2 staff review findings
...
Record adversarial review results and fixes for service notes, search,
paging, and migration hardening.
2026-07-17 10:37:25 -03:00
Arthur Bassi
16b31e5f28
feat(work-orders): allow comment edit and resolve author audit display names
...
Add PATCH comment for author/Admin, return authorName, and resolve
AssignTo audit values to user display names.
2026-07-17 10:37:25 -03:00
Arthur Bassi
1eaf9b7c84
feat(work-orders): enrich board search overdue filters and 0-based paging
...
Align week presets to Mon-Fri, treat types=Other as past-due, expand
text search, whitelist sortBy, and use 0-based paging for advanced
search without breaking 1-based PagedResult consumers.
2026-07-17 10:37:24 -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
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
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
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
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
Arthur Bassi
e244c32bc9
feat(work-orders): add EF config and Phase 0 migration
2026-07-02 09:17:59 -03:00
Arthur Bassi
568961642f
feat(work-orders): add domain enums and aggregate root fields
2026-07-02 09:17:59 -03:00
Arthur Bassi
4f697f257a
wip: work orders phases 1-7 (isolated from phase 0 foundation)
2026-06-30 10:09:48 -03:00
Arthur Bassi
65c1cdc7e9
docs(work-orders): add Phase 0 governance documentation
2026-06-29 17:22:31 -03:00
Arthur Bassi
5d5b3234c4
test(work-orders): add Phase 0 domain unit tests
2026-06-29 17:22:31 -03:00
Arthur Bassi
f52c430c2c
feat(work-orders): add audit, field lock and sync merge services
2026-06-29 17:22:31 -03:00