Reverse proxy at demo-ctx.lnh2e.com forwards /xll-bi/* unchanged to the
container, so the container's nginx must match that location and Vite
must build asset URLs under the same prefix — otherwise the SPA shell
returns 404 and the JS/CSS resolve to /assets/* with no handler.
- nginx.conf: rename location /bi/ → /xll-bi/ (and assets sub-location)
- vite.config.ts: set base: '/xll-bi/' so built index.html references
/xll-bi/assets/*
- docker-compose.yml: 8114 → 8214 to match the upstream the proxy targets
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Mirrors the oneos- project layout: multi-stage node:22 → nginx:alpine
build, Woodpecker pipeline that tags images as <branch>-<pkg-version>
and pushes to harbor.lnh2e.com/lingniu-v1/bi, and a swarm-style
docker-compose for deployment.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>