Reliability/PoC hardening: dedupe uploads by file_hash, surface editor sync failures instead of a false success SnackBar with a retry-without-re-OCR path, bound the OCR pipeline fetches with timeouts, share a single ApiClient/Dio instance app-wide, tune capture JPEG quality, and add an opt-in docker-compose.demo.yml for a production-mode run ahead of client demos. Translate all Flutter-side user-facing text (screens, validators, SnackBars, the printed delivery receipt, and shared API error messages) to Bahasa Indonesia. Also includes in-progress OCR parser/accuracy-tuning work from the same session: table column/unit normalization fixes, store/customer master data, accuracy history log, and test-image renaming/cleanup. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eRAsLqN9Sg1b9YPz22Lxz
30 lines
1.1 KiB
YAML
30 lines
1.1 KiB
YAML
# Production-mode override for client demos / PoC runs.
|
|
#
|
|
# The base docker-compose.yml runs pfm-web-app via `npm run dev` with the source
|
|
# directory bind-mounted in, which is what you want for daily parser.ts iteration
|
|
# (hot reload) but is a single dev-server process - not the concurrency/latency
|
|
# story you want in front of a client with multiple drivers uploading at once.
|
|
#
|
|
# This override drops the dev bind-mount (so the image's own `npm run build`
|
|
# output isn't shadowed by live source) and runs `npm start` against that build.
|
|
#
|
|
# Usage:
|
|
# docker compose -f docker-compose.yml -f docker-compose.demo.yml up -d --build
|
|
#
|
|
# Rebuild before every demo run - this mode does not hot-reload code changes.
|
|
|
|
services:
|
|
pfm-web-app:
|
|
command: ["npm", "start"]
|
|
environment:
|
|
- PIPELINE_URL=http://paddleocr-pipeline-api-v10:8090/layout-parsing
|
|
- NODE_ENV=production
|
|
- PGHOST=paddleocr-db
|
|
- PGPORT=5432
|
|
- PGUSER=postgres
|
|
- PGPASSWORD=postgres
|
|
- PGDATABASE=dopfm
|
|
volumes: !override
|
|
- ./backend/uploads:/uploads
|
|
- /var/run/docker.sock:/var/run/docker.sock
|