2026-05-18 15:30:30 -04:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
set -euo pipefail
|
|
|
|
|
|
|
|
|
|
cd web
|
|
|
|
|
npm ci
|
|
|
|
|
npm run build
|
|
|
|
|
cd ..
|
|
|
|
|
|
|
|
|
|
BUCKET=$(aws cloudformation describe-stacks \
|
|
|
|
|
--stack-name proposal-system-frontend \
|
|
|
|
|
--query "Stacks[0].Outputs[?OutputKey=='SiteBucketName'].OutputValue" \
|
|
|
|
|
--output text)
|
|
|
|
|
aws s3 sync web/dist "s3://$BUCKET" --delete
|
|
|
|
|
|
|
|
|
|
DIST_ID=$(aws cloudformation describe-stacks \
|
|
|
|
|
--stack-name proposal-system-frontend \
|
|
|
|
|
--query "Stacks[0].Outputs[?OutputKey=='DistributionId'].OutputValue" \
|
|
|
|
|
--output text)
|
|
|
|
|
aws cloudfront create-invalidation --distribution-id "$DIST_ID" --paths "/*"
|
Phase 3 audit fixes: FIX-01–47, accessibility NITs, code quality NITs [skip deploy]
## Summary
Implements Phase 3 of the AUDIT-2026-05-20 findings:
- 29 FIX-severity items across API, web, infra, and lambdas
- 7 accessibility NITs (aria-labels, document titles)
- 4 code quality NITs (deduplication, constants extraction)
Key changes:
- API: N+1 fix, pagination clamping, idempotent transitions, upload confirm endpoint, revision TotalBidAmount carry-forward
- Web: confirmation dialogs, currency formatting, error states, date range filters, document titles
- Infra: S3 CORS lockdown, API Gateway throttling, AOSS network policy fix, CI concurrency
- Lambdas: skip empty suggestions, remove status side-effect
- Scripts: post-deploy health check
## Test plan
- [x] tsc --noEmit (web + infra)
- [x] dotnet build (api)
- [x] ruff check + format (lambdas)
- [x] Cross-review via orchestrator (no blockers)
[skip deploy]
2026-05-20 19:38:36 -04:00
|
|
|
|
|
|
|
|
# Health check: verify API is reachable
|
|
|
|
|
API_URL=$(aws cloudformation describe-stacks \
|
|
|
|
|
--stack-name proposal-system-compute \
|
|
|
|
|
--query "Stacks[0].Outputs[?OutputKey=='ApiEndpoint'].OutputValue" \
|
|
|
|
|
--output text)
|
|
|
|
|
|
|
|
|
|
echo "Running post-deploy health check..."
|
|
|
|
|
HTTP_STATUS=$(curl -s -o /dev/null -w "%{http_code}" "${API_URL}/api/health" --max-time 10 || true)
|
|
|
|
|
if [ "$HTTP_STATUS" -eq 200 ]; then
|
|
|
|
|
echo "Health check passed (HTTP $HTTP_STATUS)"
|
|
|
|
|
else
|
|
|
|
|
echo "WARNING: Health check returned HTTP $HTTP_STATUS" >&2
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|