Adam Moussa
b9bcaea9f3
Merge branch 'dev' into feat/ab/sh-207-uplift-queue-flags
2026-09-17 13:17:04 -04:00
Alexandre Brandizzi
bc88ef0577
Merge remote-tracking branch 'origin/dev' into feat/ab/sh-326-team-member
2026-09-17 13:49:21 -03:00
Adam Moussa
1f905fc7dd
Merge branch 'dev' into feat/ab/sh-329-account-owner
2026-09-17 12:36:26 -04:00
Alexandre Brandizzi
41957d52a7
merge: rebase queue flags onto SH-210 decisions, drop duplicated contract fields
...
#144 branched from the SH-210 decision-actions commit before the SH-207/SH-208
read-contract corrections landed, so it re-implemented workOrderClosed,
attachmentCount, decidedByName, and pendingExposureTotal with stale semantics:
it projected WorkerOrderNumber (the CRM external id) instead of InternalWONumber
(what the board renders) and summed raw RequestedNTE, which double-counts the new
NTE total on vendor-portal rows across sequential approvals.
Merge origin/feat/ab/sh-210-uplift-decisions (#141 , what lands) in and resolve
every conflict in #141 's favour, so those fields and their granted-amount
exposure math now come from #141 rather than being duplicated here. Keep only the
two deltas #144 actually adds on top of #141 :
- attachmentCount counts non-deleted UpliftEvidence documents on the dispatch,
not every completion document, so completion photos no longer inflate the chip;
- the queue read resolves the effective work order via the primary-plus-linked
(DispatchWorkOrders) convention the sibling reads use, so a dispatch linked only
through that table surfaces its WO context, closed flag, and exposure. Covered
by an in-memory test and a SQLite relational test that proves the fallback
translates to SQL.
Drop the superseded attachment-count test that asserted completion documents
count, and align the relational test to seed InternalWONumber.
2026-09-17 12:52:13 -03:00
Alexandre Brandizzi
679822733a
Merge branch 'dev' into feat/ab/sh-210-uplift-decisions
2026-09-17 12:44:12 -03:00
Alexandre Brandizzi
1eadb82f28
Merge branch 'dev' into feat/ab/sh-210-uplift-decisions
2026-09-17 12:30:20 -03:00
Alexandre Brandizzi
5c93e4ecec
Merge remote-tracking branch 'origin/dev' into feat/ab/sh-348-region-filter
...
# Conflicts:
# SeaHaven.Services/Helpers/DashboardRegions.cs
2026-09-17 02:20:44 -03:00
Adam Moussa
7d728d9101
Merge branch 'dev' into feat/ab/sh-187-service-picker
2026-09-17 00:20:59 -04:00
Alexandre Brandizzi
2e983b1f6a
Merge branch 'dev' into feat/ab/sh-303-services-registry
2026-09-17 01:12:07 -03:00
albrand
dfd248cfcb
feat(uplifts): expose queue closed flag, attachments, decider, pending exposure (SH-207, SH-208)
...
The approvals queue frontend needs four list-contract additions the read
contract PRs do not carry yet: workOrderClosed so the Approved tab can
disable Revoke on terminal work orders (mirroring the SH-196 revoke
guard), attachmentCount from non-deleted UpliftEvidence documents so the
+N chip renders, decidedByName for the Approved By column, and the
queue-wide pendingExposureTotal for the header total.
2026-09-16 22:48:47 -03:00
Alexandre Brandizzi
bd98ea5629
merge: carry approval queue contract fields into decisions
2026-09-16 22:32:35 -03:00
Alexandre Brandizzi
e0e45d5ed3
feat(uplifts): expose approval queue contract fields (SH-208)
2026-09-16 22:32:23 -03:00
Alexandre Brandizzi
8acc580c5b
Merge branch 'dev' into feat/ab/sh-353-dashboard-kpis-stacked
2026-09-16 21:56:23 -03:00
Alexandre Brandizzi
b9c916cb22
feat(team-members): add member detail editing (SH-326)
2026-09-16 21:41:55 -03:00
Alexandre Brandizzi
8a00476d38
feat(team-members): support pending member creation (SH-325)
2026-09-16 21:41:55 -03:00
Alexandre Brandizzi
69798b3e86
feat(permissions): protect configured account owner (SH-329)
2026-09-16 21:40:22 -03:00
Alexandre Brandizzi
738c9eaf45
feat(work-orders): add region filtering (SH-348)
2026-09-16 21:27:05 -03:00
Adam Moussa
f6bd779fe0
Merge branch 'dev' into feat/ab/sh-353-dashboard-kpis-stacked
2026-09-16 20:00:32 -04:00
Adam Moussa
e7e196caba
Merge branch 'dev' into feat/ab/sh-329-account-owner
2026-09-16 20:00:18 -04:00
Alexandre Brandizzi
9bf45d65ff
Merge branch 'dev' into feat/ab/sh-330-sites-list
2026-09-16 20:58:16 -03:00
Alexandre Brandizzi
660ebac628
feat(locations): support site registry queries (SH-330)
2026-09-16 20:45:15 -03:00
Alexandre Brandizzi
21b7083160
Merge branch 'dev' into feat/ab/sh-328-permission-overrides
2026-09-16 20:44:20 -03:00
Alexandre Brandizzi
fed45f423e
Merge branch 'dev' into feat/ab/sh-350-dashboard-trend
2026-09-16 20:26:23 -03:00
Alexandre Brandizzi
d366f319e9
feat(uplifts): add approval decision actions (SH-210)
2026-09-16 20:11:26 -03:00
Alexandre Brandizzi
3cb1e3e3f3
feat(uplifts): add approval queue read contract (SH-207)
2026-09-16 20:03:35 -03:00
Alexandre Brandizzi
7947e2e77d
feat(dashboard): expose KPI counts (SH-353)
2026-09-16 19:23:53 -03:00
Alexandre Brandizzi
ca4d4833ff
feat(permissions): protect configured account owner (SH-329)
2026-09-16 18:26:20 -03:00
Alexandre Brandizzi
3358ea5058
feat(dashboard): add vendor insights (SH-349)
2026-09-16 18:10:42 -03:00
Alexandre Brandizzi
d4afcced87
feat(dashboard): add regional work order metrics (SH-348)
2026-09-16 18:03:38 -03:00
Alexandre Brandizzi
33f517620b
feat(work-orders): link service selections to registry
2026-09-16 18:02:57 -03:00
Alexandre Brandizzi
441735d39d
feat(permissions): expose team member permission overrides (SH-328)
2026-09-16 18:02:02 -03:00
Alexandre Brandizzi
0194748e3b
feat(dashboard): add dispatcher performance (SH-347)
2026-09-16 17:58:08 -03:00
Alexandre Brandizzi
9b39d0e5ec
feat(dashboard): add dispatcher workload (SH-346)
2026-09-16 17:43:49 -03:00
Alexandre Brandizzi
a2e749c72d
feat(dashboard): add core dashboard metrics (SH-343)
2026-09-16 17:28:21 -03:00
Alexandre Brandizzi
45f98e8154
Merge remote-tracking branch 'origin/dev' into feat/ab/sh-303-services-registry
...
# Conflicts:
# Data.SeaHavenIndustries/Auth/ApplicationDbContext.cs
2026-09-16 17:15:38 -03:00
Alexandre Brandizzi
efd13b6f60
fix(dashboard): scope stats to authenticated accounts (SH-336)
2026-09-16 17:12:03 -03:00
Alexandre Brandizzi
06f9450485
feat(services): add global services registry
2026-09-16 17:07:59 -03:00
Alexandre Brandizzi
8515676f4d
feat(vendors): add admin-assigned vendor company Area
...
Seed an organization-wide Area catalogue (East, Central, West, California)
with stable ids, add a nullable AreaId to VendorCompany, allow only Admins
to change it through the roster endpoints, expose areas facet metadata and
an areas[n] company-directory filter with the __unassigned__ sentinel.
2026-09-16 11:34:45 -03:00
Alexandre Brandizzi
4872fe5ba1
feat(locations): manage ordered site contacts
2026-09-15 19:03:54 -03:00
Alexandre Brandizzi
802b7a414e
SH-338: filter unscheduled work orders before pagination ( #116 )
...
Validate and deploy / Validate deployable source bundle (push) Waiting to run
Validate and deploy / Deploy shoc-backend-dev through Terraform (push) Blocked by required conditions
Validate and deploy / Deploy shoc-backend-staging to Elastic Beanstalk (push) Blocked by required conditions
* fix(work-orders): filter unscheduled search server-side
* fix(work-orders): preserve unscheduled status scope
2026-09-15 16:46:40 -03:00
Alexandre Brandizzi
1a6edd255a
feat(locations): filter sites by state ( #117 )
Validate and deploy / Validate deployable source bundle (push) Waiting to run
Validate and deploy / Deploy shoc-backend-dev through Terraform (push) Blocked by required conditions
Validate and deploy / Deploy shoc-backend-staging to Elastic Beanstalk (push) Blocked by required conditions
2026-09-15 16:32:30 -03:00
Alexandre Brandizzi
67089c2135
SH-281: group vendor directory by company ( #115 )
...
* feat(vendors): group directory by company
* style(vendors): format company directory query
* fix(vendors): preserve technician list contract
2026-09-15 16:02:44 -03:00
Arthur Bassi
e0139d4601
feat(work-orders): capture Site/Vendor/POC snapshot on Completed
...
Freeze effective live values on first Completed transition and project them on GET.
2026-09-10 15:46:25 -03:00
Arthur Bassi
3454125d2d
fix(work-orders): address document review feedback
2026-09-09 17:09:26 -03:00
Arthur Bassi
a0fdd19934
fix(work-orders): accept image/jpg MIME and expose board MediaCount ( #107 )
...
Validate and deploy / Validate deployable source bundle (push) Waiting to run
Validate and deploy / Deploy shoc-backend-dev through Terraform (push) Blocked by required conditions
Validate and deploy / Deploy shoc-backend-staging to Elastic Beanstalk (push) Blocked by required conditions
Co-authored-by: Alexandre Brandizzi <alex_brandizzi@hotmail.com>
2026-09-09 00:10:52 +00:00
Arthur Bassi
b4f2c8b763
feat(work-orders): authorize WO media content reads
2026-09-08 11:19:41 -03:00
Arthur Bassi
7a0b91bcd6
feat(work-orders): persist board severity on create, patch, and search
2026-09-07 11:46:13 -03:00
Arthur Bassi
03c069d10d
fix(work-orders): detach shared dispatch on vendor fork
...
Keep same-vendor saves idempotent and drop stale DispatchWorkOrders so listing and uplift follow the new primary.
2026-09-01 09:42:41 -03:00
Alexandre Brandizzi
31a4af7da3
fix: omit unmapped sites from work order options ( #89 )
Validate and deploy dev / Validate deployable source bundle (push) Waiting to run
Validate and deploy dev / Deploy shoc-backend to Elastic Beanstalk dev (push) Blocked by required conditions
2026-08-26 16:39:25 -04:00
Arthur Bassi
2718fdd294
fix(locations): gate account assignment by scope and active accounts
...
Reject soft-deleted accounts and stop account-scoped callers from assigning or stealing locations across tenants.
2026-08-26 14:16:59 -03:00