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
Arthur Bassi
35b3bba596
feat(work-orders): add EF config and Phase 0 migration
2026-06-29 17:22:31 -03:00
Arthur Bassi
456bee2226
feat(work-orders): add domain enums and aggregate root fields
2026-06-29 17:22:31 -03:00
12fd5efe8b
Merge branch 'main' into dev
2026-06-22 18:57:13 -04:00
Adam Moussa
b2aeb35a55
Add starter unit tests for validators, DTO mappers, and PagedResult ( #9 )
2026-06-22 18:56:46 -04:00
Adam Moussa
1f3972ae49
Add calendar/events backend API ( #8 )
...
* Align EntityFrameworkCore.SqlServer and Tools to 8.0.8
* Add calendar/events backend API
Cherry-picked from main-backup (19994ef ); scratch notes file removed.
* Require authentication on CalendarController
Security review found [Authorize] commented out, leaving all 6 calendar
endpoints anonymous. Enforce auth to match the API convention (17/23
controllers).
* Add CalendarController unit tests (xUnit + EF InMemory)
2026-06-22 18:46:46 -04:00
dd1ffba06d
Add CODEOWNERS requiring internal-dev review
2026-06-22 18:23:54 -04:00