Alexandre Brandizzi
d1e3fb03ce
fix(deploy): let EB health converge before failing the version gate
...
Elastic Beanstalk reports Ready as soon as a rollout finishes, before
enhanced health has converged. Both verification gates decided on the first
Ready poll, so a release whose version had activated correctly was failed on
a health value that had not settled yet — and then rolled back.
The failure message compounded it: run 34293894914 printed 'Environment
became Ready without activating expected version a0fdd199...' when the
active version was exactly a0fdd199... The discriminator was health, not
version, which sends whoever reads the log after the wrong problem.
Separate the two conditions, keep polling while the correct version is
active but health has not settled, and report the last observed state on
timeout. An environment that stays unhealthy for the full window still
fails; this does not widen what counts as a good deploy.
2026-09-08 21:31:55 -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
Adam Moussa
1bdbc12292
fix(deploy): treat applied HCP runs as success ( #108 )
...
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(deploy): treat applied HCP runs as success
* fix(deploy): wait on rollback apply result
* fix(deploy): compare G3 formatting against the PR merge base
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(deploy): fence rollback create-run on unlock success
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 13:26:11 -04:00
Arthur Bassi
a5d1c85d53
Merge pull request #106 from Sea-Haven-Industries/feat/SH-170-wo-board-severity
...
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
feat(work-orders): persist board severity on create, patch, and search
2026-09-07 12:19:21 -03:00
Arthur Bassi
9a0d3fb74c
fix(work-orders): copy persisted severity onto GET detail
...
EOF
2026-09-07 12:02:23 -03:00
Arthur Bassi
7a0b91bcd6
feat(work-orders): persist board severity on create, patch, and search
2026-09-07 11:46:13 -03:00
Alexandre Brandizzi
6ceb274bfb
feat: add API Sentry tracing (SH-298) ( #105 )
...
Validate and deploy / Validate deployable source bundle (push) Has been cancelled
Validate and deploy / Deploy shoc-backend-dev through Terraform (push) Has been cancelled
Validate and deploy / Deploy shoc-backend-staging to Elastic Beanstalk (push) Has been cancelled
* feat: add API Sentry tracing
* feat: activate Sentry deployment environments
* fix: allow Sentry-free design-time tooling
* fix: trace background jobs in Sentry
* feat(observability): identify and scrub Sentry transactions
* fix(observability): finish abandoned transactions
2026-09-04 14:11:32 -03:00
Arthur Bassi
6d66737211
Merge pull request #104 from Sea-Haven-Industries/feat/sh-169-board-create-lifecycle
...
feat(work-orders): persist board create lifecycleStatus (SH-169)
2026-09-04 13:42:42 -03:00
Arthur Bassi
31b3c2bbd1
Merge branch 'dev' into feat/sh-169-board-create-lifecycle
2026-09-04 10:24:52 -03:00
Arthur Bassi
b7df5ef629
feat(work-orders): persist board create lifecycleStatus from the client
2026-09-03 13:36:22 -03:00
Adam Moussa
69ba573315
chore(terraform): remove tf-poc rehearsal (SH-300) ( #95 )
...
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
* chore(terraform): remove tf-poc rehearsal
* chore(terraform): drop tf-poc from live module and CI
* chore: clean remaining tf-poc reference from `shared_certificate_arn`
2026-09-03 10:40:32 -04:00
Adam Moussa
77c3016c9d
feat(deploy): move dev application CD through Terraform ( #102 )
...
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
* feat(deploy): move dev application CD through Terraform
GitHub creates the immutable Elastic Beanstalk version; HCP Terraform is the only UpdateEnvironment caller via a guarded version_label run.
* fix: add permissions block for dependency-review workflow
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
* fix(terraform): stop pinning the generated dev instance SG
---------
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-09-03 14:12:06 +00:00
Arthur Bassi
a0183fa44c
Merge pull request #103 from Sea-Haven-Industries/feat/sh-167-board-carry-over
...
feat(work-orders): include unresolved prior-week rows on GET board
2026-09-03 09:59:24 -03:00
Arthur Bassi
d75f78651b
feat(work-orders): include unresolved prior-week rows on GET board
2026-09-02 09:49:56 -03:00
Arthur Bassi
5f6069547d
Merge pull request #100 from Sea-Haven-Industries/fix/sh-296-vendor-invalid-dispatch
...
fix(work-orders): accept linked primary dispatch on vendor board patch
2026-09-01 09:50:40 -03:00
Arthur Bassi
f15dde8b30
Merge branch 'fix/sh-296-vendor-invalid-dispatch' of https://github.com/Sea-Haven-Industries/shoc-backend into fix/sh-296-vendor-invalid-dispatch
2026-09-01 09:43:14 -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
Arthur Bassi
af27186527
Merge branch 'dev' into fix/sh-296-vendor-invalid-dispatch
2026-09-01 09:35:00 -03:00
Adam Moussa
6ef8e9ba2a
feat(terraform): complete dev environment adoption (SH-300) ( #99 )
...
* feat(terraform): complete dev environment adoption
* fix(terraform): preserve dev release permissions
2026-08-31 20:18:44 -03:00
Arthur Bassi
ca0404272e
fix(work-orders): accept linked primary dispatch on vendor board patch
...
Vendor PATCH treated a GET-echoed id as foreign when belong-check used only WorkOrderId.
2026-08-31 15:48:33 -03:00
Adam Moussa
e1e547f7d0
fix(terraform): preserve live state during dev import ( #98 )
2026-08-31 15:05:46 -03:00
Arthur Bassi
9665be0ae5
Merge pull request #97 from Sea-Haven-Industries/fix/sh-131-clear-appt-time
...
fix(work-orders): persist empty apptTime as null scheduled instants
2026-08-31 14:24:50 -03:00
Arthur Bassi
ddd47f6d37
Merge branch 'dev' into fix/sh-131-clear-appt-time
2026-08-31 13:15:44 -03:00
Arthur Bassi
58dd5ec6ae
Merge pull request #96 from Sea-Haven-Industries/fix/user-list-full-display-name
...
fix(users): compose full Name on user list
2026-08-31 13:13:48 -03:00
Arthur Bassi
0822b50a82
Merge branch 'dev' into fix/user-list-full-display-name
2026-08-31 13:10:08 -03:00
Arthur Bassi
aca284ee46
Merge branch 'dev' into fix/sh-131-clear-appt-time
2026-08-31 13:02:11 -03:00
Arthur Bassi
a6b3d5d073
test(work-orders): cover date-only dispatch apptTime mapping
2026-08-31 13:01:02 -03:00
Adam Moussa
24f08d3cb1
feat(terraform): adopt live deployment roles safely ( #94 )
...
* feat(terraform): add safe backend environment adoption
Introduce import-guarded environment roots and retire temporary bootstrap and POC provisioning after ownership transfer.
* ci(deploy): pause dev and staging deployments
Prevent application releases from racing Terraform adoption while retaining production deployment and validation.
* ci(deploy): require manual environment dispatch
* fix: update `required_version` from `>=1.7.0` to `>=1.9.0`
The deploy-boundary check interpolates `var.aws_account_id` and `var.environment`. Terraform only allows other variables inside `validation` from 1.9.0+.
CI already runs against `1.9.8` so `versions.tf` setting version as `>=1.7.0` is a breaking finding
* chore(deps): add `terraform` to renovate dependency coverage
* ci(deploy): drop unprovisioned prod dispatch path
2026-08-31 11:51:18 -04:00
Arthur Bassi
e45e71d5ac
test(work-orders): expect null end for start-only apptTime tokens
...
EOF
2026-08-31 11:13:40 -03:00
Arthur Bassi
dcb757b404
fix(work-orders): persist empty apptTime as null scheduled instants
...
EOF
2026-08-31 10:49:54 -03:00
Arthur Bassi
e3a2507908
fix(users): compose full Name on user list
2026-08-31 10:22:27 -03:00
Alexandre Brandizzi
b605d5be02
fix: return vendor duplicate name conflict ( #92 )
Validate and deploy dev / Validate deployable source bundle (push) Has been cancelled
Validate and deploy dev / Deploy shoc-backend to Elastic Beanstalk dev (push) Has been cancelled
2026-08-27 14:55:09 -03:00
Adam Moussa
e90e51d271
chore(renovate): add frontend overlay with three-day release age ( #90 )
...
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
* chore(renovate): add Renovate frontend overlay config
* chore: remove dependabot.yml config
* fix: add `github-actions` to `enabledManagers`
With the removal of this repositories `dependabot.yml`, a lack of `github-actions` within the config would leave a coverage gap on `actions/checkout`, `actions/setup-dotnet`, `actions/setup-node`, etc.
* fix(renovate): annotate pinned actions
---------
Co-authored-by: Alexandre Brandizzi <alex_brandizzi@hotmail.com>
2026-08-26 18:58:31 -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
6c826b4cc6
Merge pull request #88 from Sea-Haven-Industries/feat/sh-221-persist-location-accountid
...
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
feat(locations): persist accountId on create and update
2026-08-26 15:00:46 -03:00
Arthur Bassi
0f2e0dacc7
fix(locations): authorize location owner on every board update
...
Reject account-scoped updates of foreign or orphan locations even when accountId is omitted, matching fail-closed tenant scope.
2026-08-26 14:38:34 -03:00
Arthur Bassi
4e4bb0ca90
fix(locations): reject unparseable accountId and forward cancellation
...
Blank accountId stays optional; nonblank parse failures return 400. Account lookup uses ExistsActiveAsync with the request token.
2026-08-26 14:18:38 -03: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
Arthur Bassi
2be36d4eac
feat(locations): persist accountId on create and update
...
Allow location CRUD to stamp Locations.AccountId after account existence checks so board create can resolve tenant scope.
2026-08-26 14:03:12 -03:00
Arthur Bassi
5a70d5004e
Merge pull request #87 from Sea-Haven-Industries/feat/sh-221-location-owned-account
...
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
feat(work-orders): stamp board create account from location
2026-08-26 10:34:14 -03:00
Arthur Bassi
244a489fb2
fix(tests): create ephemeral LocalDB database before migration apply
2026-08-26 10:20:14 -03:00
Arthur Bassi
2e56ec7678
fix(work-orders): keep location account server-owned and forward create cancellation
...
Stop client writes from changing Locations.AccountId, make the SH-221 migration discoverable, and thread the board-create CancellationToken through lookup and persistence.
2026-08-26 10:00:02 -03:00
Arthur Bassi
61923b2a7d
feat(work-orders): stamp board create account from location
...
Org-wide create no longer depends on customer name. POST /workorders/board requires locationId and stamps WorkOrder.AccountId from Location.AccountId.
2026-08-26 09:12:48 -03:00
Alexandre Brandizzi
5857f8483a
fix(vendors): complete directory contact fallbacks ( #86 )
...
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
* fix(vendors): complete directory contact fallbacks
* fix(vendors): normalize location labels
* fix(vendors): keep company location authoritative
2026-08-25 19:33:47 -04:00
Arthur Bassi
df01ded3ce
Merge pull request #80 from Sea-Haven-Industries/feat/sh-117-aveta-required
...
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
feat(work-orders): persist avetaRequired on board create, patch, and search
2026-08-25 18:13:26 -03:00
Arthur Bassi
14b85c64a8
Merge branch 'dev' into feat/sh-117-aveta-required
2026-08-25 17:19:30 -03:00
Arthur Bassi
238f8c8e60
Merge pull request #81 from Sea-Haven-Industries/feat/board-week-only-pagination
...
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
fix(work-orders): keep GET /board to scheduled-in-week rows only
2026-08-25 17:11:05 -03:00
Arthur Bassi
7c7c6bc525
feat(work-orders): persist Aveta Extra Docs media category
...
Round-trip category 5 on media POST/PATCH/GET and project hasAvetaDocument so pending vs attached survives reopen.
2026-08-25 15:10:45 -03:00
Arthur Bassi
7245897d56
Merge branch 'dev' into feat/sh-117-aveta-required
2026-08-25 12:12:07 -03:00
Arthur Bassi
3a7a1b1f09
docs(work-orders): drop ticket key from AvetaRequired xml comment
2026-08-25 12:03:19 -03:00