Contourne l'UX peu intuitive d'ERPNext (prix dans doctype séparé). Variantes → bouton 'Variantes & prix'. Stocké en base (survit aux recreate).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
5 patchs MySQLisme désormais cuits dans l'image erpnext-custom via Dockerfile (COPY+RUN apply_pg_patches.py).
Débloque submit stock/compta sur PostgreSQL (vérifié: Stock Reconciliation submit OK sur conteneur frais).
frappe_pg aussi proprement bake + ajouté à apps.txt (shim chargé eager pour toutes requêtes, token inclus).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Volatils dans le conteneur → à ré-appliquer après rebuild. Period Closing Voucher GROUP BY = TODO (#53).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Token is no longer hardcoded in source — injected at build time.
Build with: VITE_ERP_TOKEN="key:secret" npx quasar build
Prevents accidental token invalidation and keeps secrets out of git.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Regenerated Admin API token (old one was invalidated by generate_keys)
- Traefik: separate routers for app (with Authentik) and /api/ (no auth)
- Nginx proxy: use container IP (cross-compose DNS doesn't resolve names)
- /outpost.goauthentik.io/ route for Authentik callbacks
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- authFetch uses redirect:'manual' to detect 302 from Authentik
- If session expired (302/401/opaqueredirect), reload page to trigger
Traefik forwardAuth → Authentik re-login flow
- Logout redirects to Authentik invalidation flow
- App.vue calls checkSession on mount to populate user identity
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Remove login form from App.vue (Authentik handles auth at Traefik level)
- Simplify auth store: no more checkSession/generate_keys complexity
- All ERPNext API calls use a service token (reliable, no CORS issues)
- User identity provided by Authentik X-authentik-email header
- Logout redirects to Authentik end-session URL
- Removed: login(), generate_keys, cookie fallback, token localStorage
Infrastructure:
- Created Authentik Proxy Provider for dispatch.gigafibre.ca
- Added to embedded outpost
- Applied authentik@file middleware to dispatch Traefik router
- Also removed unused Gitea (git.gigafibre.ca) containers + volumes
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>