Commit Graph

464 Commits

Author SHA1 Message Date
Eric Gullickson
cc32831d99 chore: Update SDLC instructions and contract
All checks were successful
Deploy to Staging / Build Images (push) Successful in 34s
Deploy to Staging / Deploy to Staging (push) Successful in 22s
Deploy to Staging / Verify Staging (push) Successful in 2m31s
Deploy to Staging / Notify Staging Ready (push) Successful in 9s
Deploy to Staging / Notify Staging Failure (push) Has been skipped
2026-02-06 08:15:42 -06:00
Eric Gullickson
10d604463f Merge branch 'main' of 172.30.1.72:egullickson/motovaultpro
All checks were successful
Deploy to Staging / Build Images (push) Successful in 6m0s
Deploy to Staging / Deploy to Staging (push) Successful in 51s
Deploy to Staging / Verify Staging (push) Successful in 2m31s
Deploy to Staging / Notify Staging Ready (push) Successful in 7s
Deploy to Staging / Notify Staging Failure (push) Has been skipped
2026-02-05 21:49:45 -06:00
Eric Gullickson
87ee498af7 chore: update docs 2026-02-05 21:49:35 -06:00
1580fadcf3 Merge pull request 'fix: rename ipWhiteList to ipAllowList for Traefik v3 (#103)' (#104) from issue-103-fix-grafana-ipwhitelist into main
All checks were successful
Deploy to Staging / Build Images (push) Successful in 4m22s
Deploy to Staging / Deploy to Staging (push) Successful in 52s
Deploy to Staging / Verify Staging (push) Successful in 2m41s
Deploy to Staging / Notify Staging Ready (push) Successful in 7s
Deploy to Staging / Notify Staging Failure (push) Has been skipped
Reviewed-on: #104
2026-02-06 03:21:47 +00:00
Eric Gullickson
38cc8ba5c2 fix: remove broken request-id middleware with invalid Go template (refs #103)
All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 4m50s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 1m1s
Deploy to Staging / Verify Staging (pull_request) Successful in 2m36s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 8s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped
The request-id middleware used {{ .Request.Host }} which is not available
at config load time in the file provider. This template error blocked
the entire file provider from loading, preventing all file-based
middlewares (including grafana-ipwhitelist) from being registered.

The middleware was unused (not referenced by any router or chain) and
the backend already generates X-Request-Id via randomUUID().

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-05 20:54:49 -06:00
Eric Gullickson
9ed4afb9a8 fix: rename ipWhiteList to ipAllowList for Traefik v3 compatibility (refs #103)
Some checks failed
Deploy to Staging / Build Images (pull_request) Successful in 33s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 52s
Deploy to Staging / Verify Staging (pull_request) Failing after 6m8s
Deploy to Staging / Notify Staging Ready (pull_request) Has been skipped
Deploy to Staging / Notify Staging Failure (pull_request) Failing after 9s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-05 20:40:28 -06:00
b812282d69 Merge pull request 'chore: upgrade logging stack - mirrors, Alloy, Loki, Grafana (#96, #97, #98, #99)' (#102) from issue-96-update-mirror-base-images into main
All checks were successful
Deploy to Staging / Build Images (push) Successful in 32s
Deploy to Staging / Deploy to Staging (push) Successful in 51s
Deploy to Staging / Verify Staging (push) Successful in 2m36s
Deploy to Staging / Notify Staging Ready (push) Successful in 7s
Deploy to Staging / Notify Staging Failure (push) Has been skipped
Reviewed-on: #102
2026-02-06 02:16:50 +00:00
Eric Gullickson
8331bde4b0 docs: update 5-container refs to 9-container architecture (refs #101)
All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 34s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 51s
Deploy to Staging / Verify Staging (pull_request) Successful in 2m37s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 8s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped
Update all documentation to reflect the current 9-container architecture
(6 application + 3 logging) after the logging stack upgrades. Add missing
OCR, Loki, Alloy, and Grafana services to context.json.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-05 20:11:31 -06:00
Eric Gullickson
5fca156ff2 chore: upgrade OCR base image from python 3.11-slim to 3.13-slim (refs #100)
All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 3m48s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 52s
Deploy to Staging / Verify Staging (pull_request) Successful in 2m31s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 8s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-05 20:00:40 -06:00
Eric Gullickson
1c50c0c740 fix: update grafana images
All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 33s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 20s
Deploy to Staging / Verify Staging (pull_request) Successful in 2m37s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 8s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped
2026-02-05 19:49:06 -06:00
Eric Gullickson
09f856958c chore: upgrade Grafana 10.0.0 to 12.4.0 (refs #99)
Some checks failed
Deploy to Staging / Build Images (pull_request) Successful in 33s
Deploy to Staging / Deploy to Staging (pull_request) Failing after 14s
Deploy to Staging / Verify Staging (pull_request) Has been skipped
Deploy to Staging / Notify Staging Ready (pull_request) Has been skipped
Deploy to Staging / Notify Staging Failure (pull_request) Successful in 7s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-05 19:36:00 -06:00
Eric Gullickson
fc2dc21547 chore: upgrade Loki 2.9.0 to 3.6.1 with tsdb/v13 schema (refs #98)
All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 34s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 53s
Deploy to Staging / Verify Staging (pull_request) Successful in 2m31s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 8s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped
- Update Loki image from 2.9.0 to 3.6.1 in docker-compose.yml
- Migrate schema from v11 to v13, store from boltdb-shipper to tsdb
- Update storage_config to use tsdb_shipper with new index paths
- Remove deprecated shared_store config (removed in Loki 3.0)
- Disable structured metadata (not needed for current setup)
- Preserve 30-day retention policy (720h)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-05 19:26:08 -06:00
Eric Gullickson
ccdcf9edeb chore: add healthcheck to mvp-alloy service (refs #97)
All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 39s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 19s
Deploy to Staging / Verify Staging (pull_request) Successful in 2m35s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 8s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-05 19:08:16 -06:00
Eric Gullickson
1b20673ff6 chore: replace Promtail with Grafana Alloy for log collection (refs #97)
Promtail 2.9.0 embeds Docker client API v1.42 which is incompatible with
Docker Engine v29 (minimum API v1.44). Grafana Alloy v1.12.2 resolves this
by using a compatible Docker client.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-05 19:04:41 -06:00
Eric Gullickson
ce6b6cf7cf chore: update base image versions in mirror script (refs #96)
All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 33s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 22s
Deploy to Staging / Verify Staging (pull_request) Successful in 2m31s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 8s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-05 18:26:23 -06:00
Eric Gullickson
bac4d340bc fix: Prod deployment fixes
All checks were successful
Deploy to Staging / Build Images (push) Successful in 32s
Deploy to Staging / Deploy to Staging (push) Successful in 22s
Deploy to Staging / Verify Staging (push) Successful in 3m21s
Deploy to Staging / Notify Staging Ready (push) Successful in 34s
Deploy to Staging / Notify Staging Failure (push) Has been skipped
2026-02-04 21:31:39 -06:00
Eric Gullickson
af1edd9ec6 chore: sync prod deploy timers
All checks were successful
Deploy to Staging / Build Images (push) Successful in 32s
Deploy to Staging / Deploy to Staging (push) Successful in 21s
Deploy to Staging / Verify Staging (push) Successful in 2m30s
Deploy to Staging / Notify Staging Ready (push) Successful in 8s
Deploy to Staging / Notify Staging Failure (push) Has been skipped
2026-02-04 21:11:36 -06:00
193a13f2a9 Merge pull request 'docs: add unified logging system documentation and CI/CD integration (#87)' (#94) from issue-87-cicd-logging-docs into main
All checks were successful
Deploy to Staging / Build Images (push) Successful in 32s
Deploy to Staging / Deploy to Staging (push) Successful in 22s
Deploy to Staging / Verify Staging (push) Successful in 2m35s
Deploy to Staging / Notify Staging Ready (push) Successful in 7s
Deploy to Staging / Notify Staging Failure (push) Has been skipped
Reviewed-on: #94
2026-02-05 02:57:04 +00:00
Eric Gullickson
72275096f8 docs: add unified logging system documentation and CI/CD integration (refs #87)
All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 31s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 22s
Deploy to Staging / Verify Staging (pull_request) Successful in 2m31s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 8s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped
- Update staging workflow to use LOG_LEVEL=DEBUG
- Create docs/LOGGING.md with unified logging documentation
- Delete docs/UX-DEBUGGING.md (replaced by LOGGING.md)
- Update architecture to 9-container (6 app + 3 logging)
- Update CLAUDE.md, README.md, docs/README.md, docs/CLAUDE.md
- Update docs/PLATFORM-SERVICES.md deployment section

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 20:50:20 -06:00
9c90a1ca84 Merge pull request 'feat: add Promtail, Loki, and Grafana log aggregation stack (#86)' (#93) from issue-86-promtail-loki-grafana into main
All checks were successful
Deploy to Staging / Build Images (push) Successful in 32s
Deploy to Staging / Deploy to Staging (push) Successful in 22s
Deploy to Staging / Verify Staging (push) Successful in 2m30s
Deploy to Staging / Notify Staging Ready (push) Successful in 7s
Deploy to Staging / Notify Staging Failure (push) Has been skipped
Reviewed-on: #93
2026-02-05 02:47:21 +00:00
Eric Gullickson
9aa1ad954f fix: use correct grafana/ namespace in mirrored image paths (refs #86)
All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 33s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 19s
Deploy to Staging / Verify Staging (pull_request) Successful in 2m30s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 8s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 20:40:23 -06:00
Eric Gullickson
e83385d729 chore: use mirrored registry for logging stack images (refs #86)
Some checks failed
Deploy to Staging / Build Images (pull_request) Successful in 30s
Deploy to Staging / Deploy to Staging (pull_request) Failing after 11s
Deploy to Staging / Verify Staging (pull_request) Has been skipped
Deploy to Staging / Notify Staging Ready (pull_request) Has been skipped
Deploy to Staging / Notify Staging Failure (pull_request) Successful in 7s
- Update Loki, Promtail, Grafana to use REGISTRY_MIRRORS
- Add grafana/loki, grafana/promtail, grafana/grafana to mirror script

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 20:19:22 -06:00
Eric Gullickson
1cf54fb254 feat: add Promtail, Loki, and Grafana log aggregation stack (refs #86)
All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 31s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 35s
Deploy to Staging / Verify Staging (pull_request) Successful in 2m37s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 8s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped
- Add Promtail for Docker log scraping with container discovery
- Add Loki for log storage with 30-day retention
- Add Grafana with Loki datasource auto-provisioned
- Add IP whitelist middleware restricting Grafana to RFC1918 ranges
- Container count: 6 → 9

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 20:16:53 -06:00
915f15c610 Merge pull request 'feat: Frontend Logger Module (#84)' (#92) from issue-84-frontend-logger-module into main
All checks were successful
Deploy to Staging / Build Images (push) Successful in 32s
Deploy to Staging / Deploy to Staging (push) Successful in 21s
Deploy to Staging / Verify Staging (push) Successful in 2m31s
Deploy to Staging / Notify Staging Ready (push) Successful in 8s
Deploy to Staging / Notify Staging Failure (push) Has been skipped
Reviewed-on: #92
2026-02-05 02:13:11 +00:00
Eric Gullickson
241478ed80 feat: add frontend logger module with level filtering and sanitization (refs #84)
All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 3m13s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 21s
Deploy to Staging / Verify Staging (pull_request) Successful in 2m25s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 8s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped
- Create centralized logger utility at frontend/src/utils/logger.ts
- Support debug/info/warn/error levels controlled by VITE_LOG_LEVEL
- Sanitize sensitive data (tokens, passwords, secrets) in log output
- Graceful fallback to 'info' level for invalid VITE_LOG_LEVEL values
- Add VITE_LOG_LEVEL to ImportMetaEnv type definitions

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-04 20:05:39 -06:00
Eric Gullickson
cd843e8bdd chore: update container images
All checks were successful
Deploy to Staging / Build Images (push) Successful in 32s
Deploy to Staging / Deploy to Staging (push) Successful in 21s
Deploy to Staging / Verify Staging (push) Successful in 2m35s
Deploy to Staging / Notify Staging Ready (push) Successful in 7s
Deploy to Staging / Notify Staging Failure (push) Has been skipped
2026-02-04 19:54:35 -06:00
Eric Gullickson
df24e89311 chore: update deploy timings
All checks were successful
Deploy to Staging / Build Images (push) Successful in 4m0s
Deploy to Staging / Deploy to Staging (push) Successful in 24s
Deploy to Staging / Verify Staging (push) Successful in 2m25s
Deploy to Staging / Notify Staging Ready (push) Successful in 7s
Deploy to Staging / Notify Staging Failure (push) Has been skipped
2026-02-04 19:40:47 -06:00
Eric Gullickson
1226dd986d fix: adjust backend start_period to 90s
Some checks failed
Deploy to Staging / Build Images (push) Successful in 29s
Deploy to Staging / Deploy to Staging (push) Successful in 21s
Deploy to Staging / Verify Staging (push) Failing after 1m49s
Deploy to Staging / Notify Staging Ready (push) Has been skipped
Deploy to Staging / Notify Staging Failure (push) Successful in 8s
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 21:20:27 -06:00
Eric Gullickson
83224cf207 fix: increase backend start_period to 120s for migrations
Some checks failed
Deploy to Staging / Build Images (push) Successful in 30s
Deploy to Staging / Verify Staging (push) Has been cancelled
Deploy to Staging / Deploy to Staging (push) Has been cancelled
Deploy to Staging / Notify Staging Ready (push) Has been cancelled
Deploy to Staging / Notify Staging Failure (push) Has been cancelled
The 60s start_period was too short - migrations can take 70+ seconds.
Docker was marking the container unhealthy before migrations completed.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 21:19:48 -06:00
Eric Gullickson
26196d34ea chore: unify health check timers across compose and workflows
Some checks failed
Deploy to Staging / Build Images (push) Successful in 32s
Deploy to Staging / Deploy to Staging (push) Successful in 21s
Deploy to Staging / Verify Staging (push) Failing after 1m18s
Deploy to Staging / Notify Staging Ready (push) Has been skipped
Deploy to Staging / Notify Staging Failure (push) Successful in 7s
Docker Compose health checks (all services):
- interval: 5s (was 10-30s)
- timeout: 5s (unified)
- backend start_period: 60s (was 30-180s)

Gitea workflow health check loops:
- Docker healthcheck: 48 attempts x 5s = 4 min (was 24 x 10s)
- Backend health: 12 attempts x 5s = 60s (was 6 x 10s)
- External health: 12 attempts x 5s = 60s (was 6 x 10s)
- Initial waits: 5s (was 10-15s)

Same total wait times, faster detection of success/failure.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 21:10:47 -06:00
Eric Gullickson
88db25019f chore: update prod check loops
All checks were successful
Deploy to Staging / Build Images (push) Successful in 29s
Deploy to Staging / Deploy to Staging (push) Successful in 36s
Deploy to Staging / Verify Staging (push) Successful in 2m19s
Deploy to Staging / Notify Staging Ready (push) Successful in 8s
Deploy to Staging / Notify Staging Failure (push) Has been skipped
2026-02-03 20:56:27 -06:00
Eric Gullickson
40f2cace29 chore: update prod healthchecks
Some checks failed
Deploy to Staging / Build Images (push) Successful in 32s
Deploy to Staging / Verify Staging (push) Has been cancelled
Deploy to Staging / Notify Staging Ready (push) Has been cancelled
Deploy to Staging / Notify Staging Failure (push) Has been cancelled
Deploy to Staging / Deploy to Staging (push) Has been cancelled
2026-02-03 20:55:33 -06:00
Eric Gullickson
efbbe34080 fix: add backend health check step to production workflow
All checks were successful
Deploy to Staging / Build Images (push) Successful in 33s
Deploy to Staging / Deploy to Staging (push) Successful in 31s
Deploy to Staging / Verify Staging (push) Successful in 2m19s
Deploy to Staging / Notify Staging Ready (push) Successful in 7s
Deploy to Staging / Notify Staging Failure (push) Has been skipped
Add "Wait for backend health" step using docker exec to verify backend
is responding before attempting external health check. Matches staging
workflow pattern.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 20:42:59 -06:00
58eec46f72 Merge pull request 'feat: migrate backend logging from Winston to Pino with correlation IDs (#82)' (#91) from issue-82-pino-migration into main
All checks were successful
Deploy to Staging / Build Images (push) Successful in 33s
Deploy to Staging / Deploy to Staging (push) Successful in 31s
Deploy to Staging / Verify Staging (push) Successful in 2m18s
Deploy to Staging / Notify Staging Ready (push) Successful in 9s
Deploy to Staging / Notify Staging Failure (push) Has been skipped
Reviewed-on: #91
2026-02-04 02:24:31 +00:00
Eric Gullickson
6c4d8e47f9 chore: align production verify loop with staging (refs #82)
All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 30s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 32s
Deploy to Staging / Verify Staging (pull_request) Successful in 2m19s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 7s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped
Add Docker healthcheck loop to production verify-prod job matching
staging's 24 attempts x 10 seconds = 4 minutes max wait for backend
migrations.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 20:11:40 -06:00
Eric Gullickson
2a34f8225e feat: migrate backend logging from Winston to Pino with correlation IDs (refs #82)
All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 4m3s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 32s
Deploy to Staging / Verify Staging (pull_request) Successful in 2m29s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 7s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped
- Replace Winston with Pino using API-compatible wrapper
- Add LOG_LEVEL env var support with validation and fallback
- Add correlation ID middleware (X-Request-Id from Traefik or UUID)
- Configure PostgreSQL logging env vars (POSTGRES_LOG_STATEMENT, POSTGRES_LOG_MIN_DURATION)
- Configure Redis loglevel via command args

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 20:04:30 -06:00
3899cb3935 Merge pull request 'chore: Docker Logging Configuration + Rotation (#85)' (#90) from issue-85-docker-logging-config into main
All checks were successful
Deploy to Staging / Build Images (push) Successful in 31s
Deploy to Staging / Deploy to Staging (push) Successful in 32s
Deploy to Staging / Verify Staging (push) Successful in 2m20s
Deploy to Staging / Notify Staging Ready (push) Successful in 7s
Deploy to Staging / Notify Staging Failure (push) Has been skipped
Reviewed-on: #90
2026-02-04 02:00:22 +00:00
Eric Gullickson
ceaabee7a0 chore: add Docker log rotation to all services (refs #85)
All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 30s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 31s
Deploy to Staging / Verify Staging (pull_request) Successful in 2m19s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 7s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped
Add logging configuration with json-file driver and rotation to all 6 services:
- mvp-traefik
- mvp-frontend
- mvp-backend
- mvp-ocr
- mvp-postgres
- mvp-redis

Configuration:
- max-size: 10m (10MB per log file)
- max-file: 3 (keep 3 rotated files)
- Total max storage: 6 x 30MB = 180MB

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 19:49:28 -06:00
5593459090 Merge pull request 'chore: configure Traefik X-Request-Id header forwarding (#83)' (#89) from issue-83-traefik-request-id into main
All checks were successful
Deploy to Staging / Build Images (push) Successful in 30s
Deploy to Staging / Deploy to Staging (push) Successful in 31s
Deploy to Staging / Verify Staging (push) Successful in 2m19s
Deploy to Staging / Notify Staging Ready (push) Successful in 7s
Deploy to Staging / Notify Staging Failure (push) Has been skipped
Reviewed-on: #89
2026-02-04 01:47:45 +00:00
Eric Gullickson
2ecefc1e10 chore: configure Traefik X-Request-Id header forwarding (refs #83)
All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 30s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 31s
Deploy to Staging / Verify Staging (pull_request) Successful in 2m19s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 7s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped
- Add X-Request-Id to access log fields for request correlation
- Add request-id middleware documenting backend UUID generation
- Add X-Request-Id to CORS allowed headers

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 19:41:19 -06:00
4e8a724ef7 Merge pull request 'chore: Logging Config Generator Script (#81)' (#88) from issue-81-logging-config-generator into main
All checks were successful
Deploy to Staging / Build Images (push) Successful in 2m33s
Deploy to Staging / Deploy to Staging (push) Successful in 32s
Deploy to Staging / Verify Staging (push) Successful in 2m20s
Deploy to Staging / Notify Staging Ready (push) Successful in 8s
Deploy to Staging / Notify Staging Failure (push) Has been skipped
Reviewed-on: #88
2026-02-04 01:33:18 +00:00
Eric Gullickson
da406d9538 feat: add logging config generator script (refs #81)
All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 3m41s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 31s
Deploy to Staging / Verify Staging (pull_request) Successful in 2m19s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 7s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped
Create generate-log-config.sh that maps a single LOG_LEVEL env var to
per-container settings for Backend, Frontend, PostgreSQL, Redis, and
Traefik. Script validates input and generates .env.logging file.

Integrate script into staging and production CI/CD pipelines.
Remove obsolete SPRINTS.md calendar file.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 19:25:36 -06:00
93594ca4d8 Merge pull request 'feat: Owner's Manual OCR Pipeline (#71)' (#79) from issue-71-manual-ocr-pipeline into main
All checks were successful
Deploy to Staging / Build Images (push) Successful in 31s
Deploy to Staging / Deploy to Staging (push) Successful in 31s
Deploy to Staging / Verify Staging (push) Successful in 2m19s
Deploy to Staging / Notify Staging Ready (push) Successful in 8s
Deploy to Staging / Notify Staging Failure (push) Has been skipped
Reviewed-on: #79
2026-02-02 03:37:32 +00:00
Eric Gullickson
3eb54211cb feat: add owner's manual OCR pipeline (refs #71)
All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 3m1s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 31s
Deploy to Staging / Verify Staging (pull_request) Successful in 2m19s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 7s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped
Implement async PDF processing for owner's manuals with maintenance
schedule extraction:

- Add PDF preprocessor with PyMuPDF for text/scanned PDF handling
- Add maintenance pattern matching (mileage, time, fluid specs)
- Add service name mapping to maintenance subtypes
- Add table detection and parsing for schedule tables
- Add manual extractor orchestrating the complete pipeline
- Add POST /extract/manual endpoint for async job submission
- Add Redis job queue support for manual extraction jobs
- Add progress tracking during processing

Processing pipeline:
1. Analyze PDF structure (text layer vs scanned)
2. Find maintenance schedule sections
3. Extract text or OCR scanned pages at 300 DPI
4. Detect and parse maintenance tables
5. Normalize service names and extract intervals
6. Return structured maintenance schedules with confidence scores

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 21:30:20 -06:00
Eric Gullickson
b226ca59de Merge branch 'main' of 172.30.1.72:egullickson/motovaultpro
All checks were successful
Deploy to Staging / Build Images (push) Successful in 3m11s
Deploy to Staging / Deploy to Staging (push) Successful in 31s
Deploy to Staging / Verify Staging (push) Successful in 2m29s
Deploy to Staging / Notify Staging Ready (push) Successful in 7s
Deploy to Staging / Notify Staging Failure (push) Has been skipped
2026-02-01 21:10:47 -06:00
Eric Gullickson
dba00d6108 stuff 2026-02-01 21:10:36 -06:00
c3f3149f48 Merge pull request 'feat: Receipt Capture Integration (#70)' (#78) from issue-70-receipt-capture-integration into main
Some checks failed
Deploy to Staging / Deploy to Staging (push) Has been cancelled
Deploy to Staging / Verify Staging (push) Has been cancelled
Deploy to Staging / Notify Staging Ready (push) Has been cancelled
Deploy to Staging / Notify Staging Failure (push) Has been cancelled
Deploy to Staging / Build Images (push) Has been cancelled
Reviewed-on: #78
2026-02-02 03:10:27 +00:00
Eric Gullickson
d78ba24c5e feat: integrate receipt capture with fuel log form (refs #70)
All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 3m20s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 32s
Deploy to Staging / Verify Staging (pull_request) Successful in 2m19s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 8s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped
- Add useReceiptOcr hook for OCR extraction orchestration
- Add ReceiptCameraButton component for triggering capture
- Add ReceiptOcrReviewModal for reviewing/editing extracted fields
- Add ReceiptPreview component with zoom capability
- Integrate camera capture, OCR processing, and form population
- Include confidence indicators and low-confidence field highlighting
- Support inline editing of extracted fields before acceptance

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 21:01:42 -06:00
2b9a0608f3 Merge pull request 'feat: Receipt OCR Pipeline (#69)' (#77) from issue-69-receipt-ocr-pipeline into main
All checks were successful
Deploy to Staging / Build Images (push) Successful in 29s
Deploy to Staging / Deploy to Staging (push) Successful in 32s
Deploy to Staging / Verify Staging (push) Successful in 2m19s
Deploy to Staging / Notify Staging Ready (push) Successful in 8s
Deploy to Staging / Notify Staging Failure (push) Has been skipped
Reviewed-on: #77
2026-02-02 02:47:51 +00:00
Eric Gullickson
6319d50fb1 feat: add receipt OCR pipeline (refs #69)
All checks were successful
Deploy to Staging / Build Images (pull_request) Successful in 32s
Deploy to Staging / Deploy to Staging (pull_request) Successful in 31s
Deploy to Staging / Verify Staging (pull_request) Successful in 2m20s
Deploy to Staging / Notify Staging Ready (pull_request) Successful in 8s
Deploy to Staging / Notify Staging Failure (pull_request) Has been skipped
Implement receipt-specific OCR extraction for fuel receipts:

- Pattern matching modules for date, currency, and fuel data extraction
- Receipt-optimized image preprocessing for thermal receipts
- POST /extract/receipt endpoint with field extraction
- Confidence scoring per extracted field
- Cross-validation of fuel receipt data
- Unit tests for all pattern matchers

Extracted fields: merchantName, transactionDate, totalAmount,
fuelQuantity, pricePerUnit, fuelGrade

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 20:43:30 -06:00