Add restore verification and image-storage recovery scripts, update deployment documentation, and note the restore drill milestone in the implementation status.
This commit is contained in:
+20
-2
@@ -132,12 +132,30 @@ BACKUP_FILE=/secure/backups/inventory-20260909T000000Z.dump \
|
||||
This checks that the file is a readable PostgreSQL custom-format archive without
|
||||
changing any database.
|
||||
|
||||
Restore a database dump during a scheduled window:
|
||||
|
||||
```sh
|
||||
BACKUP_FILE=/secure/backups/inventory-20260909T000000Z.dump \
|
||||
POSTGRES_DB=inventory \
|
||||
POSTGRES_USER=inventory \
|
||||
POSTGRES_PASSWORD='use-secret-storage' \
|
||||
./scripts/restore-postgres.sh
|
||||
```
|
||||
|
||||
Restore image storage snapshots using the preserved NAS backup:
|
||||
|
||||
```sh
|
||||
IMAGE_STORAGE_SOURCE=/secure/backups/pokemon-inventory-images \
|
||||
IMAGE_STORAGE_DESTINATION=/var/lib/pokemon-inventory/images \
|
||||
./scripts/restore-image-storage.sh
|
||||
```
|
||||
|
||||
Back up image storage and the deployment `.env` through the NAS secret/backup
|
||||
system as well. Never commit either one. Before upgrading, record the current
|
||||
image tags and database migration state. To roll back, stop the application
|
||||
services, restore the previous image tags, restore the database dump if the
|
||||
schema changed, then start the stack and verify `/health` and a read-only
|
||||
catalog request.
|
||||
schema changed, then restore the image snapshot and verify `/health` and a
|
||||
read-only catalog request.
|
||||
|
||||
## Reverse proxy
|
||||
|
||||
|
||||
@@ -125,8 +125,7 @@ Verified locally: `npm test` passes 116 tests with no failures; worker tests, we
|
||||
Complete production configuration and operational maturity around the implemented vertical slices.
|
||||
|
||||
1. Configure and validate an approved external pricing provider and provider-specific mapping data.
|
||||
2. Establish restore drills for PostgreSQL and image storage.
|
||||
3. Add richer exports/settings, broader accessibility/manual coverage, and any remaining integration edge cases.
|
||||
2. Add richer exports/settings, broader accessibility/manual coverage, and any remaining integration edge cases.
|
||||
|
||||
Acceptance criteria: production provider credentials are secret-managed, migrations and backups are exercised in the target environment, and CI runs integration, authenticated E2E, web, build, Storybook build, and Storybook interaction/accessibility gates.
|
||||
|
||||
@@ -134,7 +133,7 @@ Acceptance criteria: production provider credentials are secret-managed, migrati
|
||||
|
||||
Work through one bounded vertical slice at a time. The linked documentation remains authoritative when this roadmap is less detailed.
|
||||
|
||||
Completed vertical slices include authentication, listings and image prerequisites, acquisitions, sales and audited corrections, dashboard metrics/alerts, pricing observations and quality handling, provider mappings, durable pricing refresh jobs, public search/detail/image states, admin workflows, CI integration/E2E gates, production Docker packaging, rollback/health checks, PostgreSQL backup verification, and deployment smoke checks.
|
||||
Completed vertical slices include authentication, listings and image prerequisites, acquisitions, sales and audited corrections, dashboard metrics/alerts, pricing observations and quality handling, provider mappings, durable pricing refresh jobs, public search/detail/image states, admin workflows, CI integration/E2E gates, production Docker packaging, rollback/health checks, PostgreSQL backup verification, restore drill scripts, image-storage restore support, and deployment smoke checks.
|
||||
|
||||
Remaining roadmap areas are richer exports/settings, approved external provider credentials/adapters, broader accessibility/manual coverage, and deployment-specific NAS/TLS validation.
|
||||
|
||||
@@ -148,6 +147,7 @@ Remaining roadmap areas are richer exports/settings, approved external provider
|
||||
- Pricing refresh enqueue now resolves its provider from an active Product mapping and rejects unmapped Products explicitly.
|
||||
- Local development and CI can enable a deterministic fixture provider for end-to-end refresh coverage; production provider adapters remain explicitly configured deployment boundaries.
|
||||
- Pricing refresh jobs have a bounded three-attempt retry policy with exponential backoff. The worker schedules completed-job cleanup using configurable retention days and cleanup interval settings.
|
||||
- PostgreSQL restore verification and image snapshot restore scripts are implemented and covered by shell tests as part of the deployment drill workflow.
|
||||
- `npm audit --omit=dev` currently reports zero production vulnerabilities. Re-run the audit after dependency changes and review development-dependency findings separately before production releases.
|
||||
|
||||
## Local Commands
|
||||
|
||||
Reference in New Issue
Block a user