v3: PostgreSQL backend — 20K rows seeded, server-side SQL filtering
- Added PostgreSQL 16 Alpine service to Docker Swarm stack - db.py: schema for 17 tables, auto-seed from jv_data.json on first boot - /api/dashboard/data?start=&end= — server-side SQL filtering All Time: 0.43s (was 4MB JSON download stuck loading) Filtered (12mo): 0.20s with ~90% less data transferred - Dashboard HTML patched: calls API instead of static JSON - Integer casting for IsNewCustomer/HasDiscount/IsFreeShipping - Advisory lock prevents race condition during parallel worker startup - Returning Revenue now shows correctly: £14.5M (75% of total)
This commit is contained in:
@@ -6,10 +6,14 @@ services:
|
||||
build: .
|
||||
environment:
|
||||
- GEMINI_API_KEY=AIzaSyCHnesXLjPw-UgeZaQotut66bgjFdvy12E
|
||||
- DATABASE_URL=postgresql://jv:jvpass@tasks.db:5432/justvitamin
|
||||
volumes:
|
||||
- jv-generated:/app/generated
|
||||
networks:
|
||||
- dokploy-network
|
||||
- jv-internal
|
||||
depends_on:
|
||||
- db
|
||||
deploy:
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
@@ -21,9 +25,30 @@ services:
|
||||
restart_policy:
|
||||
condition: on-failure
|
||||
|
||||
db:
|
||||
image: postgres:16-alpine
|
||||
environment:
|
||||
- POSTGRES_USER=jv
|
||||
- POSTGRES_PASSWORD=jvpass
|
||||
- POSTGRES_DB=justvitamin
|
||||
volumes:
|
||||
- jv-pgdata:/var/lib/postgresql/data
|
||||
networks:
|
||||
- jv-internal
|
||||
deploy:
|
||||
replicas: 1
|
||||
restart_policy:
|
||||
condition: on-failure
|
||||
resources:
|
||||
limits:
|
||||
memory: 512M
|
||||
|
||||
volumes:
|
||||
jv-generated:
|
||||
jv-pgdata:
|
||||
|
||||
networks:
|
||||
dokploy-network:
|
||||
external: true
|
||||
jv-internal:
|
||||
driver: overlay
|
||||
|
||||
Reference in New Issue
Block a user